Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Program analysis and code generation in an APL/370 compiler
IBM Journal of Research and Development
An APL/370 compiler and some performance comparisons with APL interpreter and FORTRAN
APL '86 Proceedings of the international conference on APL
The Architecture of Lisp Machines
Computer
An APL compiler: The SOFREMI-AGL compiler, a tool to produce low-cost efficient software
APL '87 Proceedings of the international conference on APL: APL in transition
APL—compilation-where does the time come from?
APL '87 Proceedings of the international conference on APL: APL in transition
An APL compiler
ACORN: APL to C on real numbers
APL '90 Conference proceedings on APL 90: for the future
Automatic parallelization of APL-style programs
APL '90 Conference proceedings on APL 90: for the future
Exploitation of APL data parallelism on a shared-memory MIMD machine
PPOPP '91 Proceedings of the third ACM SIGPLAN symposium on Principles and practice of parallel programming
An introduction to STSC's APL compiler
APL '85 Proceedings of the international conference on APL: APL and the future
A program data flow analysis procedure
Communications of the ACM
Multiprocessing compactifying garbage collection
Communications of the ACM
Compilation and delayed evaluation in APL
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
An APL compiler for the UNIX timesharing system
APL '83 Proceedings of the international conference on APL
A performance comparison between an APL interpreter and compiler
APL '83 Proceedings of the international conference on APL
Hi-index | 0.00 |
Loop combination has been a traditional optimization technique employed in APL compilers, but may introduce dependencies into the combined loop. We propose an analysis method by which the compiler can keep track of the change of the parallelism when combining high-level primitives. The analysis is necessary when the compiler needs to decide a trade-off between more parallelism and a further combination. We also show how the space usage, as well as the performance, improves by using system calls with the aid of garbage collection to implement a dynamic memory allocation. A modification of the memory management scheme can also increase available parallelism. Our experimental results indicate that the performance and the space usage improve appreciably with the above enhancements.