root/mpi4py/trunk/HISTORY.txt

Revision 161, 6.9 kB (checked in by dalcinl, 3 years ago)

add vector variants of collectives

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
Line 
1 =======================
2 HISTORY: MPI for Python
3 =======================
4
5 :Author:       Lisandro Dalcin
6 :Organization: CIMEC_
7 :Address:      PTLC, 3000 Santa Fe, Argentina
8 :Contact:      dalcinl@gmail.com
9 :Web Site:     http://mpi4py.scipy.org/
10
11
12 .. contents::
13
14 Release 0.6.0 (200X-XX-XX)
15 ==========================
16
17 * Point to point communications with pickled data were
18   reimplemented. Now a single message (for the data) is needed, the
19   message length is obtained using MPI routines ``MPI_Probe()`` and
20   ``MPI_Get_count()``. Because of this, ``MPI.Comm.Sendrecv()`` for
21   pickled data is no longer implemented in terms of the canonical
22   ``MPI_Sendrecv()``
23
24 * Collective communications with pickled data are now safer in 64 bits
25   architectures when the available memory is more than 2GB. In short:
26   now pickled data is concatenated in a single contiguous buffer. This
27   necessarily introduces some CPU and memory overhead at the sending
28   processes.
29
30 * Added initial support for vector variants of collectives.
31
32 * Added initial support for generalized requests. However, this is not
33   expected to work yet on the Python side.
34
35 * Solved some import-time warnings/errors for Open MPI with shared
36   libraries. In short: ``sys.setdlopenflags()`` is passed
37   ``RTLD_GLOBAL`` for importing MPI extension modules.
38
39 * Pushed some fixes for building on SGI ALTIX machines.
40
41
42 Release 0.5.0 (2007-07-31)
43 ==========================
44
45 * some nasty globals (size, rank, zero, last, even, odd) in MPI module
46   are no longer available. Convenience functions ``distribute()``,
47   ``pprint()``, and ``rprint()`` are now prefixed with an
48   underscore. Now it is safe to do wildcard import ``from mpi4py.MPI
49   import *``, ``MPI.Exception`` will then be available as
50   ``ExceptionMPI``.
51
52 * fixed and improved support for spawning new MPI processes with
53   ``Intracomm.Spawn()``. Arguments are now only required at the
54   specified root. Added support for getting the error codes: just pass
55   a (perhaps empty) list at the root, and the results will go there
56   (and previous list items go away).
57
58 * improved way to pass arguments to windows for *RMA* calls
59   ``Win.Put()``, ``Win.Get()``, and ``Win.Accumulate()``. This is
60   backward-incompatible, but far better and simpler than previous
61   approach. Window attributes (base, size, disp_unit) are now
62   accesible trough a property ``attrs``; a new property ``memory`` was
63   added to access the memory buffer (you could use it to build a NumPy
64   array with ``numpy.frombuffer()``).
65
66 * compile time support for selecting MPI thread level with option
67   ``--thread-level=xxx`` where ``xxx`` should be one of ``single``,
68   ``funneled``, ``serialized``, or ``multiple``. In the near future
69   this will be selectable at runtime.
70
71 * compile time support for detecting (possibly) leaked MPI handles
72   with option ``--enable-leak-warning``. Then, a warning will be
73   issued if any handle (other than MPI_Status) is not ``MPI_XXX_NULL``
74   at destruction time. This feature helps to discover unfreed handles,
75   as ``mpi4py`` currently does not automatically free them for
76   you.
77
78 * compile time support for faster (and fewer) MPI calls with option
79   ``--enable-fast-errcheck``. This mode avoids calls for
80   getting/setting/restoring error handlers in order to be able to
81   raise Python exceptions instead of the default MPI action (aborting
82   processes) . This assumes that all MPI handles (``Comm``, ``Win``,
83   ``File``) have a ``MPI_ERRORS_RETURN`` error handler. Additionally,
84   ``MPI_ERRORS_RETURN`` is set at import time in ``MPI_COMM_SELF``,
85   ``MPI_COMM_WORLD``, and ``MPI_FILE_NULL``, and at creation time for
86   new MPI handles created through ``mpi4py``. Unfortunately, this
87   mode can interact badly with external modules/libraries making MPI
88   calls, so it should be used with care.
89
90 * introduced many changes at the C and Python level for better support
91   the upcoming Python 3.0 following the ``py3k-struni`` branch.
92
93
94
95 Release 0.4.0 (2007-06-01)
96 ==========================
97
98 * support for direct communication of objects exporting single-segment
99   buffer interface, should work with numpy/numarray/Numeric.
100
101 * support for non-blocking communications. Request/Prequest classes
102   are now fully implemented and functional.
103
104 * full support for parallel I/O and one-sided communications.
105
106 * almost full support for parallel process management.
107
108 * support for using many MPI-2 features availables in some MPI-1
109   implementations. Added option '--try-mpi-2' to 'build' command. Use
110   it to test for MPI-2 features available in a MPI-1 implementations,
111   or a incomplete/broken MPI-2 implementation.
112
113
114 Release 0.3.1 (2002-08-02)
115 ==========================
116
117 * setup.py:
118  
119   - Simplified build process, now based in 'mpicc' compiler,
120     by request and suggestions from Brian Granger.
121
122 * mpi/MPI.py:
123
124   - Removed '@staticmethod' decorators in order to support Py2.3,
125     by request from Brian Granger.
126
127 * mpi/ext/libmpi.c:
128
129   - Removed call to MPI_Init().
130
131 * mpi/ext/pickle.c:
132
133   - Added faster pickling support.
134
135 * mpi/ext/macros.h:
136
137   - Updated to support Open MPI implementation.
138
139 * mpi/ext/mpi_cobj.c:
140
141   - Removed support for CObject.
142
143
144 Release 0.2.0 (2005-05-25)
145 ==========================
146
147 * mpi/MPI.py:
148
149   - file mpi/mpi.py renamed to mpi/MPI.py
150
151   - Corrected a bug in Op.__init__ method, moved initialization code
152     of some private attributes to Op.__new__ method.
153
154   - Added SWIG and CObject support to all MPI types using an improved
155     mechanism.
156
157 * mpi/MPU.py:
158
159   - file mpi/mpu.py renamed to mpi/MPU.py
160
161
162 * mpi/ext/libmpi.[c,h]:
163
164   - Added files libmpi.[c,h]. They contains all code previously
165     located in files mpi/ext/*object.[c,h].
166
167   - Added new extension module ``libmpi`` wich exports API pointers
168     using the approach suggested in
169     http://www.python.org/doc/2.3.5/ext/using-cobjects.html
170
171   - Added number methods to all MPI types (except ``Status``) in order
172     to support truth value testing. All predefined objects
173     ``MPI_<OBJ>_NULL`` now have a truth value of ``False``.
174
175 * mpi/ext/mpi.c:
176
177    - Implemented cart_map() and graph_map().
178
179   - Corrected a bug in errhandler_free(), format string for
180     PyArg_ParseTuple() changed from "O" to "O&".
181
182   - Renamed file mpi/ext/mpi4py.c to mpi/ext/mpi.c; removed file
183     mpi/ext/mpi4py.h.
184
185   - Extension module ``_mpi`` use the new ``libmpi`` module to get the
186     C API.
187
188 * mpi/ext/mpi_swig.i:
189  
190    - Changed typemaps for MPI objects. Now accepting PySwigObject and
191      PySwigPacked indistinctly.
192    
193    - Extension module ``_mpi_swig`` uses the new ``libmpi`` module to
194      get the C API. Converter functions renamed to
195      ``as_<Type>`` and ``from_<Type>``.
196
197 * mpi/ext/mpi_cobj.c:
198
199   - Extension module ``_mpi_cobj`` containing CObject support uses
200     uses the new ``libmpi`` module to get the C API. Converter
201     functions named ``as_<Type>`` and ``from_<Type>``.
202
203
204 Release 0.1.0 (2005-01-09)
205 ==========================
206
207 This is the first release of *MPI for Python*.
208
209
210 .. _CIMEC:            http://www.cimec.org.ar/
Note: See TracBrowser for help on using the browser.