Results 1 - 10
of
12
VISTA: A System for Interactive Code Improvement
- in "Proceedings of the joint conference on Languages, compilers
, 2002
"... Software designers face many challenges when developing applications for embedded systems. A major challenge is meeting the conflicting constraints of speed, code density, and power consumption. Traditional optimizing compiler technology is usually of little help in addressing this challenge. To mee ..."
Abstract
-
Cited by 18 (7 self)
- Add to MetaCart
Software designers face many challenges when developing applications for embedded systems. A major challenge is meeting the conflicting constraints of speed, code density, and power consumption. Traditional optimizing compiler technology is usually of little help in addressing this challenge. To meet speed, power, and size constraints, application developers typically resort to hand-coded assembly language. The results are software systems that are not portable, less robust, and more costly to develop and maintain. This paper describes a new code improvement paradigm implemented in a system called vista that can help achieve the cost/ performance trade-offs that embedded applications demand. Unlike traditional compilation systems where the smallest unit of compilation is typically a function and the programmer has no control over the code improvement process other than what types of code improvements to perform, the vista system opens the code improvement process and gives the application programmer, when necessary, the ability to finely control it. In particular, vista allows the application developer to (1) direct the order and scope in which the code improvement phases are applied, (2) manually specify code transformations, (3) undo previously applied transformations, and (4) view the low-level program representation graphically. vista can be used by embedded systems developers to produce applications, by compiler writers to prototype and debug new lowlevel code transformations, and by instructors to illustrate code transformations (e.g., in a compilers course).
Graphical visualization of compiler optimizations
- Journal of Programming Languages
, 1995
"... This paper describes xvpodb, avisualization tool developed to support the analysis of optimizations performed by the vpo optimizer. The tool is a graphical optimization viewer that can display the state of the program representation before and after sequences of changes, referred to as transformatio ..."
Abstract
-
Cited by 15 (4 self)
- Add to MetaCart
This paper describes xvpodb, avisualization tool developed to support the analysis of optimizations performed by the vpo optimizer. The tool is a graphical optimization viewer that can display the state of the program representation before and after sequences of changes, referred to as transformations, that results in semantically equivalent (and usually improved) code. The information and insight such visualization provides can simplify the debugging of problems with the optimizer. Unique features of xvpodb include rev erse viewing (or undoing) of transformations and the ability to stop at breakpoints associated with the generated instructions. The viewer facilitates the retargeting of vpo to a new machine, supports experimentation with new optimizations, and has been used as a teaching aid in compiler classes.
Automatic isolation of compiler errors
- ACM Transactions on Programming Languages and Systems
, 1994
"... This paper describes a tool called vpoiso that was developed to automatically isolate errors in the vpo compiler system. The two general types of compiler errors isolated by this tool are optimization and nonoptimization errors. When isolating optimization errors, vpoiso relies on the vpo optimizer ..."
Abstract
-
Cited by 12 (1 self)
- Add to MetaCart
This paper describes a tool called vpoiso that was developed to automatically isolate errors in the vpo compiler system. The two general types of compiler errors isolated by this tool are optimization and nonoptimization errors. When isolating optimization errors, vpoiso relies on the vpo optimizer to identify sequences of changes, referred to as transformations, that result in semantically equivalent code and to provide the ability to stop performing improving (or unnecessary) transformations after a specified number have been performed. Acompilation of a typical program by vpo often results in thousands of improving transformations being performed. The vpoiso tool can automatically isolate the first improving transformation that causes incorrect output of the execution of the compiled program by using a binary search that varies the number of improving transformations performed. Not only is the illegal transformation automatically isolated, but vpoiso also identifies the location and instant the transformation is performed in vpo. Nonoptimization errors occur from problems in the front end, code generator, and necessary transformations in the optimizer. Ifanother compiler is available that can produce correct (but perhaps more inefficient) code, then vpoiso can isolate nonoptimization errors to a single function. Automatic isolation of compiler errors facilitates retargeting a compiler to a new machine, maintenance of the compiler, and supporting experimentation with new optimizations.
Automatic Validation of Code-Improving Transformations
- In Proceedings of the ACM SIGPLAN Workshop on Language, Compilers, and Tools for Embedded Systems
, 2000
"... Programmers of embedded systems often develop software in assembly code due to inadequate support from compilers and the need to meet critical speed and/or space constraints. Many embedded applications are being used as a component of an increasing number of critical systems. While achieving high pe ..."
Abstract
-
Cited by 8 (5 self)
- Add to MetaCart
Programmers of embedded systems often develop software in assembly code due to inadequate support from compilers and the need to meet critical speed and/or space constraints. Many embedded applications are being used as a component of an increasing number of critical systems. While achieving high performance for these systems is important, ensuring that these systems execute correctly is vital. One portion of this process is to ensure that code-improving transformations applied to a program will not change the program's semantic behavior, which is jeopardized when transformations are specified manually. This paper describes a general approach for validation of many low-level code-improving transformations made either by a compiler or specified by hand. Initially, we associate a region of the program representation with a code-improving transformation. Afterwards, we calculate the region's effects on the rest of the program before and after the transformation. The transformation is cons...
Vista: Vpo interactive system for tuning applications
- ACM Transactions on Embedded Computing Systems
, 2005
"... Software designers face many challenges when developing applications for embedded systems. One major challenge is meeting the conflicting constraints of speed, code size and power consumption. Embedded application developers often resort to hand-coded assembly language to meet these constraints sinc ..."
Abstract
-
Cited by 5 (0 self)
- Add to MetaCart
Software designers face many challenges when developing applications for embedded systems. One major challenge is meeting the conflicting constraints of speed, code size and power consumption. Embedded application developers often resort to hand-coded assembly language to meet these constraints since traditional optimizing compiler technology is usually of little help in addressing this challenge. The results are software systems that are not portable, less robust and more costly to develop and maintain. Another limitation is that compilers traditionally apply the optimizations to a program in a fixed order. However, it has long been known that a single ordering of optimization phases will not produce the best code for every application. In fact, the smallest unit of compilation in most compilers is typically a function and the programmer has no control over the code improvement process other than setting flags to enable or disable certain optimization phases. This paper describes a new code improvement paradigm implemented in a system called VISTA that can help achieve the cost/performance trade-offs that embedded applications demand. The VISTA system opens the code improvement process and gives the application programmer, when necessary, the ability to finely control it. VISTA also provides support for finding effective sequences of optimization phases. This support includes the ability to interactively get
Source Level Debugging Techniques And Tools For Optimized Code
, 2000
"... This reportability debug information is used when user breakpoints are inserted, special program points are reached in the program execution, or when a user breakpoint is reached. Third, during 93 source program if reportability affected Static information mappings reportability debug info FU ..."
Abstract
-
Cited by 5 (0 self)
- Add to MetaCart
This reportability debug information is used when user breakpoints are inserted, special program points are reached in the program execution, or when a user breakpoint is reached. Third, during 93 source program if reportability affected Static information mappings reportability debug info FULLDOC breakpoints set corresponding user inserts breakpoints optimized execution code set invisible breakpoints Figure 7.4: FULLDOC's strategy with respect to user inserting breakpoints execution, dynamic debug information indicating that these special points have been reached is used as well as the position of the user breakpoints to enable full reporting
Verifying Optimizers through Comparison Checking
, 2002
"... We present a novel technique called comparison checking that helps optimizer writers debug optimizers by testing, for given inputs, that the semantics of a program are not changed by the application of optimizations. We have successfully applied comparison checking to a large class of program transf ..."
Abstract
-
Cited by 3 (3 self)
- Add to MetaCart
We present a novel technique called comparison checking that helps optimizer writers debug optimizers by testing, for given inputs, that the semantics of a program are not changed by the application of optimizations. We have successfully applied comparison checking to a large class of program transformations that alter (1) the relative ordering in which values are computed by the intermediate code statements, (2) the form of the intermediate code statements, and (3) the control ow structure using code replication. We outline the key steps that lead to the automation of comparison checking. The application of comparison checking to test the implementations of high level loop transformations, low level code optimizations, and global register allocation for given program inputs is then described.
VISTA: Vpo Interactive System for Tuning Applications
"... Abstract. Application developers face many challenges when developing applications for embedded systems. A major challenge is meeting the conflicting constraints of speed, code density, and power consumption. Traditional optimizing compiler technology is usually of little help in meeting such constr ..."
Abstract
- Add to MetaCart
Abstract. Application developers face many challenges when developing applications for embedded systems. A major challenge is meeting the conflicting constraints of speed, code density, and power consumption. Traditional optimizing compiler technology is usually of little help in meeting such constraints. To meet speed, power, and size constraints application developers typically resort to hand-coded assembly language. The results are software systems that are not portable, less robust, and more costly to develop and maintain. This paper describes a new interactive compilation paradigm implemented in a system called vista that we believe can help achieve the cost/performance tradeoffs demanded by embedded applications. Unlike traditional compiler systems where the smallest unit of compilation is typically a function and the programmer has no control over the optimization process other than what optimizations to apply, the vista system opens the optimization process and gives the application programmer, when necessary, the ability to finely control it. In particular, vista allows the application developer to (1) direct the order and scope in which the optimization phases are applied, (2) specify code-improving transformations by hand, (3) undo previously applied transformations, and (4) view the low-level program representation in a graphical display. Vista can be used by embedded systems developers to produce applications, by compiler writers to debug errors and/or prototype new low-level code-improving transformations, and by a instructor /educator to illustrate code-improving transformations (e.g. in a compilers class).
Caroline Mae Tice
, 1999
"... Non-Transparent Debugging of Optimized Code by Caroline Mae Tice Doctor of Philosophy in Computer Science University of California at Berkeley Professor Susan L. Graham, Chair Debugging optimized code is a problem for which a widely accepted solution has yet to be found. Over the years many ap ..."
Abstract
- Add to MetaCart
Non-Transparent Debugging of Optimized Code by Caroline Mae Tice Doctor of Philosophy in Computer Science University of California at Berkeley Professor Susan L. Graham, Chair Debugging optimized code is a problem for which a widely accepted solution has yet to be found. Over the years many approaches have been suggested, including limiting the compiler optimizations, restricting the debugger functionality, using recompilation or dynamic de-optimization to undo the optimizations, and having the debugger determine the e#ects of optimizations and mask them from the user. All of these approaches have a common thread: they place a barrier between the user and the optimizations, either altering, undoing, or hiding the e#ects of optimizations.

