Numerical recipes: the art of scientific computing
Numerical recipes: the art of scientific computing
Programming with sets; an introduction to SETL
Programming with sets; an introduction to SETL
Copy elimination in functional languages
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
How to make destructive updates less destructive
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Efficient array update analysis of strict functional languages
Efficient array update analysis of strict functional languages
An introduction to STSC's APL compiler
APL '85 Proceedings of the international conference on APL: APL and the future
Advanced compiler design and implementation
Advanced compiler design and implementation
The aggregate update problem in functional programming systems
POPL '85 Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
LAPACK Users' guide (third ed.)
LAPACK Users' guide (third ed.)
FALCON: A MATLAB Interactive Restructuring Compiler
LCPC '95 Proceedings of the 8th International Workshop on Languages and Compilers for Parallel Computing
Set constraints for destructive array update optimization
Journal of Functional Programming
LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation
Proceedings of the international symposium on Code generation and optimization: feedback-directed and runtime optimization
A programming language
The jastadd extensible java compiler
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
AspectMatlab: an aspect-oriented scientific programming language
Proceedings of the 9th International Conference on Aspect-Oriented Software Development
MetaLexer: a modular lexical specification language
Proceedings of the tenth international conference on Aspect-oriented software development
Optimizing MATLAB through just-in-time specialization
CC'10/ETAPS'10 Proceedings of the 19th joint European conference on Theory and Practice of Software, international conference on Compiler Construction
McLAB: enabling programming language, compiler and software engineering research for matlab
Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion
Riposte: a trace-driven compiler and parallel VM for vector code in R
Proceedings of the 21st international conference on Parallel architectures and compilation techniques
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
CC'13 Proceedings of the 22nd international conference on Compiler Construction
Hi-index | 0.00 |
Matlab has gained widespread acceptance among scientists. Several dynamic aspects of the language contribute to its appeal, but also provide many challenges. One such problem is caused by the copy semantics of Matlab. Existing Matlab systems rely on reference-counting schemes to create copies only when a shared array representation is updated. This reduces array copies, but requires runtime checks. We present a staged static analysis approach to determine when copies are not required. The first stage uses two simple, intraprocedural analyses, while the second stage combines a forward necessary copy analysis with a backward copy placement analysis. Our approach eliminates unneeded array copies without requiring reference counting or frequent runtime checks. We have implemented our approach in the McVM JIT. Our results demonstrate that, for our benchmark set, there are significant overheads for both existing reference-counted and naive copy-insertion approaches, and that our staged approach is effective in avoiding unnecessary copies.