Strategy for Compiling Parallel Matlab for General Distributions
Executing applications in parallel can produce significant performance gains, yet the time and expertise needed for the low-level details of parallelism is often prohibitive. Additionally, many applications rely heavily on domain-specific libraries, while it is not practical to write an optimizing compiler each time a domain-specific library is developed. In order to obtain high performance parallelism from a high-level, domain-specific scripting language, we are developing a parallel Matlab compiler, called the Matlab D compiler, using a telescoping languages framework to generate Fortran with MPI from Matlab scripts. The goal of telescoping languages is to automatically generate high performance compilers for domain-specific languages written in the form of libraries. Before user-script compilation, the domain-specific library routines are precompiled and optimized to form specialized variants, which are substituted into the user script during user-script compilation. With this strategy, user scripts are compiled quickly, and the compiler produces applications with the same high performance as if the user's application were available at library compile time. To create a parallel Matlab, we augmented the language with array distribution types to create Matlab D. When declaring an array intended to be used in a parallel computation, the user specifies the desired distribution for the array. Our Matlab D compiler, leveraging HPF compiler technology, generates the data movement operations and partitions the computations automatically to obtain the parallelism implied by the distributions. Thus, users can develop applications in a high-level scripting language and obtain the high performance necessary without incurring the cost of low-level programming. This paper presents the framework of the Matlab D compiler from a telescoping languages perspective and our preliminary work on the project.