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 [6, 2] to generate Fortran with MPI from Matlab scripts. The goal of telescoping languages is to automatically generate high performance compilers for domainspecific 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.
[1]
David A. Padua,et al.
A MATLAB to Fortran 90 translator and its effectiveness
,
1996,
ICS '96.
[2]
Antonio F. Díaz,et al.
Performance of Message-Passing MATLAB Toolboxes
,
2002,
VECPAR.
[3]
Jeremy Kepner,et al.
Parallel Matlab: The Next Generation
,
2003
.
[4]
Anne E. Trefethen,et al.
MultiMATLAB: MATLAB on Multiple Processors
,
1996
.
[5]
Marwan A. Jabri,et al.
Automatic array alignment in parallel Matlab scripts
,
1999,
Proceedings 13th International Parallel Processing Symposium and 10th Symposium on Parallel and Distributed Processing. IPPS/SPDP 1999.
[6]
David A. Padua,et al.
MaJIC: compiling MATLAB for speed and responsiveness
,
2002,
PLDI '02.
[7]
Ken Kennedy,et al.
Telescoping Languages: A System for Automatic Generation of Domain Languages
,
2005,
Proceedings of the IEEE.
[8]
Ken Kennedy,et al.
Automatic Type-Driven Library Generation for Telescoping Languages
,
2003,
ACM/IEEE SC 2003 Conference (SC'03).
[9]
Alan Edelman,et al.
Parallel MATLAB: Doing it Right
,
2005,
Proceedings of the IEEE.
[10]
Michael J. Quinn,et al.
Otter: bridging the gap between MATLAB and ScaLAPACK
,
1998,
Proceedings. The Seventh International Symposium on High Performance Distributed Computing (Cat. No.98TB100244).
[11]
David A. Padua,et al.
FALCON: A MATLAB Interactive Restructuring Compiler
,
1995,
LCPC.
[12]
Joshua J Hursey,et al.
Performance evaluation of MatlabMPI and the MPI Toolbox for MATLAB
,
2005
.