Sophie

Sophie

distrib > Mandriva > 2008.1 > i586 > by-pkgid > 2fe96174012fea2d88f752857a5bea1d > files > 19

python-mpi4py-0.6.0-4mdv2008.1.i586.rpm

=======================
HISTORY: MPI for Python
=======================

:Author:       Lisandro Dalcin
:Organization: CIMEC_
:Address:      PTLC, 3000 Santa Fe, Argentina
:Contact:      dalcinl@gmail.com
:Web Site:     http://mpi4py.scipy.org/


.. contents::

Release 0.6.0 (200X-XX-XX)
==========================

* Point to point communications with pickled data were
  reimplemented. Now a single message (for the data) is needed, the
  message length is obtained using MPI routines ``MPI_Probe()`` and
  ``MPI_Get_count()``. Because of this, ``MPI.Comm.Sendrecv()`` for
  pickled data is no longer implemented in terms of the canonical
  ``MPI_Sendrecv()``

* Collective communications with pickled data are now safer in 64 bits
  architectures when the available memory is more than 2GB. In short:
  now pickled data is concatenated in a single contiguous buffer. This
  necessarily introduces some CPU and memory overhead at the sending
  processes.

* Added initial support for vector variants of collectives.

* Added initial support for generalized requests. However, this is not
  expected to work yet on the Python side.

* Solved some import-time warnings/errors for Open MPI with shared
  libraries. In short: ``sys.setdlopenflags()`` is passed
  ``RTLD_GLOBAL`` for importing MPI extension modules.

* Pushed some fixes for building on SGI ALTIX machines.


Release 0.5.0 (2007-07-31)
==========================

* some nasty globals (size, rank, zero, last, even, odd) in MPI module
  are no longer available. Convenience functions ``distribute()``,
  ``pprint()``, and ``rprint()`` are now prefixed with an
  underscore. Now it is safe to do wildcard import ``from mpi4py.MPI
  import *``, ``MPI.Exception`` will then be available as
  ``ExceptionMPI``.

* fixed and improved support for spawning new MPI processes with
  ``Intracomm.Spawn()``. Arguments are now only required at the
  specified root. Added support for getting the error codes: just pass
  a (perhaps empty) list at the root, and the results will go there
  (and previous list items go away).

* improved way to pass arguments to windows for *RMA* calls
  ``Win.Put()``, ``Win.Get()``, and ``Win.Accumulate()``. This is
  backward-incompatible, but far better and simpler than previous
  approach. Window attributes (base, size, disp_unit) are now
  accesible trough a property ``attrs``; a new property ``memory`` was
  added to access the memory buffer (you could use it to build a NumPy
  array with ``numpy.frombuffer()``).

* compile time support for selecting MPI thread level with option
  ``--thread-level=xxx`` where ``xxx`` should be one of ``single``,
  ``funneled``, ``serialized``, or ``multiple``. In the near future
  this will be selectable at runtime.

* compile time support for detecting (possibly) leaked MPI handles
  with option ``--enable-leak-warning``. Then, a warning will be
  issued if any handle (other than MPI_Status) is not ``MPI_XXX_NULL``
  at destruction time. This feature helps to discover unfreed handles,
  as ``mpi4py`` currently does not automatically free them for
  you.

* compile time support for faster (and fewer) MPI calls with option
  ``--enable-fast-errcheck``. This mode avoids calls for
  getting/setting/restoring error handlers in order to be able to
  raise Python exceptions instead of the default MPI action (aborting
  processes) . This assumes that all MPI handles (``Comm``, ``Win``,
  ``File``) have a ``MPI_ERRORS_RETURN`` error handler. Additionally,
  ``MPI_ERRORS_RETURN`` is set at import time in ``MPI_COMM_SELF``,
  ``MPI_COMM_WORLD``, and ``MPI_FILE_NULL``, and at creation time for
  new MPI handles created through ``mpi4py``. Unfortunately, this
  mode can interact badly with external modules/libraries making MPI
  calls, so it should be used with care.

* introduced many changes at the C and Python level for better support
  the upcoming Python 3.0 following the ``py3k-struni`` branch.



Release 0.4.0 (2007-06-01)
==========================

* support for direct communication of objects exporting single-segment
  buffer interface, should work with numpy/numarray/Numeric.

* support for non-blocking communications. Request/Prequest classes
  are now fully implemented and functional.

* full support for parallel I/O and one-sided communications.

* almost full support for parallel process management.

* support for using many MPI-2 features availables in some MPI-1
  implementations. Added option '--try-mpi-2' to 'build' command. Use
  it to test for MPI-2 features available in a MPI-1 implementations,
  or a incomplete/broken MPI-2 implementation.


Release 0.3.1 (2002-08-02)
==========================

* setup.py: 
  
  - Simplified build process, now based in 'mpicc' compiler,
    by request and suggestions from Brian Granger.

* mpi/MPI.py:

  - Removed '@staticmethod' decorators in order to support Py2.3,
    by request from Brian Granger.

* mpi/ext/libmpi.c:

  - Removed call to MPI_Init().

* mpi/ext/pickle.c:

  - Added faster pickling support.

* mpi/ext/macros.h:

  - Updated to support Open MPI implementation.

* mpi/ext/mpi_cobj.c:

  - Removed support for CObject.


Release 0.2.0 (2005-05-25)
==========================

* mpi/MPI.py:

  - file mpi/mpi.py renamed to mpi/MPI.py

  - Corrected a bug in Op.__init__ method, moved initialization code
    of some private attributes to Op.__new__ method.

  - Added SWIG and CObject support to all MPI types using an improved
    mechanism.

* mpi/MPU.py:

  - file mpi/mpu.py renamed to mpi/MPU.py


* mpi/ext/libmpi.[c,h]:

  - Added files libmpi.[c,h]. They contains all code previously
    located in files mpi/ext/*object.[c,h].

  - Added new extension module ``libmpi`` wich exports API pointers
    using the approach suggested in
    http://www.python.org/doc/2.3.5/ext/using-cobjects.html

  - Added number methods to all MPI types (except ``Status``) in order
    to support truth value testing. All predefined objects
    ``MPI_<OBJ>_NULL`` now have a truth value of ``False``.

* mpi/ext/mpi.c:

   - Implemented cart_map() and graph_map().

  - Corrected a bug in errhandler_free(), format string for
    PyArg_ParseTuple() changed from "O" to "O&".

  - Renamed file mpi/ext/mpi4py.c to mpi/ext/mpi.c; removed file
    mpi/ext/mpi4py.h.

  - Extension module ``_mpi`` use the new ``libmpi`` module to get the
    C API.

* mpi/ext/mpi_swig.i:
  
   - Changed typemaps for MPI objects. Now accepting PySwigObject and
     PySwigPacked indistinctly.
    
   - Extension module ``_mpi_swig`` uses the new ``libmpi`` module to
     get the C API. Converter functions renamed to
     ``as_<Type>`` and ``from_<Type>``.

* mpi/ext/mpi_cobj.c:

  - Extension module ``_mpi_cobj`` containing CObject support uses
    uses the new ``libmpi`` module to get the C API. Converter
    functions named ``as_<Type>`` and ``from_<Type>``.


Release 0.1.0 (2005-01-09)
==========================

This is the first release of *MPI for Python*.


.. _CIMEC:            http://www.cimec.org.ar/