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 here: PDF (651 KB).
A related Technical Report describes the internals of the APEX compiler in more detail. The Technical Report is available here: 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 //, as well as the SAC compiler that compiles APEX-generated code. SAC may be obtained at, 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 2015-11-03.
Copyright © 2007 Snake Island Research Inc