|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectedu.rit.pj.ParallelConstruct
edu.rit.pj.ParallelRegion
public abstract class ParallelRegion
Class ParallelRegion is the abstract base class for a parallel region that is executed by a ParallelTeam of threads.
To execute a parallel region, create a ParallelTeam object; create an instance of a concrete subclass of class ParallelRegion; and pass this instance to the parallel team's execute() method. You can do all this using an anonymous inner class; for example:
new ParallelTeam().execute (new ParallelRegion()
{
// Shared variable declarations
. . .
public void start()
{
// Initialization code
. . .
}
public void run()
{
// Thread private variable declarations
// Parallel code
. . .
}
public void finish()
{
// Finalization code
. . .
}
});
The parallel team's execute() method does the following. The parallel team has a certain number of threads K, where K was specified when the parallel team was constructed. The main thread is the thread calling the parallel team's execute() method. The main thread calls the parallel region's start() method. When the start() method returns, all the team threads call the parallel region's run() method concurrently. When all the team threads have returned from the run() method, the main thread calls the parallel region's finish() method. When the finish() method returns, the main thread returns from the parallel team's execute() method.
Variables to be shared by all threads in the team may be declared as fields of the ParallelRegion subclass. The start() method is intended for performing initialization in a single thread before parallel execution begins. If no such initialization is needed, omit the start() method. The run() method contains code to be executed in parallel by all threads in the team. Variables that are private to each thread may be declared inside the run() method. The finish() method is intended for performing finalization in a single thread after parallel execution ends. If no such finalization is needed, omit the finish() method.
If the parallel region's start() method throws an exception, the parallel team's execute() method throws that same exception, and the run() method is not called.
If the parallel region's run() method throws an exception in one of the team threads, the exception's stack trace is printed on the standard error, the parallel team waits until all the other team threads have returned from the run() method, then the parallel team's execute() method throws that same exception, and the parallel region's finish() method is not called. If the parallel region's run() method throws an exception in more than one of the team threads, each exception's stack trace is printed on the standard error, the parallel team waits until all the other team threads have returned from the run() method, then the parallel team's execute() method throws a MultipleParallelException wrapping all the thrown exceptions, and the parallel region's finish() method is not called.
If the parallel region's finish() method throws an exception, the parallel team's execute() method throws that same exception.
| Constructor Summary | |
|---|---|
ParallelRegion()
Construct a new parallel region. |
|
| Method Summary | ||
|---|---|---|
void |
barrier()
Perform a barrier. |
|
void |
barrier(BarrierAction action)
Perform a barrier, with a barrier action. |
|
void |
critical(Lock theLock,
ParallelSection theSection)
Perform a section of code in a critical region with exclusive locking using the given lock. |
|
void |
critical(ParallelSection theSection)
Perform a section of code in a critical region with exclusive locking. |
|
void |
criticalNonexclusive(Lock theLock,
ParallelSection theSection)
Perform a section of code in a critical region with nonexclusive locking using the given lock. |
|
void |
criticalNonexclusive(ParallelSection theSection)
Perform a section of code in a critical region with nonexclusive locking. |
|
void |
execute(int first,
int last,
IntegerForLoop theLoop)
Execute a parallel for loop within this parallel region. |
|
void |
execute(int first,
int last,
IntegerForLoop theLoop,
BarrierAction action)
Execute a parallel for loop within this parallel region. |
|
void |
execute(int first,
int last,
int stride,
IntegerStrideForLoop theLoop)
Execute a parallel for loop within this parallel region. |
|
void |
execute(int first,
int last,
int stride,
IntegerStrideForLoop theLoop,
BarrierAction action)
Execute a parallel for loop within this parallel region. |
|
|
execute(Iterable<T> theIterable,
ParallelIteration<T> theIteration)
Execute a parallel iteration within this parallel region. |
|
|
execute(Iterable<T> theIterable,
ParallelIteration<T> theIteration,
BarrierAction action)
Execute a parallel iteration within this parallel region. |
|
|
execute(Iterator<T> theIterator,
ParallelIteration<T> theIteration)
Execute a parallel iteration within this parallel region. |
|
|
execute(Iterator<T> theIterator,
ParallelIteration<T> theIteration,
BarrierAction action)
Execute a parallel iteration within this parallel region. |
|
void |
execute(long first,
long last,
LongForLoop theLoop)
Execute a parallel for loop within this parallel region. |
|
void |
execute(long first,
long last,
LongForLoop theLoop,
BarrierAction action)
Execute a parallel for loop within this parallel region. |
|
void |
execute(long first,
long last,
long stride,
LongStrideForLoop theLoop)
Execute a parallel for loop within this parallel region. |
|
void |
execute(long first,
long last,
long stride,
LongStrideForLoop theLoop,
BarrierAction action)
Execute a parallel for loop within this parallel region. |
|
void |
execute(ParallelSection section)
Execute a parallel section within this parallel region. |
|
void |
execute(ParallelSection[] sections)
Execute a group of parallel sections concurrently within this parallel region. |
|
void |
execute(ParallelSection[] sections,
BarrierAction action)
Execute a group of parallel sections concurrently within this parallel region. |
|
void |
execute(ParallelSection section,
BarrierAction action)
Execute a parallel section within this parallel region. |
|
void |
execute(ParallelSection section1,
ParallelSection section2)
Execute a group of two parallel sections concurrently within this parallel region. |
|
void |
execute(ParallelSection section1,
ParallelSection section2,
BarrierAction action)
Execute a group of two parallel sections concurrently within this parallel region. |
|
void |
execute(ParallelSection section1,
ParallelSection section2,
ParallelSection section3)
Execute a group of three parallel sections concurrently within this parallel region. |
|
void |
execute(ParallelSection section1,
ParallelSection section2,
ParallelSection section3,
BarrierAction action)
Execute a group of three parallel sections concurrently within this parallel region. |
|
|
execute(T[] theArray,
ParallelIteration<T> theIteration)
Execute a parallel iteration within this parallel region. |
|
|
execute(T[] theArray,
ParallelIteration<T> theIteration,
BarrierAction action)
Execute a parallel iteration within this parallel region. |
|
void |
finish()
Perform finalization actions after parallel execution ends. |
|
abstract void |
run()
Execute parallel code. |
|
void |
start()
Perform initialization actions before parallel execution begins. |
|
| Methods inherited from class edu.rit.pj.ParallelConstruct |
|---|
getThreadCount, getThreadIndex, isExecutingInParallel, region, team |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public ParallelRegion()
| Method Detail |
|---|
public void start()
throws Exception
The start() method may be overridden in a subclass. If not overridden, the start() method does nothing.
Exception - The start() method may throw any exception.
public abstract void run()
throws Exception
The run() method must be implemented in a subclass.
Exception - The run() method may throw any exception.
public void finish()
throws Exception
The finish() method may be overridden in a subclass. If not overridden, the finish() method does nothing.
Exception - The finish() method may throw any exception.
public final void execute(int first,
int last,
IntegerForLoop theLoop)
throws Exception
Note: Either all threads in the parallel team must call the execute() method with identical arguments, or none of the threads must call the execute() method.
first - First loop index.last - Last loop index.theLoop - Parallel for loop.
NullPointerException - (unchecked exception) Thrown if theLoop is null.
IllegalStateException - (unchecked exception) Thrown if no parallel team is executing this
parallel region.
Exception - Thrown if one of theLoop's methods throws an exception.
public final void execute(int first,
int last,
IntegerForLoop theLoop,
BarrierAction action)
throws Exception
Note: Either all threads in the parallel team must call the execute() method with identical arguments, or none of the threads must call the execute() method.
first - First loop index.last - Last loop index.theLoop - Parallel for loop.action - Barrier action.
NullPointerException - (unchecked exception) Thrown if theLoop is null. Thrown if
action is null.
IllegalStateException - (unchecked exception) Thrown if no parallel team is executing this
parallel region.
Exception - Thrown if one of theLoop's methods throws an exception.
public final void execute(int first,
int last,
int stride,
IntegerStrideForLoop theLoop)
throws Exception
Note: Either all threads in the parallel team must call the execute() method with identical arguments, or none of the threads must call the execute() method.
first - First loop index.last - Last loop index.stride - Loop index stride, >= 1.theLoop - Parallel for loop.
IllegalArgumentException - (unchecked exception) Thrown if stride < 1.
NullPointerException - (unchecked exception) Thrown if theLoop is null.
IllegalStateException - (unchecked exception) Thrown if no parallel team is executing this
parallel region.
Exception - Thrown if one of theLoop's methods throws an exception.
public final void execute(int first,
int last,
int stride,
IntegerStrideForLoop theLoop,
BarrierAction action)
throws Exception
Note: Either all threads in the parallel team must call the execute() method with identical arguments, or none of the threads must call the execute() method.
first - First loop index.last - Last loop index.stride - Loop index stride, >= 1.theLoop - Parallel for loop.action - Barrier action.
IllegalArgumentException - (unchecked exception) Thrown if stride < 1.
NullPointerException - (unchecked exception) Thrown if theLoop is null. Thrown if
action is null.
IllegalStateException - (unchecked exception) Thrown if no parallel team is executing this
parallel region.
Exception - Thrown if one of theLoop's methods throws an exception.
public final void execute(long first,
long last,
LongForLoop theLoop)
throws Exception
Note: Either all threads in the parallel team must call the execute() method with identical arguments, or none of the threads must call the execute() method.
first - First loop index.last - Last loop index.theLoop - Parallel for loop.
NullPointerException - (unchecked exception) Thrown if theLoop is null.
IllegalStateException - (unchecked exception) Thrown if no parallel team is executing this
parallel region.
Exception - Thrown if one of theLoop's methods throws an exception.
public final void execute(long first,
long last,
LongForLoop theLoop,
BarrierAction action)
throws Exception
Note: Either all threads in the parallel team must call the execute() method with identical arguments, or none of the threads must call the execute() method.
first - First loop index.last - Last loop index.theLoop - Parallel for loop.action - Barrier action.
NullPointerException - (unchecked exception) Thrown if theLoop is null. Thrown if
action is null.
IllegalStateException - (unchecked exception) Thrown if no parallel team is executing this
parallel region.
Exception - Thrown if one of theLoop's methods throws an exception.
public final void execute(long first,
long last,
long stride,
LongStrideForLoop theLoop)
throws Exception
Note: Either all threads in the parallel team must call the execute() method with identical arguments, or none of the threads must call the execute() method.
first - First loop index.last - Last loop index.stride - Loop index stride, >= 1.theLoop - Parallel for loop.
IllegalArgumentException - (unchecked exception) Thrown if stride < 1.
NullPointerException - (unchecked exception) Thrown if theLoop is null.
IllegalStateException - (unchecked exception) Thrown if no parallel team is executing this
parallel region.
Exception - Thrown if one of theLoop's methods throws an exception.
public final void execute(long first,
long last,
long stride,
LongStrideForLoop theLoop,
BarrierAction action)
throws Exception
Note: Either all threads in the parallel team must call the execute() method with identical arguments, or none of the threads must call the execute() method.
first - First loop index.last - Last loop index.stride - Loop index stride, >= 1.theLoop - Parallel for loop.action - Barrier action.
IllegalArgumentException - (unchecked exception) Thrown if stride < 1.
NullPointerException - (unchecked exception) Thrown if theLoop is null. Thrown if
action is null.
IllegalStateException - (unchecked exception) Thrown if no parallel team is executing this
parallel region.
Exception - Thrown if one of theLoop's methods throws an exception.
public final <T> void execute(T[] theArray,
ParallelIteration<T> theIteration)
throws Exception
Note: Either all threads in the parallel team must call the execute() method with identical arguments, or none of the threads must call the execute() method.
T - Data type of the items iterated over.theArray - Array containing the items.theIteration - Parallel iteration.
NullPointerException - (unchecked exception) Thrown if theArray is null or
theIteration is null.
IllegalStateException - (unchecked exception) Thrown if no parallel team is executing this
parallel region.
Exception - Thrown if one of theIteration's methods throws an exception.
public final <T> void execute(T[] theArray,
ParallelIteration<T> theIteration,
BarrierAction action)
throws Exception
Note: Either all threads in the parallel team must call the execute() method with identical arguments, or none of the threads must call the execute() method.
T - Data type of the items iterated over.theArray - Array containing the items.theIteration - Parallel iteration.action - Barrier action.
NullPointerException - (unchecked exception) Thrown if theArray is null. Thrown if
theIteration is null. Thrown if action is null.
IllegalStateException - (unchecked exception) Thrown if no parallel team is executing this
parallel region.
Exception - Thrown if one of theIteration's methods throws an exception.
public final <T> void execute(Iterator<T> theIterator,
ParallelIteration<T> theIteration)
throws Exception
Note: Either all threads in the parallel team must call the execute() method with identical arguments, or none of the threads must call the execute() method.
T - Data type of the items iterated over.theIterator - Iterator over the items.theIteration - Parallel iteration.
NullPointerException - (unchecked exception) Thrown if theIterator is null or
theIteration is null.
IllegalStateException - (unchecked exception) Thrown if no parallel team is executing this
parallel region.
Exception - Thrown if one of theIteration's methods throws an exception.
public final <T> void execute(Iterator<T> theIterator,
ParallelIteration<T> theIteration,
BarrierAction action)
throws Exception
Note: Either all threads in the parallel team must call the execute() method with identical arguments, or none of the threads must call the execute() method.
T - Data type of the items iterated over.theIterator - Iterator over the items.theIteration - Parallel iteration.action - Barrier action.
NullPointerException - (unchecked exception) Thrown if theIterator is null. Thrown
if theIteration is null. Thrown if action is null.
IllegalStateException - (unchecked exception) Thrown if no parallel team is executing this
parallel region.
Exception - Thrown if one of theIteration's methods throws an exception.
public final <T> void execute(Iterable<T> theIterable,
ParallelIteration<T> theIteration)
throws Exception
Note: Either all threads in the parallel team must call the execute() method with identical arguments, or none of the threads must call the execute() method.
T - Data type of the items iterated over.theIterable - Iterable collection containing the items.theIteration - Parallel iteration.
NullPointerException - (unchecked exception) Thrown if theIterable is null or
theIteration is null.
IllegalStateException - (unchecked exception) Thrown if no parallel team is executing this
parallel region.
Exception - Thrown if one of theIteration's methods throws an exception.
public final <T> void execute(Iterable<T> theIterable,
ParallelIteration<T> theIteration,
BarrierAction action)
throws Exception
Note: Either all threads in the parallel team must call the execute() method with identical arguments, or none of the threads must call the execute() method.
T - Data type of the items iterated over.theIterable - Iterable collection containing the items.theIteration - Parallel iteration.action - Barrier action.
NullPointerException - (unchecked exception) Thrown if theIterable is null. Thrown
if theIteration is null. Thrown if action is null.
IllegalStateException - (unchecked exception) Thrown if no parallel team is executing this
parallel region.
Exception - Thrown if one of theIteration's methods throws an exception.
public final void execute(ParallelSection section)
throws Exception
Note: Either all threads in the parallel team must call the execute() method with identical arguments, or none of the threads must call the execute() method.
section - Parallel section.
NullPointerException - (unchecked exception) Thrown if section is null.
IllegalStateException - (unchecked exception) Thrown if no parallel team is executing this
parallel region.
Exception - Thrown if the parallel section's run() method throws an
exception.
public final void execute(ParallelSection section,
BarrierAction action)
throws Exception
Note: Either all threads in the parallel team must call the execute() method with identical arguments, or none of the threads must call the execute() method.
section - Parallel section.action - Barrier action.
NullPointerException - (unchecked exception) Thrown if section is null. Thrown if
action is null.
IllegalStateException - (unchecked exception) Thrown if no parallel team is executing this
parallel region.
Exception - Thrown if the parallel section's run() method throws an
exception.
public final void execute(ParallelSection section1,
ParallelSection section2)
throws Exception
Note: Either all threads in the parallel team must call the execute() method with identical arguments, or none of the threads must call the execute() method.
section1 - First parallel section.section2 - Second parallel section.
NullPointerException - (unchecked exception) Thrown if section1 is null. Thrown if
section2 is null.
IllegalStateException - (unchecked exception) Thrown if no parallel team is executing this
parallel region.
Exception - Thrown if one of the parallel sections' run() methods throws
an exception.
public final void execute(ParallelSection section1,
ParallelSection section2,
BarrierAction action)
throws Exception
Note: Either all threads in the parallel team must call the execute() method with identical arguments, or none of the threads must call the execute() method.
section1 - First parallel section.section2 - Second parallel section.action - Barrier action.
NullPointerException - (unchecked exception) Thrown if section1 is null. Thrown if
section2 is null. Thrown if action is null.
IllegalStateException - (unchecked exception) Thrown if no parallel team is executing this
parallel region.
Exception - Thrown if one of the parallel sections' run() methods throws
an exception.
public final void execute(ParallelSection section1,
ParallelSection section2,
ParallelSection section3)
throws Exception
Note: Either all threads in the parallel team must call the execute() method with identical arguments, or none of the threads must call the execute() method.
section1 - First parallel section.section2 - Second parallel section.section3 - Third parallel section.
NullPointerException - (unchecked exception) Thrown if section1 is null. Thrown if
section2 is null. Thrown if section3 is null.
IllegalStateException - (unchecked exception) Thrown if no parallel team is executing this
parallel region.
Exception - Thrown if one of the parallel sections' run() methods throws
an exception.
public final void execute(ParallelSection section1,
ParallelSection section2,
ParallelSection section3,
BarrierAction action)
throws Exception
Note: Either all threads in the parallel team must call the execute() method with identical arguments, or none of the threads must call the execute() method.
section1 - First parallel section.section2 - Second parallel section.section3 - Third parallel section.action - Barrier action.
NullPointerException - (unchecked exception) Thrown if section1 is null. Thrown if
section2 is null. Thrown if section3 is null.
Thrown if action is null.
IllegalStateException - (unchecked exception) Thrown if no parallel team is executing this
parallel region.
Exception - Thrown if one of the parallel sections' run() methods throws
an exception.
public final void execute(ParallelSection[] sections)
throws Exception
Note: Either all threads in the parallel team must call the execute() method with identical arguments, or none of the threads must call the execute() method.
sections - Parallel sections.
NullPointerException - (unchecked exception) Thrown if any of the sections is null.
IllegalStateException - (unchecked exception) Thrown if no parallel team is executing this
parallel region.
Exception - Thrown if one of the parallel sections' run() methods throws
an exception.
public final void execute(ParallelSection[] sections,
BarrierAction action)
throws Exception
Note: Either all threads in the parallel team must call the execute() method with identical arguments, or none of the threads must call the execute() method.
sections - Parallel sections.action - Barrier action.
NullPointerException - (unchecked exception) Thrown if any of the sections is null.
Thrown if action is null.
IllegalStateException - (unchecked exception) Thrown if no parallel team is executing this
parallel region.
Exception - Thrown if one of the parallel sections' run() methods throws
an exception.
public final void critical(ParallelSection theSection)
throws Exception
If the parallel section's run() method throws an exception, the critical() method throws that same exception in the thread that called the run() method (after unlocking the lock).
theSection - Parallel section to execute in the critical region.
NullPointerException - (unchecked exception) Thrown if theSection is null.
IllegalStateException - (unchecked exception) Thrown if no parallel team is executing this
parallel region.
Exception - Thrown if theSection's run() method throws an
exception.
public final void criticalNonexclusive(ParallelSection theSection)
throws Exception
If the parallel section's run() method throws an exception, the critical() method throws that same exception in the thread that called the run() method (after unlocking the lock).
theSection - Parallel section to execute in the critical region.
NullPointerException - (unchecked exception) Thrown if theSection is null.
IllegalStateException - (unchecked exception) Thrown if no parallel team is executing this
parallel region.
Exception - Thrown if theSection's run() method throws an
exception.
public final void critical(Lock theLock,
ParallelSection theSection)
throws Exception
If the parallel section's run() method throws an exception, the critical() method throws that same exception in the thread that called the run() method (after unlocking the lock).
theLock - Lock.theSection - Parallel section to execute in the critical region.
NullPointerException - (unchecked exception) Thrown if theLock is null or
theSection is null.
IllegalStateException - (unchecked exception) Thrown if no parallel team is executing this
parallel region.
Exception - Thrown if theSection's run() method throws an
exception.
public final void criticalNonexclusive(Lock theLock,
ParallelSection theSection)
throws Exception
If the parallel section's run() method throws an exception, the critical() method throws that same exception in the thread that called the run() method (after unlocking the lock).
theLock - Lock.theSection - Parallel section to execute in the critical region.
NullPointerException - (unchecked exception) Thrown if theLock is null or
theSection is null.
IllegalStateException - (unchecked exception) Thrown if no parallel team is executing this
parallel region.
Exception - Thrown if theSection's run() method throws an
exception.public final void barrier()
Note: Either all threads in the parallel team must call the barrier() method, or none of the threads must call the barrier() method.
IllegalStateException - (unchecked exception) Thrown if no parallel team is executing this
parallel region.
public final void barrier(BarrierAction action)
throws Exception
Note: Either all threads in the parallel team must call the barrier() method, or none of the threads must call the barrier() method.
action - Barrier action.
NullPointerException - (unchecked exception) Thrown if action is null.
IllegalStateException - (unchecked exception) Thrown if no parallel team is executing this
parallel region.
Exception - Thrown if theSection's run() method throws an
exception.
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||