




Research Associates: W. Bouma and A. Catlin
Sponsor: NSF
Computational science and computational engineering require addressing the fundamental challenge of harnessing high-performance computing equipment and exploiting it through very high level systems that are problem-oriented. Such systems require a wide range of expertise plus a flexible and diverse array of equipment. The laboratory is to provide infrastructure facilities that serve the needs for basic research broadly focused on building problem-solving environments for applied, experimental work for computational science. The facilities include:
A central group effort within SoftLab addresses the full range of issues in the future paradigm of computational science. It creates four problem solving environments: rigid-body mechanics, idealized internal combustion engine design, and two chemical engineering applications. These involve a core group of computational scientists (Christoph Hoffmann, Elias Houstis, John Rice) and applications scientists. There are a number of basic research efforts in parallel and distributed computing that use SoftLab facilities in an essential way. These include projects in computational biology, simulation, parallel algorithms, cryptology, software engineering, and computational geometry. There are several projects which use the laboratory facilities to build prototype systems for computational science. These include collaboration with researchers in projects in chemical engineering, mechanical engineering, biology, and biochemistry. As the facility matures, we plan to expand the number of such collaborations.
Principal Investigator: Tony Hosking
Sponsor: Sun Microsystems
We are exploring the performance advantages to be gained through compilation of persistent programming languages.To this end, we are extending the Digital Systems Research Center implementation of Modula-3 to allow programmers to specify and manipulate persistent data more easily and efficiently. Persistent roots are simply designated global variables that act as handles on root objects in persistent storage. All objects reachable from a persistent root also persist. We overload Modula-3's traced pointers so that they may refer to persistent data, even if that data is not yet resident in memory. Because pointers are traced, the reachability of data from a persistent root is easily determined (similarly to the way the garbage collector determines reachable, non-garbage data).
A shortcoming (from the point of view of persistence) of the current Modula-3 implementation is its use of conservative garbage collection, which unnecessarily restricts dynamic object management. Thus, a first phase of our implementation was to modify the Modula-3 compiler to generate sufficient information to perform accurate garbage collection. Static tables generated by the compiler now accurately describe the location of object pointers in the thread stacks. We are currently evaluating the performance of this implementation and comparing it with the original conservative implementation.
In subsequent work, we are extending the Modula-3 type system to allow static annotations to be attached to pointer types indicating their potential compiler optimizations for persistence, without meeting to implement the full optimizations directly (along with the necessary data-flow analyses).
CS Annual Report - 19 APR 1996




