Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Wiki Markup
Habanero-C is a project designed to add the Habanero parallelism constructs to the C language.

...



Habanero-C has two basic primitives for the

...

 task parallel&nbsp;programming model borrowed from X10: _async_&nbsp;and _finish_.&nbsp;The _async_ statement, _async <stmt>_, causes the&nbsp;parent task to fork a new child task that executes _<stmt>_. Execution of the _async_&nbsp;statement returns immediately, i.e., the parent task can proceed

...

The finish statement, finish <stmt>, performs a join operation that causes the parent task to execute <stmt> and then wait until all the tasks created within <stmt> have terminated (including transitively spawned tasks).

The Habanero-C runtime is written completely in ANSI C, with a couple of library routines for low-level synchronization and atomic operations written in assembly language.

The Habanero-C compiler is written in C++ and is built on top of the ROSE optimizing compiler infrastructure.

Habanero-C has been ported and tested on Intel X86, Cyclops 64 and Intel SCC multicore platforms.

...

 to its&nbsp;following statement without waiting for the child task to complete.

The _finish_ statement, _finish <stmt>_,&nbsp;performs a join operation that causes the parent task to execute <stmt> and then wait until all the tasks created&nbsp;within _<stmt>_ have terminated (including&nbsp;transitively spawned tasks).

Phasers~\cite{shirako-phasers-ics08} are programming constructs that unify collective and point-to-point synchronization in task parallel programming.
Phasers are designed for ease of use and safety, helping programmer productivity in task parallel programming and debugging.
The use of phasers guarantees two safety properties: deadlock-freedom and phase-ordering. &nbsp;These
properties, along with the generality of its use for dynamic parallelism, distinguish phasers from other synchronization constructs in
past works including barriers, counting semaphores~\cite{sarkar-ics88}, and X10 clocks~\cite{x10}.
As a new contribution, phasers have been integrated as a language construct in Habanero-C and
implemented on top of a work-stealing runtime system. We show in Section~\ref{sec:eva} that our implementation outperforms previous
work on Java-based phasers~\cite{shirako-phasers-ics08, HierarchPhasers} done in Habanero-Java.

The Habanero-C runtime is written completely in ANSI C, with a couple of library routines for low-level&nbsp;synchronization&nbsp;and atomic operations written in assembly language.

The Habanero-C compiler is written in C+\+ and is built on top of the ROSE optimizing compiler infrastructure.

Habanero-C has been ported and tested on Intel X86, Cyclops 64 and Intel SCC multicore platforms.

Habanero-C implementation is very much in a preliminary phase and constantly evolving. If you would like to try it, please contact one of the project leads (Vivek Sarkar, Zoran Budimlic, Yonghong Yan or Vincent Cave) to gain access to the svn repository.