Language & Compiler Documentation



Runtime Research
<!-- SiteSearch Google --> <FORM method=GET action="" target="pageFrame"> <input type=hidden name=ie value=UTF-8> <input type=hidden name=oe value=UTF-8> <TABLE border=0 cellpadding=0 cellspacing=0 width=100%><tr><td> <!--- <A HREF=""> <IMG SRC="" border="0" ALT="Google"></A> --> </td> <td> <INPUT TYPE=text name=q size=15 maxlength=255 value=""> <INPUT type=submit name=btnG VALUE="Search"> <input type=hidden name=domains value=""><br> <table border=0 cellpadding=0 cellspacing=0><tr><td valign=top> <font size=-1> <!-- <input type=radio name=sitesearch value="" checked> Titanium publications <br> --> <input type=radio name=sitesearch value="" checked> Titanium Site <br> </font> </td><td valign=top> <font size=-1> <input type=radio name=sitesearch value=""> Entire Web </font> </td></tr></TABLE> </td></tr></TABLE> </FORM> <!-- SiteSearch Google -->
Titanium is an explicitly parallel dialect of Java developed at UC Berkeley to support high-performance scientific computing on large-scale multiprocessors, including massively parallel supercomputers and distributed-memory clusters with one or more processors per node. Other language goals include safety, portability, and support for building complex data structures.

The main additions to Java are:

Titanium provides a global memory space abstraction (similar to other languages such as UPC, Co-Array Fortran and Split-C) whereby all data has a user-controllable processor affinity, but parallel processes may directly reference each other's memory to read & write values or arrange for bulk data transfers. A specific portability result is that Titanium programs can run unmodified on uniprocessors, shared memory machines and distributed memory machines - performance tuning may be necessary to arrange an application's data structures for distributed memory, but the functional portability allows for development on shared memory machines and uniprocessors.

Titanium is essentially a superset of Java 1.4 and inherits all the expressiveness, usability and safety properties of that language. Titanium augments Java's safety features by providing checked synchronization that prevents a certain classes of synchronization bugs. To support complex data structures, Titanium uses the object-oriented class mechanism of Java along with the global address space to allow for large shared structures. Titanium's multidimensional array facility adds support for high-performance hierarchical and adaptive grid-based computations.

Our compiler research focuses on the design of program analysis techniques and optimizing transformations for Titanium programs, and on developing a compiler and run-time system that exploit these techniques. Because Titanium is an explicitly parallel language, new analyses are needed even for standard code motion transformations. The compiler analyzes both synchronization constructs and shared variable accesses. Transformations include cache optimizations, overlapping communication, identifying references to objects on the local processor, and replacing runtime memory management overhead with static checking. Our current implementation translates Titanium programs entirely into C, where they are compiled to native binaries by a C compiler and then linked to the Titanium runtime libraries (there is no JVM).

The current implementation runs on a wide range of platforms, including uniprocessors, shared memory multiprocessors, distributed-memory clusters of uniprocessors or SMPs using a variety of cluster interconnects (InfiniBand, Myrinet, Quadrics, Dolphin, Ethernet), and a number of specific supercomputer architectures (IBM SP, Cray X1, Blue Gene, Cray XT3, Origin 2000). The distributed memory back-ends are implemented using GASNet - a network-independent and language-independent high-performance communication interface designed specifically for Global Address Space languages such as Titanium.

Titanium is especially well adapted for writing grid-based scientific parallel applications, and several such major applications have been written and continue to be further developed. We also have a list of project ideas related to the Titanium project.

The Titanium Team

Susan L. Graham
Paul Hilfinger
Katherine A. Yelick
Phillip Colella (LBNL)

Students & Postdocs
Dan Bonachea
Kaushik Datta
Amir Kamil
Jimmy Su
Nam Mai
Tong Wen (LBNL)
Former Members
Alexander S. Aiken
Ben Liblit
Simon Yau
Randy Shoopman
Andrew Begel
Tyson Condie
David Gay
C.J. Lin
Arvind Krishnamurthy
Luigi Semenzato
Carleton Miyamoto
Mihut Ionescu
Steve Benting
Boon Thau Loo
Joe Darcy
Benjamin Greenwald
John Hsu
Robert Lin
Sabrina Merchant
Szu-Huey Chuang
Ed Givelberg
Geoff Pike
Omair Kamil
Meling Ngo
Imran Haque
Armando Solar
Greg Balls (SDSC)
Peter McCorquodale (LBNL)

This project is funded by the DOE under the PModels project and by NSF under the NPACI program.
Previous funding includes DOE/LLNL and DARPA.

Project Ideas

eXTReMe Tracker
Computer Science Division, University of California at Berkeley
Last updated Tuesday April 29, 2014
Comments to Titanium Web Maintainer