Results 1 -
8 of
8
The Jalapeño Dynamic Optimizing Compiler for Java
, 1999
"... The JalapeÃño Dynamic Optimizing Compiler is a key component of the JalapeÃño Virtual Machine, a new Java Virtual Machine (JVM) designed to support efficient and scalable execution of Java applications on SMP server machines. This paper describes the design of the JalapeÃño Optimizing Compiler, and ..."
Abstract
-
Cited by 159 (28 self)
- Add to MetaCart
The JalapeÃño Dynamic Optimizing Compiler is a key component of the JalapeÃño Virtual Machine, a new Java Virtual Machine (JVM) designed to support efficient and scalable execution of Java applications on SMP server machines. This paper describes the design of the JalapeÃño Optimizing Compiler, and the implementation results that we have obtained thus far. To the best of our knowledge, this is the first dynamic optimizing compiler for Java that is being used in a JVM with a compile-only approach to program execution.
Dynamic Optimization through the use of Automatic Runtime Specialization
, 1999
"... Profile-driven optimizations and dynamic optimization through specialization have taken optimizations to a new level. By using actual runtime data, optimizers can generate code that is specially tuned for the task at hand. However, most existing compilers that perform these optimizations require s ..."
Abstract
-
Cited by 14 (2 self)
- Add to MetaCart
Profile-driven optimizations and dynamic optimization through specialization have taken optimizations to a new level. By using actual runtime data, optimizers can generate code that is specially tuned for the task at hand. However, most existing compilers that perform these optimizations require separate test runs to gather profile information, and/or user annotations in the code. In this thesis, I describe runtime optimizations that a dynamic compiler can perform automatically --- without user annotations --- by utilizing realtime performance data. I describe the implementation of the dynamic optimizations in the framework of a Java Virtual Machine and give performance results.
Automatic Generation Of Implementations For DSP Transforms On Fused Multiply-Add Architectures
, 2004
"... Many modern computer architectures feature fused multiply-add (FMA) instructions, which offer potentially faster performance for numerical applications. For DSP transforms, compilers can only generate FMA code to a very limited extent because optimal use of FMAs requires modifying the chosen algorit ..."
Abstract
-
Cited by 4 (2 self)
- Add to MetaCart
Many modern computer architectures feature fused multiply-add (FMA) instructions, which offer potentially faster performance for numerical applications. For DSP transforms, compilers can only generate FMA code to a very limited extent because optimal use of FMAs requires modifying the chosen algorithm. In this paper we present a framework for automatically generating FMA code for every linear DSP transform, which we implemented as an extension to the SPIRAL code generation system. We show that for many transforms and transform sizes, our generated FMA code matches the best-known hand-derived FMA algorithms in terms of arithmetic cost. Further, we present actual runtime results that show the speed-up obtained by using FMA instructions.
Jello: a retargetable Just-In-Time compiler for LLVM bytecode
, 2002
"... We present the design and implementation of Jello, a retargetable Just-In-Time (JIT) compiler for the Intel IA-32 architecture. The input to Jello is a C program statically compiled to Low-Level Virtual Machine (LLVM) bytecode. Jello takes advantage of the features of the LLVM bytecode representatio ..."
Abstract
-
Cited by 2 (2 self)
- Add to MetaCart
We present the design and implementation of Jello, a retargetable Just-In-Time (JIT) compiler for the Intel IA-32 architecture. The input to Jello is a C program statically compiled to Low-Level Virtual Machine (LLVM) bytecode. Jello takes advantage of the features of the LLVM bytecode representation to permit efficient run-time code generation, while emphasizing retargetability. Our approach uses an abstract machine code representation in Static Single Assignment form that is machine-independent, but can handle machine-specific features such as implicit and explicit register references. Because this representation is target-independent, many phases of code generation can be target-independent, making the JIT easily retargetable to new platforms without changing the code generator. Jello's ultimate goal is to provide a flexible host for future research in runtime optimization for programs written in languages which are traditionally compiled statically.
B.S.: Code instruction selection based on SSA-graphs. Lecture notes in computer science (Lect. notes comput. sci.) ISSN
- In Proc. of the Workshop on Software and Compilers for Embedded Systems (SCOPES
, 2003
"... Abstract. Instruction selection for embedded processors is a challenging problem. Embedded system architectures feature highly irregular instruction sets and complex data paths. Traditional code generation techniques have difficulties to fully utilize the features of such architectures and typically ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
Abstract. Instruction selection for embedded processors is a challenging problem. Embedded system architectures feature highly irregular instruction sets and complex data paths. Traditional code generation techniques have difficulties to fully utilize the features of such architectures and typically result in inefficient code. In this paper we describe an instruction selection technique that uses static single assignment graphs (SSA-graphs) as underlying data structure for selection. Patterns defined as graph grammar guide the instruction selection to find (nearly) optimal results. We present an approach which maps the pattern matching problem to a partitioned boolean quadratic optimization problem (PBQP). A linear PBQP solver computes optimal solutions for almost all nodes of a SSA-graph. We have implemented our approach in a production DSP compiler. Our experiments show that our approach achieves significant better results compared to classical tree matching. 1
Near-Optimal Instruction Selection on DAGs
, 2008
"... Instruction selection is a key component of code generation. High quality instruction selection is of particular importance in the embedded space where complex instruction sets are common and code size is a prime concern. Although instruction selection on tree expressions is a well understood and ea ..."
Abstract
-
Cited by 2 (2 self)
- Add to MetaCart
Instruction selection is a key component of code generation. High quality instruction selection is of particular importance in the embedded space where complex instruction sets are common and code size is a prime concern. Although instruction selection on tree expressions is a well understood and easily solved problem, instruction selection on directed acyclic graphs is NP-complete. In this paper we present NOLTIS, a near-optimal, linear time instruction selection algorithm for DAG expressions. NOLTIS is easy to implement, fast, and effective with a demonstrated average code size improvement of 5.1 % compared to the traditional tree decomposition and tiling approach.
The Jalape~no dynamic optimizing compiler for Java TM
- In Proceedings of the ACM SIGPLAN '99 Java Grande Conference
, 1999
"... The Jalape~no Dynamic Optimizing Compiler is a key com-ponent of the Jalape~no Virtual Machine, a new Java 1 Vir-tual Machine (JVM) designed to support e cient and scal-able execution of Java applications on SMP server machines. This paper describes the design of the Jalape~no Optimizing Compiler, a ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
The Jalape~no Dynamic Optimizing Compiler is a key com-ponent of the Jalape~no Virtual Machine, a new Java 1 Vir-tual Machine (JVM) designed to support e cient and scal-able execution of Java applications on SMP server machines. This paper describes the design of the Jalape~no Optimizing Compiler, and the implementation results that we have ob-tained thus far. To the best of our knowledge, this is the rst dynamic optimizing compiler for Java that is being used in a JVM with a compile-only approach to program execution. 1
Simulated evolutionary code generation for heterogeneous memory-register DSP-architectures
- in Proc. European Signal Processing Conference
, 2000
"... Efficient algorithms exist that generate optimum straight-line code for expression trees. However, when applied to graphs, the drawback of tree-based straightline code generation is the fact that there is no joint optimization of the tree code and the data transfers between the trees. The purpose of ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
Efficient algorithms exist that generate optimum straight-line code for expression trees. However, when applied to graphs, the drawback of tree-based straightline code generation is the fact that there is no joint optimization of the tree code and the data transfers between the trees. The purpose of this paper is to introduce an evolutionary hybrid that combines evolutionary optimization strategies with tree techniques. The goal is to minimize the execution time of the program by jointly optimizing the schedule, selected instructions, and allocated registers. The core of our technique is a linear-time algorithm that translates expression trees into optimal straightline code segments satisfying a set of boundary conditions for the tree interface variables. Experiments indicate that this technique allows to generate code of such high quality that is extremely difficult to achieve manually. 1

