The Application Code Optimization Tool (ACOT) is a C-level code optimization toolset that consists of:
- a Memory Hierarchy Optimization Module including the following
- MEMSCOPT: assist tool for source code memory optimizing transformations and analysis of the input application
- XMSIM: memory performance analyzer on a given input application
- a Computation Optimization Module comprising of:
- TXLCOPT: performance-oriented loop-level optimizer for C programs written in the TXL programming language
- kdiv: constant division optimizer
- kmul: constant multiplication optimizer
MEMSCOPT offers three major facilities:
Executing MEMSCOPT with a C input file as a single command line argument generates a semantically equivalent file with preserved comments and preprocessor directives, C code format enhancements, for-loop recognition and annotation.
To assist loop transformation decisions, MEMSCOPT includes a dynamic analysis module which helps identifying the iterations of each loop hence giving a partial measure of its impact to the application performance.
MEMSCOPT supports the user-interactive application of source code transformations such as loop fusion, fission, reversal, shift, extend, interchange and normalization.
More details on MEMSCOPT can be found in the release archive.
XMSIM is a memory hierarchy simulator. More details can be found in the release archive.
"TXLCOPT" is a collection of C-to-C code transformation tools written in the Turing eXtender Language (TXL) (http://www.txl.ca). Each transformation is implemented as a separate executable compiled from the corresponding TXL source file.
"kdiv" is a generator of routines for optimized division by an integer constant. It can be used for calculating an integer division with the routines presented in Henry S. Warren's "Hacker's Delight" book. "kdiv" can also be used for emitting a NAC (generic assembly language) or ANSI C implementation of the division.
"kmul" is a generator of routines for optimized multiplication by an integer constant. "kmul" can also be used for emitting a NAC (generic assembly language) or ANSI C implementation of the multiplication.
Complete user guides and tutorials can be found in the corresponding release archives. A detailed view of TXLCOPT, kdiv and kmul is also included in the D3.3 ENOSYS deliverable.