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