  MATLAB has emerged as one of the languages most commonly used by scientists
and engineers for technical computing, with ~1,000,000 users worldwide. The
compute intensive nature of technical computing means that many MATLAB users
have codes that can significantly benefit from the increased performance
offered by parallel computing. pMatlab (www.ll.mit.edu/pMatlab) provides this
capability by implementing Parallel Global Array Semantics (PGAS) using
standard operator overloading techniques. The core data structure in pMatlab is
a distributed numerical array whose distribution onto multiple processors is
specified with a map construct. Communication operations between distributed
arrays are abstracted away from the user and pMatlab transparently supports
redistribution between any block-cyclic-overlapped distributions up to four
dimensions. pMatlab is built on top of the MatlabMPI communication library
(www.ll.mit.edu/MatlabMPI) and runs on any combination of heterogeneous systems
that support MATLAB, which includes Windows, Linux, MacOSX, and SunOS.
Performance is validated by implementing the HPC Challenge benchmark suite and
comparing pMatlab performance with the equivalent C+MPI codes. These results
indicate that pMatlab can often achieve comparable performance to C+MPI at
usually 1/10th the code size. Finally, we present implementation data collected
from a sample of 10 real pMatlab applications drawn from the ~100 users at MIT
Lincoln Laboratory. These data indicate that users are typically able to go
from a serial code to a well performing pMatlab code in about 3 hours while
changing less than 1% of their code.
