Projects with Source Code Available

Dyninst: "An Application Program Interface (API) to permit the insertion of code into a running program. The goal of this API is to provide a machine independent interface to permit the creation of tools and applications that use runtime code patching." See www.dyninst.org for more info.

ADAPT: ADAPT is a compiler-supported infrastructure for high-level adaptive program optimization.  It allows developers to leverage existing compilers and optimization tools by describing a runtime heuristic for applying techniques in a domain specific language, ADAPT Language (AL).   The ADAPT compiler is fed this description and a target application, generating a complete runtime system for tuning the application dynamically.  Currently ADAPT has been ported to both Solaris and Linux based systems.   ADAPT supports remote dynamic compilation, parameterization and runtime sampling, allowing developers complete flexibility in heuristic development. See http://www.eecg.toronto.edu/~voss/AdaptPage/Index.html for more information.

Tempo: "Partial evaluation is program transformation that automates a program specialization process. Tempo is a partial evaluator for C programs. It has been applied in various domains such as operating systems and networking, computer graphics, scientific computation, software engineering and domain specific languages." See http://compose.labri.fr/prototypes/tempo/ for more info.

'C and tcc "`C is an extension of ANSI C that provides the programmer with the ability to explicitly denote dynamic code generation (the creation of executable code at run time, while the application is running) at the level of C statements and expressions. `C provides primitives for dynamic code generation which are flexible, expressive, and machine-independent. The changes to ANSI C are small: `C preserves the spirit and "feel" of C, making it easy to learn and facilitating incremental modification of existing C code. tcc is an implementation of `C. It is based on the lcc compiler. It generates code at a rate on the order of 60-600 instructions per generated instruction, depending on the level of dynamic optimization employed. tcc generates code for DEC stations running Ultrix and Sun SparcStations running SunOS and Solaris." See http://www.pdos.lcs.mit.edu/tickc/ for more info.

Open Runtime Platform: "is an open source research infrastructure for dynamic compilation and memory management. The current implementation supports programs compiled to (Java) bytecode and linked with the GNU Classpath libraries." available here.

OpenJIT: The OpenJIT project is an ongoing Java™ the programming language JIT compiler project as a collaborative effort between Tokyo Institute of Technology and Fujitsu Laboratory, partly sponsored by the Information Promotion Agency of Japan. OpenJIT is a "reflective" JIT compiler in that not only it is almost entirely written in Java, but also that it bootstraps and compiles itself during execution of the user program, and compiler components coexist as first-class objects in user heap space. Thus, users can tailor and customize the compilation of classes at runtime for variety of purposes such as application-specific optimization and partial evaluation, dynamic, compiler-assisted environment adaptation of programs, debugging, language extension and experimentation, and other types of advanced compiler-based research and applications. See http://www.openjit.org/ for more info.

Benchmark Suites that we have or can get

SPEC CPU95 & 2000 C and Fotran applications that measure cpu performance. These programs are a well recognized metric for system performance. See SPEC for more info.

Perfect Benchmarks A collection of science and engineering applications written in Fortran. Several of these benchmarks were incorporated into SPEC CPU releases.

SPEC OMP 2000 Parallel shared-memory C and Fotran applications written using the OpenMP API for parallelism. See SPEC for more info.

SPEC JVM98 Java applications that measure the performance of JVMs. Not all applications come with source code, some are distributed as bytecode only. See SPEC for more info.

Java Grande Java applications designed to evaluate the usefulness of Java for high-performance science and engineering applications. See Java Grande for more info.