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:
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
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
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
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
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.
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:
122 * Sony/Toshiba/IBM Cell (including PlayStation 3)
124 * Intel IA-64 (Itanium)
125 * Intel x86-32 for Windows, Mac OS X (darwin), and Solaris
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:
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
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
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
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
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:
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
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
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
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
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
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
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
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
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 -------------------------
429 * The gemini_gni network layer has been heavily tuned and optimized,
430 providing substantial improvements in performance, scalability, and
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
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
463 - Infiniband Verbs: Better support for more flavors of ibverbs libraries
466 * Experimental rendezvous protocol for better performance above some MPI
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 --------------------------------------------------------------------------------
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 --------------------------------------------------------------------------------
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:
507 * Scotch graph partitioning based: ScotchLB and Refine and Topo variants
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
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
532 - AMPI: More routines support MPI_IN_PLACE, and those that don't check
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 --------------------------------------------------------------------------------
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
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 --------------------------------------------------------------------------------
596 --------------------------------------------------------------------------------
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
608 - Added preliminary support for automatic message prioritization
609 (disabled by default)
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()
632 - Compilers renamed to avoid collision with host MPI (ampicc, ampiCC,
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
648 - Automatic tracing of API calls for simulation and analysis
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
660 - Tracing of nested entry methods
662 Automatic Performance Tuning
663 - Created an automatic tuning framework [still for experimental use only]
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
671 - Improved OneTimeMulticastStrategy classes
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 --------------------------------------------------------------------------------
684 - Can run jobs with more than 1024 PEs
687 - New charmrun option ++no-va-randomization to disable address space
688 randomization (ASLR). This is most useful for running AMPI with
692 - Default to using ampicxx instead of mpiCC
695 - The +p option now has the same semantics as in other smp builds
698 - Support for VSX in SIMD abstraction API
701 - Compilers and options have been updated to the latest ones
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.
710 - cputopology information is now available on XT3/4/5
713 - Bug fix: plug memory leaks that caused failures in long runs
714 - Optimized to reduce startup delays
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
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 --------------------------------------------------------------------------------
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".
759 --------------------------------------------------------------------------------
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.
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
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
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.
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.
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.
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.
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 --------------------------------------------------------------------------------
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 --------------------------------------------------------------------------------
846 --------------------------------------------------------------------------------
848 10/06/1999 rbrunner Added migration-based dynamic load balancing
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
858 06/14/2000 milind Added the threaded FEM framework.
860 --------------------------------------------------------------------------------
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
875 11/15/1999 olawlor conv-host now reads in a startup file
877 11/15/1999 olawlor New test program for testing array reductions.
878 11/16/1999 rbrunner Added processor-speed checking functions to
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
890 01/18/2000 milind Modified SM library syntax, and added a test
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++
896 02/23/2000 paranjpy Added converse-level quiescence detection
897 03/02/2000 milind Added ++server-port option to pre-specify
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
903 03/28/2000 wilmarth Added CMK_TRUECRASH. Very helpful for
904 post-mortem debugging of Charm++ programs on
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
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
926 06/20/2000 milind Added a simple test program for the FEM
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
934 07/10/2000 milind fem and femf are now recognized as "languages"
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
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
950 07/18/2000 milind Added support for using "dbx" on suns as
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
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
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
986 09/04/2000 milind Added the class static readonly variables to
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
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
1008 CMK_CONV_HOST_CSH_UNAVAILABLE to 1 to use
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
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
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
1023 11/29/2000 olawlor Simplified and regularized command-line-argument
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
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
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
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
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
1129 --------------------------------------------------------------------------------
1131 --------------------------------------------------------------------------------
1133 10/29/1999 milind Replaced jmemcpy by memcpy in net versions, as
1134 it was causing a bit to flip (bug reported
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
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
1148 04/18/2000 milind Fixed a bug in CkWaitFuture, which was caching
1149 a variable locally, while it was changed by
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
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
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
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
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
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
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
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
1245 --------------------------------------------------------------------------------
1246 Documentation Changes:
1247 --------------------------------------------------------------------------------
1249 01/31/2000 milind Installation manual: Fixed bugs pointed out by
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
1258 12/21/2000 saboo Added DDT documentation.
1259 01/02/2001 olawlor Updated for new CCS version.
1261 --------------------------------------------------------------------------------
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
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
1283 09/11/2000 olawlor Grouped commonly needed code in the new util
1284 directory. Also, added pup_c a C wrapper for
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
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
1310 12/24/2000 milind Added test-{charm,converse,ampi,fem} targets to
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