JP5613547B2 - タスクベースの並列プログラミング言語 - Google Patents

タスクベースの並列プログラミング言語 Download PDF

Info

Publication number
JP5613547B2
JP5613547B2 JP2010277812A JP2010277812A JP5613547B2 JP 5613547 B2 JP5613547 B2 JP 5613547B2 JP 2010277812 A JP2010277812 A JP 2010277812A JP 2010277812 A JP2010277812 A JP 2010277812A JP 5613547 B2 JP5613547 B2 JP 5613547B2
Authority
JP
Japan
Prior art keywords
task
buffer
input
tasks
program
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.)
Active
Application number
JP2010277812A
Other languages
English (en)
Other versions
JP2012128551A (ja
Inventor
テブズ ダンカン
テブズ ダンカン
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.)
Square Enix Co Ltd
Original Assignee
Square Enix Co Ltd
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 Square Enix Co Ltd filed Critical Square Enix Co Ltd
Priority to JP2010277812A priority Critical patent/JP5613547B2/ja
Priority to US13/284,035 priority patent/US8793692B2/en
Priority to EP11188703.0A priority patent/EP2466462A3/en
Publication of JP2012128551A publication Critical patent/JP2012128551A/ja
Application granted granted Critical
Publication of JP5613547B2 publication Critical patent/JP5613547B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Description

本発明は,タスクベースの並列プログラミング言語に関する。特にゲーム又はグラフィックに関して,様々なタスクの依存性をコンピュータにより考慮することができるシステム又はソフトウェアに関する。
いくつかのライブラリ及びフレームワークは,依存性や連続性などのスケジューリング機能を多数含むことにより,タスクの並列化を拡張する。タスクの並列化の例として知られているものとして,メニーコアハードウェアをプログラミングするための,効果的で拡張可能な取り組みがあるが,そのようなライブラリやフレームワークなどをC++言語及び他の命令型言語で使用する場合に,いくつかの問題点がある。
Cilkは,タスクの生成と同期化のキーワードを加えることにより,C言語又は,C++言語を拡張した言語である。Cilkは,高度なタスクスケジューラを含む。タスクは,他のタスクを順に生み出すことができる関数として特定される。Cilkは,タスク並列化プログラムの生成をより単純にするが,プログラマーは,子タスクを同期化する(子タスクが完了するまで待つ)ことにより,手作業で依存性に対処しなければならない。Cilk++は,C++言語と非常に深く関係しているため(事実,言語の上位集合である),そのため,依存性情報を自動的に計算するのは難しくなっている。これは,C++言語のリファレンス及びポインタでは,コンパイラとランタイムシステムが,タスクの入出力と一致するデータについて予測できないことを意味している。
FRIGO,M.,LEISERSON,C.E.,AND RANDALL,K.H.1998.The implementation of the cilk−5 multithreaded language.Proceedings of the ACM SIGPLAN ’98 Conference on Programing Lauguage Design and Implementation(June).
本発明の目的の1つは,タスクの依存性を単純に入力できるプログラムを提供することである。プログラムは,タスクの依存性のみを処理する高級言語であってもよく,各タスクは,低級言語によって実行されてもよい。
本発明の目的の1つは,タスクの依存性を自動的に決定することができるプログラムを提供することである。
本発明の他の目的は,タスクの依存性を自動的に決定した後に,並列タスクを実行することができるプログラムを提供することである。
本発明の第1の側面は,プログラムに関する。特に,高級言語に関する。プログラムは,タスクと依存性に関する入力のみを要求する。そのとき,プログラムは,エラーのないタスクのすべてをスケジュールできるように,すべてのタスクと依存性を決定してもよい。その後,すべてのタスクは,本発明のプログラムにより決定された依存性によって,スケジュリングされる。各タスクは,他のプログラム又はハードウェアによって実行されてもよい。
本発明のプログラムは,複数のタスクを入力する手段と,それらのタスクの依存性を入力する手段と,入力されたタスクの依存性により,入力されたすべてのタスクの依存性を自動的に決定する手段とをコンピュータに行わせる。
プログラムに要求される入力は,単純である。しかし,本プログラムは,コンピュータにタスクの依存性を,自動的に,どんなエラーもなく,決定させることができる。繰り返しになるが,本プログラムが,コンピュータにタスクの依存性を決定させた後,他のプログラムが,依存性により決定したスケジュールに基づいて,各タスクを実行してもよい。
下記は,代入文の例である。

out_buffer:=my_task(in_buffer,param1)

この場合,my_taskは,入力として‘in_buffer’の出力を要求するとともに,‘param1’も要求する。‘param1’は,タスクに使用されるパラメータ又は数値でもよい。したがって,my_taskは,‘in_buffer’に依存するように決定される。その時,タスク,つまりmy_taskは,‘in_buffer’の出力に依存するいずれかのタスクを,非同期的に実行されるようにスケジュールされてもよい。
本プログラムの好ましい態様として,依存性は,所定のタグにより入力される。上記の例として,依存性は,‘buffer’のタグが付されており,依存タスクは,かっこ内に記述されている。
本プログラムの好ましい態様として,タスクは,‘task code’の入力,‘input data buffer’の入力,‘output data buffer’の入力,及び‘immediate parameter’の入力に従って実行される。タスクの依存性は,‘input data buffer’及び‘output data buffer’として入力され,‘input data buffer’の入力,及び‘output data buffer’の入力により決定する。
依存性は,‘buffer’タグにより入力されるため,コンピュータは,タグの情報を読み込むことにより,入力される依存性を決定することができる。ここでいう‘task code’は,他のプログラムにより実行される各タスクを示してもよい。‘task code’の例は動画であり,あるオブジェクトの動画を生成することである。‘immediate parameter’の例は,何かの計算に使用される数字又は数値である。
本プログラムの好ましい態様として,本プログラムは,コンピュータを,すべての入力タスクの決定された依存性を考慮して,タスクを自動的にスケジューリングする手段として,さらに機能させる。
本プログラムの好ましい態様として,自動的に依存性を決定する手段は,親タスク及び親タスクに要求される1つ又は複数の子タスクを決定する手段と,すべての子タスクの情報を格納する手段と,親タスクに必要なすべての子タスクが実行されるか否かを決定する手段とを含む。本発明は,コンピュータの読み取り可能なメディアを含む。このメディアは,上記プログラムを含む。さらに本発明は,上記プログラムを実装するハードウェア,例えばコンピュータを含む。
本発明のプログラムは,タスクとそれに伴う依存性の単純な入力に基づき,タスクの依存性を単純に決定することができる。この依存性により,本発明のプログラムを実装するコンピュータは,タスクのスケジュールを決定することができる。プログラムは,依存性の制御装置として使用されてもよい。
図1は,実施例2の依存性グラフを示す。 図2は,実施例3の依存性グラフを示す。
タスクベースの並列プログラミング言語
本発明のタスクベースの並列プログラミング言語を説明する。本発明により得られるフレームワークは,2階層システムであってもよい。高階層では,タスクと依存性を特定する簡易なスケジューリング言語を扱い,低階層では,タスクの実装を行う。タスクの実装は,タスク言語又は,例えばC++言語のどちらか一方によってなされ得る。
本発明のプログラムは,高階層のプログラムに関する。高階層のプログラミングとして,タスクの指定は,‘task code’,‘input data buffer’,‘output data buffer’及び‘immediate parameter’から成ってもよい。つまり,プログラマーは,‘task code’
‘input data buffer’,‘output data buffer’,又は‘immediate parameter’に関する情報を,キーボード,タッチパネル及びマウスなどのポインティングデバイスによって,入力してもよい。プログラマーは,‘input data buffer’及び‘output data buffer’によりタスクの依存性を入力してもよい。言い換えると,プログラマーは,入出力データの要件に沿って,リスト操作を指示するのみである。
プログラマーは以下のように記述することができる。
Task 1:caluculate character 1 position
Task 2:caluculate character 2 position
Task 3:draw character 1(when Task 1 is complete)
Task 4:draw character 2(when Task 2 is complete)
上記の例において,‘caluculate’及び‘draw’は,‘task code’であり,‘when Task1 is complete’及び‘when Task2 is complete’は,‘input data buffer’に対応している。入力データは,コンピュータのメモリに格納されている。コンピュータは,依存情報を抽出し,タスクスケジューラに渡す。つまり,本プログラムが実装されるこのシステムは,‘input data buffer’を読み込むことにより,Task3がTask1に依存すること,及び‘input data buffer’を読み込むことにより,Task4がTask2に依存することを自動的に決定することができる。また,コンピュータは,メモリから入力データを読み込み,依存性を示すかっこを検索することにより,すべての依存性,つまり,Task3がTask1に依存すること,及びTask4がTask2に依存することを決定してもよい。
本プログラムは,プログラマーに,より大きなバッファのサブ領域の指示を入力させてもよい。サブ領域の入力の表記は,[and]である。その指示により,単一のバッファでの作業を分割してもよい。そのようなデータがプログラマーにより入力される時,コンピュータはその入力をメモリに格納する。その際,コンピュータはメモリからその入力を読み込み,分析する。そして,
[and]を含むように入力が決定されると同時に,コンピュータは,サブ領域のタスクが指示されることを決定する。その後,コンピュータは単一のバッファを2つ又は2つ以上に分割する。
本プログラムは,プログラマーに,バッファの使用に関するいくつかの制約をバイパスする指示を入力させてもよい。バイパスの入力表記の例は,<−である。本プログラムは,コンピュータに,決定された依存性を考慮して,そのようなバイパスを,自動的に決定させてもよい。
本プログラム又は本プログラムを有するコンピュータは,親タスク及び親タスクを要件とする1つ又は複数の子タスクを決定してもよい。上記の例では,Task3をTask1の結果として実行することが要求されているので,Task3はTask1に依存している。この場合,Task3が親タスクで,Task1が子タスクとなる。本発明の好ましい態様では,すべての子タスクの情報をメモリに格納する。コンピュータは,すべての子タスクが終了するか否かを,メモリに格納される子タスクの情報により,決定する。コンピュータは,すべての子タスクが終了されると決定すると同時に,親タスクを実行してもよい。プログラムが,コンピュータに親タスクと子タスクを自動的に決定させ,子タスクが終了した後に親タスクを実行させるので,プログラマーは,タスクとランタイムをスケジューリングする必要がない。
コンピュータのスケジューラは,タスクの依存性のすべてを考慮することにより,実行順序を決定する。コンピュータは,character1とcharacter2が独立するように決定する。コンピュータは,Task1と3及びTask2と4が並列的に実行されるように決定する。コンピュータは,低階層システムを使用して,各タスクのランタイムを決定する。
このシステムでは,データはバッファのタグが付されてもよい。プログラムは,コンピュータの読み込み可能な媒体に格納されてもよい。そのような媒体の例としては,CD−ROM,CD,DVD,FD,MO,USBメモリ,SDカード,IPコア及びICチップがある。つまり,本発明は,上記プログラムを格納する,このようなメモリを有する。
本発明の第2の側面は,複数のタスクの入力手段と,タスクの依存性を入力する手段と,入力されたタスクの依存性により,入力されたすべてのタスクの依存性を自動的に決定する手段,とを含むコンピュータに関する。つまり,コンピュータは,例えば上記プログラムをメインメモリに格納し,プログラムにより提供される操作手段によって,依存性を決定する。コンピュータは,入力手段,出力手段,処理ユニット,及び演算ユニットを含んでもよい。各手段及びユニットは,例えば,バスにより接続されている。
アニメーションシステムの簡単な実施例として,下記のコードは,2つのアニメーションのアンパックとそれらを操作する混合タスクを,正確な依存性でスケジュールする。
buffer<Animation>anim1
anim1:=unpackanim_task(input1)

buffer<Animation>anim2
anim2:=unpackanim_task(input2)

buffer<Animation>final
final:=unpackanim_task(anim1,anim2)
上記では,タスクと依存性が入力されている。つまり,要件となる各タスクの情報は,かっこ内に表示されている。その要件情報は,依存性に関する。従って,コンピュータは,上記入力データを受けとったときに,タスク及び依存性を決定する。コンピュータは,buffer<Animation>finalから,タスクがanim1及びanim2を要件とすること決定する。すなわち,このタスクは上記2つのタスクに依存している。
適切に定義されている‘Animation’データオブジェクトと要件となるタスクコードを考えると,プログラマーは,唯一,データがシステムを移動する方法を特定する必要がある。その時,ランタイムフレームワークは,2つの’unpackanim_task’操作を並列に実行できるように決定することができる。アンパックと混合タスクは以下の関数を実装することによりC++言語によって記述することできる。
void_tl_blend_task(tlcontext_t tlctx,
buffer_t anim1,
buffer_t anim2,
buffer_t output1);
この実装コードは,スケジューリング又はバッファのロッキングの詳細を配慮することなく行われるように,計算のみに焦点を当てることになる。また,実装コードは,コード型とデータ型の最小集合にのみ依存することになるため,すべてのデータは,関数の引数として渡される必要がある。
ここにあるように,このアニメーションのタイプは,C++言語クラスになるだろうが,意図的にunpack()メソッドを組み込んでいない。それどころか,これはタスクのあるデータコンテナであって,メソッドは作動しない。このアーキテクチャ(メソッドは,データアクセスを提供するのであって,作動しない)は,演算関数の依存性を軽減するのに役立つ(そのような依存性は,既存コードをタスクにリファクタリングする時よく問題を起こす)。これにより,より多くの並列化が,最小の努力でより少ないエラーにより導入される。
今後グラフィックアプリケーションとなりえる,ほんの少し高度な実施例を以下に示す。初めに,位置データが復元され,その後,それは,以下の2つの目的に使用される。第1に,位置データは,詳細なバウンディング形状を計算するボクセル構造を満たすように使用される。第2に,位置データは,光のタンジェントデータと標準データを計算するのに使用される。
posBuf:=decomp_pos(compbuffer,numVerts)
tanBuf:=calc_tangents(posBuf,numVerts)
norBuf:=calc_normals(posBuf,tanbuf,numVerts)
voxelBuf:=calc_voxel(posBuf,numVerts)
上記では,タスクと依存性が入力されている。つまり,要件となる各タスクの情報が,かっこ内に表示されている。コンピュータは,入力によりすべてのタスクと依存性を決定する。タスクの‘tanBuf’は,‘posBuf’,つまり‘decomp_pos’に依存している。タスクの‘voxelBuf’は,‘posBuf’,つまり‘decomp_pos’に依存している。タスク‘norBuf’は,‘posBuf’,つまり‘decomp_pos’及び‘tanBuf’,つまり‘calc_tangents’に依存している。次に,コンピュータは,すべてのタスク又はタスクのスケジューリングにランタイムを割り当てる。つまり,コンピュータは,初めに‘decomp_pos’タスクを実行するよう手配し,その時,‘calc_tangent’タスクと‘calc_voxel’タスクを並列に実行し,その後,‘calc_normals’も実行する。
図1の依存性グラフは,設定されたランタイムスケジューラにより,コード実行時に生成された。これは,システムが,タスク間の依存性を正確に抽出していることを示している。
この実施例では,より高度な検証として,再帰ソーティングアルゴリズムを使用した。ピボット(通常,右端の値)を選択し,バッファのファストパスを行う整数型バッファから始めて,ピボットが正しい位置になるよう配列し直すために,ピボットの左側へのすべてのエントリーは,より少ない値か等しい値とし,ピボットの右側へのすべてのエントリーは,そのピボットよりもすべて大きな値とする。
この段階では,左側と右側はソートされていないが,同じアルゴリズムをこれらのサブバッファに,再帰的に適用することができる。サブバッファは,結局は,完全にソートされた整数リストになる。
この実施において,再帰‘ソート’タスクは,タスク言語により実装され,‘doSort()’関数(C言語により実装される)の使用により,実際のデータ操作が行われる。‘sort’関数のコードは,以下に示される。
task buffer<unit32_t>output::
sort(size_t entries,
buffer<unit32_t>input)

#Divide using the pivot
size_t pivIdx
pivIdx
pivIdx=doSort(entries,output)

#Sort LEFT buffer
if pivIdx>1 then
buffer IBuf=output[0,pivIdx]
IBuf<−sort(pivIdx,IBuf)
end

#Sort RIGHT buffer
if pivotIdx<entries−2 then
buffer rBuf =output[pivIdx+1,entries]
size_t rEntries =entries−pivIdx−1
rBuf <− sort(rEntries,rBuf)
end
end
このコードは,いくつかの言語機能を示している。‘sub−buffer’,つまり,[and]表記は,より大きなバッファのサブ領域を参照する新しいバッファオブジェクトを生成するのに使用される。この機能は,依存性を追跡させたまま,単一のバッファの作業を分割させる。‘in−place buffer assignments’,つまり,<−の表記は,バッファ使用時のいくつかの制約を,バイパスするのに使用される。これは,各段階での中間バッファの割り当てを回避するという,実行上の理由で,使用される。
‘continuations’については,左右のサブバッファの子タスクを起動した後,親タスクのソートが終了する。その時,通常ならば,いずれの依存タスクも実行され得るが,子タスクが完了していなかったために,バッファは完全にソートされないかもしれない。これを克服するために,本システムは,子タスクを連続的に起動する。そのため,依存タスクは,子タスクが完了するまで実行されなくてもよい。
図2は,あるテストデータでアルゴリズムを実行することにより生成される依存性グラフを示す。(赤い)ノードはソートプロセスで同時に生成される子タスクを示す。この場合,チェックタスク(Check Task)は,ソートタスクが完了するまでスケジュールされない。
本発明は,コンピュータ産業,特に,アミューズメント産業において利用可能である。
1 タスク
2 バッファ
3 ソート



Claims (3)

  1. 複数のタスクを入力する手段と,
    前記タスクの依存性を入力する手段と,
    入力された前記タスクの依存性を用いることにより,すべての前記タスクの依存性を,自動的に決定する手段として,コンピュータを機能させるプログラムであって,
    前記タスクの入力は,あるバッファで行うタスクの内容を示した“task code”の入力,前記あるバッファに入力されるデータを処理する入力バッファを示した“input data buffer”の入力,及び前記あるバッファから出力されるデータを処理する出力バッファを示した“output data buffer”の入力により行われるものであり,
    前記タスクの依存性は,前記“input data buffer”及び前記“output data buffer”として入力されるものであり,
    さらに,
    単一のバッファでの作業を複数のサブ領域に分割するための“sub−buffer”を入力する手段と,
    前記“sub−buffer”が入力されている場合に,前記タスクの依存性を決定するときに,前記タスクの依存性を追跡している間,前記“sub−buffer”に従って前記単一のバッファでの作業を前記複数のサブ領域に分割する手段として,前記コンピュータを機能させる
    プログラム。
  2. 前記コンピュータを,さらに,
    決定された前記タスクの依存性をすべて考慮して,前記タスクを自動的にスケジューリングする手段として,機能させる
    請求項1に記載のプログラム。
  3. 前記依存性を自動的に決定する手段は,
    親タスク,及び前記親タスクに必要な一又は複数の子タスクを決定する手段と,
    すべての前記子タスクの情報を格納する手段と,
    前記親タスクに必要なすべての前記子タスクが実行されるか否かを決定する手段とを含む,
    請求項1に記載のプログラム。
JP2010277812A 2010-12-14 2010-12-14 タスクベースの並列プログラミング言語 Active JP5613547B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2010277812A JP5613547B2 (ja) 2010-12-14 2010-12-14 タスクベースの並列プログラミング言語
US13/284,035 US8793692B2 (en) 2010-12-14 2011-10-28 Language for task-based parallel programming
EP11188703.0A EP2466462A3 (en) 2010-12-14 2011-11-10 A language for task-based parallel programming

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010277812A JP5613547B2 (ja) 2010-12-14 2010-12-14 タスクベースの並列プログラミング言語

Publications (2)

Publication Number Publication Date
JP2012128551A JP2012128551A (ja) 2012-07-05
JP5613547B2 true JP5613547B2 (ja) 2014-10-22

Family

ID=45093347

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010277812A Active JP5613547B2 (ja) 2010-12-14 2010-12-14 タスクベースの並列プログラミング言語

Country Status (3)

Country Link
US (1) US8793692B2 (ja)
EP (1) EP2466462A3 (ja)
JP (1) JP5613547B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4306165A3 (en) 2011-07-01 2024-04-17 NGM Biopharmaceuticals, Inc. Compositions, uses and methods for treatment of metabolic disorders and diseases
EP2925775B1 (en) 2012-11-28 2020-09-16 NGM Biopharmaceuticals, Inc. Compositions and methods for treatment of metabolic disorders and diseases
US9273107B2 (en) 2012-12-27 2016-03-01 Ngm Biopharmaceuticals, Inc. Uses and methods for modulating bile acid homeostasis and treatment of bile acid disorders and diseases
ES2915851T3 (es) 2012-12-27 2022-06-27 Ngm Biopharmaceuticals Inc Péptidos quiméricos de FGF19 para usar en el tratamiento de trastornos de ácidos biliares
NZ718962A (en) 2013-10-28 2019-12-20 Ngm Biopharmaceuticals Inc Cancer models and associated methods
US10398758B2 (en) 2014-05-28 2019-09-03 Ngm Biopharmaceuticals, Inc. Compositions comprising variants of FGF19 polypeptides and uses thereof for the treatment of hyperglycemic conditions
AU2015277438B2 (en) 2014-06-16 2020-02-27 Ngm Biopharmaceuticals, Inc. Methods and uses for modulating bile acid homeostasis and treatment of bile acid disorders and diseases
JP6949711B2 (ja) 2014-10-23 2021-10-20 エヌジーエム バイオファーマシューティカルス,インコーポレーテッド ペプチドバリアントを含む医薬組成物及びその使用方法
US10434144B2 (en) 2014-11-07 2019-10-08 Ngm Biopharmaceuticals, Inc. Methods for treatment of bile acid-related disorders and prediction of clinical sensitivity to treatment of bile acid-related disorders
US20230297593A1 (en) * 2022-03-21 2023-09-21 Oracle International Corporation Declarative method of grouping, migrating and executing units of work for autonomous hierarchical database systems

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6195590B1 (en) * 1998-02-11 2001-02-27 Roger A. Powell System for control and resource allocation for the manufacture of a product
US6988139B1 (en) * 2002-04-26 2006-01-17 Microsoft Corporation Distributed computing of a job corresponding to a plurality of predefined tasks
US7467383B2 (en) 2004-03-08 2008-12-16 Ab Initio Software Llc System for controlling task execution using a graphical representation of task dependency
JP2009070264A (ja) * 2007-09-14 2009-04-02 Toshiba Corp 階層スケジューリング装置、階層スケジューリング方法及びプログラム
WO2009118731A2 (en) * 2008-03-27 2009-10-01 Rocketick Technologies Ltd Design simulation using parallel processors
CN102077172A (zh) * 2008-07-02 2011-05-25 Nxp股份有限公司 使用运行时间任务调度的多处理器电路
US8335911B2 (en) * 2009-05-21 2012-12-18 Oracle America, Inc. Dynamic allocation of resources in a threaded, heterogeneous processor
US8458136B2 (en) * 2009-07-27 2013-06-04 International Business Machines Corporation Scheduling highly parallel jobs having global interdependencies
US8438131B2 (en) * 2009-11-06 2013-05-07 Altus365, Inc. Synchronization of media resources in a media archive
US20110276966A1 (en) * 2010-05-06 2011-11-10 Arm Limited Managing task dependency within a data processing system
US8887163B2 (en) * 2010-06-25 2014-11-11 Ebay Inc. Task scheduling based on dependencies and resources

Also Published As

Publication number Publication date
JP2012128551A (ja) 2012-07-05
US20120151496A1 (en) 2012-06-14
US8793692B2 (en) 2014-07-29
EP2466462A2 (en) 2012-06-20
EP2466462A3 (en) 2013-05-29

Similar Documents

Publication Publication Date Title
JP5613547B2 (ja) タスクベースの並列プログラミング言語
Xu et al. A practical verification framework for preemptive OS kernels
CN101681272B (zh) 使用事务来并行化顺序框架
US10152309B2 (en) Cross-library framework architecture feature sets
Hanxleden et al. Sequentially Constructive Concurrency—A conservative extension of the synchronous model of computation
Schlich Model checking of software for microcontrollers
JP5813165B2 (ja) トランザクションを用いるシーケンシャルフレームワークの並行化
Ortego et al. SESC: SuperESCalar simulator
US9292265B2 (en) Method for convergence analysis based on thread variance analysis
JP2009129179A (ja) プログラム並列化支援装置およびプログラム並列化支援方法
US11392427B2 (en) Lock-free reading of unitary value sets
US20170017472A1 (en) Incremental interprocedural dataflow analysis during compilation
Gäher et al. Simuliris: a separation logic framework for verifying concurrent program optimizations
Choi et al. FLASH: Fast, parallel, and accurate simulator for HLS
Chi et al. Rapid cycle-accurate simulator for high-level synthesis
Yip et al. The ForeC synchronous deterministic parallel programming language for multicores
Hsu et al. Multithreaded simulation for synchronous dataflow graphs
Alur et al. GPUDrano: Detecting uncoalesced accesses in GPU programs
Natale et al. Buffer optimization in multitask implementations of simulink models
Posch Mastering C++ Multithreading
Stitt et al. Thread warping: Dynamic and transparent synthesis of thread accelerators
Nácul et al. Code partitioning for synthesis of embedded applications with phantom
Taylor et al. Initialization and the Main Pattern
Bajczi et al. Stateless software model checking parameterized with memory consistency models
Gädtke et al. HW/SW co-design for Esterel processing

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130528

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140408

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140530

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140819

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140908

R150 Certificate of patent or registration of utility model

Ref document number: 5613547

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250