Feature #1298: Build MetisLB and GridMetisLB by default
[charm.git] / CHANGES
blob9df2b1a7f55a3672b06e6cac2064aa9d3c5aed42
1 This file describes the most significant changes. For more detail, use
2 'git log' on a clone of the charm repository.
4 ================================================================================
5 What's new in Charm++ 6.8.0
6 ================================================================================
8 Over 400 bug fixes, improvements, and cleanups have been applied
9 across the entire system. Major changes are described below:
11 Charm++ Features
13 - Calls to entry methods taking a single fixed-size parameter can now
14   automatically be aggregated and routed through the TRAM library by
15   marking them with the [aggregate] attribute.
17 - The runtime system now integrates an OpenMP runtime library so that
18   code using OpenMP parallelism will dispatch work to idle worker
19   threads within the Charm++ process.
21 - Applications can ask the runtime system to perform automatic
22   high-level end-of-run performance analysis by linking with the
23   `-tracemode perfReport' option.
25 - Charm++ programs can now define their own main() function, rather
26   than using a generated implementation from a mainmodule/mainchare
27   combination. This extends the existing Charm++/MPI interoperation
28   feature.
30 - GPU manager now creates one instance per OS process and scales the
31   pre-allocated memory pool size according to the GPU memory size and
32   number of GPU manager instances on a physical node.
34 - Several GPU Manager API changes including:
36   * Replaced references to global variables in the GPU manager API with calls to
37   functions.
39   * The user is no longer required to specify a bufferID in dataInfo struct.
41   * Replaced calls to kernelSelect with direct invocation of functions passed
42   via the work request object (allows CUDA to be built with all programs).
44 - Added support for malleable jobs that can dynamically shrink and
45   expand the set of compute nodes hosting Charm++ processes.
47 - Greatly expanded and improved reduction operations:
49   * Added built-in reductions for all logical and bitwise operations
50   on integer and boolean input.
52   * Reductions over groups and chare arrays that apply commutative,
53   associative operations (e.g. MIN, MAX, SUM, AND, OR, XOR) are now
54   processed in a streaming fashion. This reduces the memory footprint of
55   reductions. User-defined reductions can opt into this mode as well.
57   * Added a new `Tuple' reducer that allows combining multiple reductions
58   of different input data and operations from a common set of source
59   objects to a single target callback.
61   * Added a new `Summary Statistics' reducer that provides count, mean,
62   and standard deviation using a numerically-stable streaming algorithm.
64 - Added a `++quiet' option to suppress charmrun and charm++ non-error
65   messages at startup.
67 - Calls to chare array element entry methods with the [inline] tag now
68   avoid copying their arguments when the called method takes its 
69   parameters by const&, offering a substantial reduction in overhead in
70   those cases.
72 - Synchronous entry methods that block until completion (marked with
73   the [sync] attribute) can now return any type that defines a PUP
74   method, rather than only message types.
76 - Static (non-generated) header files are now warning-free for
77   gcc -Wall -Wextra -pedantic.
79 - Deprecated setReductionClient and CkSetReductionClient in favor of
80   explicitly passing callbacks to contribute calls.
82 AMPI Features
84 - More efficient implementations of message matching infrastructure, multiple
85   completion routines, and all varieties of reductions and gathers.
87 - Support for user-defined non-commutative reductions, MPI_IN_PLACE, cancelling
88   receive requests, MPI_THREAD_FUNNELED, PSCW synchronization for RMA, and more.
90 - Fixes to AMPI's extensions for load balancing and to Isomalloc on SMP builds.
92 - More robust derived datatype support, optimizations for truly contiguous types.
94 - ROMIO is now built on AMPI and linked in by ampicc by default.
96 Platforms and Portability
98 - The runtime system code now requires compiler support for C++11
99   R-value references and move constructors. This is not expected to be
100   incompatible with any currently supported compilers.
102 - The next feature release (anticipated to be 6.9.0 or 7.0) will require
103   full C++11 support from the compiler and standard library.
105 - Added support for IBM POWER8 systems with the PAMI communication API,
106   such as development/test platforms for the upcoming Sierra and Summit
107   supercomputers at LLNL and ORNL. Contributed by Sameer Kumar of IBM.
109 - Mac OS (darwin) builds now default to the modern libc++ standard
110   library instead of the older libstdc++.
112 - Blue Gene/Q build targets have been added for the `bgclang' compiler.
114 - Charm++ can now be built on Cray's CCE 8.5.4+.
116 - Charmrun can automatically detect rank and node count from
117   Slurm/srun environment variables.
119 - Many obsolete architecture, network, and compiler support files have
120   been removed. These include:
121   * IBM Blue Gene/P
122   * Sony/Toshiba/IBM Cell (including PlayStation 3)
123   * Cray XT
124   * Intel IA-64 (Itanium)
125   * Intel x86-32 for Windows, Mac OS X (darwin), and Solaris
126   * Cygwin for Windows
127   * Older IBM AIX/POWER configurations
128   * GCC 3 and KAI compilers
130 ================================================================================
131 What's new in Charm++ 6.7.1
132 ================================================================================
134 Changes in this release are primarily bug fixes for 6.7.0. The major exception
135 is AMPI, which has seen changes to its extension APIs and now complies with more
136 of the MPI standard. A brief list of changes follows:
138 Charm++ Bug Fixes
140 - Startup and exit sequences are more robust
142 - Error and warning messages are generally more informative
144 - CkMulticast's set and concat reducers work correctly
146 AMPI Features
148 - AMPI's extensions have been renamed to use the prefix AMPI_ instead of MPI_
149   and to generally follow MPI's naming conventions
151 - AMPI_Migrate(MPI_Info) is now used for dynamic load balancing and all fault
152   tolerance schemes (see the AMPI manual)
154 - AMPI officially supports MPI-2.2, and also implements the non-blocking
155   collectives and neighborhood collectives from MPI-3.1
157 Platforms and Portability
159 - Cray regularpages build target has been fixed
161 - Clang compiler target for BlueGene/Q systems added
163 - Comm. thread tracing for SMP mode added
165 - AMPI's compiler wrappers are easier to use with autoconf and cmake
167 ================================================================================
168 What's new in Charm++ 6.7.0
169 ================================================================================
171 Over 120 bugs fixed, spanning areas across the entire system
173 Charm++ Features
175 - New API for efficient formula-based distributed spare array creation
177 - CkLoop is now built by default
179 - CBase_Foo::pup need not be called from Foo::pup in user code anymore - runtime
180   code handles this automatically
182 - Error reporting and recovery in .ci files is greatly improved, providing more
183   precise line numbers and often column information
185 - Many data races occurring under shared-memory builds (smp, multicore) were
186   fixed, facilitating use of tools like ThreadSanitizer and Helgrind
188 AMPI Enhancements
190 - Further MPI standard compliance in AMPI allows users to build and run
191   Hypre-2.10.1 on AMPI with virtualization, migration, etc.
193 - Improved AMPI Fortran2003 PUP interface 'apup', similiar to C++'s STL PUP
195 Platforms and Portability
197 - Compiling Charm++ now requires support for C++11 variadic templates. In GCC,
198   this became available with version 4.3, released in 2008
200 - New machine target for multicore Linux ARM7: multicore-linux-arm7
202 - Preliminary support for POWER8 processors, in preparation for the upcoming
203   Summit and Sierra supercomputers
205 - The charmrun process launcher is now much more robust in the face of slow
206   or rate-limited connections to compute nodes
208 - PXSHM now auto-detects the node size, so the '+nodesize' is no longer needed
210 - Out-of-tree builds are now supported
212 Deprecations
214 - CommLib has been removed.
216 - CmiBool has been dropped in favor of C++'s bool
219 ================================================================================
220 What's new in Charm++ 6.6.1
221 ================================================================================
223 Changes in this release are primarily bug fixes for 6.6.0. A concise list of
224 affected components follows:
226 - CkIO
228 - Reductions with syncFT
230 - mpicxx based MPI builds
232 - Increased support for macros in CI file
234 - GNI + RDMA related communication
236 - MPI_STATUSES_IGNORE support for AMPIF
238 - Restart on different node count with chkpt
240 - Immediate msgs on multicore builds
242 ================================================================================
243 What's new in Charm++ 6.6.0
244 ================================================================================
246 - Machine target files for Cray XC systems ('gni-crayxc') have been added
248 - Interoperability with MPI code using native communication interfaces on Blue
249   Gene Q (PAMI) and Cray XE/XK/XC (uGNI) systems, in addition to the universal
250   MPI communication interface
252 - Support for partitioned jobs on all machine types, including TCP/IP and IB
253   Verbs networks using 'netlrts' and 'verbs' machine layers
255 - A substantially improved version of our asynchronous library, CkIO, for
256   parallel output of large files
258 - Narrowing the circumstances in which the runtime system will send
259   overhead-inducing ReductionStarting messages
261 - A new fully distributed load balancing strategy, DistributedLB, that produces
262   high quality results with very low latency
264 - An API for applications to feed custom per-object data to specialized load
265   balancing strategies (e.g. physical simulation coordinates)
267 - SMP builds on LRTS-based machine layers (pamilrts, gni, mpi, netlrts, verbs)
268   support tracing messages through communication threads
270 - Thread affinity mapping with +pemap now supports Intel's Hyperthreading more
271   conveniently
273 - After restarting from a checkpoint, thread affinity will use new
274   +pemap/+commap arguments
276 - Queue order randomization options were added to assist in debugging race
277   conditions in application and runtime code
279 - The full runtime code and associated libraries can now compile under the C11
280   and C++11/14 standards.
282 - Numerous bug fixes, performance enhancements, and smaller improvements in the
283   provided runtime facilities
285 - Deprecations
286   * The long-unsupported FEM library has been deprecated in favor of ParFUM
287   * The CmiBool typedefs have been deleted, as C++ bool has long been universal
288   * Future versions of the runtime system and libraries will require some degree
289     of support for C++11 features from compilers
291 ================================================================================
292 What's new in Charm++ 6.5.0
293 ================================================================================
295 - The Charm++ manual has been thoroughly revised to improve its organization,
296   comprehensiveness, and clarity, with many additional example code snippets
297   throughout.
299 - The runtime system now includes the 'Metabalancer', which can provide
300   substantial performance improvements for applications that exhibit dynamic
301   load imbalance. It provides two primary benefits. First, it automatically
302   optimizes the frequency of load balancer invocation, to avoid work stoppage
303   when it will provide too little benefit. Second, calls to AtSync() are made
304   less synchronous, to further reduce overhead when the load balancer doesn't
305   need to run. To activate the Metabalancer, pass the option +MetaLB at
306   runtime. To get the full benefits, calls to AtSync() should be made at every
307   iteration, rather than at some arbitrary longer interval as was previously
308   common.
310 - Many feature additions and usability improvements have been made in the
311   interface translator that generates code from .ci files:
312   * Charmxi now provides much better error reports, including more accurate
313     line numbers and clearer reasons for failure, including some semantic
314     problems that would otherwise appear when compiling the C++ code or even at
315     runtime.
316   * A new SDAG construct 'case' has been added that defines a disjunction over a
317     set of 'when' clauses: only one 'when' out of a set will ever be triggered.
318   * Entry method templates are now supported. An example program can be found
319     in tests/charm++/method_templates/.
320   * SDAG keyword "atomic" has been deprecated in favor of the newly supported
321     keyword "serial". The two are synonymous, but "atomic" is now provided only
322     for backward compatibility.
323   * It is no longer necessary to call __sdag_init() in chares that contain SDAG
324     code - the generated code does this automatically. The function is left as
325     a no-op for compatibility, but may be removed in a future version.
326   * Code generated from .ci files is now primarily in .def.h files, with only
327     declarations in .decl.h. This improves debugging, speeds compilation,
328     provides clearer compiler output, and enables more complete encapsulation,
329     especially in SDAG code.
330   * Mainchare constructors are expected to take CkArgMsg*, and always have
331     been. However, charmxi would allow declarations with no argument, and
332     assume the message. This is now deprecated, and generates a warning.
334 - Projections tracing has been extended and improved in various ways
335   * The trace module can generate a record of network topology of the nodes in
336     a run for certain platforms (including Cray), which Projections can
337     visualize.
338   * If the gzip library (libz) is available when Charm++ is compiled, traces
339     are compressed by default.
340   * If traces were flushed as a results of filled buffers during the run, a
341     warning will be printed at exit to indicate that the user should be wary of
342     interference that may have resulted.
343   * In SMP builds, it is now possible to trace message progression through the
344     communication threads. This is disabled by default to avoid overhead and
345     potential misleading interpretation.
347 - Array elements can be block-mapped at the SMP node level instead of at the
348   per-PE level (option "+useNodeBlkMapping").
350 - AMPI can now privatize global and static variables using TLS. This is
351   supported in C and C++ with __thread markings on the variable declarations
352   and definitions, and in Fortran with a patched version of the gfortran
353   compiler. To activate this feature, append '-tls' to the '-thread' option's
354   argument when you link your AMPI program.
356 - Charm can now be built to only support message priorities of a specific data
357   type. This enables an optimized message queue within the the runtime
358   system. Typical applications with medium sized compute grains may not benefit
359   noticeably when switching to the new scheduler. However, this may permit
360   further optimizations in later releases.
362   The new queue is enabled by specifying the data type of the message
363   priorities while building charm using --with-prio-type=dtype. Here, dtype can
364   be one of char, short, int, long, float, double and bitvec. Specifying bitvec
365   will permit arbitrary-length bitvector priorities, and is the current default
366   mode of operation. However, we may change this in a future release.
368 - Converse now provides a complete set of wrappers for
369   fopen/fread/fwrite/fclose to handle EINTR, which is not uncommon on the
370   increasingly-popular Lustre. They are named CmiF{open,read,write,close}, and
371   are available from C and C++ code.
373 - The utility class 'CkEntryOptions' now permits method chaining for cleaner
374   usage. This applies to all its set methods (setPriority, setQueueing,
375   setGroupDepID). Example usage can be found in examples/charm++/prio/pgm.C.
377 - When creating groups or chare arrays that depend on the previous construction
378   of another such entity on the local PE, it is now possible to declare that
379   dependence to the runtime. Creation messages whose dependence is not yet
380   satisfied will be buffered until it is.
382 - For any given chare class Foo and entry method Bar, the supporting class's
383   member CkIndex_Foo::Bar() is used to lookup/specify the entry method
384   index. This release adds a newer API for such members where the argument is a
385   function pointer of the same signature as the entry method. Those new
386   functions are used like CkIndex_Foo::idx_Bar(&Foo::Bar). This permits entry
387   point index lookup without instantiating temporary variables just to feed the
388   CkIndex_Foo::Bar() methods. In cases where Foo::Bar is overloaded, &Foo::Bar
389   must be cast to the desired type to disambiguate it.
391 - CkReduction::reducerType now have PUP methods defined; and can hence be
392   passed as parameter-marshalled arguments to entry methods.
394 - The runtime option +stacksize for controlling the allocation of user-level
395   threads' stacks now accepts shorthanded annotation such as 1M.
397 - The -optimize flag to the charmc compiler wrapper now passes more aggressive
398   options to the various underlying compilers than the previous '-O'.
400 - The charmc compiler wrapper now provides a flag -use-new-std to enable
401   support for C11 and C++11 where available. To use this in application code,
402   the runtime system must have been built with that flag as well.
404 - When using, CmiMemoryUsage(), the runtime can be instructed not to use the
405   underlying mallinfo() library call, which can be inaccurate in settings where
406   usage exceeds INT_MAX. This is accomplished by setting the environment
407   variable "MEMORYUSAGE_NO_MALLINFO".
409 - Experimental Features
410   * Initial implementation of a fast message-logging protocol. Use option
411     'mlogft' to build it.
412   * Message compression support for persistent message on Gemini machine layer.
413   * Node-level inter-PE loop/task parallelization is now supported through
414     CkLoop
415   * New temperature/CPU frequency aware load balancer
416   * Support interoperation of Charm++ and native MPI code through dynamically
417     switching control between the two
418   * API in centralized load balancers to get and set PE speed
419   * A new scheme for optimization of double in-memory checkpoint/restart.
420   * Message combining library for improved fine-grained communication
421     performance
422   * Support for partitioning of allocated nodes into subsets that run
423     independent Charm++ instances but can interact with each other.
425 Platform-Specific Changes
426 -------------------------
428 - Cray XE/XK
429   * The gemini_gni network layer has been heavily tuned and optimized,
430     providing substantial improvements in performance, scalability, and
431     stability.
432   * The gemini_gni-crayxe machine layer supports a 'hugepages' option at build
433     time, rather than requiring manual configuration file editing.
434   * Persistent message optimizations can be used to reduce latency and
435     overheads
436   * Experimental support for 'urgent' sends, which are sent ahead of any other
437     outgoing messages queued for transmission.
439 - IBM Blue Gene Q: Experimental machine-layer support for the native PAMI
440   interface and MPI, with and without SMP support. This supports many new
441   systems, including LLNL's Sequoia, ALCF's Mira, and FZ Juelich's Juqueen.
443   There are three network-layer implementations for these systems: 'mpi',
444   'pami', and 'pamilrts'. The 'mpi' layer is stable, but its performance and
445   scalability suffers from the additional overhead of using MPI rather than
446   driving the interconnect directly. The 'pami' layer is well tested for NAMD,
447   but has shown instability for other applications. It is likely to be replaced
448   by the 'pamilrts' layer, which is more generally stable and seems to provide
449   the same performance, in the next release.
451   In addition to the common 'smp' option to build the runtime system with
452   shared memory support, there is an 'async' option which sometimes provides
453   better performance on SMP builds. This option passes tests on 'pamilrts', but
454   is still experimental.
456   Note: Applications that have large number of messages may crash in default
457   setup due to overflow in the low-level FIFOs. Environment variables
458   MUSPI_INJFIFOSIZE and PAMI_RGETINJFIFOSIZE can be set to avoid application
459   failures due to large number of small and large messages respectively. The
460   default value of these variable is 65536 which is sufficient for 1000
461   messages in flight.
463 - Infiniband Verbs: Better support for more flavors of ibverbs libraries
465 - MPI Network Layer
466   * Experimental rendezvous protocol for better performance above some MPI
467     implementations.
468   * Some tuning parameters ("+dynCapSend" and "+dynCapRecv") are now
469     configurable at job launch, rather than Charm++ compilation.
471 - PGI C++: Disable automatic 'using namespace std;'
473 - Charm++ now supports ARM, both non-smp and smp.
475 - Mac OS X: Compilation options to build and link correctly on newer versions
478 ================================================================================
479 What's new in Charm++ 6.4.0
480 ================================================================================
482 --------------------------------------------------------------------------------
483 Platform Support
484 --------------------------------------------------------------------------------
486 - Cray XE and XK systems using the Gemini network via either MPI
487   (mpi-crayxe) or the native uGNI (gemini_gni-crayxe)
489 - IBM Blue Gene Q, using MPI (mpi-bluegeneq) or PAMI (pami-bluegeneq)
491 - Clang, Cray, and Fujitsu compilers
493 - MPI-based machine layers can now run on >64k PEs
495 --------------------------------------------------------------------------------
496 General Changes
497 --------------------------------------------------------------------------------
499 - Added a new [reductiontarget] attribute to enable
500   parameter-marshaled recipients of reduction messages
502 - Enabled pipelining of large messages in CkMulticast by default
504 - New load balancers added:
505   * TreeMatch
506   * Zoltan
507   * Scotch graph partitioning based: ScotchLB and Refine and Topo variants
508   * RefineSwap
510 - Load balancing improvements:
512   * Allow reduced load database size using floats instead of doubles
513   * Improved hierarchical balancer
514   * Periodic balancing adapts its interval dynamically
515   * User code can request a callback when migration is complete
516   * More balancers properly consider object migratability and PE
517     availability and speed
518   * Instrumentation records multicasts
520 - Chare arrays support options that can enable some optimizations
522 - New 'completion detection' library for parallel process termination
523   detection, when the need for modularity excludes full quiescence
524   detection
526 - New 'mesh streamer' library for fine-grain many-to-many collectives,
527   handling message bundling and network topology
529 - Memory pooling allocator performance and resource usage improved
530   substantially
532 - AMPI: More routines support MPI_IN_PLACE, and those that don't check
533   for it
535 ================================================================================
536 What's new in Charm++ 6.2.1 (since 6.2.0)
537 ================================================================================
539 --------------------------------------------------------------------------------
540 New Supported Platforms:
541 --------------------------------------------------------------------------------
543 POWER7 with LAPI on Linux
545 Infiniband on PowerPC
547 --------------------------------------------------------------------------------
548 General Changes
549 --------------------------------------------------------------------------------
551 - Better support for multicasts on groups
552 - Topology information gathering has been optimized
553 - Converse (seed) load balancers have many new optimizations applied
554 - CPU affinity can be set more easily using +pemap and +commap options
555   instead of the older +coremap
556 - HybridLB (hierarchical balancing for very large core-count systems)
557   has been substantially improved
558 - Load balancing infrastructure has further optimizations and bug fixes
559 - Object mappings can be read from a file, to allow offline
560   topology-aware placement
561 - Projections logs can be spread across multiple directories, speeding
562   up output when dealing with thousands of cores (+trace-subdirs N
563   will divide log files evenly among N subdirectories of the trace
564   root, named PROGNAME.projdir.K)
565 - AMPI now implements MPI_Issend
566 - AMPI's MPI_Alltoall uses a flooding algorithm more agressively,
567   versus pairwise exchange
568 - Virtualized ARMCI support has been extended to cover the functions
569   needed by CAF
571 --------------------------------------------------------------------------------
572 Architecture-specific changes
573 --------------------------------------------------------------------------------
575 - LAPI SMP has many new optimizations applied
577 - Net builds support the use of clusters' mpiexec systems for job
578   launch, via the ++mpiexec option to charmrun
580 ================================================================================
581 What's new in Charm++ 6.2.0 (since 6.1)
582 ================================================================================
584 --------------------------------------------------------------------------------
585 New Supported Platforms:
586 --------------------------------------------------------------------------------
588 64-bit MIPS, such as SiCortex, using mpi-linux-mips64
590 Windows HPC cluster, using mpi-win32/mpi-win64
592 Mac OSX 10.6, Snow Leopard (32-bit and 64-bit).
594 --------------------------------------------------------------------------------
595 General Changes
596 --------------------------------------------------------------------------------
598 Runtime support
599  - Smarter build/configure scripts
600  - A new interface for model-based load balancing
601  - new CPU topology API
602  - a general implementation of CmiMemoryUsage()
603  - Bug fix: Quiescence detection (QD) works with immediate messages
604  - New reduction functions implemented in Converse
605  - CCS (Converse Client-Server) can deliver message to more than one processor
606  - Added a memory-aware adaptive scheduler, which can be optionally
607    compiled in to charm
608  - Added preliminary support for automatic message prioritization
609    (disabled by default)
611 Charm++
612  - Cross-array and cross-group sections
613  - Structured Dagger (SDAG): Support templated arguments properly
614  - Plain chares support checkpoint/restart (both in-memory and disk-based)
615  - Conditional packing of messages and parameters in SMP scenario
616  - Changes to the CkArrayIndex class hierarchy
617    -- sizeof() all CkArrayIndex* classes is now the same
618    -- Codes using custom array indices have to use placement-new to construct
619       their custom index. Refer example code: examples/charm++/hello/fancyarray/
620    -- *** Backward Incompatibility ***
621       CkArrayIndex[4D/5D/6D]::index are now of type int (instead of short)
622       However the data is stored as shorts. Access by casting
623       CkArrayIndexND::data() appropriately
624    -- *** Deprecated ***
625       The direct use of public data member
626       CkArrayIndexND::index (N=1..6) is deprecated. We reserve the right to
627       change/remove this variable in future releases of Charm++.
628       Instead, please access the indices via member function:
629       int CkArrayIndexND::data()
631 Adaptive MPI (AMPI)
632  - Compilers renamed to avoid collision with host MPI (ampicc, ampiCC,
633    ampif77, ampif90)
634  - Improved MPI standard conformance, and documentation of non-conformance
635    * Bug fixes in: MPI_Ssend, MPI_Cart_shift, MPI_Get_count
636    * Support MPI_IN_PLACE in MPI_(All)Reduce
637    * Define various missing constants
638  - Return the received message's tag in response to a non-blocking
639    wildcard receive, to support SuperLU
640  - Improved tracing for BigSim
642 Multiphase Shared Arrays (MSA)
643  - Typed handles to enforce phases
644  - Split-phase synchronization to enable message-driven execution
645  - 3D arrays
647 TCharm
648  - Automatic tracing of API calls for simulation and analysis
650 Debugging
651  - Wider support for architectures other than net- (in particular MPI layers)
652  - Improved support for large scale debugging (better scalability)
653  - Enhanced record/replay stability to handle various events, and to
654    signal unexpected messages
655  - New detailed record/replay: The full content of messages can be
656    recorded, and a single processor can be re-executed outside of the
657    parallel application
659 Performance analysis
660  - Tracing of nested entry methods
662 Automatic Performance Tuning
663  - Created an automatic tuning framework [still for experimental use only]
665 CkMulticast
666  - Network-topology / node aware spanning trees used internally for and
667    lower bytes on the network and improved performance in multicasts and
668    reductions delegated to this library
670 Comlib
671  - Improved OneTimeMulticastStrategy classes
673 BigSim
674  - Out-of-core support, with prefetching capability
675  - Detailed tracing of MPI calls
676  - Detailed record/replay support at emulation time, capable of
677    replaying any emulated processor after obtained recorded logs.
679 --------------------------------------------------------------------------------
680 Architecture-specific changes
681 --------------------------------------------------------------------------------
683 Net-*
684  - Can run jobs with more than 1024 PEs
686 Net-Linux
687  - New charmrun option ++no-va-randomization to disable address space
688    randomization (ASLR). This is most useful for running AMPI with
689    isomalloc
692  - Default to using ampicxx instead of mpiCC
694 MPI-SMP
695  - The +p option now has the same semantics as in other smp builds
697 Power 7
698  - Support for VSX in SIMD abstraction API
700 Blue Gene/L
701  - Compilers and options have been updated to the latest ones
703 Blue Gene/P
704  - Added routines for measuring performance counters on BG/P.
705  - Updated to support latest DCMF driver version. On ANL's Intrepid, you may
706    need to set BGP_INSTALL=/bgsys/drivers/V1R4M1_460_2009-091110P/ppc in your
707    environment. This is the default on ANL's Surveyor.
709 Cray XT
710  - cputopology information is now available on XT3/4/5
712 Infiniband (ibverbs)
713  - Bug fix: plug memory leaks that caused failures in long runs
714  - Optimized to reduce startup delays
716 LAPI
717  - Support for SMP (experimental)
720 ================================================================================
721 Note that changes from 5.9, 6.0, and 6.1 are not documented here. A partial list
722 can be found on the charm download page, or by reading through version control
723 logs.
725 ================================================================================
726 What's New since Charm++ 5.4 release 1
727 ================================================================================
729 --------------------------------------------------------------------------------
730 New Supported Platforms:
731 --------------------------------------------------------------------------------
732 1. Charm++ ported to IA64 Itanium running Win2K and Linux, Charm++ also support
733    Intel C/C++ compilers;
735 2. Charm++ ported to Power Macintosh powerpc running Darwin;
737 3. Charm++ ported to Myrinet networking with GM API;
739 --------------------------------------------------------------------------------
740 Summary of New Features:
741 --------------------------------------------------------------------------------
742 1. Structure Dagger
743    Structured Dagger is a coordination language built on top of CHARM++.
744    Structured Dagger allows easy expression of dependences among messages and 
745    computations and also among computations within the same object using 
746    when-blocks and various structured constructs. 
748 2. Entry functions support parameter marshalling
749    Now you can declare and invoke remote entry functions using parameter 
750    marshalling instead of defining messages.
752 3. Easier running - standalone mode
753    For net-* version running locally, you can now run Charm programs without 
754    charmrun. Running a node program directly from command line is now the
755    same as "charmrun +p1 <program>"; for SMP version, you can also specify 
756    multiple (local) processors, as in "program +p2".
757    
759 --------------------------------------------------------------------------------
760 Summary of Changes:
761 --------------------------------------------------------------------------------
762 1. "build" changed for compilation of Charm++
763    To build Charm++ from scratch, we now take additional command line options
764    to compile with addon features and using different compilers other than gcc.
765    For example, to build Linux IA64 with Myrinet support, type command:
766    ./build net-linux-ia64  gm
769                 *******   Old Change histories *******
772 ================================================================================
773 What's New in Charm++ 5.4 release 1 since 5.0
774 ================================================================================
776 --------------------------------------------------------------------------------
777 New Supported Platforms:
778 --------------------------------------------------------------------------------
780 1. Win9x/2000/NT:  with Visual C++ or Cygwin gcc/g++, you can compile and run 
781    Charm++ programs on all Win32 platforms.
782    
783 2. Scyld Beowulf:  Charm++ has been ported to the Linux-based Scyld Beowulf 
784    operating system. For more information on Scyld, see <http://www.scyld.com>
786 3. MPI with VMI:   Charm++ has been ported to NCSA's Virtual Machine Interface,
787    which is an efficient messaging library for heterogeneous cluster 
788    communication.
791 --------------------------------------------------------------------------------
792 Summary of New Features:
793 --------------------------------------------------------------------------------
794 1. Dynamic Load balancing:
795    Chare migration is supported in the new release. Migration-based dynamic 
796    load balancing framework with various load balancing strategies library has 
797    been added.
799 2. Chare Array
800    Charm++ array is supported. You can now create an array of Chare objects
801    and use array index to refer the Charm++ array elements. A reduction
802    library on top of Chare array has been implemented and included.
804 3. Projections
805    Projections, a Java application for Charm++ program performance analysis and 
806    visualization, has been included and distributed in the new release. Two
807    trace modes are available: trace-projections and trace-summary. Trace-summary
808    is a light-weight trace library compared to trace-projections.
810 4. AMPI
811    AMPI is a load-balancing based library for porting legacy MPI applications 
812    to Charm++. With few changes in the original MPI code to AMPI, the new
813    legacy MPI application on Charm++ will gain from Charm++'s adptive 
814    load balancing ability.
816 5. Easier invocation
817    "Charmrun" is now available on all platforms, with a uniform command line 
818    syntax. You can forget the difference between net-* versions and MPI versions,
819    and run charm++ application with this same charmrun command syntax. 
820    ++local option is added in charmrun for net-* version, it provides
821    simple local use of Charm and no longer require the ability to 
822    "rsh localhost" or a nodelist file in order to run charm only on the local
823    machine. This is especially attractive when you run Charm++ on Windows.
825 6. New libraries:
826    Many new libraries have been added in this release. They include:
827    1) master-slave library: for writing manager-worker paradigm programs.
828    2) receiver library: provide asynchronous communication mode for chare array.
829    3) f90charm:  provides Fortran90 bindings for Charm++ Array.
830    4) BlueGene:  a Charm++/Converse emulator for IBM proposed Blue Gene.
832 --------------------------------------------------------------------------------
833 Summary of Changes:
834 --------------------------------------------------------------------------------
835 1. message declaration syntax in .ci file:
836    The message declaration syntax for packed/varsize messages has been changed.
837    The packed/varsize keywords are eliminated, and you can specify the actual
838    actual varsize arrays in the interface file and have the translator generate
839    alloc, pack and unpack.
842 Here is the detailed list of Changes:
844 --------------------------------------------------------------------------------
845 Major Features:
846 --------------------------------------------------------------------------------
848 10/06/1999      rbrunner        Added migration-based dynamic load balancing
849                                 framework.
850 11/15/1999      olawlor         Added reduction support foe Charm++ arrays
851 02/06/2000      milind          Added AMPI, an implementation of MPI with
852                                 dynamic load balancing
853 02/18/2000      paranjpy        New platforms supported: net-win32, and                                         net-win32-smp
854 04/04/2000      olawlor         Added arbitrarily indexed Charm++ arrays.
855                                 Also, added translator support for new arrays.
856 04/15/2000      olawlor         Added "puppers" for packing and unpacking 
857                                 objects.
858 06/14/2000      milind          Added the threaded FEM framework.
860 --------------------------------------------------------------------------------
861 Minor Features:
862 --------------------------------------------------------------------------------
864 10/09/1999      rbrunner        Added packlib, a library for C and C++ to 
865                                 pack-unpack data to/from Charm++ messages.
866 10/13/1999      gzheng          New LB strategy: RefineLB
867 10/13/1999      paranjpy        New LB Strategy: Heap
868 10/14/1999      milind          New LB Strategy: Metis
869 10/19/1999      olawlor         New test program for testing LB strategies.
870 10/21/1999      gzheng          New trace mode: trace-summary
871 10/28/1999      milind          New supported platform: net-sol-x86
872 10/29/1999      milind          Added runtime checks for ChareID assignment.
873 11/10/1999      rbrunner        Added Neighborhood base strategy for LB 
874                                 framework.
875 11/15/1999      olawlor         conv-host now reads in a startup file 
876                                 ~/.conv-hostrc
877 11/15/1999      olawlor         New test program for testing array reductions.
878 11/16/1999      rbrunner        Added processor-speed checking functions to
879                                 LB framework
880 11/19/1999      milind          Mapped SIGUSR to a Ccd condtion handler
881 11/22/1999      rbrunner        New LB strategy: WSLB
882 11/29/1999      ruiliu          Modified Metis LB strategy to deal with 
883                                 different processor speeds
884 12/16/1999      rbrunner        New LB strategy: GreedyRef
885 12/16/1999      rbrunner        New LB strategy: RandRef
886 12/21/1999      skumar2         New LB strategy: CommLB
887 01/03/2000      rbrunner        New LB strategy: RecBisectBfLB
888 01/08/2000      skumar2         New LB strategy: Comm1LB, with varying processor
889                                 speeds
890 01/18/2000      milind          Modified SM library syntax, and added a test
891                                 program for SM.
892 01/19/2000      gzheng          Added irecv, a library to simplify conversion
893                                 of message-passing programs to Charm++
894 02/20/2000      olawlor         Added preliminary broadcast support to Charm++
895                                 arrays.
896 02/23/2000      paranjpy        Added converse-level quiescence detection
897 03/02/2000      milind          Added ++server-port option to pre-specify
898                                 CCS port.
899 03/10/2000      wilmarth        Random seed-based load balancer now uses
900                                 bit-vector for active PEs.
901 03/21/2000      gzheng          Added support for marking user-defined events 
902                                 in trace-summary.
903 03/28/2000      wilmarth        Added CMK_TRUECRASH. Very helpful for
904                                 post-mortem debugging of Charm++ programs on
905                                 net-* versions.
906 03/31/2000      jdesouza        Added Fortran90 support to the Charm++ 
907                                 interface translator.
908 03/09/2000      milind          Added support for -LANG and -rpath options 
909                                 in charmc for Origin2000.
910 04/28/2000      milind          Added prioritized converse threads.
911 05/01/2000      milind          Added test programs for TeMPO, AMPI and irecv.
912 05/04/2000      milind          New supported platform: mpi-sp.
913 05/04/2000      gzheng          Added irecv pingpong program.
914 05/17/2000      olawlor         Each chare, group and array element now has to
915                                 have migration constructor.
916 05/24/2000      milind          Added Jacobi3D programs for irecv and AMPI both.
917 05/24/2000      milind          Made migratable an optional attribute of 
918                                 chares, groups, and nodegroups.  
919                                 Arrays are by default migratable.
920 05/29/2000      paranjpy        Added pup methods to arrays, reductions etc 
921                                 internal objects.
922 06/13/2000      milind          Made CtvInitialize idempotent.  That is, it 
923                                 can be called by any number of threads now, 
924                                 only the first one will actually do 
925                                 CtvInitialize.
926 06/20/2000      milind          Added a simple test program for the FEM 
927                                 framework.
928 07/06/2000      milind          Imported Metis 4.0 sources in the CVS tree. 
929                                 Also added code to make metis libraries and 
930                                 executables to Makefile.
931 07/07/2000      milind          Added more meaningfull error messages using 
932                                 perror in addition to a cryptic error codes in
933                                 net-* versions.
934 07/10/2000      milind          fem and femf are now recognized as "languages" 
935                                 by charmc.
936 07/10/2000      saboo           Added the derived datatypes library.
937 07/13/2000      milind          Added +idle_timeout functionality. It takes a 
938                                 commandline parameter denoting milliseconds of 
939                                 maximum consecutive idle time allowed per 
940                                 processor.
941 07/14/2000      milind          Added group multicast. Added 
942                                 CkSendMsgBranchMulti, CldEnqueueMulti, and 
943                                 translator changes to support it.
944 07/14/2000      milind          SUPER_INSTALL now takes "-*" arguments prior 
945                                 to the target, that will be passed to make as 
946                                 "makeflags". This makes it easy to suppress 
947                                 make's output of commands etc (with the -s 
948                                 flag). As a result of this, several Makefiles 
949                                 have been massaged.
950 07/18/2000      milind          Added support for using "dbx" on suns as 
951                                 debugger.
952 07/19/2000      milind          Added ability to tracemode projections which 
953                                 produces binary trace files. Use flag 
954                                 +binary-trace on the command line.
955 07/26/2000      milind          Separated AMPI from TeMPO.
956 07/28/2000      milind          Added test programs to test reduce, alltoall 
957                                 and allreduce functionality of AMPI.
958 08/02/2000      milind          Added an option to let the user specify which 
959                                 "xterm" to use.  For example, on some systems 
960                                 (CDE), only dtterm is installed.  So, by 
961                                 putting ++xterm dtterm on the conv-host 
962                                 commandline, one can use dtterm when ++in-xterm
963                                 option is specified on conv-host commandline.
964 08/14/2000      milind          FEM Framework: Added capabilities to handle 
965                                 esoteric meshes to standalone offline programs.
966                                 Makefile now produces gmap and fgmap programs, 
967                                 which are used for this purpose.  They convert 
968                                 the mesh to a graph before partitioning it 
969                                 using Metis.
970 08/24/2000      milind          Added the 2D crack propagation program as a 
971                                 test program for FEM framework.
972 08/25/2000      milind          Initial implementation of isomalloc-based 
973                                 threads.  This implementation uses a fixed 
974                                 stack size for all threads (can be set at 
975                                 runtime.)
976 08/26/2000      milind          Added a macro CtvAccessOther that lets you 
977                                 get/set a Ctv variable of any thread.  It 
978                                 should be invoked as CtvAccessOther(thread,
979                                 varname); Added CthGetData function to each of 
980                                 the threads implementation.  This function is 
981                                 used in the CtvAccessOther macro.
982 08/27/2000      milind          FEM Framework: Separated mesh to graph 
983                                 conversion capability into a separate program.
984                                 This way, the generated graph can be partitioned
985                                 repeatedly.
986 09/04/2000      milind          Added the class static readonly variables to 
987                                 ci file syntax.
988 09/05/2000      milind          FEM Framework: A very fast O(n) algorithm for 
989                                 mesh2graph , uses more memory, but the tradeoff
990                                 was worth it. Coded by Karthik Mahesh, minor 
991                                 optimizations by Milind.
992 09/05/2000      milind          Added a barebones charm kernel scheduling 
993                                 overhead measurement program.
994 09/15/2000      milind          Added pup support for AMPI and FEM framework.
995 09/20/2000      olawlor         Added capability to have an array of base type 
996                                 where individual element could be of derived 
997                                 types.
998 10/03/2000      gzheng          New supported platform: net-linux-axp
999 10/05/2000      skumar2         Added program littleMD to the test suite.
1000 10/07/2000      skumar2         New job scheduler (Faucets projects).
1001 10/15/2000      milind          Improved support for Fortran90 in charmc.
1002 11/04/2000      jdesouza        Made the Faucets scheduler multi-threaded.
1003 11/05/2000      olawlor         FEM Framework: supports multiple element types,
1004                                 mesh re-assembly, etc.
1005 11/15/2000      gzheng          New platform support: net-cygwin
1006 11/18/2000      gzheng          conv-host no longer needs /bin/csh to start 
1007                                 remote program.  set 
1008                                 CMK_CONV_HOST_CSH_UNAVAILABLE to 1 to use 
1009                                 /bin/sh instead.
1010 11/25/2000      milind          Finished experimental implementation of 
1011                                 converse-threads based on co-operative pthreads.
1012 11/25/2000      milind          Added a benchmark suite of all pingpongs in
1013                                 Charm++.
1014 11/28/2000      milind          Removed deletion of _idx at the end of every 
1015                                 send or doneInserting call.  Instead now it is 
1016                                 in the destructor of the proxy. This allows us 
1017                                 to cache proxies, when proxy creation becomes 
1018                                 a bottleneck.
1019 11/28/2000      olawlor         Added "seek blocks" to puppers.  This should 
1020                                 allow out-of-order pup'ing without the ugliness
1021                                 of getBuf; and in a way that works with all 
1022                                 PUP::ers.
1023 11/29/2000      olawlor         Simplified and regularized command-line-argument
1024                                 handling.
1025 11/29/2000      milind          AMPI: Added multiple-communicators capability.
1026 12/05/2000      gzheng          Now /bin/sh is default shell to fork node 
1027                                 program on remote machines.
1028 12/13/2000      olawlor         Added charmrun wrapper for poe on mpi-sp.
1029 12/14/2000      milind          Added bluegene emulator sources and test 
1030                                 programs.  Added "bluegene" as a language known
1031                                 to charmc.  Makefile now has a target called 
1032                                 bluegene.  Added preliminary bluegene 
1033                                 documentation.  (copied from Arun's webpage.)
1034 12/15/2000      gzheng          f90charm addition to Makefile and charmc. Also,
1035                                 added fixed size arrays support to f90charm. A 
1036                                 test program f90charm/hello is checked in.
1037 12/17/2000      milind          Added rtest test program. Contributed by jim to
1038                                 test Converse message transmission.
1039 12/20/2000      olawlor         Added charmconfig script. Enables automatic 
1040                                 determination of C++ compiler properties, 
1041                                 replacing the verbose and error-prone 
1042                                 conv-mach.h entries for CMK_BOOL, 
1043                                 CMK_STL_USE_DOT_H, CMK_CPP_CAST_OK, ...
1044 12/20/2000      olawlor         Charm++ Arrays optimizations: Key and object 
1045                                 now variable-length fields, instead of pointers.
1046                                 This extra flexibility lets us save many 
1047                                 dynamic allocations in the array framework.
1048 12/20/2000      olawlor         Added PUP::able support-- dynamic type 
1049                                 identification, allocation, and deletion.  
1050                                 Allows you to write:   p(objPtr); and 
1051                                 objPointer will be properly identified, 
1052                                 allocated, packed, and deallocated (depending 
1053                                 on the PUP::er).  Requires you to register any 
1054                                 such classes with DECLARE_PUPable and 
1055                                 DEFINE_PUPable.
1056 12/20/2000      olawlor         Arrays optimizations: Made CkArrayIndex 
1057                                 fixed-size.  This significantly improves 
1058                                 messaging speed (7 us instead of 10 us 
1059                                 roundtrip).  Move spring cleaning check into a 
1060                                 CcdCallFnAfter, which gains more speed (down to
1061                                 4 us roundtrip).
1062 12/20/2000      olawlor         More optimizations: Minor speed tweaks-- 
1063                                 conv-ccs.c uses hashtable for handler lookup; 
1064                                 conv-conds skips timer test until needed; 
1065                                 convcore.c scheduler loop optmizations (no 
1066                                 superfluous EndIdle calls); threads.c 
1067                                 CMK_OPTIMIZE-> no mprotect.
1068 12/20/2000      olawlor         More Optimizations: Minor speed tweaks-- ck.C 
1069                                 groups cldEnqueue skip; init.h defines 
1070                                 CkLocalBranch inline; and supporting changes.
1071 12/22/2000      gzheng          IA64 support for Converse user level threads.
1072 01/02/2001      olawlor         CCS: Minor update-- enabled CcsProbe, cleaned 
1073                                 up superflous debug messages in server, added 
1074                                 Java interface (originally written for 
1075                                 AppSpecter).
1076 01/09/2001      gzheng          charmconfig converted to autoconf style, need 
1077                                 to change configure.in and conv-autoconfig.h.in,
1078                                 and run autoconf to get configure and copy to 
1079                                 charmconfig.  added fortran subroutine name 
1080                                 test and get libpthread.a
1081 01/10/2001      milind          Added telnet method of getting libpthread.a 
1082                                 from charm webserver.
1083 01/11/2001      olawlor         Moved projections files here from 
1084                                 CVSROOT/projections-java.  Added fast Java 
1085                                 versions of the .log file input routines in 
1086                                 LogReader, LogLoader, LogAnalyzer, and 
1087                                 UsageCalc.  Added "U.java" user interface 
1088                                 utility file, allowing times to be input in 
1089                                 seconds, milliseconds, or microseconds, 
1090                                 instead of just microseconds.
1091 01/15/2001      gzheng          add +trace-root to specify the directory to 
1092                                 put log files in. this is need in Scyld cluster
1093                                 where there is no NFS mounting and no i/o 
1094                                 access to home directory sharing on nodes.
1095 01/15/2001      milind          Made AMPI into a f90 module instead of 
1096                                 'ampif.h' inclusion.  AMPI f90 bindings are 
1097                                 now more inclusive.  Fixed argc,argv handling 
1098                                 bugs in ArgsInfo message.  Fixed a bug in pup 
1099                                 that caused thread not to be sized, but was 
1100                                 packed nevertheless. Moved irecv to waitall 
1101                                 instead of at in ampi_start.  Made 
1102                                 AMPI_COMM_WORLD to be 0, because it clashed 
1103                                 with wildcard(-1).  AMPI_COMM_UNIVERSE is now 
1104                                 handled properly in the AMPI module.  
1105                                 C/C++ data members are NOT visible to 
1106                                 Fortran 90.
1107 01/18/2001      gzheng          New supported platform: net-linux-scyld
1108 01/20/2001      olawlor         Moved array index field from CMessage_* to the 
1109                                 Ck envelope itself.  This is the right thing 
1110                                 to do, because any message may be sent to/from 
1111                                 an array element.  To reduce the wasted space 
1112                                 in a message, a union is used to overlay the 
1113                                 fields for the various possible message types.
1114 01/29/2001      olawlor         Freed charmrun on net-* version from using
1115                                 remote shell to fork off processes. One can now
1116                                 use a daemon provided in the distribution.
1117 02/07/2001      olawlor         Added debugging support to puppers.
1118 02/13/2000      gzheng          Added ++local option to charmrun to start node 
1119                                 program locally without any daemon; fix the 
1120                                 hang program if you type wrong pgm name in 
1121                                 scyld version, and redirect all output to 
1122                                 /dev/null, otherwise all node program can send 
1123                                 its output to console in scyld. Also implemented                                ++local in net-win32 version.
1124 02/26/2000      milind          Changed the varsize syntax. Now one can specify
1125                                 actual varsize arrays in the interface file
1126                                 and have the translator generate alloc, pack 
1127                                 and unpack.
1129 --------------------------------------------------------------------------------
1130 Bug Fixes:
1131 --------------------------------------------------------------------------------
1133 10/29/1999      milind          Replaced jmemcpy by memcpy in net versions, as
1134                                 it was causing a bit to flip (bug reported
1135                                 by jim.)
1136 10/29/1999      milind          Fixed multiline macros in all header files.
1137 02/05/2000      milind          Fixed linking errors by getting the order of
1138                                 libraries right from the charmc command-line.
1139 02/18/2000      paranjpy        Fixed Charm++ initialization bug on SMPs.
1140 02/21/2000      milind          Fixed a context-switching bug in mipspro version
1141                                 of QuickThreads.
1142 02/25/2000      milind          Charm++ interface translator was segfaulting
1143                                 on interface file errors. Fixed that. Also,
1144                                 added linenumbers to error messages.
1145 03/02/2000      milind          Made CCS work on SMPs.
1146 03/07/2000      milind          Made ConverseInit consistent with the manual on
1147                                 Origin2000 version.
1148 04/18/2000      milind          Fixed a bug in CkWaitFuture, which was caching 
1149                                 a variable locally, while it was changed by 
1150                                 another thread.
1151 05/04/2000      paranjpy        Fixed argv deletion bug on net-win32-smp.
1152 06/08/2000      milind          sp3 version: changed optimization flags, which 
1153                                 where power2 processor-specific.
1154 06/20/2000      milind          mpi-* versions: Fixed ConverseExit since it was
1155                                 not obeying the following statement in the MPI 
1156                                 standard: The user must ensure that all pending
1157                                 communications involving a process completes 
1158                                 before the process calls MPI_FINALIZE.
1159 07/05/2000      milind          Fixed a nasty bug in charmc in the -cp option. 
1160                                 It used to append the name provided to -o flag 
1161                                 to the directory provided to the -cp flag.  
1162                                 Thus, -o ../pgm -cp ../bin options meant that 
1163                                 the pgm would be copied to ../bin/.., which is 
1164                                 not the expected behavior. This fix correctly 
1165                                 copies pgm to ../bin.
1166 07/07/2000      milind          Removed variable arg_myhome, as it was not 
1167                                 being used anywhere, and also, setting it was 
1168                                 causing problems of env var HOME was not set.
1169 07/27/2000      milind          thishandle for the arrayelement was not being 
1170                                 correctly set.  Bug was reported by Neelam.
1171 08/26/2000      milind          Origin2000: Changed the page alignment to 
1172                                 reflect the mmap alignment.  The mmap man page 
1173                                 specifically states that it is not the same as 
1174                                 page size.
1175 09/02/2000      milind          Fixed a bug in code generated for threaded 
1176                                 (void) entry methods of array elements. The 
1177                                 dummy message that is passed to that method in 
1178                                 a thread has to be deleted before calling the 
1179                                 object method, because upon object method's 
1180                                 return, the thread might have migrated.
1181 09/03/2000      olawlor         Minor fix-fixes: 1.) Change to LBObjid hash 
1182                                 function would fail for >4-int object indices.
1183                                 Replaced with proper function, which also 
1184                                 preserves the 1-int case.  2.) Array element 
1185                                 sends must go via the message queue to prevent 
1186                                 stack build-up for deep single-processor call 
1187                                 chains. These might happen, e.g., in a driver 
1188                                 element calling itself for the main time loop.
1189                                 Messages are now properly noted as sent, then 
1190                                 wait through the queue for delivery.  This 
1191                                 entailed minor reorganization of the message 
1192                                 delivery subsystem.
1193 09/21/2000      olawlor         Tiny SMP thread fix-- registrations of a 
1194                                 thread-private variable now reserve space on 
1195                                 calls after the first.  This wastes space for 
1196                                 multiple CthInitialize's-- it's a quick hack to
1197                                 get threads working again on SMP versions.
1198 10/16/2000      olawlor         A few CCS fixes:   -Added split-phase reply 
1199                                 (delay reply indefinitely)  -Cleaned up error
1200                                 handling -Pass user data as "void *" instead of
1201                                 "char *"
1202 11/03/2000      wilmarth        Removed 0 size array allocation in Charm++ 
1203                                 quiescence detection.
1204 11/20/2000      gzheng          Rewrote part of Fiber thread, including a bug 
1205                                 fix for a the non thread-safe function, and a 
1206                                 different fiber free strategy.
1207 11/29/2000      gzheng          The LB init procedure tried to allocate 
1208                                 65536*160 as initial size, which is 10M memory 
1209                                 for communication table, which is too big. 
1210                                 Cut it down to roughly 1M, and it can expand 
1211                                 in later code.
1212 12/05/2000      gzheng          In many cases, conv-host exits without print 
1213                                 out the error message from remote shell. try 
1214                                 to fix it by calling sync to flush the pipe 
1215                                 before exit 1.
1216 12/10/2000      milind          net-linux: Made static linking the default 
1217                                 option because dynamic linking runtime causes 
1218                                 isomalloc threads to crash.
1219 12/18/2000      milind          Increased portability of isomalloc threads by 
1220                                 removing dependence on alloca.
1221 12/28/2000      milind          Fixed ctrl-getone abort bug on SMP.
1222 12/28/2000      milind          Made _groupTable a pointer on which a 
1223                                 constructor is explicitly called.  Since it 
1224                                 was a Cpv variable, its constructor was not 
1225                                 called by default in case of an SMP version.
1226 12/29/2000      olawlor         Prevent infinite copy constructor recursion on 
1227                                 Origin2000.
1228 01/10/2001      olawlor         Added "explicit" keyword to remove ambiguity 
1229                                 for KCC, which was confused by the private 
1230                                 PUP::er(int) "cast" constructor and the operator
1231                                 |(PUP::er &p,T &t) into rejecting all operator|
1232                                 (int,int) as ambiguous.
1233 2001/01/17      gzheng          fix the charmconfig bug on paragon-red: the 
1234                                 failure testing of fortran won't stop the 
1235                                 compilation.
1236 01/20/2001      olawlor         Arrays reduction:  Fixed bug-- reduction may end
1237                                 because all contributors migrate away. 
1238 01/29/2001      olawlor         Fix heap-corrupting bug-- call ->init() on 
1239                                 nodeGroupTable, which sets the "pending" 
1240                                 message queue to NULL.  This prevents a nasty 
1241                                 delete-unitialized-data bug later on.  Also 
1242                                 delayed queue creation until messages actually 
1243                                 arrive.
1245 --------------------------------------------------------------------------------
1246 Documentation Changes:
1247 --------------------------------------------------------------------------------
1249 01/31/2000      milind          Installation manual: Fixed bugs pointed out by
1250                                 quantum TA
1251 02/28/2000      wilmarth        Added a new look Charm++ manual.
1252 06/20/2000      milind          Added pdflatex support to generate PDF versions
1253                                 of manuals from LaTeX sources.
1254 12/05/2000      milind          Added Orion's FEM manual. Converted from HTML.
1255 12/10/2000      milind          Added pplmanual.sty for all manuals.
1256 12/17/2000      milind          Added master-slave library documentation to
1257                                 convext manual.
1258 12/21/2000      saboo           Added DDT documentation.
1259 01/02/2001      olawlor         Updated for new CCS version.
1261 --------------------------------------------------------------------------------
1262 Other Changes:
1263 --------------------------------------------------------------------------------
1265 10/24/1999      olawlor         charmc is changed to Bourne shell script 
1266                                 instead of csh. All conv-mach.csh are
1267                                 replaced by conv-mach.sh.
1268 10/25/1999      olawlor         SUPER_INSTALL is converted to use bourne shell.
1269 10/28/1999      milind          All Makefiles now take OPTS commandline
1270                                 arguments.
1271 01/16/2000      olawlor         Simplified Charm++ interface translator.
1272 02/23/2000      ruiliu          Changed rand() calls from all over the codes
1273                                 to the new Converse random number generator.
1274 02/26/2000      milind          Simplified the converse scheduler loop by 
1275                                 combining the maxmsgs and poll modes.
1276 08/31/2000      milind          Imported system documentation into the CVS tree.
1277                                 Also added super_install target for docs with 
1278                                 necessary Makefile modifications.
1279 09/08/2000      olawlor         Made soft links use relative pathnames instead 
1280                                 of absolute.  This lets you move a charm++ 
1281                                 installation without having to recompile 
1282                                 anything.
1283 09/11/2000      olawlor         Grouped commonly needed code in the new util
1284                                 directory. Also, added pup_c a C wrapper for
1285                                 puppers.
1286 09/11/2000      olawlor         Slightly reorganized header structure.  Now no 
1287                                 headers should need to be listed twice (once in
1288                                 ALLHEADERS, again in CKHEADERS).  Now headers 
1289                                 are soft-linked instead of copied.  This makes 
1290                                 development much easier.  Added support for the
1291                                 new Common/util directory.
1292 09/21/2000      olawlor         Major reorganization of net-* codes. Now all 
1293                                 the TCP socket routines are in separate files.
1294                                 Also combined windoes NT code with unix codes.
1295 09/21/2000      olawlor         Major rewrite of CCS-- underlying protocol is 
1296                                 now binary (send/recv binary data everywhere); 
1297                                 conv-host forwards requests to nodes; and 
1298                                 source has been significantly re-arranged.  
1299                                 (especially if NODE_0_IS_CONVHOST).
1300 11/22/2000      milind          Removed IDL translator from distribution.
1301 12/01/2000      olawlor         Renamed conv-host charmrun; added test for 
1302                                 script conv-host. Also added charmrun for most 
1303                                 other machines.
1304 12/17/2000      milind          Moved List related data structures into 
1305                                 cklists.h in util. Removed most of the redundant
1306                                 list implementations.
1307 12/20/2000      gzheng          SUPER_INSTALL: format the output of list of 
1308                                 versions and make the help page fit into one 
1309                                 page of xterm.
1310 12/24/2000      milind          Added test-{charm,converse,ampi,fem} targets to 
1311                                 super_install.
1312 12/28/2000      milind          net-sol-smp now uses pthreads.
1313 01/29/2001      olawlor         Merged windowsNT and unix build procedures by
1314                                 basing the Windows build on cygwin. Added 
1315                                 scripts to deal with unix and windows 
1316                                 differences.