<div dir="ltr"><div>======================================</div><div>DistArray 0.5 release</div><div>======================================</div><div><br></div><div>**Mailing list:** <a href="mailto:distarray@googlegroups.com">distarray@googlegroups.com</a></div>

<div><br></div><div>**Documentation:** <a href="http://distarray.readthedocs.org">http://distarray.readthedocs.org</a></div><div><br></div><div>**License:** Three-clause BSD</div><div><br></div><div>**Python versions:** 2.7, 3.3, and 3.4</div>

<div><br></div><div>**OS support:** \*nix and Mac OS X</div><div><br></div><div>What is DistArray?</div><div>------------------</div><div><br></div><div>DistArray aims to bring the ease-of-use of NumPy to data-parallel</div>

<div>high-performance computing.  It provides distributed multi-dimensional NumPy</div><div>arrays, distributed ufuncs, and distributed IO capabilities.  It can</div><div>efficiently interoperate with external distributed libraries like Trilinos.</div>

<div>DistArray works with NumPy and builds on top of it in a flexible and natural</div><div>way.</div><div><br></div><div>0.5 Release</div><div>-----------</div><div><br></div><div>Noteworthy improvements in this release include:</div>

<div><br></div><div>* closer alignment with NumPy's API,</div><div>* support for Python 3.4 (existing support for Python 2.7 and 3.3),</div><div>* a performance-oriented MPI-only mode for deployment on clusters and</div>

<div>  supercomputers,</div><div>* a way to register user-defined functions to be callable locally on worker</div><div>  processes,</div><div>* more consistent naming of sub-packages,</div><div>* testing with MPICH2 (already tested against OpenMPI),</div>

<div>* improved and expanded examples,</div><div>* installed version testable via ``distarray.test()``, and</div><div>* performance and scaling improvements.</div><div><br></div><div>With this release, DistArray ready for real-world testing and deployment.  The</div>

<div>project is still evolving rapidly and we appreciate the continued input from</div><div>the larger scientific-Python community.</div><div><br></div><div>Existing features</div><div>-----------------</div><div><br></div>

<div>DistArray:</div><div><br></div><div>* supports NumPy-like slicing, reductions, and ufuncs on distributed</div><div>  multidimensional arrays;</div><div>* has a client-engine process design -- data resides on the worker processes,</div>

<div>  commands are initiated from master;</div><div>* allows full control over what is executed on the worker processes and</div><div>  integrates transparently with the master process;</div><div>* allows direct communication between workers, bypassing the master process</div>

<div>  for scalability;</div><div>* integrates with IPython.parallel for interactive creation and exploration of</div><div>  distributed data;</div><div>* supports distributed ufuncs (currently without broadcasting);</div>

<div>* builds on and leverages MPI via MPI4Py in a transparent and user-friendly</div><div>  way;</div><div>* has basic support for unstructured arrays;</div><div>* supports user-controllable array distributions across workers (block,</div>

<div>  cyclic, block-cyclic, and unstructured) on a per-axis basis;</div><div>* has a straightforward API to control how an array is distributed;</div><div>* has basic plotting support for visualization of array distributions;</div>

<div>* separates the array’s distribution from the array’s data -- useful for</div><div>  slicing, reductions, redistribution, broadcasting, and other operations;</div><div>* implements distributed random arrays;</div><div>

* supports ``.npy``-like flat-file IO and hdf5 parallel IO (via ``h5py``);</div><div>  leverages MPI-based IO parallelism in an easy-to-use and transparent way;</div><div>  and</div><div>* supports the distributed array protocol [protocol]_, which allows</div>

<div>  independently developed parallel libraries to share distributed arrays</div><div>  without copying, analogous to the PEP-3118 new buffer protocol.</div><div><br></div><div>Planned features and roadmap</div><div>----------------------------</div>

<div><br></div><div>Near-term features and improvements include:</div><div><br></div><div>* array re-distribution capabilities;</div><div>* lazy evaluation and deferred computation for latency hiding;</div><div>* interoperation with Trilinos [Trilinos]_; and</div>

<div>* distributed broadcasting support.</div><div><br></div><div>The longer-term roadmap includes:</div><div><br></div><div>* Integration with other packages [petsc]_ that subscribe to the distributed</div><div>  array protocol [protocol]_;</div>

<div>* Distributed fancy indexing;</div><div>* Out-of-core computations;</div><div>* Support for distributed sorting and other non-trivial distributed</div><div>  algorithms; and</div><div>* End-user control over communication and temporary array creation, and other</div>

<div>  performance aspects of distributed computations.</div><div><br></div><div>History and funding</div><div>-------------------</div><div><br></div><div>Brian Granger started DistArray as a NASA-funded SBIR project in 2008.</div>

<div>Enthought picked it up as part of a DOE Phase II SBIR [SBIR]_ to provide a</div><div>generally useful distributed array package.  It builds on NumPy, MPI, MPI4Py,</div><div>IPython, IPython.parallel, and interfaces with the Trilinos suite of</div>

<div>distributed HPC solvers (via PyTrilinos [Trilinos]_).</div><div><br></div><div>This material is based upon work supported by the Department of Energy under</div><div>Award Number DE-SC0007699.</div><div><br></div><div>

This report was prepared as an account of work sponsored by an agency of the</div><div>United States Government.  Neither the United States Government nor any agency</div><div>thereof, nor any of their employees, makes any warranty, express or implied,</div>

<div>or assumes any legal liability or responsibility for the accuracy,</div><div>completeness, or usefulness of any information, apparatus, product, or process</div><div>disclosed, or represents that its use would not infringe privately owned</div>

<div>rights.  Reference herein to any specific commercial product, process, or</div><div>service by trade name, trademark, manufacturer, or otherwise does not</div><div>necessarily constitute or imply its endorsement, recommendation, or favoring</div>

<div>by the United States Government or any agency thereof.  The views and opinions</div><div>of authors expressed herein do not necessarily state or reflect those of the</div><div>United States Government or any agency thereof.</div>

<div><br></div><div><br></div><div>.. [protocol] <a href="http://distributed-array-protocol.readthedocs.org/en/rel-0.10.0/">http://distributed-array-protocol.readthedocs.org/en/rel-0.10.0/</a></div><div>.. [Trilinos] <a href="http://trilinos.org/">http://trilinos.org/</a></div>

<div>.. [petsc] <a href="http://www.mcs.anl.gov/petsc/">http://www.mcs.anl.gov/petsc/</a></div><div>.. [SBIR] <a href="http://www.sbir.gov/sbirsearch/detail/410257">http://www.sbir.gov/sbirsearch/detail/410257</a></div><div>

<br></div>-- <br><div dir="ltr"><font size="1"><a href="mailto:ksmith@enthought.com" target="_blank">Kurt W. Smith, Ph.D.</a><br></font><font size="1"><a href="http://www.enthought.com" target="_blank">Enthought, Inc.</a>  | 512.536.1057</font><br>

</div>
</div>