MCT

Versions and Release Dates

10/18/00: Initial prototype
02/09/01: working MxN transfer
04/27/01: parallel SparseMatrix multiply
03/29/02: Rearranger for transposes
11/14/02: Version 1.0.0 released.
04/23/04: Version 2.0.0 released.
05/24/04: Version 2.0.1 released.
07/11/04: Version 2.0.2 released.
02/11/05: Version 2.1.0 released. (Also part of CCSM3)
12/01/05: Version 2.2.0 released.
09/08/06: Version 2.2.2 released.
10/16/06: Version 2.2.3 released.
01/10/07: Version 2.3.0 released.
08/24/07: Version 2.4.0 released.
11/21/07: Version 2.4.1 released.
01/28/08: Version 2.5.0 released.
05/22/08: Version 2.5.1 released.
04/30/09: Version 2.6.0 released.
01/06/10: Version 2.7.0 released only in CCSM4)
02/28/10: Version 2.7.1 released only in CESM1
11/30/10: Version 2.7.2 released only in CESM1.0.3 (June, 2011).
04/30/12: Version 2.8.0 released
09/12/12: Version 2.8.2 released only in CESM1.1 (Nov 27, 2012)
12/17/12: Version 2.8.3 released
06/19/15: Version 2.9.0 released
04/19/18: Version 2.10.0 released (also in E3SM1 and CESM2)
02/11/21: Version 2.11.0 released (also in E3SM1 and CESM2)

Return to MCT home page

Detailed Change Log for MCT from version 1.0.0

NOTE: All versions between 1.0.0 and 2.0.0 were internal versions. Some of those were made available (exported) to MCT early users at NCAR
and elsewhere but only 1.0.0 and 2.0.0+ were released publicly.

Only changes to core mct and mpeu code are listed. Changes to documentation and examples are omitted.
Date Version Change
11/26/02 1.0.1 Fix NAG compile; clean up gather/scatter in m_AttrVectComms
1/08/03 1.0.2 Change IBM compile to promote to real8; workaround SGI compiler bug
1/17/03 1.0.3 Add Compaq compile with some workarounds for compiler.
2/11/03 1.0.4 Add Fujitsu compile; fix memory leak in m_List, m_SparseMatrixDecomp
3/12/03 1.0.5 Add ia64/ifc compile; add functions to m_List; speed up avCopy
3/19/03 1.0.6 Fix memory leak in m_GeneralGridComms
4/2/03 1.0.7 Change IBM compile optimiation from -O3 to -O2
4/16/03 1.0.8 Add Darwin compile; Some changes for NEC compile
7/3/03 1.0.9 fix sorting in m_SparseMatrixComms
7/21/03 1.0.10 Add Cray X1 compile; Add append routines to m_AttrVect; workaround compiler issues in X1, IBM 8.1.1
7/24/03 1.0.11 Refactor Router datatype; add support for non-blocking MxN transfer; remove m_NBSend
8/26/03 1.0.12 Add new autoconf-based build system; add methods to m_AttrVect, m_AttrVectReduce, m_MatAttrVectMul;
Add new m_GlobalSegMapComms module. remove m_NBSend
9/5/03 1.0.13 change flags for OSF1 build; fix ia64 compile in new build system
9/12/03 1.0.14 Add Earth Simulator Makefile's
9/17/03 1.0.15 Add sanity checking to m_MCTWorld; Have m_Transfer return immediately if no work to do
10/30/03 1.0.16 Add mods for vector computers
11/4/03 1.0.17 Modify Earth Simulator build
11/4/03 1.2.0 Same as 1.0.17; change version numbering scheme
1/21/04 1.4.0 Add explicit real and double precision interfaces for all routines requiring a real argument
2/5/04 1.6.0 Explitictly type all reals in MCT/mct; remove autopromotion from build system
2/19/04 1.8.0 Begin removing old build system
2/20/04 1.8.1 Modify build for Earth Simulator
2/23/04 1.8.2 Mods to continue co-existence of old and new build systems
2/25/04 1.8.3 Fix Earth Simulator build
2/27/04 1.8.4 More fixes for ES build; Add compile flags for X1
3/15/04 1.9.0 Add Altix compile; bug fixes to m_GlobalSegMapCooms, m_SparseMatrixComms;
Clarify use of vector mods in m_SparseMatrix; more options to set precision in m_realkinds
4/19/04 1.9.1 workaround bug in pgf90; Make sure m_realkinds is "use only"
4/21/04 1.9.3 remove old build system
4/22/04 1.9.5 Make sure all messages identify themselves as "MCT" or "MCT(MPEU)"
4/23/04 2.0.0 small bugfix to a command line option in configure
5/24/04 2.0.1 Bug Fix: remove two small memory leaks in AttrVect:sort and GlobalSegMap:Permute;
Bug Fix: fix handling of vector flag in SparseMatrixComms:bcast_;
Make sure clean_ methods won't die if called on uninitialized objects.
7/11/04 2.0.2 Bug Fix: remove small memory leaks in Accumulator:initv, AttrVect:ExportR/IListToChar,
AttrVectReduce:LocalReduceRattr, List:bcast_
Bug Fix: Fix dual precision in SparseMatrix:row_sum
Add F90SUFFIX option to configure
10/19/04 2.0.3
(not released)
Bug Fix: Fix build bug on Lemieux
02/11/05 2.1.0 Add support for multi-language interface with Babel. Modify build to optionally build Babel interface.
Add build option to add "sequence" keyword to all MCT datatypes.
Add new perrwith="quiet" option to m_attrVect:index routines.
Add new example: climate_sequen1. This shows a sequentially coupled model
with init/run/finalize mehods and which uses MCT for coupling.
Add Cray compiler directives (thanks to Matthew Cordery).
12/11/05 2.2.0 New mpi-serial library for using MCT without MPI.
Add support for Pathscale compiler.
Confirmed support for Lahey compiler.
Add new GlobalSegmentMap::init_index function to initialize a GSMap from a list of local points.
Add new AttributeVector::Unpermute function.
Bug fix (22): AttributeVectorComms::gather now works for masked GSMap Av's
Bug fix (24): Merge::MergeInData fix use statement.
Also fixed bug numbers (from bugzilla): 17,18,19,23,25
Clarify Router/Rearranger documentation wrt GSMap point order.
Remove unused mpeu/mpi0 directory.
04/22/06 2.2.1
(not released)
Add alltoall functions to mpi-serial
Cray Support: Use ishell in FileResolv
Cray Support: Support cross compiling
Cray Support: Report vectorization during build
New GlobalSegMapToIndexArr_ transforms an array of points
Used to speed up GlobalSegMapToLocalMatrix on Cray.
Rearranger can optionally use MPI_ALLTOALL (Thanks to Pat Worley).
09/08/06 2.2.2 Add 4 new Av::Copy routines to copy just reals or just integers
Cray Support: Rewrite Router::init to be vectorizable
Cray Support: Add compiler directives
Cray Support: lower Cray optimization
Bug fix (26): get_zeits.c now posix compliant
Also fixed bug numbers (from bugzilla): 27,28,29
10/16/06 2.2.3 Mostly a bug-fix release.
Fix bug seen on XT3 involving Sum argument to Rearranger. Also check value of Sum argument.
Add support for XT3's compiler and g95 compilers.
Add MPI_SUCESS to mpi-serial's mpif.h files.
Bugzilla bugs fixed: 31,32,36,37,38,39,42
01/10/07 2.3.0 New feature: Can now specify which attributes to multiply in calls to MatAttrVectMul
Substantially reduce memory needed in Router init and Rearranger init.
Fix bug in GSMap::init_index to allow procs with no points
m_mpout now works as documented
Bugzilla bugs fixed: 33,45-49,52,53
08/24/07 2.4.0 New features: Specify initial value of Av gather
New GSMap functions: copy, max local segments, increasing logical
New MCTWorld function: initialized logical
Router and Rearranger: print Router info, check if GSMaps are increasing
SparseMatrixPlus: return Strategy as a character string for printing.
Improvements: Another reduction in memory needed in Router init and Rearranger init.
lsize no longer required in export routines
mpi-serial now supports mpi_pack,mpi_unpack, mpi_allgatherv, mpi_get_processor_name, MPI_Aint,
also MPI_PACKED, MPI_MAX_PROCESSOR_NAME, MPI_OP_NULL, MPI_BOTTOM, MPI_User_function.
Bug fixes: Specifying a list of attributes in MatVecMul now works correctly (bug #74).
SparseMatrixToMaps correctly handles cases with one segment (bug #70)
Bugzilla bugs fixed: 35,54,57,58,64,67-75
11/21/07 2.4.1 New features: many more MPI features supported in mpi-serial: MPI_Group, f2c, c2f, MPI_ERR_, etc.
Bug fixes:Workaround for MIPSpro compiler bug in new m_SparseMatrixPlus::exportStrategyToChar
Workaround for runtime bug in varous listToChar functions when called on unallocated list
Bugzilla bugs fixed: 77-82
12/20/07 2.4.2
(not released)
New features: New init method in MCTWorld supports case where 2 or models are on a group of processors but don't
cover them completely.
Add MPI_Scan and MPI_Scatter to mpi-serial
01/21/08 2.4.3
(not released)
New features: New methods in Accumulator
inits_: initialize a simple Accumulator which only sums
initavs_: initialize a simple Accumulator from an Av
average_: force an average in an accumulator
Bugzilla bugs fixed: 59
01/28/08 2.5.0
New features: Handle unordered GSMaps in Transfer and Rearranger.
First public release of 2.4.2 and 2.4.3 changes
Bug Fixes: Fix error messages in GlobalSegMap::initd_
Bugzilla bugs fixed: 34,86,87,89,90
05/22/08 2.5.1
New features: GeneralGrid_zero function.
Many bug fixes:
Bug 88: Rearrange can now handle grids that are both unordered and masked.
Bug 83: Accumulator now initialized to sum as documented.
Bug 91,51: Fixed some array references/counts in MPI calls for AttrVectComms.
Bug 96: speed up gather and scatter in AttrVectComms.
Bug 98: All internally created Attribute Vectors are now zeroed before use.
Other bugs: 92,93,94,95,99
04/30/09 2.6.0
New features: Flow-controlled gather's for large processor counts provided by Pat Worley.
See m_FcComm.F90 in mpeu. Implemented in m_AttrVectComms and GlobalSegMap::init.
Support for building on MacOSX with gfortran.
Add more MPI types (MPI_INTEGER16) to mpi-serial.
Bug 100: plug memory leak in AttributeVector::initv
Other bugs: 101,102
01/06/10 2.7.0
New features: Add OpenMP directives to m_AttrVect.F90(export, import and copy)
and to m_Rearranger.F90 (rearrange)
Change AttrVect::zero so operation on unitilized av is not a fatal error.
NOTE: Not released separately but included in release of CCSM4 (rel1-rel8).
02/28/10 2.7.1
Small "paranoid" change in m_FcComms.F90 to initialize a variable that's never used.
NOTE: Not released separately but included in release of CESM1 (rel1-rel5) climate models.
11/30/10 2.7.2
New features: Changes to mpi-serial: Add mpi_op_create, MPI_DATATYPE_NULL, MPI_Irsend, MPI_Sendrecv,
MPI_PROC_NULL and MPI_ROOT. Also make some small changes to f90-style declerations in mpif.master.h
NOTE: Not released separately but included in release of CESM1 (rel6-) climate models.
01/25/11 2.7.3
(not released)
New features: ./configure now supports a --enable-debugging option.
Change some comments in m_FcComms.F90
03/07/12 2.7.4
(not released)
New features: Update build system to support newer versions of autoconf (2.60+)
Requires modifications to most Makefiles.
Add new "benchmarks" directory containing code to do extensive timings of various MCT routines.
04/30/12 2.8.0
New features: New datatype SharedIndicies in AttrVect module will store shared indicies to speed up repeated calls to Av::Copy. Provided by Bill Sacks, NCAR.
Add -O2 to default build for gfortran
Add workaround for rsend performance issues on gemini interconnect in m_FcComms. Provided by Jim Edwards, NCAR.
07/06/12 2.8.1
(not released)
Bug 109: Fix build for gfortran on MacOS
Convert source code control from CVS to git.
09/12/12 2.8.2
Fix slow performance of Router init on large processor counts and grids. Fix provide by T. Craig.
NOTE: Not released separately but included in release of CESM1.1.
12/17/12 2.8.3
Fix build for NAG fortran compiler (Bugs 113,119,121)
Includes removing old syntax from m_flow.F90 and commenting out abort call in m_dropdead.F90
Also change compiler flags.
06/19/15 2.9.0
mpi-serial 2.0: many more MPI datatypes/functions add; New build.
Support for NAG 6.0 and Mac builds and some bug fixes all from Sean Santos (NCAR)
New functions to print contents of GSMap and MCTworld
New isort8n funtion in MPEU for 8-byte integers from Steve Goldhaber (NCAR)
Optional internal timers in Router init
04/19/18 2.10.0
Performance improvements at scale (from Pat Worley):
Reduce complexity of GSMap:active_pes, used in cpl7 init.
Use swapm variant of MPI_AlltoAllV in rearrange_ calls in sMatAvMult_SMPlus_. Fix params of swampw to give reasonable performance.
Add 2 more-scalable version of peLocs_ algorithm. Use one with potentially more memory.
Speed up the Router::initp_ algorithm.

other: set arrays in new Avs to zero, don't use MPI_RSEND to get around bad implemenations.
Update threading and vectorization of MatVecMull. Make sure bufs are allocated in rearrange_.

Add more functions to mpi-serial: MPI_Errhandler_set, MPI_Intercomm_merge, mpi_type_create_hvector, MPI_Get_Version subroutine
Move mpi-serial to a git subtree

02/11/21 2.11.0
MCTWorld: impi performance fix
Router/Rearranger: Fix MPI_Alltoallv collective calls with local comm
Update configure to autoconf 2.70 in mct and mpi-serial
Allow gnu10 and ifx configure/build
mpi-serial: add mpi_init_thread

Other:
Change Algorithm for calculating sparsity
Fix system test
Update README in mct and mpi-serial
rename "COPYRIGHT" to "LICENSE"