The APEX Project 

APEX is an APL compiler. APEX generates high-performance, portable, parallel code that executes up to a thousand times faster than interpreted APL, with serial performance of kernels competitive with FORTRAN. Preliminary results indicate that acceptable multi-processor speedup is achievable. The excellent run-time performance of APEX-generated code arises from attention to all aspects of program execution: run-time syntax analysis is eliminated, setup costs are reduced, algebraic identities and phrase recognition detect special cases, some matrix products exploit a generalization of sparse-matrix algebra, and loop fusion and copy optimizations eliminate many array-valued temporaries. In addition, the compiler exploits Static Single Assignment and array morphology, our generalization of data flow analysis to arrays, to generate run-time primitives that use superior algorithms and simpler storage types. Extensions to APL, including rank, cut, and a monadic operand for dyadic reduction, improve compiled and interpreted code performance.

APEX introduced Array Morphology as a generalization of data flow analysis for array languages.

Robert Bernecky's MSc thesis describes the compiler and details its performance. The APEX thesis is available in PostScript (1.07 MB) and in PDF (651 KB).
 
A related Technical Report describes the internals of the APEX compiler in more detail. The Technical Report is available in PostScript (267 KB) and PDF (133 KB).
 
 

Other downloadable papers on compiled APL include:

Reducing Computational Complexity with Array Predicates
ACORN: APL to C on Real Numbers
Shape Cliques

The APEX compiler is available under the GNU Public License, version 2 for operation under Linux and other civilized operating systems. BillWare(tm) need not apply. APEX requires a Dyalog APL interpreter (available for free to students, and at reasonable prices to those who have ceased learning, at //http://www.dyalog.com), as well as the SAC compiler that compiles APEX-generated code. SAC may be obtained at http://www.sac-home.org, but licensing details for SAC remain up in the air as of 2007-10-17.

APEX Version 0.0.0 is now available for download. That file comprises Dyalog APL workspaces, Jim Weigang's source-level interchange versions of those workspaces, related text files, and over 130 APL benchmarks and unit tests. The tar file is here:


apex.0.0.0.tar file

 


This page last updated on 2007-10-20.
Copyright © 2007 Snake Island Research Inc