Array-oriented programming unites two uncommon properties. As an abstraction, it directly mirrors high-level mathematical abstractions commonly used in many fields from natural sciences over engineering to financial modeling. As a language feature, it exposes regular control flow, exhibits structured data dependencies, and lends itself to many types of program analysis. Furthermore, many modern computer architectures, particularly highly parallel architectures such as GPUs and FPGAs, lend themselves to efficiently executing array operations.
The ARRAY series of workshops explores:
- formal semantics and design issues of array-oriented languages and libraries;
- productivity and performance in compute-intensive application areas of array programming;
- systematic notation for array programming, including axis- and index-based approaches;
- intermediate languages, virtual machines, and program-transformation techniques for array programs;
- representation of and automated reasoning about mathematical structure, such as static and dynamic sparsity, low-rank patterns, and hierarchies of these, with connections to applications such as graph processing, HPC, tensor computation and deep learning;
- interfaces between array- and non-array code, including approaches for embedding array programs in general-purpose programming languages; and
- efficient mapping of array programs, through compilers, libraries, and code generators, onto execution platforms, targeting multi-cores, SIMD devices, GPUs, distributed systems, and FPGA hardware, by fully automatic and user-assisted means.
Array programming is at home in many communities, including language design, library development, optimization, scientific computing, and across many existing language communities. ARRAY is intended as a forum where these communities can exchange ideas on the construction of computational tools for manipulating arrays.