hwloc: null check for cpuset
[mpich-dev.git] / CHANGES
1 ===============================================================================
2                                Changes in 3.3
3 ===============================================================================
4
5  # CH4 Device: A new device layer implementation designed for low software
6    overheads. CH4 has experimental support for OFI and UCX network libraries,
7    and POSIX shared memory. Thanks to Intel, Mellanox, and RIKEN AICS for
8    participating in the CH4 coding effort.
9
10  # Added support for splitting communicators based on hardware
11    topology using info hints.
12
13  # Fixed SLURM integration in Hydra for new node list format.
14
15  # Better organization of collectives in the MPI layer. The new
16    scheme, which de-couples implementation from selection logic,
17    enables easier integration of additional algorithms.
18
19  # Removed the PAMI device and poe PMI client.
20
21  # Several other minor bug fixes, memory leak fixes, and code cleanup.
22
23    A full list of changes is available at the following link:
24
25      http://git.mpich.org/mpich.git/shortlog/v3.2..v3.3a3
26
27    A list of bugs that have been fixed is available at the following
28    link:
29
30      https://github.com/pmodels/mpich/milestone/25?closed=1
31
32 ===============================================================================
33                                Changes in 3.2
34 ===============================================================================
35
36  # Added support for MPI-3.1 features including nonblocking collective I/O,
37    address manipulation routines, thread-safety for MPI initialization,
38    pre-init functionality, and new MPI_T routines to look up variables
39    by name.
40
41  # Fortran 2008 bindings are enabled by default and fully supported.
42
43  # Added support for the Mellanox MXM InfiniBand interface.  (thanks
44    to Mellanox for the code contribution).
45
46  # Added support for the Mellanox HCOLL interface for collectives.
47    (thanks to Mellanox for the code contribution).
48
49  # Significant stability improvements to the MPICH/portals4
50    implementation.
51
52  # Completely revamped RMA infrastructure including several
53    scalability improvements, performance improvements, and bug fixes.
54
55  # Added experimental support for Open Fabrics Interfaces (OFI) version 1.0.0.
56    https://github.com/ofiwg/libfabric (thanks to Intel for code contribution)
57
58  # The Myrinet MX network module, which had a life cyle from 1.1 till
59    3.1.2, has now been deleted.
60
61  # Several other minor bug fixes, memory leak fixes, and code cleanup.
62
63    A full list of changes is available at the following link:
64
65      http://git.mpich.org/mpich.git/shortlog/v3.1.3..v3.2
66
67    A full list of bugs that have been fixed is available at the
68    following link:
69
70      https://trac.mpich.org/projects/mpich/query?status=closed&group=resolution&milestone=mpich-3.2
71
72
73 ===============================================================================
74                                Changes in 3.1.3
75 ===============================================================================
76
77  # Several enhancements to Portals4 support.
78
79  # Several enhancements to PAMI (thanks to IBM for the code contribution).
80
81  # Several enhancements to the CH3 RMA implementation.
82
83  # Several enhancements to ROMIO.
84
85  # Fixed deadlock in multi-threaded MPI_Comm_idup.
86
87  # Several other minor bug fixes, memory leak fixes, and code cleanup.
88
89    A full list of changes is available at the following link:
90
91      http://git.mpich.org/mpich.git/shortlog/v3.1.2..v3.1.3
92
93    A full list of bugs that have been fixed is available at the
94    following link:
95
96      https://trac.mpich.org/projects/mpich/query?status=closed&group=resolution&milestone=mpich-3.1.3
97
98
99 ===============================================================================
100                                Changes in 3.1.2
101 ===============================================================================
102
103  # Significant enhancements to the BG/Q device, especially for RMA and
104    shared memory functionality.
105
106  # Several enhancements to ROMIO.
107
108  # Upgraded to hwloc-1.9.
109
110  # Added more Fortran 2008 (F08) tests and fixed a few F08 binding bugs.
111    Now all MPICH F90 tests have been ported to F08.
112
113  # Updated weak alias support to align with gcc-4.x
114
115  # Minor enhancements to the CH3 RMA implementation.
116
117  # Better implementation of MPI_Allreduce for intercommunicator.
118
119  # Added environment variables to control memory tracing overhead.
120
121  # Added flags to enable C99 mode with Solaris compilers.
122
123  # Updated implementation of MPI-T CVARs of type MPI_CHAR, as interpreted
124    in MPI-3.0 Errata.
125
126  # Several other minor bug fixes, memory leak fixes, and code cleanup.
127
128    A full list of changes is available at the following link:
129
130      http://git.mpich.org/mpich.git/shortlog/v3.1.1..v3.1.2
131
132    A full list of bugs that have been fixed is available at the
133    following link:
134
135      https://trac.mpich.org/projects/mpich/query?status=closed&group=resolution&milestone=mpich-3.1.2
136
137
138 ===============================================================================
139                                Changes in 3.1.1
140 ===============================================================================
141
142  # Blue Gene/Q implementation supports MPI-3. This release contains a
143    functional and compliant Blue Gene/Q implementation of the MPI-3 standard.
144    Instructions to build on Blue Gene/Q are on the mpich.org wiki:
145    http://wiki.mpich.org/mpich/index.php/BGQ
146
147  # Fortran 2008 bindings (experimental). Build with --enable-fortran=all. Must have
148    a Fortran 2008 + TS 29113 capable compiler.
149
150  # Significant rework of MPICH library management and which symbols go
151    into which libraries.  Also updated MPICH library names to make
152    them consistent with Intel MPI, Cray MPI and IBM PE MPI.  Backward
153    compatibility links are provided for older mpich-based build
154    systems.
155
156  # The ROMIO "Blue Gene" driver has seen significant rework.  We have separated
157    "file system" features from "platform" features, since GPFS shows up in more
158    places than just Blue Gene
159
160  # New ROMIO options for aggregator selection and placement on Blue Gene
161
162  # Optional new ROMIO two-phase algorithm requiring less communication for
163    certain workloads
164
165  # The old ROMIO optimization "deferred open" either stopped working or was
166    disabled on several platforms.
167
168  # Added support for powerpcle compiler. Patched libtool in MPICH to support
169    little-endian powerpc linux host.
170
171  # Fixed the prototype of the Reduce_local C++ binding.  The previous
172    prototype was completely incorrect.  Thanks to Jeff Squyres for
173    reporting the issue.
174
175  # The mpd process manager, which was deprecated and unsupported for
176    the past four major release series (1.3.x till 3.1), has now been
177    deleted.  RIP.
178
179  # Several other minor bug fixes, memory leak fixes, and code cleanup.
180
181    A full list of changes is available at the following link:
182
183      http://git.mpich.org/mpich.git/shortlog/v3.1..v3.1.1
184
185    A full list of bugs that have been fixed is available at the
186    following link:
187
188      https://trac.mpich.org/projects/mpich/query?status=closed&group=resolution&milestone=mpich-3.1.1
189
190
191 ===============================================================================
192                                Changes in 3.1
193 ===============================================================================
194
195  # Implement runtime compatibility with MPICH-derived implementations as per
196    the ABI Compatibility Initiative (see www.mpich.org/abi for more
197    information).
198
199  # Integrated MPICH-PAMI code base for Blue Gene/Q and other IBM
200    platforms.
201
202  # Several improvements to the SCIF netmod.  (code contribution from
203    Intel).
204
205  # Major revamp of the MPI_T interface added in MPI-3.
206
207  # Added environment variables to control a lot more capabilities for
208    collectives.  See the README.envvar file for more information.
209
210  # Allow non-blocking collectives and fault tolerance at the same
211    time. The option MPIR_PARAM_ENABLE_COLL_FT_RET has been deprecated as
212    it is no longer necessary.
213
214  # Improvements to MPI_WIN_ALLOCATE to internally allocate shared
215    memory between processes on the same node.
216
217  # Performance improvements for MPI RMA operations on shared memory
218    for MPI_WIN_ALLOCATE and MPI_WIN_ALLOCATE_SHARED.
219
220  # Enable shared library builds by default.
221
222  # Upgraded hwloc to 1.8.
223
224  # Several improvements to the Hydra-SLURM integration.
225
226  # Several improvements to the Hydra process binding code.  See the
227    Hydra wiki page for more information:
228    http://wiki.mpich.org/mpich/index.php/Using_the_Hydra_Process_Manager
229
230  # MPICH now supports operations on very large datatypes (those that describe
231    more than 32 bits of data).  This work also allows MPICH to fully support
232    MPI-3's introduction of MPI_Count.
233
234  # Several other minor bug fixes, memory leak fixes, and code cleanup.
235
236    A full list of changes is available at the following link:
237
238      http://git.mpich.org/mpich.git/shortlog/v3.0.4..v3.1
239
240    A full list of bugs that have been fixed is available at the
241    following link:
242
243      https://trac.mpich.org/projects/mpich/query?status=closed&group=resolution&milestone=mpich-3.1
244
245
246 ===============================================================================
247                                Changes in 3.0.4
248 ===============================================================================
249
250  # BUILD SYSTEM: Reordered the default compiler search to prefer Intel
251    and PG compilers over GNU compilers because of the performance
252    difference.
253
254    WARNING: If you do not explicitly specify the compiler you want
255    through CC and friends, this might break ABI for you relative to
256    the previous 3.0.x release.
257
258  # OVERALL: Added support to manage per-communicator eager-rendezvous
259    thresholds.
260
261  # PM/PMI: Performance improvements to the Hydra process manager on
262    large-scale systems by allowing for key/value caching.
263
264  # Several other minor bug fixes, memory leak fixes, and code cleanup.
265    A full list of changes is available at the following link:
266
267      http://git.mpich.org/mpich.git/shortlog/v3.0.3..v3.0.4
268
269
270 ===============================================================================
271                                Changes in 3.0.3
272 ===============================================================================
273
274  # RMA: Added a new mechanism for piggybacking RMA synchronization operations,
275    which improves the performance of several synchronization operations,
276    including Flush.
277
278  # RMA: Added an optimization to utilize the MPI_MODE_NOCHECK assertion in
279    passive target RMA to improve performance by eliminating a lock request
280    message.
281
282  # RMA: Added a default implementation of shared memory windows to CH3.  This
283    adds support for this MPI 3.0 feature to the ch3:sock device.
284
285  # RMA: Fix a bug that resulted in an error when RMA operation request handles
286    where completed outside of a synchronization epoch.
287
288  # PM/PMI: Upgraded to hwloc-1.6.2rc1.  This version uses libpciaccess
289    instead of libpci, to workaround the GPL license used by libpci.
290
291  # PM/PMI: Added support for the Cobalt process manager.
292
293  # BUILD SYSTEM: allow MPI_LONG_DOUBLE_SUPPORT to be disabled with a configure
294    option.
295
296  # FORTRAN: fix MPI_WEIGHTS_EMPTY in the Fortran bindings
297
298  # MISC: fix a bug in MPI_Get_elements where it could return incorrect values
299
300  # Several other minor bug fixes, memory leak fixes, and code cleanup.
301    A full list of changes is available at the following link:
302
303      http://git.mpich.org/mpich.git/shortlog/v3.0.2..v3.0.3
304
305
306 ===============================================================================
307                                Changes in 3.0.2
308 ===============================================================================
309
310  # PM/PMI: Upgrade to hwloc-1.6.1
311
312  # RMA: Performance enhancements for shared memory windows.
313
314  # COMPILER INTEGRATION: minor improvements and fixes to the clang static type
315    checking annotation macros.
316
317  # MPI-IO (ROMIO): improved error checking for user errors, contributed by IBM.
318
319  # MPI-3 TOOLS INTERFACE: new MPI_T performance variables providing information
320    about nemesis communication behavior and and CH3 message matching queues.
321
322  # TEST SUITE: "make testing" now also outputs a "summary.tap" file that can be
323    interpreted with standard TAP consumer libraries and tools.  The
324    "summary.xml" format remains unchanged.
325
326  # GIT: This is the first release built from the new git repository at
327    git.mpich.org.  A few build system mechanisms have changed because of this
328    switch.
329
330  # BUG FIX: resolved a compilation error related to LLONG_MAX that affected
331    several users (ticket #1776).
332
333  # BUG FIX: nonblocking collectives now properly make progress when MPICH is
334    configured with the ch3:sock channel (ticket #1785).
335
336  # Several other minor bug fixes, memory leak fixes, and code cleanup.
337    A full list of changes is available at the following link:
338
339      http://git.mpich.org/mpich.git/shortlog/v3.0.1..v3.0.2
340
341
342 ===============================================================================
343                                Changes in 3.0.1
344 ===============================================================================
345
346  # PM/PMI: Critical bug-fix in Hydra to work correctly in multi-node
347    tests.
348
349  # A full list of changes is available using:
350
351      svn log -r10790:HEAD https://svn.mcs.anl.gov/repos/mpi/mpich2/tags/release/mpich-3.0.1
352
353      ... or at the following link:
354
355      https://trac.mcs.anl.gov/projects/mpich2/log/mpich2/tags/release/mpich-3.0.1?action=follow_copy&rev=HEAD&stop_rev=10790&mode=follow_copy
356
357
358 ===============================================================================
359                                Changes in 3.0
360 ===============================================================================
361
362  # MPI-3: All MPI-3 features are now implemented and the MPI_VERSION
363    bumped up to 3.0.
364
365  # OVERALL: Added support for ARM-v7 native atomics
366
367  # MPE: MPE is now separated out of MPICH and can be downloaded/used
368    as a separate package.
369
370  # PM/PMI: Upgraded to hwloc-1.6
371
372  # Several other minor bug fixes, memory leak fixes, and code cleanup.
373    A full list of changes is available using:
374
375      svn log -r10344:HEAD https://svn.mcs.anl.gov/repos/mpi/mpich2/tags/release/mpich-3.0
376
377      ... or at the following link:
378
379      https://trac.mcs.anl.gov/projects/mpich2/log/mpich2/tags/release/mpich-3.0?action=follow_copy&rev=HEAD&stop_rev=10344&mode=follow_copy
380
381
382 ===============================================================================
383                                Changes in 1.5
384 ===============================================================================
385
386  # OVERALL: Nemesis now supports an "--enable-yield=..." configure
387    option for better performance/behavior when oversubscribing
388    processes to cores.  Some form of this option is enabled by default
389    on Linux, Darwin, and systems that support sched_yield().
390
391  # OVERALL: Added support for Intel Many Integrated Core (MIC)
392    architecture: shared memory, TCP/IP, and SCIF based communication.
393
394  # OVERALL: Added support for IBM BG/Q architecture.  Thanks to IBM
395    for the contribution.
396
397  # MPI-3: const support has been added to mpi.h, although it is
398    disabled by default.  It can be enabled on a per-translation unit
399    basis with "#define MPICH2_CONST const".
400
401  # MPI-3: Added support for MPIX_Type_create_hindexed_block.
402
403  # MPI-3: The new MPI-3 nonblocking collective functions are now
404    available as "MPIX_" functions (e.g., "MPIX_Ibcast").
405
406  # MPI-3: The new MPI-3 neighborhood collective routines are now available as
407    "MPIX_" functions (e.g., "MPIX_Neighbor_allgather").
408
409  # MPI-3: The new MPI-3 MPI_Comm_split_type function is now available
410    as an "MPIX_" function.
411
412  # MPI-3: The new MPI-3 tools interface is now available as "MPIX_T_"
413    functions.  This is a beta implementation right now with several
414    limitations, including no support for multithreading.  Several
415    performance variables related to CH3's message matching are exposed
416    through this interface.
417
418  # MPI-3: The new MPI-3 matched probe functionality is supported via
419    the new routines MPIX_Mprobe, MPIX_Improbe, MPIX_Mrecv, and
420    MPIX_Imrecv.
421
422  # MPI-3: The new MPI-3 nonblocking communicator duplication routine,
423    MPIX_Comm_idup, is now supported.  It will only work for
424    single-threaded programs at this time.
425
426  # MPI-3: MPIX_Comm_reenable_anysource support
427
428  # MPI-3: Native MPIX_Comm_create_group support (updated version of
429    the prior MPIX_Group_comm_create routine).
430
431  # MPI-3: MPI_Intercomm_create's internal communication no longer interferes
432    with point-to-point communication, even if point-to-point operations on the
433    parent communicator use the same tag or MPI_ANY_TAG.
434
435  # MPI-3: Eliminated the possibility of interference between
436    MPI_Intercomm_create and point-to-point messaging operations.
437
438  # Build system: Completely revamped build system to rely fully on
439    autotools.  Parallel builds ("make -j8" and similar) are now supported.
440
441  # Build system: rename "./maint/updatefiles" --> "./autogen.sh" and
442    "configure.in" --> "configure.ac"
443
444  # JUMPSHOT: Improvements to Jumpshot to handle thousands of
445    timelines, including performance improvements to slog2 in such
446    cases.
447
448  # JUMPSHOT: Added navigation support to locate chosen drawable's ends
449    when viewport has been scrolled far from the drawable.
450
451  # PM/PMI: Added support for memory binding policies.
452
453  # PM/PMI: Various improvements to the process binding support in
454    Hydra.  Several new pre-defined binding options are provided.
455
456  # PM/PMI: Upgraded to hwloc-1.5
457
458  # PM/PMI: Several improvements to PBS support to natively use the PBS
459    launcher.
460
461  # Several other minor bug fixes, memory leak fixes, and code cleanup.
462    A full list of changes is available using:
463
464      svn log -r8478:HEAD https://svn.mcs.anl.gov/repos/mpi/mpich2/tags/release/mpich2-1.5
465
466      ... or at the following link:
467
468      https://trac.mcs.anl.gov/projects/mpich2/log/mpich2/tags/release/mpich2-1.5?action=follow_copy&rev=HEAD&stop_rev=8478&mode=follow_copy
469
470
471 ===============================================================================
472                                Changes in 1.4.1
473 ===============================================================================
474
475  # OVERALL: Several improvements to the ARMCI API implementation
476    within MPICH2.
477
478  # Build system: Added beta support for DESTDIR while installing
479    MPICH2.
480
481  # PM/PMI: Upgrade hwloc to 1.2.1rc2.
482
483  # PM/PMI: Initial support for the PBS launcher.
484
485  # Several other minor bug fixes, memory leak fixes, and code cleanup.
486    A full list of changes is available using:
487
488      svn log -r8675:HEAD https://svn.mcs.anl.gov/repos/mpi/mpich2/tags/release/mpich2-1.4.1
489
490      ... or at the following link:
491
492      https://trac.mcs.anl.gov/projects/mpich2/log/mpich2/tags/release/mpich2-1.4.1?action=follow_copy&rev=HEAD&stop_rev=8675&mode=follow_copy
493
494
495 ===============================================================================
496                                Changes in 1.4
497 ===============================================================================
498
499  # OVERALL: Improvements to fault tolerance for collective
500    operations. Thanks to Rui Wang @ ICT for reporting several of these
501    issues.
502
503  # OVERALL: Improvements to the universe size detection. Thanks to
504    Yauheni Zelenko for reporting this issue.
505
506  # OVERALL: Bug fixes for Fortran attributes on some systems. Thanks
507    to Nicolai Stange for reporting this issue.
508
509  # OVERALL: Added new ARMCI API implementation (experimental).
510
511  # OVERALL: Added new MPIX_Group_comm_create function to allow
512    non-collective creation of sub-communicators.
513
514  # FORTRAN: Bug fixes in the MPI_DIST_GRAPH_ Fortran bindings.
515
516  # PM/PMI: Support for a manual "none" launcher in Hydra to allow for
517    higher-level tools to be built on top of Hydra. Thanks to Justin
518    Wozniak for reporting this issue, for providing several patches for
519    the fix, and testing it.
520
521  # PM/PMI: Bug fixes in Hydra to handle non-uniform layouts of hosts
522    better. Thanks to the MVAPICH group at OSU for reporting this issue
523    and testing it.
524
525  # PM/PMI: Bug fixes in Hydra to handle cases where only a subset of
526    the available launchers or resource managers are compiled
527    in. Thanks to Satish Balay @ Argonne for reporting this issue.
528
529  # PM/PMI: Support for a different username to be provided for each
530    host; this only works for launchers that support this (such as
531    SSH).
532
533  # PM/PMI: Bug fixes for using Hydra on AIX machines. Thanks to
534    Kitrick Sheets @ NCSA for reporting this issue and providing the
535    first draft of the patch.
536
537  # PM/PMI: Bug fixes in memory allocation/management for environment
538    variables that was showing up on older platforms. Thanks to Steven
539    Sutphen for reporting the issue and providing detailed analysis to
540    track down the bug.
541
542  # PM/PMI: Added support for providing a configuration file to pick
543    the default options for Hydra. Thanks to Saurabh T. for reporting
544    the issues with the current implementation and working with us to
545    improve this option.
546
547  # PM/PMI: Improvements to the error code returned by Hydra.
548
549  # PM/PMI: Bug fixes for handling "=" in environment variable values in
550    hydra.
551
552  # PM/PMI: Upgrade the hwloc version to 1.2.
553
554  # COLLECTIVES: Performance and memory usage improvements for MPI_Bcast
555    in certain cases.
556
557  # VALGRIND: Fix incorrect Valgrind client request usage when MPICH2 is
558    built for memory debugging.
559
560  # BUILD SYSTEM: "--enable-fast" and "--disable-error-checking" are once
561    again valid simultaneous options to configure.
562
563  # TEST SUITE: Several new tests for MPI RMA operations.
564
565  # Several other minor bug fixes, memory leak fixes, and code cleanup.
566    A full list of changes is available using:
567
568      svn log -r7838:HEAD https://svn.mcs.anl.gov/repos/mpi/mpich2/tags/release/mpich2-1.4
569
570      ... or at the following link:
571
572      https://trac.mcs.anl.gov/projects/mpich2/log/mpich2/tags/release/mpich2-1.4?action=follow_copy&rev=HEAD&stop_rev=7838&mode=follow_copy
573
574
575 ===============================================================================
576                                Changes in 1.3.2
577 ===============================================================================
578
579  # OVERALL: MPICH2 now recognizes the OSX mach_absolute_time as a
580    native timer type.
581
582  # OVERALL: Performance improvements to MPI_Comm_split on large
583    systems.
584
585  # OVERALL: Several improvements to error returns capabilities in the
586    presence of faults.
587
588  # PM/PMI: Several fixes and improvements to Hydra's process binding
589    capability.
590
591  # PM/PMI: Upgrade the hwloc version to 1.1.1.
592
593  # PM/PMI: Allow users to sort node lists allocated by resource
594    managers in Hydra.
595
596  # PM/PMI: Improvements to signal handling. Now Hydra respects Ctrl-Z
597    signals and passes on the signal to the application.
598
599  # PM/PMI: Improvements to STDOUT/STDERR handling including improved
600    support for rank prepending on output. Improvements to STDIN
601    handling for applications being run in the background.
602
603  # PM/PMI: Split the bootstrap servers into "launchers" and "resource
604    managers", allowing the user to pick a different resource manager
605    from the launcher. For example, the user can now pick the "SLURM"
606    resource manager and "SSH" as the launcher.
607
608  # PM/PMI: The MPD process manager is deprecated.
609
610  # PM/PMI: The PLPA process binding library support is deprecated.
611
612  # WINDOWS: Adding support for gfortran and 64-bit gcc libs.
613
614  # Several other minor bug fixes, memory leak fixes, and code cleanup.
615    A full list of changes is available using:
616
617      svn log -r7457:HEAD https://svn.mcs.anl.gov/repos/mpi/mpich2/tags/release/mpich2-1.3.2
618
619      ... or at the following link:
620
621      https://trac.mcs.anl.gov/projects/mpich2/log/mpich2/tags/release/mpich2-1.3.2?action=follow_copy&rev=HEAD&stop_rev=7457&mode=follow_copy
622
623
624 ===============================================================================
625                                Changes in 1.3.1
626 ===============================================================================
627
628  # OVERALL: MPICH2 is now fully compliant with the CIFTS FTB standard
629    MPI events (based on the draft standard).
630
631  # OVERALL: Major improvements to RMA performance for long lists of
632    RMA operations.
633
634  # OVERALL: Performance improvements for Group_translate_ranks.
635
636  # COLLECTIVES: Collective algorithm selection thresholds can now be controlled
637    at runtime via environment variables.
638
639  # ROMIO: PVFS error codes are now mapped to MPI error codes.
640
641  # Several other minor bug fixes, memory leak fixes, and code cleanup.
642    A full list of changes is available using:
643
644      svn log -r7350:HEAD https://svn.mcs.anl.gov/repos/mpi/mpich2/tags/release/mpich2-1.3.1
645
646      ... or at the following link:
647
648      https://trac.mcs.anl.gov/projects/mpich2/log/mpich2/tags/release/mpich2-1.3.1?action=follow_copy&rev=HEAD&stop_rev=7350&mode=follow_copy
649
650
651 ===============================================================================
652                                Changes in 1.3
653 ===============================================================================
654
655  # OVERALL: Initial support for fine-grained threading in
656    ch3:nemesis:tcp.
657
658  # OVERALL: Support for Asynchronous Communication Progress.
659
660  # OVERALL: The ssm and shm channels have been removed.
661
662  # OVERALL: Checkpoint/restart support using BLCR.
663
664  # OVERALL: Improved tolerance to process and communication failures
665    when error handler is set to MPI_ERRORS_RETURN.  If a communication
666    operation fails (e.g., due to a process failure) MPICH2 will return
667    an error, and further communication to that process is not
668    possible.  However, communication with other processes will still
669    proceed normally.  Note, however, that the behavior collective
670    operations on communicators containing the failed process is
671    undefined, and may give incorrect results or hang some processes.
672
673  # OVERALL: Experimental support for inter-library dependencies.
674
675  # PM/PMI: Hydra is now the default process management framework
676    replacing MPD.
677
678  # PM/PMI: Added dynamic process support for Hydra.
679
680  # PM/PMI: Added support for LSF, SGE and POE in Hydra.
681
682  # PM/PMI: Added support for CPU and memory/cache topology aware
683    process-core binding.
684
685  # DEBUGGER: Improved support and bug fixes in the Totalview support.
686
687  # Build system: Replaced F90/F90FLAGS by FC/FCFLAGS. F90/F90FLAGS are
688    not longer supported in the configure.
689
690  # Multi-compiler support: On systems where C compiler that is used to
691    build mpich2 libraries supports multiple weak symbols and multiple aliases,
692    the Fortran binding built in the mpich2 libraries can handle different
693    Fortran compilers (than the one used to build mpich2).  Details in README.
694
695  # Several other minor bug fixes, memory leak fixes, and code cleanup.
696    A full list of changes is available using:
697
698      svn log -r5762:HEAD https://svn.mcs.anl.gov/repos/mpi/mpich2/tags/release/mpich2-1.3
699
700      ... or at the following link:
701
702      https://trac.mcs.anl.gov/projects/mpich2/log/mpich2/tags/release/mpich2-1.3?action=follow_copy&rev=HEAD&stop_rev=5762&mode=follow_copy
703
704
705 ===============================================================================
706                                Changes in 1.2.1
707 ===============================================================================
708
709  # OVERALL: Improved support for fine-grained multithreading.
710
711  # OVERALL: Improved integration with Valgrind for debugging builds of MPICH2.
712
713  # PM/PMI: Initial support for hwloc process-core binding library in
714    Hydra.
715
716  # PM/PMI: Updates to the PMI-2 code to match the PMI-2 API and
717    wire-protocol draft.
718
719  # Several other minor bug fixes, memory leak fixes, and code cleanup.
720    A full list of changes is available using:
721
722      svn log -r5425:HEAD https://svn.mcs.anl.gov/repos/mpi/mpich2/tags/release/mpich2-1.2.1
723
724      ... or at the following link:
725
726      https://trac.mcs.anl.gov/projects/mpich2/log/mpich2/tags/release/mpich2-1.2.1?action=follow_copy&rev=HEAD&stop_rev=5425&mode=follow_copy
727
728
729 ===============================================================================
730                                Changes in 1.2
731 ===============================================================================
732
733  # OVERALL: Support for MPI-2.2
734
735  # OVERALL: Several fixes to Nemesis/MX.
736
737  # WINDOWS: Performance improvements to Nemesis/windows.
738
739  # PM/PMI: Scalability and performance improvements to Hydra using
740    PMI-1.1 process-mapping features.
741
742  # PM/PMI: Support for process-binding for hyperthreading enabled
743    systems in Hydra.
744
745  # PM/PMI: Initial support for PBS as a resource management kernel in
746    Hydra.
747
748  # PM/PMI: PMI2 client code is now officially included in the release.
749
750  # TEST SUITE: Support to run the MPICH2 test suite through valgrind.
751
752  # Several other minor bug fixes, memory leak fixes, and code cleanup.
753    A full list of changes is available using:
754
755      svn log -r5025:HEAD https://svn.mcs.anl.gov/repos/mpi/mpich2/tags/release/mpich2-1.2
756
757      ... or at the following link:
758
759      https://trac.mcs.anl.gov/projects/mpich2/log/mpich2/tags/release/mpich2-1.2?action=follow_copy&rev=HEAD&stop_rev=5025&mode=follow_copy
760
761
762 ===============================================================================
763                                Changes in 1.1.1p1
764 ===============================================================================
765
766  - OVERALL: Fixed an invalid read in the dataloop code for zero count types.
767
768  - OVERALL: Fixed several bugs in ch3:nemesis:mx (tickets #744,#760;
769    also change r5126).
770
771  - BUILD SYSTEM: Several fixes for functionality broken in 1.1.1 release,
772    including MPICH2LIB_xFLAGS and extra libraries living in $LIBS instead of
773    $LDFLAGS.  Also, '-lpthread' should no longer be duplicated in link lines.
774
775  - BUILD SYSTEM: MPICH2 shared libraries are now compatible with glibc versioned
776    symbols on Linux, such as those present in the MX shared libraries.
777
778  - BUILD SYSTEM: Minor tweaks to improve compilation under the nvcc CUDA
779    compiler.
780
781  - PM/PMI: Fix mpd incompatibility with python2.3 introduced in mpich2-1.1.1.
782
783  - PM/PMI: Several fixes to hydra, including memory leak fixes and process
784    binding issues.
785
786  - TEST SUITE: Correct invalid arguments in the coll2 and coll3 tests.
787
788  - Several other minor bug fixes, memory leak fixes, and code cleanup.  A full
789    list of changes is available using:
790
791      svn log -r5032:HEAD https://svn.mcs.anl.gov/repos/mpi/mpich2/tags/release/mpich2-1.1.1p1
792
793      ... or at the following link:
794
795      https://trac.mcs.anl.gov/projects/mpich2/log/mpich2/tags/release/mpich2-1.1.1p1?action=follow_copy&rev=HEAD&stop_rev=5032&mode=follow_copy
796
797
798 ===============================================================================
799                                Changes in 1.1.1
800 ===============================================================================
801
802  # OVERALL: Improved support for Boost MPI.
803
804  # PM/PMI: Significantly improved time taken by MPI_Init with Nemesis and MPD on
805    large numbers of processes.
806
807  # PM/PMI: Improved support for hybrid MPI-UPC program launching with
808    Hydra.
809
810  # PM/PMI: Improved support for process-core binding with Hydra.
811
812  # PM/PMI: Preliminary support for PMI-2. Currently supported only
813    with Hydra.
814
815  # Many other bug fixes, memory leak fixes and code cleanup. A full
816    list of changes is available using:
817
818   svn log -r4655:HEAD https://svn.mcs.anl.gov/repos/mpi/mpich2/tags/release/mpich2-1.1.1
819
820   ... or at the following link:
821
822   https://trac.mcs.anl.gov/projects/mpich2/log/mpich2/tags/release/mpich2-1.1.1?action=follow_copy&rev=HEAD&stop_rev=4655&mode=follow_copy
823
824
825 ===============================================================================
826                                Changes in 1.1
827 ===============================================================================
828
829 - OVERALL: Added MPI 2.1 support.
830
831 - OVERALL: Nemesis is now the default configuration channel with a
832   completely new TCP communication module.
833
834 - OVERALL: Windows support for nemesis.
835
836 - OVERALL: Added a new Myrinet MX network module for nemesis.
837
838 - OVERALL: Initial support for shared-memory aware collective
839   communication operations.  Currently MPI_Bcast, MPI_Reduce, MPI_Allreduce,
840   and MPI_Scan.
841
842 - OVERALL: Improved handling of MPI Attributes.
843
844 - OVERALL: Support for BlueGene/P through the DCMF library (thanks to
845   IBM for the patch).
846
847 - OVERALL: Experimental support for fine-grained multithreading
848
849 - OVERALL: Added dynamic processes support for Nemesis.
850
851 - OVERALL: Added automatic as well as statically runtime configurable
852   receive timeout variation for MPD (thanks to OSU for the patch).
853
854 - OVERALL: Improved performance for MPI_Allgatherv, MPI_Gatherv, and MPI_Alltoall.
855
856 - PM/PMI: Initial support for the new Hydra process management
857   framework (current support is for ssh, rsh, fork and a preliminary
858   version of slurm).
859
860 - ROMIO: Added support for MPI_Type_create_resized and
861   MPI_Type_create_indexed_block datatypes in ROMIO.
862
863 - ROMIO: Optimized Lustre ADIO driver (thanks to Weikuan Yu for
864   initial work and Sun for further improvements).
865
866 - Many other bug fixes, memory leak fixes and code cleanup. A full
867   list of changes is available using:
868
869   svn log -r813:HEAD https://svn.mcs.anl.gov/repos/mpi/mpich2/tags/release/mpich2-1.1
870
871   ... or at the following link:
872
873   https://trac.mcs.anl.gov/projects/mpich2/log/mpich2/tags/release/mpich2-1.1?action=follow_copy&rev=HEAD&stop_rev=813&mode=follow_copy
874
875
876 ===============================================================================
877                                Changes in 1.0.7
878 ===============================================================================
879
880 - OVERALL: Initial ROMIO device for BlueGene/P (the ADI device is also
881 added but is not configurable at this time).
882
883 - OVERALL: Major clean up for the propagation of user-defined and
884 other MPICH2 flags throughout the code.
885
886 - OVERALL: Support for STI Cell Broadband Engine.
887
888 - OVERALL: Added datatype free hooks to be used by devices
889 independently.
890
891 - OVERALL: Added device-specific timer support.
892
893 - OVERALL: make uninstall works cleanly now.
894
895 - ROMIO: Support to take hints from a config file
896
897 - ROMIO: more tests and bug fixes for nonblocking I/O
898
899 - PM/PMI: Added support to use PMI Clique functionality for process
900 managers that support it.
901
902 - PM/PMI: Added SLURM support to configure to make it transparent to
903 users.
904
905 - PM/PMI: SMPD Singleton Init support.
906
907 - WINDOWS: Fortran 90 support added.
908
909 - SCTP: Added MPICH_SCTP_NAGLE_ON support.
910
911 - MPE: Updated MPE logging API so that it is thread-safe (through
912 global mutex).
913
914 - MPE: Added infrastructure to piggyback argument data to MPI states.
915
916 - DOCS: Documentation creation now works correctly for VPATH builds.
917
918 - Many other bug fixes, memory leak fixes and code cleanup. A full
919 list of changes is available using:
920   svn log -r100:HEAD https://svn.mcs.anl.gov/repos/mpi/mpich2/branches/release/MPICH2_1_0_7
921
922
923 ===============================================================================
924                                Changes in 1.0.6
925 ===============================================================================
926
927 - Updates to the ch3:nemesis channel including preliminary support for
928 thread safety.
929
930 - Preliminary support for dynamic loading of ch3 channels (sock, ssm,
931 shm). See the README file for details.
932
933 - Singleton init now works with the MPD process manager.
934
935 - Fixes in MPD related to MPI-2 connect-accept.
936
937 - Improved support for MPI-2 generalized requests that allows true
938 nonblocking I/O in ROMIO.
939
940 - MPE changes:
941   * Enabled thread-safe MPI logging through global mutex.
942   * Enhanced Jumpshot to be more thread friendly
943     + added simple statistics in the Legend windows.
944   * Added backtrace support to MPE on Solaris and glibc based systems,
945     e.g. Linux.  This improves the output error message from the 
946     Collective/Datatype checking library.
947   * Fixed the CLOG2 format so it can be used in serial (non-MPI) logging.
948
949 - Performance improvements for derived datatypes (including packing
950 and communication) through in-built loop-unrolling and buffer
951 alignment.
952
953 - Performance improvements for MPI_Gather when non-power-of-two
954 processes are used, and when a non-zero ranked root is performing the
955 gather.
956
957 - MPI_Comm_create works for intercommunicators.
958
959 - Enabled -O2 and equivalent compiler optimizations for supported
960 compilers by default (including GNU, Intel, Portland, Sun, Absoft,
961 IBM).
962
963 - Many other bug fixes, memory leak fixes and code cleanup. A full
964 list of changes is available at
965 www.mcs.anl.gov/mpi/mpich2/mpich2_1_0_6changes.htm.
966
967
968 ===============================================================================
969                                Changes in 1.0.5
970 ===============================================================================
971
972 - An SCTP channel has been added to the CH3 device. This was
973   implemented by Brad Penoff and Mike Tsai, Univ. of British Columbia.
974   Their group's webpage is located at http://www.cs.ubc.ca/labs/dsg/mpi-sctp/ .
975
976 - Bugs related to dynamic processes have been fixed.
977
978 - Performance-related fixes have been added to derived datatypes and
979   collective communication.
980
981 - Updates to the Nemesis channel
982
983 - Fixes to thread safety for the ch3:sock channel
984
985 - Many other bug fixes and code cleanup.  A full list of changes is available 
986   at www.mcs.anl.gov/mpi/mpich2/mpich2_1_0_5changes.htm . 
987
988
989 ===============================================================================
990                                Changes in 1.0.4
991 ===============================================================================
992
993 - For the ch3:sock channel, the default build of MPICH2 supports
994   thread safety. A separate build is not needed as before. However, 
995   thread safety is enabled only if the user calls MPI_Init_thread with  
996   MPI_THREAD_MULTIPLE. If not, no thread locks are called, so there
997   is no penalty.
998
999 - A new low-latency channel called Nemesis has been added. It can be
1000   selected by specifying the option --with-device=ch3:nemesis.
1001   Nemesis uses shared memory for intranode communication and various
1002   networks for internode communication.  Currently available networks
1003   are TCP, GM and MX.  Nemesis is still a work in progress.  See the
1004   README for more information about the channel.
1005
1006 - Support has been added for providing message queues to debuggers.
1007   Configure with --enable-debuginfo to make this information available.
1008   This is still a "beta" test version and has not been extensively tested.
1009
1010 - For systems with firewalls, the environment variable MPICH_PORT_RANGE can
1011   be used to restrict the range of ports used by MPICH2.  See the documentation
1012   for more details.
1013
1014 - Withdrew obsolete modules, including the ib and rdma communication layers.
1015   For Infiniband and MPICH2, please see 
1016   http://nowlab.cse.ohio-state.edu/projects/mpi-iba/ 
1017   For other interconnects, please contact us at mpich2-maint@mcs.anl.gov .
1018
1019 - Numerous bug fixes and code cleanup.  A full list of changes is available 
1020   at www.mcs.anl.gov/mpi/mpich2/mpich2_1_0_4changes.htm . 
1021
1022 - Numerous new tests in the MPICH2 test suite.
1023
1024 - For developers, the way in which information is passed between the top
1025   level configure and configures in the device, process management, and
1026   related modules has been cleaned up.  See the comments at the beginning
1027   of the top-level configure.in for details.  This change makes it easier
1028   to interface other modules to MPICH2.
1029
1030
1031 ===============================================================================
1032                                Changes in 1.0.3
1033 ===============================================================================
1034
1035 - There are major changes to the ch3 device implementation.  Old and 
1036   unsupported channels (essm, rdma) have been removed.   The
1037   internal interface between ch3 and the channels has been improved to 
1038   similify the process of adding a new channel (sharing existing code
1039   where possible) and to improve performance.  Further changes in this
1040   internal interface are expected.
1041
1042 - Numerous bug fixes and code cleanup
1043
1044         Creation of intercommunicators and intracommunicators 
1045         from the intercommunicators created with Spawn and Connect/Accept
1046
1047         The computation of the alignment and padding of items within
1048         structures now handles additional cases, including systems 
1049         where the alignment an padding depends on the type of the first
1050         item in the structure
1051
1052         MPD recognizes wdir info keyword
1053
1054         gforker's mpiexec supports -env and -genv arguments for controlling
1055         which environment variables are delivered to created processes
1056
1057 - While not a bug, to aid in the use of memory trace packages, MPICH2
1058   tries to free all allocated data no later than when MPI_Finalize
1059   returns.
1060
1061 - Support for DESTDIR in install targets
1062
1063 - Enhancements to SMPD
1064
1065 - In order to support special compiler flags for users that may be
1066   different from those used to build MPICH2, the environment variables
1067   MPI_CFLAGS, MPI_FFLAGS, MPI_CXXFLAGS, and MPI_F90FLAGS may be used
1068   to specify the flags used in mpicc, mpif77, mpicxx, and mpif90 
1069   respectively.  The flags CFLAGS, FFLAGS, CXXFLAGS, and F90FLAGS are
1070   used in the building of MPICH2.
1071
1072 - Many enhancements to MPE
1073
1074 - Enhanced support for features and idiosyncracies of Fortran 77 and 
1075   Fortran 90 compilers, including gfortran, g95, and xlf
1076
1077 - Enhanced support for C++ compilers that do not fully support abstract
1078   base classes
1079
1080 - Additional tests in the mpich2/tests/mpi
1081     
1082 - New FAQ included (also available at
1083     http://www.mcs.anl.gov/mpi/mpich2/faq.htm) 
1084
1085 - Man pages for mpiexec and mpif90
1086
1087 - Enhancements for developers, including a more flexible and general 
1088   mechanism for inserting logging and information messages, controlable
1089   with --mpich-dbg-xxx command line arguments or MPICH_DBG_XXX environment
1090   variables.
1091
1092 - Note to developers: 
1093   This release contains many changes to the structure of the CH3
1094   device implementation (in src/mpid/ch3), including signficant
1095   reworking of the files (many files have been combined into fewer files
1096   representing logical grouping of functions).  The next release of 
1097   MPICH2 will contain even more significant changes to the device 
1098   structure as we introduce a new communication implementation.
1099  
1100 ===============================================================================
1101                                Changes in 1.0.2
1102 ===============================================================================
1103
1104 - Optimizations to the MPI-2 one-sided communication functions for the
1105   sshm (scalable shared memory) channel when window memory is
1106   allocated with MPI_Alloc_mem (for all three synchronization methods).
1107
1108 - Numerous bug fixes and code cleanup. 
1109
1110 - Fixed memory leaks.
1111
1112 - Fixed shared library builds.
1113
1114 - Fixed performance problems with MPI_Type_create_subarray/darray 
1115
1116 - The following changes have been made to MPE2:
1117
1118   - MPE2 now builds the MPI collective and datatype checking library
1119     by default. 
1120
1121   - SLOG-2 format has been upgraded to 2.0.6 which supports event drawables
1122     and provides count of real drawables in preview drawables.
1123
1124   - new slog2 tools, slog2filter and slog2updater, which both are logfile
1125     format convertors.  slog2filter removes undesirable categories of
1126     drawables as well as alters the slog2 file structure.  slog2updater
1127     is a slog2filter that reads in older logfile format, 2.0.5, and 
1128     writes out the latest format 2.0.6.
1129
1130 - The following changes have been made to MPD:
1131
1132   - Nearly all code has been replaced by new code that follows a more
1133     object-oriented approach than before.  This has not changed any
1134     fundamental behavior or interfaces.
1135
1136   - There is info support in spawn and spawn_multiple for providing
1137     parts of the environment for spawned processes such as search-path
1138     and current working directory.  See the Standard for the required
1139     fields.
1140
1141   - mpdcheck has been enhanced to help users debug their cluster and
1142     network configurations.
1143
1144   - CPickle has replaced marshal as the source module for dumps and loads.
1145
1146   - The mpigdb command has been replaced by mpiexec -gdb.
1147
1148   - Alternate interfaces can be used.  See the Installer's Guide.
1149  
1150
1151 ===============================================================================
1152                                Changes in 1.0.1
1153 ===============================================================================
1154
1155 - Copyright statements have been added to all code files, clearly identifying
1156   that all code in the distribution is covered by the extremely flexible
1157   copyright described in the COPYRIGHT file.
1158
1159 - The MPICH2 test suite (mpich2/test) can now be run against any MPI
1160   implementation, not just MPICH2.
1161
1162 - The send and receive socket buffers sizes may now be changed by setting
1163   MPICH_SOCKET_BUFFER_SIZE.  Note: the operating system may impose a maximum
1164   socket buffer size that prohibits MPICH2 from increasing the buffers to the
1165   desire size.  To raise the maximum allowable buffer size, please contact your
1166   system administrator.
1167
1168 - Error handling throughout the MPI routines has been improved.  The error
1169   handling in some internal routines has been simplified as well, making the
1170   routines easier to read.
1171
1172 - MPE (Jumpshot and CLOG logging) is now supported on Microsoft Windows.
1173
1174 - C applications built for Microsoft Windows may select the desired channels at
1175   runtime.
1176
1177 - A program not started with mpiexec may become an MPI program by calling
1178   MPI_Init.  It will have an MPI_COMM_WORLD of size one.  It may then call
1179   other MPI routines, including MPI_COMM_SPAWN, to become a truly parallel
1180   program.  At present, the use of MPI_COMM_SPAWN and MPI_COMM_SPAWN_MULTIPLE
1181   by such a process is only supported by the MPD process manager.
1182
1183 - Memory leaks in communicator allocation and the C++ binding have been fixed.
1184
1185 - Following GNU guidelines, the parts of the install step that checked the
1186   installation have been moved to an installcheck target.  Much of the
1187   installation now supports the DESTDIR prefix.
1188
1189 - Microsoft Visual Studio projects have been added to make it possible to build
1190   x86-64 version
1191
1192 - Problems with compilers and linkers that do not support weak symbols, which
1193   are used to support the PMPI profiling interface, have been corrected.
1194
1195 - Handling of Fortran 77 and Fortran 90 compilers has been improved, including
1196   support for g95.
1197
1198 - The Fortran stdcall interface on Microsoft Windows now supports character*.
1199
1200 - A bug in the OS X implementation of poll() caused the sock channel to hang.
1201   A workaround has been put in place.
1202
1203 - Problems with installation under OS/X are now detected and corrected.
1204   (Install breaks libraries that are more than 10 seconds old!)
1205
1206 - The following changes have been made to MPD:
1207
1208   - Sending a SIGINT to mpiexec/mpdrun, such as by typing control-C, now causes
1209     SIGINT to be sent to the processes within the job.  Previously, SIGKILL was
1210     sent to the processes, preventing applications from catching the signal 
1211     and performing their own signal processing.
1212
1213   - The process for merging output has been improved.
1214
1215   - A new option, -ifhn, has been added to the machine file, allowing the user
1216     to select the destination interface to be used for TCP communication.  See
1217     the User's Manual for details.
1218
1219   - The user may now select, via the "-s" option to mpiexec/mpdrun, which
1220     processes receive input through stdin.  stdin is immediately closed for all
1221     processes not in set receiving input.  This prevents processes not in the
1222     set from hanging should they attempt to read from stdin.
1223
1224   - The MPICH2 Installer's Guide now contains an appendix on troubleshooting
1225     problems with MPD.
1226
1227 - The following changes have been made to SMPD:
1228
1229   - On Windows machines, passwordless authentication (via SSPI) can now be used
1230     to start processes on machines within a domain.  This feature is a recent
1231     addition, and should be considered experimental.
1232
1233   - On Windows machines, the -localroot option was added to mpiexec, allowing
1234     processes on the local machines to perform GUI operations on the local
1235     desktop.
1236
1237   - On Windows machines, network drive mapping is now supported via the -map
1238     option to mpiexec.
1239
1240   - Three new GUI tools have been added for Microsoft Windows.  These tools are
1241     wrappers to the command line tools, mpiexec.exe and smpd.exe.  wmpiexec
1242     allows the user to run a job much in the way they with mpiexec.  wmpiconfig
1243     provides a means of setting various global options to the SMPD process
1244     manager environment.  wmpiregister encrypts the user's credentials and
1245     saves them to the Windows Registry.
1246
1247 - The following changes have been made to MPE2:
1248
1249   - MPE2 no longer attempt to compile or link code during 'make install' to
1250     validate the installation.  Instead, 'make installcheck' may now be used to
1251     verify that the MPE installation.
1252
1253   - MPE2 now supports DESTDIR.
1254
1255 - The sock channel now has preliminary support for MPI_THREAD_SERIALIZED and
1256   MPI_THREAD_MULTIPLE on both UNIX and Microsoft Windows.  We have performed
1257   rudimentary testing; and while overall the results were very positive, known
1258   issues do exist.  ROMIO in particular experiences hangs in several places.
1259   We plan to correct that in the next release.  As always, please report any
1260   difficulties you encounter.
1261
1262 - Another channel capable of communicating with both over sockets and shared
1263   memory has been added.  Unlike the ssm channel which waits for new data to
1264   arrive by continuously polling the system in a busy loop, the essm channel
1265   waits by blocking on an operating system event object.  This channel is
1266   experimental, and is only available for Microsoft Windows.
1267
1268 - The topology routines have been modified to allow the device to override the
1269   default implementation.  This allows the device to export knowledge of the
1270   underlying physical topology to the MPI routines (Dims_create and the
1271   reorder == true cases in Cart_create and Graph_create).  
1272
1273 - New memory allocation macros, MPIU_CHK[PL]MEM_*(), have been added to help
1274   prevent memory leaks.  See mpich2/src/include/mpir_mem.h.
1275
1276 - New error reporting macros, MPIU_ERR_*, have been added to simplify the error
1277   handling throughout the code, making the code easier to read.  See
1278   mpich2/src/include/mpir_err.h.
1279
1280 - Interprocess communication using the Sock interface (sock and ssm channels)
1281   may now be bound to a particular destination interface using the environment
1282   variable MPICH_INTERFACE_HOSTNAME.  The variable needs to be set for each
1283   process for which the destination interface is not the default interface.
1284   (Other mechanisms for destination interface selection will be provided in
1285   future releases.)  Both MPD and SMPD provide a more simplistic mechanism for
1286   specifying the interface.  See the user documentation.
1287
1288 - Too many bug fixes to describe.  Much thanks goes to the users who reported
1289   bugs.  Their patience and understanding as we attempted to recreate the
1290   problems and solve them is greatly appreciated.
1291
1292
1293 ===============================================================================
1294                                 Changes in 1.0
1295 ===============================================================================
1296
1297 - MPICH2 now works on Solaris.
1298
1299 - The User's Guide has been expanded considerably.  The Installation Guide has
1300   been expanded some as well.
1301
1302 - MPI_COMM_JOIN has been implemented; although like the other dynamic process
1303   routines, it is only supported by the Sock channel.
1304
1305 - MPI_COMM_CONNECT and MPI_COMM_ACCEPT are now allowed to connect with remote
1306   process to which they are already connected.
1307
1308 - Shared libraries can now be built (and used) on IA32 Linux with the GNU
1309   compilers (--enable-sharedlibs=gcc), and on Solaris with the native Sun
1310   Workshop compilers (--enable-sharedlibs=solaris).  They may also work on
1311   other operating systems with GCC, but that has not been tested.  Previous
1312   restrictions disallowing C++ and Fortran bindings when building shared
1313   libraries have been removed.
1314
1315 - The dataloop and datatype contents code has been improved to address
1316   alignment issues on all platforms.
1317
1318 - A bug in the datatype code, which handled zero block length cases
1319   incorrectly, has been fixed.
1320
1321 - An segmentation fault in the datatype memory management, resulting from
1322   freeing memory twice, has been fixed.
1323
1324 - The following changes were made to the MPD process manager:
1325
1326   - MPI_SPAWN_MULTIPLE now works with MPD.
1327
1328   - The arguments to the 'mpiexec' command supplied by the MPD have changed.
1329     First, the -default option has been removed.  Second, more flexible ways to
1330     pass environment variables have been added.
1331
1332   - The commands 'mpdcheck' and 'testconfig' have been to installations using
1333     MPD.  These commands test the setup of the machines on which you wish to
1334     run MPICH2 jobs.  They help to identify misconfiguration, firewall issues,
1335     and other communication problems.
1336
1337   - Support for MPI_APPNUM and MPI_UNIVERSE_SIZE has been added to the Simple
1338     implementation of PMI and the MPD process manager.
1339
1340   - In general, error detection and recovery in MPD has improved.
1341
1342 - A new process manager, gforker, is now available.  Like the forker process
1343   manager, gforker spawns processes using fork(), and thus is quite useful on
1344   SMPs machines.  However, unlike forker, gforker supports all of the features
1345   of a standard mpiexec, plus some.  Therefore, It should be used in place of
1346   the previous forker process manager, which is now deprecated.
1347
1348 - The following changes were made to ROMIO:
1349
1350   - The amount of duplicated ROMIO code in the close, resize, preallocate,
1351     read, write, asynchronous I/O, and sync routines has been substantially
1352     reduced.
1353
1354   - A bug in flattening code, triggered by nested datatypes, has been fixed.
1355
1356   - Some small memory leaks have been fixed.
1357
1358   - The error handling has been abstracted allowing different MPI
1359     implementations to handle and report error conditions in their own way.
1360     Using this abstraction, the error handling routines have been made
1361     consistent with rest of MPICH2.
1362
1363   - AIO support has been cleaned up and unified.  It now works correctly on
1364     Linux, and is properly detected on old versions of AIX.
1365
1366   - A bug in MPI_File_seek code, and underlying support code, has been fixed.
1367
1368   - Support for PVFS2 has improved.
1369
1370   - Several dead file systems have been removed.  Others, including HFS, SFS,
1371     PIOFS, and Paragon, have been deprecated.
1372
1373 - MPE and CLOG have been updated to version 2.1. For more details, please see
1374   src/mpe2/README.
1375
1376 - New macros for memory management were added to support function local
1377   allocations (alloca), to rollback pending allocations when error conditions
1378   are detected to avoid memory leaks, and to improve the conciseness of code
1379   performing memory allocations.
1380
1381 - New error handling macros were added to make internal error handling code
1382   more concise.
1383
1384 ===============================================================================
1385                                Changes in 0.971
1386 ===============================================================================
1387
1388 - Code restricted by copyrights less flexible than the one described in the
1389   COPYRIGHT file has been removed.
1390
1391 - Installation and User Guides have been added.
1392
1393 - The SMPD PMI Wire Protocol Reference Manual has been updated.
1394
1395 - To eliminate portability problems, common blocks in mpif.h that spanned
1396   multiple lines were broken up into multiple common blocks each described on a
1397   single line.
1398
1399 - A new command, mpich2version, was added to allow the user to obtain
1400   information about the MPICH2 installation.  This command is currently a
1401   simple shell script.  We anticipate that the mpich2version command will
1402   eventually provide additional information such as the patches applied and the
1403   date of the release.
1404
1405 - The following changes were made to MPD2:
1406
1407   - Support was added for MPI's "singleton init", in which a single
1408     process started in the normal way (i.e., not by mpiexec or mpirun)
1409     becomes an MPI process with an MPI_COMM_WORLD of size one by
1410     calling MPI_Init.  After this the process can call other MPI
1411     functions, including MPI_Comm_spawn.
1412
1413   - The format for some of the arguments to mpiexec have changed,
1414     especially for passing environment variables to MPI processes.
1415
1416   - In addition to miscellaneous hardening, better error checking and
1417     messages have been added.
1418
1419   - The install process has been improved.  In particular, configure
1420     has been updated to check for a working install program and supply
1421     it's own installation script (install.sh) if necessary.
1422
1423   - A new program, mpdcheck, has been added to help diagnose machine
1424     configurations that might be erroneous or at least confusing to
1425     mpd.
1426
1427   - Runtime version checking has been added to insure that the Simple
1428     implementation of PMI linked into the application and the MPD
1429     process manager being used to run that application are compatible.
1430
1431   - Minor improvements have been made to mpdboot.
1432
1433   - Support for the (now deprecated) BNR interface has been added to
1434     allow MPICH1 programs to also be run via MPD2.
1435
1436 - Shared libraries are now supported on Linux systems using the GNU compilers
1437   with the caveat that C++ support must be disabled (--disable-cxx).
1438
1439 - The CH3 interface and device now provide a mechanism for using RDMA (remote
1440   direct memory access) to transfer data between processes.
1441
1442 - Logging capabilities for MPI and internal routines have been readded.  See
1443   the documentation in doc/logging for details.
1444
1445 - A "meminit" option was added to --enable-g to force all bytes associated with
1446   a structure or union to be initialized prior to use.  This prevents programs
1447   like Valgrind from complaining about uninitialized accesses.
1448
1449 - The dist-with-version and snap targets in the top-level Makefile.sm now
1450   properly produce mpich2-<ver>/maint/Version instead of mpich2-<ver>/Version.
1451   In addition, they now properly update the VERSION variable in Makefile.sm
1452   without clobbering the sed line that performs the update.
1453
1454 - The dist and snap targets in the top-level Makefile.sm now both use the
1455   dist-with-version target to avoid inconsistencies.
1456
1457 - The following changes were made to simplemake:
1458
1459   - The environment variables DEBUG, DEBUG_DIRS, and DEBUG_CONFDIR can now be
1460     used to control debugging output.
1461
1462   - Many fixes were made to make simplemake so that it would run cleanly with
1463     perl -w.
1464
1465   - Installation of *all* files from a directory is now possible (example,
1466     installing all of the man pages).
1467
1468   - The clean targets now remove the cache files produced by newer versions of
1469     autoconf.
1470
1471   - For files that are created by configure, the determination of the
1472     location of that configure has been improved, so that make of those
1473     files (e.g., make Makefile) is more likely to work.  There is still 
1474     more to do here.
1475
1476   - Short loops over subdirectories are now unrolled.
1477
1478   - The maintainerclean target has been renamed to maintainer-clean to match
1479     GNU guidelines.
1480
1481   - The distclean and maintainer-clean targets have been improved.
1482
1483   - An option was added to perform one ar command per directory instead of one
1484     per file when creating the profiling version of routines (needed only for
1485     systems that do not support weak symbols).
1486
1487
1488 ===============================================================================
1489                                 Changes in 0.97
1490 ===============================================================================
1491
1492 - MPI-2 one-sided communication has been implemented in the CH3 device.
1493
1494 - mpigdb works as a simple parallel debugger for MPI programs started
1495   with mpd.  New since MPICH1 is the ability to attach to running
1496   parallel programs.  See the README in mpich2/src/pm/mpd for details.
1497
1498 - MPI_Type_create_darray() and MPI_Type_create_subarray() implemented including
1499   the right contents and envelope data.
1500
1501 - ROMIO flattening code now supports subarray and darray combiners.
1502
1503 - Improve scalability and performance of some ROMIO PVFS and PVFS2 routines 
1504
1505 - An error message string parameter was added to MPID_Abort().  If the
1506   parameter is non-NULL this string will be used as the message with the abort
1507   output.  Otherwise, the output message will be base on the error message
1508   associated with the mpi_errno parameter.
1509
1510 - MPID_Segment_init() now takes an additional boolean parameter that specifies
1511   if the segment processing code is to produce/consume homogeneous (FALSE) or
1512   heterogeneous (TRUE) data.
1513
1514 - The definitions of MPID_VCR and MPID_VCRT are now defined by the device.
1515
1516 - The semantics of MPID_Progress_{Start,Wait,End}() have changed.  A typical
1517   blocking progress loop now looks like the following.
1518
1519   if (req->cc != 0)
1520   {
1521       MPID_Progress_state progress_state;
1522
1523       MPID_Progress_start(&progress_state);
1524       while (req->cc != 0)
1525       {
1526           mpi_errno = MPID_Progress_wait(&progress_state);
1527           if (mpi_errno != MPI_SUCCESS)
1528           {
1529               /* --BEGIN ERROR HANDLING-- */
1530               MPID_Progress_end(&progress_state);
1531               goto fn_fail;
1532               /* --END ERROR HANDLING-- */
1533           }
1534       }
1535       MPID_Progress_end(&progress_state);
1536   }
1537
1538   NOTE: each of these routines now takes a single parameter, a pointer to a
1539   thread local state variable.
1540
1541 - The CH3 device and interface have been modified to better support
1542   MPI_COMM_{SPAWN,SPAWN_MULTIPLE,CONNECT,ACCEPT,DISCONNECT}.  Channels
1543   writers will notice the following.  (This is still a work in progress.  See
1544   the note below.)
1545
1546   - The introduction of a process group object (MPIDI_PG_t) and a new
1547     set of routines to manipulate that object.
1548
1549   - The renaming of the MPIDI_VC object to MPIDI_VC_t to make it more
1550     consistent with the naming of other objects in the device.
1551
1552   - The process group information in the MPIDI_VC_t moved from the channel
1553     specific portion to the device layer.
1554
1555   - MPIDI_CH3_Connection_terminate() was added to the CH3 interface to allow
1556     the channel to properly shutdown a connection before the device deletes all
1557     associated data structures.
1558
1559   - A new upcall routine, MPIDI_CH3_Handle_connection(), was added to allow the
1560     device to notify the device when a connection related event has completed.
1561     A present the only event is MPIDI_CH3_VC_EVENT_TERMINATED, which notify the
1562     device that the underlying connection associated with a VC has been
1563     properly shutdown.  For every call to MPIDI_CH3_Connection_terminate() that
1564     the device makes, the channel must make a corresponding upcall to
1565     MPIDI_CH3_Handle_connection().  MPID_Finalize() will likely hang if this
1566     rule is not followed.
1567
1568   - MPIDI_CH3_Get_parent_port() was added to provide MPID_Init() with the port
1569     name of the the parent (spawner).  This port name is used by MPID_Init()
1570     and MPID_Comm_connect() to create an intercommunicator between the parent
1571     (spawner) and child (spawnee).  Eventually, MPID_Comm_spawn_multiple() will
1572     be update to perform the reverse logic; however, the logic is presently
1573     still in the sock channel.
1574
1575   Note: the changes noted are relatively fresh and are the beginning to a set
1576   of future changes.  The goal is to minimize the amount of code required by a
1577   channel to support MPI dynamic process functionality.  As such, portions of
1578   the device will change dramatically in a future release.  A few more changes
1579   to the CH3 interface are also quite likely.
1580
1581 - MPIDI_CH3_{iRead,iWrite}() have been removed from the CH3 interface.
1582   MPIDI_CH3U_Handle_recv_pkt() now returns a receive request with a populated
1583   iovec to receive data associated with the request.
1584   MPIDU_CH3U_Handle_{recv,send}_req() reload the iovec in the request and
1585   return and set the complete argument to TRUE if more data is to read or
1586   written.  If data transfer for the request is complete, the complete argument
1587   must be set to FALSE.
1588
1589
1590 =============================================================================== 
1591                                Changes in 0.96p2
1592 ===============================================================================
1593
1594 The shm and ssm channels have been added back into the distribution.
1595 Officially, these channels are supported only on x86 platforms using the gcc
1596 compiler.  The necessary assembly instructions to guarantee proper ordering of
1597 memory operations are lacking for other platforms and compilers.  That said, we
1598 have seen a high success rate when testing these channels on unsupported
1599 systems.
1600
1601 This patch release also includes a new unsupported channel.  The scalable
1602 shared memory, or sshm, channel is similar to the shm channel except that it
1603 allocates shared memory communication queues only when necessary instead of
1604 preallocating N-squared queues.
1605
1606
1607 ===============================================================================
1608                                Changes in 0.96p1
1609 ===============================================================================
1610
1611 This patch release fixes a problem with building MPICH2 on Microsoft Windows
1612 platforms.  It also corrects a serious bug in the poll implementation of the
1613 Sock interface.
1614
1615
1616 ===============================================================================
1617                                 Changes in 0.96
1618 ===============================================================================
1619
1620 The 0.96 distribution is largely a bug fix release.  In addition to the many
1621 bug fixes, major improvements have been made to the code that supports the
1622 dynamic process management routines (MPI_Comm_{connect,accept,spawn,...}()).
1623 Additional changes are still required to support MPI_Comm_disconnect().
1624
1625 We also added an experimental (and thus completely unsupported) rdma device.
1626 The internal interface is similar to the CH3 interface except that it contains
1627 a couple of extra routines to inform the device about data transfers using the
1628 rendezvous protocol.  The channel can use this extra information to pin memory
1629 and perform a zero-copy transfer.  If all goes well, the results will be rolled
1630 back into the CH3 device.
1631
1632 Due to last minute difficulties, this release does not contain the shm or ssm
1633 channels.  These channels will be included in a subsequent patch release.
1634
1635
1636 ===============================================================================
1637                                 Changes in 0.94
1638 ===============================================================================
1639
1640 Active target one-sided communication is now available for the ch3:sock
1641 channel.  This new functionality has undergone some correctness testing but has
1642 not been optimized in terms of performance.  Future release will include
1643 performance enhancements, passive target communication, and availability in
1644 channels other than just ch3:sock.
1645
1646 The shared memory channel (ch3:shm), which performs communication using shared
1647 memory on a single machine, is now complete and has been extensively tested.
1648 At present, this channel only supports IA32 based machines (excluding the
1649 Pentium Pro which has a memory ordering bug).  In addition, this channel must
1650 be compiled with gcc.  Future releases with support additional architectures
1651 and compilers.
1652
1653 A new channel has been added that performs inter-node communication using
1654 sockets (TCP/IP) and intra-node communication using shared memory.  This
1655 channel, ch3:ssm, is ideal for clusters of SMPs.  Like the shared memory
1656 channel (ch3:shm), this channel only supports IA32 based machines and must be
1657 compiled with gcc.  In future releases, the ch3:ssm channel will support
1658 additional architectures and compilers.
1659
1660 The two channels that perform commutation using shared memory, ch3:shm and
1661 ch3:ssm, now support the allocation of shared memory using both the POSIX and
1662 System V interfaces.  The POSIX interface will be used if available; otherwise,
1663 the System V interface is used.
1664
1665 In the interest of increasing portability, many enhancements have been made to
1666 both the code and the configure scripts.
1667
1668 And, as always, many bugs have been fixed :-).
1669
1670
1671 ***** INTERFACE CHANGES ****
1672
1673 The parameters to MPID_Abort() have changed.  MPID_Abort() now takes a pointer
1674 to communicator object, an MPI error code, and an exit code.
1675
1676 MPIDI_CH3_Progress() has been split into two functions:
1677  MPIDI_CH3_Progress_wait() and MPIDI_CH3_Progress_test().
1678
1679
1680 ===============================================================================
1681                                 Changes in 0.93
1682 ===============================================================================
1683
1684 Version 0.93 has undergone extensive changes to provide better error reporting.
1685 Part of these changes involved modifications to the ADI3 and CH3 interfaces.
1686 The following routines now return MPI error codes:
1687
1688 MPID_Cancel_send()
1689 MPID_Cancel_recv()
1690 MPID_Progress_poke()
1691 MPID_Progress_test()
1692 MPID_Progress_wait()
1693 MPIDI_CH3_Cancel_send()
1694 MPIDI_CH3_Progress()
1695 MPIDI_CH3_Progress_poke()
1696 MPIDI_CH3_iRead()
1697 MPIDI_CH3_iSend()
1698 MPIDI_CH3_iSendv()
1699 MPIDI_CH3_iStartmsg()
1700 MPIDI_CH3_iStartmsgv()
1701 MPIDI_CH3_iWrite()
1702 MPIDI_CH3U_Handle_recv_pkt()
1703 MPIDI_CH3U_Handle_recv_req()
1704 MPIDI_CH3U_Handle_send_req()
1705
1706 *******************************************************************************
1707 Of special note are MPID_Progress_test(), MPID_Progress_wait() and
1708 MPIDI_CH3_Progress() which previously returned an integer value indicating if
1709 one or more requests had completed.  They no longer return this value and
1710 instead return an MPI error code (also an integer).  The implication being that
1711 while the semantics changed, the type signatures did not.
1712 *******************************************************************************
1713
1714 The function used to create error codes, MPIR_Err_create_code(), has also
1715 changed.  It now takes additional parameters, allowing it create a stack of
1716 errors and making it possible for the reporting function to indicate in which
1717 function and on which line the error occurred.  It also allows an error to be
1718 designated as fatal or recoverable.  Fatal errors always result in program
1719 termination regardless of the error handler installed by the application.
1720
1721 A RDMA channel has been added and includes communication methods for shared
1722 memory and shmem.  This is recent development and the RDMA interface is still
1723 in flux.