JP5576305B2 - コンピュータの動作制御方法、プログラム及びシステム - Google Patents
コンピュータの動作制御方法、プログラム及びシステム Download PDFInfo
- Publication number
- JP5576305B2 JP5576305B2 JP2011009968A JP2011009968A JP5576305B2 JP 5576305 B2 JP5576305 B2 JP 5576305B2 JP 2011009968 A JP2011009968 A JP 2011009968A JP 2011009968 A JP2011009968 A JP 2011009968A JP 5576305 B2 JP5576305 B2 JP 5576305B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- task
- escaped
- called
- join
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
Description
class Fib extends ForkJoinTask {
Integer r;
Fib(int r) { this.r = r; }
protected boolean exec() {
if (r < 2) return true;
Fib f1 = new Fib(r - 1);
Fib f2 = new Fib(r - 2);
f1.fork(); f2.fork();
f2.join(); f1.join();
r = f1.r + f2.r;
return true;
}
}
void main() {
pool.invoke(new Fib(5));
}
1.Fib f1 = new Fib(r - 1)及びFib f2 = new Fib(r - 2)によって、タスク・オブジェクト(ForkJoinTask)を生成する。
2.f1.fork()、 f2.fork()によって、タスク・オブジェクトのfork()を呼ぶ。このとき、fork()を呼び出したWorker固有のタスク・キューに、タスク・オブジェクトを入れる。その際、他のWorkerがアイドル状態の場合、キューからタスク・オブジェクトがスティールされる。
3.f2.join()、f1.join()によって、タスク・オブジェクトのjoin()を呼び、終了を待つ。このとき、タスク・オブジェクトがスティールされていない場合は、join()内でjoin()を呼び出したWorker固有のタスク・キューからタスク・オブジェクトを取り出し、タスクの処理(exec())を実行する。タスク・オブジェクトがスティールされている場合は、タスク・オブジェクトの処理(exec())の終了を待機する。
− タスク・オブジェクトをワークスティーリングのキューに入れる処理では、エスケープしないものとみなす。この処理とは例えば、fork()により行われるものである。
− キューに入れたタスク・オブジェクトの終了を待機する処理では、エスケープしないものとみなす。この処理とは例えば、join()により行われるものである。
− 上記以外でタスク・オブジェクトがエスケープする場合は、エスケープしないものとみなす。
class Fib extends ForkJoinTask {
Integer r;
Fib(int r) { this.r = r; }
protected boolean exec() {
if (r < 2) return true;
Fib f1 = new Fib(r - 1);
Fib f2 = new Fib(r - 2);
f1.fork(); f2.fork();
f2.join(); f1.join();
r = f1.r + f2.r;
return true;
}
}
void main() {
pool.invoke(new Fib(5));
}
・join()が終了した時点では、タスクはキューから削除されている。
・join()が終了した時点で、スティールしたWorkerは、タスクの参照をもっていない場合がある。このとき、exec()内でthisがエスケープしていない。
− タスク・オブジェクトを生成するメソッド・フレーム内で、fork()、join()メソッドが呼ばれている。
− 上記メソッド・フレーム内で、上記タスク・オブジェクトが、fork()、join()以外でエスケープしていない。
− 上記タスク・オブジェクトのexec()メソッド内で、thisが他のスレッドにエスケープしていない。
本発明に従うJVM204は、これらの条件を満たしている場合、タスク・オブジェクトはエスケープしていないものとみなし、スタックに割り当てる。
104 CPU
106 主記憶
108 ハードディスク・ドライブ
202 オペレーティング・システム
204 JVM
206 バイトコード
Claims (18)
- コンピュータの処理によりスタック割当ての可否を判定するステップを実行する方法であって、
前記コンピュータが、
(a) オブジェクトを生成しているメソッド・フレーム内で、当該オブジェクトをエスケープする可能性がある第1の命令と、前記第1の命令によるオブジェクトのエスケープ状態を解消する第2の命令が呼ばれていることと、
(b) 前記オブジェクトが第1の命令によってエスケープ状態となり、第2の命令により
エスケープ状態でなくなった場合、エスケープ状態でなくなった時点で当該オブジェクトがエスケープしたスレッド以外のスレッドにエスケープしていないことと、
(c) 前記第1の命令が第2の命令の前で呼ばれることと、及び
(d) 前記メソッド・フレーム内で、前記第1の命令内で前記オブジェクトがエスケープしているかどうかに拘らず、前記第1の命令以外でエスケープしていないことに応答して、前記オブジェクトをスタック割当てするステップを実行する、
コンピュータの動作制御方法。 - 前記第2の命令によってキャンセルされない、オブジェクトのエスケープを発生させる可能性のある第3の命令があることを検出することに応答して、当該第1の命令が呼ばれた後、第2の命令が呼ばれる前に、第3の命令が呼ばれた場合に、スタックに割り当てたオブジェクトをヒープに割り当てしなおすステップをさらに有する、請求項1に記載の方法。
- 前記コンピュータが、Fork-Joinフレームワークで動作し、前記第1の命令がfork()で
あり、前記第2の命令がjoin()である、請求項2に記載の方法。 - 前記第3の命令は、タスク・オブジェクトをワークスティーリングのキューに挿入する際にのみ使用するメソッド及び、タスク・オブジェクトをワークスティーリングのキューに挿入する後、タスクの終了を待機する際にのみ使用するメソッド以外である、請求項2に記載の方法。
- 前記各ステップが、Java(R) VMによって実行される、請求項2に記載の方法。
- 前記各ステップが、JITコンパイラによって生成されたコードによって実行される、請求項2に記載の方法。
- コンピュータの処理によりスタック割当ての可否を判定するステップを実行するプログラムであって、
前記コンピュータに、
(a) オブジェクトを生成しているメソッド・フレーム内で、当該オブジェクトをエスケープする可能性がある第1の命令と、前記第1の命令によるオブジェクトのエスケープ状態を解消する第2の命令が呼ばれていることと、
(b) 前記オブジェクトが第1の命令によってエスケープ状態となり、第2の命令により
エスケープ状態でなくなった場合、エスケープ状態でなくなった時点で当該オブジェクトがエスケープしたスレッド以外のスレッドにエスケープしていないことと、
(c) 前記第1の命令が第2の命令の前で呼ばれることと、及び
(d) 前記メソッド・フレーム内で、前記第1の命令内で前記オブジェクトがエスケープしているかどうかに拘らず、前記第1の命令以外でエスケープしていないことに応答して、前記オブジェクトをスタック割当てするステップを実行させる、
プログラム。 - 前記第2の命令によってキャンセルされない、オブジェクトのエスケープを発生させる可能性のある第3の命令があることを検出することに応答して、当該第1の命令が呼ばれた後、第2の命令が呼ばれる前に、第3の命令が呼ばれた場合に、スタックに割り当てたオブジェクトをヒープに割り当てしなおすステップをさらに有する、請求項7に記載のプログラム。
- 前記コンピュータが、Fork-Joinフレームワークで動作し、前記第1の命令がfork()で
あり、前記第2の命令がjoin()である、請求項8に記載のプログラム。 - 前記第3の命令は、タスク・オブジェクトをワークスティーリングのキューに挿入する際にのみ使用するメソッド及び、タスク・オブジェクトをワークスティーリングのキューに挿入する後、タスクの終了を待機する際にのみ使用するメソッド以外である、請求項8に記載のプログラム。
- 前記各ステップが、Java(R) VMによって実行される、請求項8に記載のプログラム。
- 前記各ステップが、JITコンパイラによって生成されたコードによって実行される、請求項8に記載のプログラム。
- コンピュータの処理によりスタック割当ての可否を判定するステップを実行するシステムであって、
(a) オブジェクトを生成しているメソッド・フレーム内で、当該オブジェクトをエスケープする可能性がある第1の命令と、前記第1の命令によるオブジェクトのエスケープ状態を解消する第2の命令が呼ばれていることと、
(b) 前記オブジェクトが第1の命令によってエスケープ状態となり、第2の命令により
エスケープ状態でなくなった場合、エスケープ状態でなくなった時点で当該オブジェクトがエスケープしたスレッド以外のスレッドにエスケープしていないことと、
(c) 前記第1の命令が第2の命令の前で呼ばれることと、及び
(d) 前記メソッド・フレーム内で、前記第1の命令内で前記オブジェクトがエスケープしているかどうかに拘らず、前記第1の命令以外でエスケープしていないことに応答して、前記オブジェクトをスタック割当てする手段を有する、
システム。 - 前記第2の命令によってキャンセルされない、オブジェクトのエスケープを発生させる可能性のある第3の命令があることを検出することに応答して、当該第1の命令が呼ばれた後、第2の命令が呼ばれる前に、第3の命令が呼ばれた場合に、スタックに割り当てたオブジェクトをヒープに割り当てしなおす手段をさらに有する、請求項13に記載のシステム。
- 前記コンピュータが、Fork-Joinフレームワークで動作し、前記第1の命令がfork()で
あり、前記第2の命令がjoin()である、請求項14に記載のシステム。 - 前記第3の命令は、タスク・オブジェクトをワークスティーリングのキューに挿入する際にのみ使用するメソッド及び、タスク・オブジェクトをワークスティーリングのキューに挿入する後、タスクの終了を待機する際にのみ使用するメソッド以外である、請求項14に記載のシステム。
- 前記各手段が、Java(R) VMによって実行される、請求項14に記載のシステム。
- 前記各手段が、JITコンパイラによって生成されたコードを含む、請求項14に記載
のシステム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011009968A JP5576305B2 (ja) | 2011-01-20 | 2011-01-20 | コンピュータの動作制御方法、プログラム及びシステム |
US13/347,905 US8918622B2 (en) | 2011-01-20 | 2012-01-11 | Computer operation control method, program and system |
US13/594,005 US8930677B2 (en) | 2011-01-20 | 2012-08-24 | Computer operation control method, program, and system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011009968A JP5576305B2 (ja) | 2011-01-20 | 2011-01-20 | コンピュータの動作制御方法、プログラム及びシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012150716A JP2012150716A (ja) | 2012-08-09 |
JP5576305B2 true JP5576305B2 (ja) | 2014-08-20 |
Family
ID=46545036
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011009968A Expired - Fee Related JP5576305B2 (ja) | 2011-01-20 | 2011-01-20 | コンピュータの動作制御方法、プログラム及びシステム |
Country Status (2)
Country | Link |
---|---|
US (2) | US8918622B2 (ja) |
JP (1) | JP5576305B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9727338B2 (en) * | 2012-11-05 | 2017-08-08 | Nvidia Corporation | System and method for translating program functions for correct handling of local-scope variables and computing system incorporating the same |
CN107092573B (zh) | 2013-03-15 | 2023-04-18 | 英特尔公司 | 用于异构计算系统中的工作窃取的方法和设备 |
US10331554B2 (en) * | 2017-04-28 | 2019-06-25 | International Business Machines Corporation | Balanced double deques for eliminating memory fences in garbage collection |
US10929054B2 (en) * | 2019-06-06 | 2021-02-23 | International Business Machines Corporation | Scalable garbage collection |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7058943B2 (en) * | 2001-05-24 | 2006-06-06 | International Business Machines Corporation | Object oriented apparatus and method for allocating objects on an invocation stack in a partial compilation environment |
JP3790707B2 (ja) | 2002-01-17 | 2006-06-28 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラム変換方法、これを用いたコンピュータ装置及びプログラム |
US7117318B1 (en) * | 2003-08-04 | 2006-10-03 | Azul Systems, Inc. | Memory management |
US8453132B2 (en) | 2006-07-28 | 2013-05-28 | Hewlett-Packard Development Company, L.P. | System and method for recompiling code based on locality domain and thread affinity in NUMA computer systems |
-
2011
- 2011-01-20 JP JP2011009968A patent/JP5576305B2/ja not_active Expired - Fee Related
-
2012
- 2012-01-11 US US13/347,905 patent/US8918622B2/en not_active Expired - Fee Related
- 2012-08-24 US US13/594,005 patent/US8930677B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20120191947A1 (en) | 2012-07-26 |
JP2012150716A (ja) | 2012-08-09 |
US8918622B2 (en) | 2014-12-23 |
US20120324206A1 (en) | 2012-12-20 |
US8930677B2 (en) | 2015-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101825772B1 (ko) | 선택된 실행 런타임을 갖는 실행을 위한 사용자 코드의 런타임 독립적 표현 기법 | |
KR100898315B1 (ko) | 인핸스드 런타임 호스팅 | |
US10592218B2 (en) | Dynamic data and compute resource elasticity | |
US10585653B2 (en) | Declarative programming model with a native programming language | |
US20120054725A1 (en) | method and system for code generation and inlining | |
JP2013500543A (ja) | データ並列スレッドを有する処理論理の複数のプロセッサにわたるマッピング | |
JP5576305B2 (ja) | コンピュータの動作制御方法、プログラム及びシステム | |
Tsuji et al. | Multiple-spmd programming environment based on pgas and workflow toward post-petascale computing | |
Chen et al. | Case: A compiler-assisted scheduling framework for multi-gpu systems | |
JP5379779B2 (ja) | コンピュータにおけるオブジェクトの処理方法、プログラム及びシステム | |
US8615760B2 (en) | Facilitating memory analysis | |
Alsaadi et al. | Radical-pilot and parsl: Executing heterogeneous workflows on HPC platforms | |
Yu et al. | Resource management for elastic cloud workflows | |
Pufek et al. | Achieving Efficient Structured Concurrency through Lightweight Fibers in Java Virtual Machine | |
Nair | An Analytical study of Performance towards Task-level Parallelism on Many-core systems using Java API | |
Dümmler et al. | Execution schemes for the NPB-MZ benchmarks on hybrid architectures: a comparative study | |
Lu et al. | Developing a concurrent service orchestration engine in ccr | |
Shipman et al. | Analysis of Application Sensitivity to System Performance Variability in a Dynamic Task Based Runtime. | |
Maia et al. | Combining rtsj with fork/join: a priority-based model | |
EP2297639A2 (en) | Method of using parallel processing constructs | |
Gorsky et al. | Static-dynamic algorithm for managing asynchronous computations in distributed environments. | |
da Rosa Righi et al. | Controlling processes reassignment in bsp applications | |
Endo et al. | ComposableThreads: Rethinking User-level Threads with Composability and Parametricity in C++ | |
Sayar et al. | NETWORK LOAD BALANCING WITH STRONG MIGRATION IN AN AGENT BASED GRID SYSTEM USING CSP APPROACH | |
Titus et al. | Scaling Threaded Applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20131114 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140304 |
|
A521 | Written amendment |
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: 20140617 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140703 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5576305 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |