Difference between revisions of "Habanero"

From CSE231 Wiki
Jump to navigation Jump to search
Line 1: Line 1:
 
==Async, Finish==
 
==Async, Finish==
 
Async and finish make up the fundamental building blocks of task-level parallelism in Habanero.
 
Async and finish make up the fundamental building blocks of task-level parallelism in Habanero.
 +
 +
These concepts are first covered in [https://edge.edx.org/courses/RiceX/COMP322/1T2014R/courseware/a900dd0655384de3b5ef01e508ea09d7/be41f5f2b11a4445aa4be174e94f1717/1 RiceX Topic 1.1].
  
 
[http://www.cse.wustl.edu/~cosgroved/courses/cse231/s17/javadocs/edu/wustl/cse231s/rice/classic/HabaneroClassic.html#async-edu.rice.hj.api.HjSuspendable- async(body)] creates a new child task that can run before, after, or in parallel with all remaining statements of the parent task.
 
[http://www.cse.wustl.edu/~cosgroved/courses/cse231/s17/javadocs/edu/wustl/cse231s/rice/classic/HabaneroClassic.html#async-edu.rice.hj.api.HjSuspendable- async(body)] creates a new child task that can run before, after, or in parallel with all remaining statements of the parent task.
  
 
[http://www.cse.wustl.edu/~cosgroved/courses/cse231/s17/javadocs/edu/wustl/cse231s/rice/classic/HabaneroClassic.html#finish-edu.rice.hj.api.HjSuspendable- finish(body)] executes body and waits for all child tasks to complete.
 
[http://www.cse.wustl.edu/~cosgroved/courses/cse231/s17/javadocs/edu/wustl/cse231s/rice/classic/HabaneroClassic.html#finish-edu.rice.hj.api.HjSuspendable- finish(body)] executes body and waits for all child tasks to complete.
 
These concepts are first covered in [https://edge.edx.org/courses/RiceX/COMP322/1T2014R/courseware/a900dd0655384de3b5ef01e508ea09d7/be41f5f2b11a4445aa4be174e94f1717/1 RiceX Topic 1.1].
 
  
 
==Future==
 
==Future==
 
A future is a tasks that return a value.
 
A future is a tasks that return a value.
 +
 +
Futures are covered in [https://edge.edx.org/courses/RiceX/COMP322/1T2014R/courseware/a900dd0655384de3b5ef01e508ea09d7/9eacfea8754549a4bc42918149130a74/1 RiceX Topic 2.1].
  
 
[http://www.cse.wustl.edu/~cosgroved/courses/cse231/s17/javadocs/edu/wustl/cse231s/rice/classic/HabaneroClassic.html#future-edu.rice.hj.api.HjSuspendingCallable- future(body)] returns an instance of  [http://www.cs.rice.edu/~vs3/hjlib/doc/edu/rice/hj/api/HjFuture.html HjFuture].  Invoking the [http://www.cs.rice.edu/~vs3/hjlib/doc/edu/rice/hj/api/HjFuture.html#get-- get()] method on that instance waits for the task to complete.
 
[http://www.cse.wustl.edu/~cosgroved/courses/cse231/s17/javadocs/edu/wustl/cse231s/rice/classic/HabaneroClassic.html#future-edu.rice.hj.api.HjSuspendingCallable- future(body)] returns an instance of  [http://www.cs.rice.edu/~vs3/hjlib/doc/edu/rice/hj/api/HjFuture.html HjFuture].  Invoking the [http://www.cs.rice.edu/~vs3/hjlib/doc/edu/rice/hj/api/HjFuture.html#get-- get()] method on that instance waits for the task to complete.
  
Futures are covered in [https://edge.edx.org/courses/RiceX/COMP322/1T2014R/courseware/a900dd0655384de3b5ef01e508ea09d7/9eacfea8754549a4bc42918149130a74/1 RiceX Topic 2.1].
 
  
 
==FinishAccumulator==
 
==FinishAccumulator==
 
Finish Accumulators provide a convenient way to keep track of a count (for example: the number of solutions in the n-queens problem) or perform a reduction as in the [[MapReduce_Assignment]].
 
Finish Accumulators provide a convenient way to keep track of a count (for example: the number of solutions in the n-queens problem) or perform a reduction as in the [[MapReduce_Assignment]].
  
 +
FinishAccumulators are covered in [https://edge.edx.org/courses/RiceX/COMP322/1T2014R/courseware/a900dd0655384de3b5ef01e508ea09d7/9eacfea8754549a4bc42918149130a74/7 RiceX Topic 2.3].
 +
 +
===Creation===
 
There are several ways to create the different forms of accumulators, but the two that come up in CSE231s are:
 
There are several ways to create the different forms of accumulators, but the two that come up in CSE231s are:
  
 
[http://www.cse.wustl.edu/~cosgroved/courses/cse231/s17/javadocs/edu/wustl/cse231s/rice/classic/HabaneroClassic.html#newIntegerFinishAccumulator-edu.wustl.cse231s.rice.classic.contrib.api.NumberReductionOperator- newIntegerFinishAccumulator]( [http://www.cse.wustl.edu/~cosgroved/courses/cse231/s17/javadocs/edu/wustl/cse231s/rice/classic/contrib/api/NumberReductionOperator.html#SUM NumberReductionOperator.SUM] )
 
[http://www.cse.wustl.edu/~cosgroved/courses/cse231/s17/javadocs/edu/wustl/cse231s/rice/classic/HabaneroClassic.html#newIntegerFinishAccumulator-edu.wustl.cse231s.rice.classic.contrib.api.NumberReductionOperator- newIntegerFinishAccumulator]( [http://www.cse.wustl.edu/~cosgroved/courses/cse231/s17/javadocs/edu/wustl/cse231s/rice/classic/contrib/api/NumberReductionOperator.html#SUM NumberReductionOperator.SUM] )
  
 +
===Registration===
 
[http://www.cse.wustl.edu/~cosgroved/courses/cse231/s17/javadocs/edu/wustl/cse231s/rice/classic/HabaneroClassic.html#finish-edu.wustl.cse231s.rice.classic.options.RegisterAccumulatorsOption-edu.rice.hj.api.HjSuspendable- finish](register(accumulators), body)
 
[http://www.cse.wustl.edu/~cosgroved/courses/cse231/s17/javadocs/edu/wustl/cse231s/rice/classic/HabaneroClassic.html#finish-edu.wustl.cse231s.rice.classic.options.RegisterAccumulatorsOption-edu.rice.hj.api.HjSuspendable- finish](register(accumulators), body)
 
FinishAccumulators are covered in [https://edge.edx.org/courses/RiceX/COMP322/1T2014R/courseware/a900dd0655384de3b5ef01e508ea09d7/9eacfea8754549a4bc42918149130a74/7 RiceX Topic 2.3].
 

Revision as of 05:57, 3 March 2017

Async, Finish

Async and finish make up the fundamental building blocks of task-level parallelism in Habanero.

These concepts are first covered in RiceX Topic 1.1.

async(body) creates a new child task that can run before, after, or in parallel with all remaining statements of the parent task.

finish(body) executes body and waits for all child tasks to complete.

Future

A future is a tasks that return a value.

Futures are covered in RiceX Topic 2.1.

future(body) returns an instance of HjFuture. Invoking the get() method on that instance waits for the task to complete.


FinishAccumulator

Finish Accumulators provide a convenient way to keep track of a count (for example: the number of solutions in the n-queens problem) or perform a reduction as in the MapReduce_Assignment.

FinishAccumulators are covered in RiceX Topic 2.3.

Creation

There are several ways to create the different forms of accumulators, but the two that come up in CSE231s are:

newIntegerFinishAccumulator( NumberReductionOperator.SUM )

Registration

finish(register(accumulators), body)