The first ACM SIGPLAN International Workshop on Libraries, Languages and Compilers for Array Programming was held in Edinburgh on June 12th and 13th 2014, immediately following and associated with PLDI 2014. This volume contains the accepted papers. Slides of the presentations are available at http://www.sable.mcgill.ca/array/.
Proceeding Downloads
Exploiting Implicit Parallelism in Dynamic Array Programming Languages
We have built an interpreter for the array programming language J. The interpreter exploits implicit data parallelism in the language to achieve good parallel speedups on a variety of benchmark applications.
Many array programming languages operate on ...
NOVA: A Functional Language for Data Parallelism
Functional languages provide a solid foundation on which complex optimization passes can be designed to exploit parallelism available in the underlying system. Their mathematical foundations enable high-level optimizations that would be impossible in ...
Abstracting Vector Architectures in Library Generators: Case Study Convolution Filters
We present FGen, a program generator for high performance convolution operations (finite-impulse-response filters). The generator uses an internal mathematical DSL to enable structural optimization at a high level of abstraction. We use FGen as a ...
Just-in-time Length Specialization of Dynamic Vector Code
Dynamically typed vector languages are popular in data analytics and statistical computing. In these languages, vectors have both dynamic type and dynamic length, making static generation of efficient machine code difficult. In this paper, we describe a ...
A Local-View Array Library for Partitioned Global Address Space C++ Programs
Multidimensional arrays are an important data structure in many scientific applications. Unfortunately, built-in support for such arrays is inadequate in C++, particularly in the distributed setting where bulk communication operations are required for ...
GPGPU Composition with OCaml
GPGPU programming promises high performance. However, to achieve it, developers must overcome several challenges. The main ones are: write and use hyper-parallel kernels on GPU, manage memory transfers between CPU and GPU, and compose kernels, keeping ...
Supporting Array Programming in X10
Effective support for array-based programming has long been one of the central design concerns of the X10 programming language. After significant research and exploration, X10 has adopted an approach based on providing arrays via user definable and ...
A Composable Array Function Interface for Heterogeneous Computing in Java
Heterogeneous computing has now become mainstream with virtually every desktop machines featuring accelerators such as Graphics Processing Units (GPUs). While heterogeneity offers the promise of high-performance and high-efficiency, it comes at the cost ...
Just-in-time shape inference for array-based languages
In dynamic array-based languages, the most computationally intensive parts of the program often involve either explicit loops or vector operations. These loops and vector operations can be better optimized if the compiler has accurate information about ...
Array Operators Using Multiple Dispatch: A design methodology for array implementations in dynamic languages
Arrays are such a rich and fundamental data type that they tend to be built into a language, either in the compiler or in a large low-level library. Defining this functionality at the user level instead provides greater flexibility for application ...
Co-dfns: Ancient Language, Modern Compiler
The APL language allows subject matter experts with no computer science experience to create large and complex software implementations of ideas without excessive software engineering and external development costs. The rapid increase in data sizes ...
Extract and Extend Parallelism using C/C++ Extension for Array Notation on Multicore and Many-core Platforms: An Empirical Investigation with Quantitative Finance Examples
In this paper, we explore the newly introduced array notion syntax extension in recent release of Intel Compiler with a few representative quantitative finance workloads. We will explore the array syntax both as an abstraction tool to allow the user to ...
On Predicting the Impact of Resource Redistributions in Streaming Applications
We propose a method for black-box performance modelling of executions of data-parallel array operations on shared memory multi-core systems. Black-box performance modelling refers to the idea that the source code as well as its attendant compilation ...
Loo.py: transformation-based code generation for GPUs and CPUs
Today's highly heterogeneous computing landscape places a burden on programmers wanting to achieve high performance on a reasonably broad cross-section of machines. To do so, computations need to be expressed in many different but mathematically ...
Bounds Checking: An Instance of Hybrid Analysis
This paper presents an analysis for bounds checking of array subscripts that lifts checking assertions to program level under the form of an arbitrarily-complex predicate (inspector), whose runtime evaluation guards the execution of the code of ...
Multi-Target C Code Generation from MATLAB
This paper describes our recent work on MATISSE, a framework for MATLAB to C compilation. We focus on the new optimizations and transformations, as well as on OpenCL generation. MATISSE is controlled with LARA, an aspect-oriented language, able to ...
Compiling a Subset of APL Into a Typed Intermediate Language
We present a compiler and a typed intermediate language for a subset of APL. The intermediate language treats all numeric data as multi-dimensional arrays and the type system makes explicit the ranks of arrays. Primitive operators are polymorphic in ...
Index Terms
- Proceedings of ACM SIGPLAN International Workshop on Libraries, Languages, and Compilers for Array Programming
Recommendations
Acceptance Rates
Year | Submitted | Accepted | Rate |
---|---|---|---|
ARRAY'14 | 25 | 17 | 68% |
Overall | 25 | 17 | 68% |