Program analysis and code generation in an APL/370 compiler
IBM Journal of Research and Development
An APL compiler
Journal of the ACM (JACM)
Unification: a multidisciplinary survey
ACM Computing Surveys (CSUR)
Efficiently computing static single assignment form and the control dependence graph
ACM Transactions on Programming Languages and Systems (TOPLAS)
Optimizing array bound checks using flow analysis
ACM Letters on Programming Languages and Systems (LOPLAS)
Foundations of programming languages
Foundations of programming languages
Eliminating array bound checking through dependent types
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Advanced compiler design and implementation
Advanced compiler design and implementation
Techniques for the translation of MATLAB programs into Fortran 90
ACM Transactions on Programming Languages and Systems (TOPLAS)
The Mathematica book (4th edition)
The Mathematica book (4th edition)
A Machine-Oriented Logic Based on the Resolution Principle
Journal of the ACM (JACM)
Array resizing for scientific code debugging, maintenance and reuse
PASTE '01 Proceedings of the 2001 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
MaJIC: compiling MATLAB for speed and responsiveness
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
A general scheme for the automatic inference of variable types
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Loop Transformations for Restructuring Compilers: The Foundations
Loop Transformations for Restructuring Compilers: The Foundations
Correctly detecting intrinsic type errors in typeless languages such as MATLAB
Proceedings of the 2001 conference on APL: an arrays odyssey
Discrete Mathematical Structures with Applications to Computer Science
Discrete Mathematical Structures with Applications to Computer Science
The Functional Imperative: Shape!
ESOP '98 Proceedings of the 7th European Symposium on Programming: Programming Languages and Systems
Static array storage optimization in MATLAB
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
APL '79 Proceedings of the international conference on APL: part 1
Results from a Parallel MATLAB Compiler
IPPS '98 Proceedings of the 12th. International Parallel Processing Symposium on International Parallel Processing Symposium
Type determination for very high level languages.
Type determination for very high level languages.
Compiler techniques for matlab programs
Compiler techniques for matlab programs
A type inference system for matlab with applications to code optimization
A type inference system for matlab with applications to code optimization
The MAGICA type inference engine for MATLAB ®
CC'03 Proceedings of the 12th international conference on Compiler construction
Computing array shapes in MATLAB
LCPC'01 Proceedings of the 14th international conference on Languages and compilers for parallel computing
A translator system for the MATLAB language: Research Articles
Software—Practice & Experience
A Dimension Abstraction Approach to Vectorization in Matlab
Proceedings of the International Symposium on Code Generation and Optimization
On optimising shape-generic array programs using symbolic structural information
IFL'06 Proceedings of the 18th international conference on Implementation and application of functional languages
Automatic compilation of MATLAB programs for synergistic execution on heterogeneous processors
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
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
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Hi-index | 0.00 |
The problem of inferring array shapes ahead of time in languages that exhibit both implicit and dynamic typing is a critical one because the ramifications of its solution are the better organization of array storage through compaction and reuse, and the generation of high-performance code through specialization by shape. This article addresses the problem in a prototypical implicitly and dynamically typed array language called MATLAB. The approach involves modeling the language's shape semantics using an algebraic system, and applying term rewriting techniques to evaluate expressions under this algebra. Unlike prior efforts at array shape determination, this enables the deduction of valuable shape information even when array extents are compile-time unknowns. Furthermore, unlike some previous methods, our approach doesn't impose monotonicity requirements on an operator's shape semantics. The work also describes an inference methodology and reports measurements from a type inference engine called MAGICA. In a benchmark suite of 17 programs, the shape inference subsystem in MAGICA detected the equivalence of over 61% of the symbolic shapes in six programs, and over 57% and 37% of the symbolic shapes in two others. In the remaining nine programs, all array shapes were inferred to be compile-time constants.