|
|
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.
|
|
|
Computer Science Division,
University of California at Berkeley Last updated Tuesday April 29, 2014 Comments to Titanium Web Maintainer |