1. Habanero Research Projects


Habanero team members are currently engaged in the following projects to realize the vision of creating portable parallel abstractions for future multicore hardware with high productivity and high performance.  Please see the Habanero Publications page for more details:


  1. Habanero Java (derived from X10 v1.5)


  1. Habanero C/C++


  1. Habanero Concurrent Collections (derived from Intel Concurrent Collections)


  1. Platform Aware Compilation Environment


  1. Center for Domain-Specific Computing (CDSC)


Broadly, the research scope for the Habanero team includes the following topics that build on our past work:


1) Language research

  1. Explicit parallelism: portable constructs for homogeneous & heterogeneous multicore

  2. Implicit deterministic parallelism: array views, single-assignment constructs

  3. Implicit non-deterministic parallelism: unordered iterators, partially ordered statement blocks

  4. Builds on our experiences with the X10, CAF, HPF, Matlab D, MetaOCaml, Fortran 90, and Sisal languages


2) Compiler research

  1. New Parallel Intermediate Representation (PIR)

  2. Analysis and transformation framework for the PIR

  3. Optimization of high-level arrays and iterators

  4. Optimization of synchronization, data transfer, and transactional memory operations

  5. Code partitioning for accelerators

  6. Builds on our experiences with the D System, Massively Scalar, Telescoping Languages Framework, ASTI, and PTRAN research compilers


3) Virtual machine research

  1. VM support for work-stealing scheduling algorithms with extensions for places, transactions, task groups

  2. Integration and exploitation of lightweight profiling in VM scheduler and memory management system

  3. Builds on our experiences with the Jikes Research Virtual Machine


4) Concurrency library

  1. New nonblocking data structures

  2. Fine-grained producer-consumer synchronization

  3. Efficient software transactional memory libraries

  4. ,Builds on our experiences with the java.util.concurrent and the DSTM2 libraries


5) Toolkit research

  1. Program analysis for common parallel software errors

  2. Performance attribution of shared code regions (loops, procedure calls) using static and dynamic calling context

  3. Builds on our experiences with the Rice HPCToolkit, Eclipse Parallel Tools Platform, and DrJava projects