1 This file describes the most significant changes. For more detail, use
2 'git log' on a clone of the charm repository.
5 ================================================================================
6 What's new in Charm++ 6.4.0
7 ================================================================================
9 --------------------------------------------------------------------------------
11 --------------------------------------------------------------------------------
13 - Cray XE and XK systems using the Gemini network via either MPI
14 (mpi-crayxe) or the native uGNI (gemini_gni-crayxe)
16 - IBM Blue Gene Q, using MPI (mpi-bluegeneq) or PAMI (pami-bluegeneq)
18 - Clang, Cray, and Fujitsu compilers
20 - MPI-based machine layers can now run on >64k PEs
22 --------------------------------------------------------------------------------
24 --------------------------------------------------------------------------------
26 - Added a new [reductiontarget] attribute to enable
27 parameter-marshaled recipients of reduction messages
29 - Enabled pipelining of large messages in CkMulticast by default
31 - New load balancers added:
34 * Scotch graph paritioning based: ScotchLB and Refine and Topo variants
37 - Load balancing improvements:
39 * Allow reduced load database size using floats instead of doubles
40 * Improved hierarchical balancer
41 * Periodic balancing adapts its interval dynamically
42 * User code can request a callback when migration is complete
43 * More balancers properly consider object migratability and PE
44 availability and speed
45 * Instrumentation records multicasts
47 - Chare arrays support options that can enable some optimizations
49 - New 'completion detection' library for parallel process termination
50 detection, when the need for modularity excludes full quiescence
53 - New 'mesh streamer' library for fine-grain many-to-many collectives,
54 handling message bundling and network topology
56 - Memory pooling allocator performance and resource usage improved
59 - AMPI: More routines support MPI_IN_PLACE, and those that don't check
62 ================================================================================
63 What's new in Charm++ 6.2.1 (since 6.2.0)
64 ================================================================================
66 --------------------------------------------------------------------------------
67 New Supported Platforms:
68 --------------------------------------------------------------------------------
70 POWER7 with LAPI on Linux
74 --------------------------------------------------------------------------------
76 --------------------------------------------------------------------------------
78 - Better support for multicasts on groups
79 - Topology information gathering has been optimized
80 - Converse (seed) load balancers have many new optimizations applied
81 - CPU affinity can be set more easily using +pemap and +commap options
82 instead of the older +coremap
83 - HybridLB (hierarchical balancing for very large core-count systems)
84 has been substantially improved
85 - Load balancing infrastructure has further optimizations and bug fixes
86 - Object mappings can be read from a file, to allow offline
87 topology-aware placement
88 - Projections logs can be spread across multiple directories, speeding
89 up output when dealing with thousands of cores (+trace-subdirs N
90 will divide log files evenly among N subdirectories of the trace
91 root, named PROGNAME.projdir.K)
92 - AMPI now implements MPI_Issend
93 - AMPI's MPI_Alltoall uses a flooding algorithm more agressively,
94 versus pairwise exchange
95 - Virtualized ARMCI support has been extended to cover the functions
98 --------------------------------------------------------------------------------
99 Architecture-specific changes
100 --------------------------------------------------------------------------------
102 - LAPI SMP has many new optimizations applied
104 - Net builds support the use of clusters' mpiexec systems for job
105 launch, via the ++mpiexec option to charmrun
107 ================================================================================
108 What's new in Charm++ 6.2.0 (since 6.1)
109 ================================================================================
111 --------------------------------------------------------------------------------
112 New Supported Platforms:
113 --------------------------------------------------------------------------------
115 64-bit MIPS, such as SiCortex, using mpi-linux-mips64
117 Windows HPC cluster, using mpi-win32/mpi-win64
119 Mac OSX 10.6, Snow Leopard (32-bit and 64-bit).
121 --------------------------------------------------------------------------------
123 --------------------------------------------------------------------------------
126 - Smarter build/configure scripts
127 - A new interface for model-based load balancing
128 - new CPU topology API
129 - a general implementation of CmiMemoryUsage()
130 - Bug fix: Quiescence detection (QD) works with immediate messages
131 - New reduction functions implemented in Converse
132 - CCS (Converse Client-Server) can deliver message to more than one processor
133 - Added a memory-aware adaptive scheduler, which can be optionally
135 - Added preliminary support for automatic message prioritization
136 (disabled by default)
139 - Cross-array and cross-group sections
140 - Structured Dagger (SDAG): Support templated arguments properly
141 - Plain chares support checkpoint/restart (both in-memory and disk-based)
142 - Conditional packing of messages and parameters in SMP scenario
143 - Changes to the CkArrayIndex class hierarchy
144 -- sizeof() all CkArrayIndex* classes is now the same
145 -- Codes using custom array indices have to use placement-new to construct
146 their custom index. Refer example code: examples/charm++/hello/fancyarray/
147 -- *** Backward Incompatibility ***
148 CkArrayIndex[4D/5D/6D]::index are now of type int (instead of short)
149 However the data is stored as shorts. Access by casting
150 CkArrayIndexND::data() appropriately
151 -- *** Deprecated ***
152 The direct use of public data member
153 CkArrayIndexND::index (N=1..6) is deprecated. We reserve the right to
154 change/remove this variable in future releases of Charm++.
155 Instead, please access the indices via member function:
156 int CkArrayIndexND::data()
159 - Compilers renamed to avoid collision with host MPI (ampicc, ampiCC,
161 - Improved MPI standard conformance, and documentation of non-conformance
162 * Bug fixes in: MPI_Ssend, MPI_Cart_shift, MPI_Get_count
163 * Support MPI_IN_PLACE in MPI_(All)Reduce
164 * Define various missing constants
165 - Return the received message's tag in response to a non-blocking
166 wildcard receive, to support SuperLU
167 - Improved tracing for BigSim
169 Multiphase Shared Arrays (MSA)
170 - Typed handles to enforce phases
171 - Split-phase synchronization to enable message-driven execution
175 - Automatic tracing of API calls for simulation and analysis
178 - Wider support for architectures other than net- (in particular MPI layers)
179 - Improved support for large scale debugging (better scalability)
180 - Enhanced record/replay stability to handle various events, and to
181 signal unexpected messages
182 - New detailed record/replay: The full content of messages can be
183 recorded, and a single processor can be re-executed outside of the
187 - Tracing of nested entry methods
189 Automatic Performance Tuning
190 - Created an automatic tuning framework [still for experimental use only]
193 - Network-topology / node aware spanning trees used internally for and
194 lower bytes on the network and improved performance in multicasts and
195 reductions delegated to this library
198 - Improved OneTimeMulticastStrategy classes
201 - Out-of-core support, with prefetching capability
202 - Detailed tracing of MPI calls
203 - Detailed record/replay support at emulation time, capable of
204 replaying any emulated processor after obtained recorded logs.
206 --------------------------------------------------------------------------------
207 Architecture-specific changes
208 --------------------------------------------------------------------------------
211 - Can run jobs with more than 1024 PEs
214 - New charmrun option ++no-va-randomization to disable address space
215 randomization (ASLR). This is most useful for running AMPI with
219 - Default to using ampicxx instead of mpiCC
222 - The +p option now has the same semantics as in other smp builds
225 - Support for VSX in SIMD abstraction API
228 - Compilers and options have been updated to the latest ones
231 - Added routines for measuring performance counters on BG/P.
232 - Updated to support latest DCMF driver version. On ANL's Intrepid, you may
233 need to set BGP_INSTALL=/bgsys/drivers/V1R4M1_460_2009-091110P/ppc in your
234 environment. This is the default on ANL's Surveyor.
237 - cputopology information is now available on XT3/4/5
240 - Bug fix: plug memory leaks that caused failures in long runs
241 - Optimized to reduce startup delays
244 - Support for SMP (experimental)
247 ================================================================================
248 Note that changes from 5.9, 6.0, and 6.1 are not documented here. A partial list
249 can be found on the charm download page, or by reading through version control
252 ================================================================================
253 What's New since Charm++ 5.4 release 1
254 ================================================================================
256 --------------------------------------------------------------------------------
257 New Supported Platforms:
258 --------------------------------------------------------------------------------
259 1. Charm++ ported to IA64 Itanium running Win2K and Linux, Charm++ also support
260 Intel C/C++ compilers;
262 2. Charm++ ported to Power Macintosh powerpc running Darwin;
264 3. Charm++ ported to Myrinet networking with GM API;
266 --------------------------------------------------------------------------------
267 Summary of New Features:
268 --------------------------------------------------------------------------------
270 Structured Dagger is a coordination language built on top of CHARM++.
271 Structured Dagger allows easy expression of dependences among messages and
272 computations and also among computations within the same object using
273 when-blocks and various structured constructs.
275 2. Entry functions support parameter marshalling
276 Now you can declare and invoke remote entry functions using parameter
277 marshalling instead of defining messages.
279 3. Easier running - standalone mode
280 For net-* version running locally, you can now run Charm programs without
281 charmrun. Running a node program directly from command line is now the
282 same as "charmrun +p1 <program>"; for SMP version, you can also specify
283 multiple (local) processors, as in "program +p2".
286 --------------------------------------------------------------------------------
288 --------------------------------------------------------------------------------
289 1. "build" changed for compilation of Charm++
290 To build Charm++ from scratch, we now take additional command line options
291 to compile with addon features and using different compilers other than gcc.
292 For example, to build Linux IA64 with Myrinet support, type command:
293 ./build net-linux-ia64 gm
296 ******* Old Change histories *******
299 ================================================================================
300 What's New in Charm++ 5.4 release 1 since 5.0
301 ================================================================================
303 --------------------------------------------------------------------------------
304 New Supported Platforms:
305 --------------------------------------------------------------------------------
307 1. Win9x/2000/NT: with Visual C++ or Cygwin gcc/g++, you can compile and run
308 Charm++ programs on all Win32 platforms.
310 2. Scyld Beowulf: Charm++ has been ported to the Linux-based Scyld Beowulf
311 operating system. For more information on Scyld, see <http://www.scyld.com>
313 3. MPI with VMI: Charm++ has been ported to NCSA's Virtual Machine Interface,
314 which is an efficient messaging library for heterogeneous cluster
318 --------------------------------------------------------------------------------
319 Summary of New Features:
320 --------------------------------------------------------------------------------
321 1. Dynamic Load balancing:
322 Chare migration is supported in the new release. Migration-based dynamic
323 load balancing framework with various load balancing strategies library has
327 Charm++ array is supported. You can now create an array of Chare objects
328 and use array index to refer the Charm++ array elements. A reduction
329 library on top of Chare array has been implemented and included.
332 Projections, a Java application for Charm++ program performance analysis and
333 visualization, has been included and distributed in the new release. Two
334 trace modes are available: trace-projections and trace-summary. Trace-summary
335 is a light-weight trace library compared to trace-projections.
338 AMPI is a load-balancing based library for porting legacy MPI applications
339 to Charm++. With few changes in the original MPI code to AMPI, the new
340 legacy MPI application on Charm++ will gain from Charm++'s adptive
341 load balancing ability.
344 "Charmrun" is now available on all platforms, with a uniform command line
345 syntax. You can forget the difference between net-* versions and MPI versions,
346 and run charm++ application with this same charmrun command syntax.
347 ++local option is added in charmrun for net-* version, it provides
348 simple local use of Charm and no longer require the ability to
349 "rsh localhost" or a nodelist file in order to run charm only on the local
350 machine. This is especially attractive when you run Charm++ on Windows.
353 Many new libraries have been added in this release. They include:
354 1) master-slave library: for writing manager-worker paradigm programs.
355 2) receiver library: provide asynchronous communication mode for chare array.
356 3) f90charm: provides Fortran90 bindings for Charm++ Array.
357 4) BlueGene: a Charm++/Converse emulator for IBM proposed Blue Gene.
359 --------------------------------------------------------------------------------
361 --------------------------------------------------------------------------------
362 1. message declaration syntax in .ci file:
363 The message declaration syntax for packed/varsize messages has been changed.
364 The packed/varsize keywords are eliminated, and you can specify the actual
365 actual varsize arrays in the interface file and have the translator generate
366 alloc, pack and unpack.
369 Here is the detailed list of Changes:
371 --------------------------------------------------------------------------------
373 --------------------------------------------------------------------------------
375 10/06/1999 rbrunner Added migration-based dynamic load balancing
377 11/15/1999 olawlor Added reduction support foe Charm++ arrays
378 02/06/2000 milind Added AMPI, an implementation of MPI with
379 dynamic load balancing
380 02/18/2000 paranjpy New platforms supported: net-win32, and net-win32-smp
381 04/04/2000 olawlor Added arbitrarily indexed Charm++ arrays.
382 Also, added translator support for new arrays.
383 04/15/2000 olawlor Added "puppers" for packing and unpacking
385 06/14/2000 milind Added the threaded FEM framework.
387 --------------------------------------------------------------------------------
389 --------------------------------------------------------------------------------
391 10/09/1999 rbrunner Added packlib, a library for C and C++ to
392 pack-unpack data to/from Charm++ messages.
393 10/13/1999 gzheng New LB strategy: RefineLB
394 10/13/1999 paranjpy New LB Strategy: Heap
395 10/14/1999 milind New LB Strategy: Metis
396 10/19/1999 olawlor New test program for testing LB strategies.
397 10/21/1999 gzheng New trace mode: trace-summary
398 10/28/1999 milind New supported platform: net-sol-x86
399 10/29/1999 milind Added runtime checks for ChareID assignment.
400 11/10/1999 rbrunner Added Neighborhood base strategy for LB
402 11/15/1999 olawlor conv-host now reads in a startup file
404 11/15/1999 olawlor New test program for testing array reductions.
405 11/16/1999 rbrunner Added processor-speed checking functions to
407 11/19/1999 milind Mapped SIGUSR to a Ccd condtion handler
408 11/22/1999 rbrunner New LB strategy: WSLB
409 11/29/1999 ruiliu Modified Metis LB strategy to deal with
410 different processor speeds
411 12/16/1999 rbrunner New LB strategy: GreedyRef
412 12/16/1999 rbrunner New LB strategy: RandRef
413 12/21/1999 skumar2 New LB strategy: CommLB
414 01/03/2000 rbrunner New LB strategy: RecBisectBfLB
415 01/08/2000 skumar2 New LB strategy: Comm1LB, with varying processor
417 01/18/2000 milind Modified SM library syntax, and added a test
419 01/19/2000 gzheng Added irecv, a library to simplify conversion
420 of message-passing programs to Charm++
421 02/20/2000 olawlor Added preliminary broadcast support to Charm++
423 02/23/2000 paranjpy Added converse-level quiescence detection
424 03/02/2000 milind Added ++server-port option to pre-specify
426 03/10/2000 wilmarth Random seed-based load balancer now uses
427 bit-vector for active PEs.
428 03/21/2000 gzheng Added support for marking user-defined events
430 03/28/2000 wilmarth Added CMK_TRUECRASH. Very helpful for
431 post-mortem debugging of Charm++ programs on
433 03/31/2000 jdesouza Added Fortran90 support to the Charm++
434 interface translator.
435 03/09/2000 milind Added support for -LANG and -rpath options
436 in charmc for Origin2000.
437 04/28/2000 milind Added prioritized converse threads.
438 05/01/2000 milind Added test programs for TeMPO, AMPI and irecv.
439 05/04/2000 milind New supported platform: mpi-sp.
440 05/04/2000 gzheng Added irecv pingpong program.
441 05/17/2000 olawlor Each chare, group and array element now has to
442 have migration constructor.
443 05/24/2000 milind Added Jacobi3D programs for irecv and AMPI both.
444 05/24/2000 milind Made migratable an optional attribute of
445 chares, groups, and nodegroups.
446 Arrays are by default migratable.
447 05/29/2000 paranjpy Added pup methods to arrays, reductions etc
449 06/13/2000 milind Made CtvInitialize idempotent. That is, it
450 can be called by any number of threads now,
451 only the first one will actually do
453 06/20/2000 milind Added a simple test program for the FEM
455 07/06/2000 milind Imported Metis 4.0 sources in the CVS tree.
456 Also added code to make metis libraries and
457 executables to Makefile.
458 07/07/2000 milind Added more meaningfull error messages using
459 perror in addition to a cryptic error codes in
461 07/10/2000 milind fem and femf are now recognized as "languages"
463 07/10/2000 saboo Added the derived datatypes library.
464 07/13/2000 milind Added +idle_timeout functionality. It takes a
465 commandline parameter denoting milliseconds of
466 maximum consecutive idle time allowed per
468 07/14/2000 milind Added group multicast. Added
469 CkSendMsgBranchMulti, CldEnqueueMulti, and
470 translator changes to support it.
471 07/14/2000 milind SUPER_INSTALL now takes "-*" arguments prior
472 to the target, that will be passed to make as
473 "makeflags". This makes it easy to suppress
474 make's output of commands etc (with the -s
475 flag). As a result of this, several Makefiles
477 07/18/2000 milind Added support for using "dbx" on suns as
479 07/19/2000 milind Added ability to tracemode projections which
480 produces binary trace files. Use flag
481 +binary-trace on the command line.
482 07/26/2000 milind Separated AMPI from TeMPO.
483 07/28/2000 milind Added test programs to test reduce, alltoall
484 and allreduce functionality of AMPI.
485 08/02/2000 milind Added an option to let the user specify which
486 "xterm" to use. For example, on some systems
487 (CDE), only dtterm is installed. So, by
488 putting ++xterm dtterm on the conv-host
489 commandline, one can use dtterm when ++in-xterm
490 option is specified on conv-host commandline.
491 08/14/2000 milind FEM Framework: Added capabilities to handle
492 esoteric meshes to standalone offline programs.
493 Makefile now produces gmap and fgmap programs,
494 which are used for this purpose. They convert
495 the mesh to a graph before partitioning it
497 08/24/2000 milind Added the 2D crack propagation program as a
498 test program for FEM framework.
499 08/25/2000 milind Initial implementation of isomalloc-based
500 threads. This implementation uses a fixed
501 stack size for all threads (can be set at
503 08/26/2000 milind Added a macro CtvAccessOther that lets you
504 get/set a Ctv variable of any thread. It
505 should be invoked as CtvAccessOther(thread,
506 varname); Added CthGetData function to each of
507 the threads implementation. This function is
508 used in the CtvAccessOther macro.
509 08/27/2000 milind FEM Framework: Separated mesh to graph
510 conversion capability into a separate program.
511 This way, the generated graph can be partitioned
513 09/04/2000 milind Added the class static readonly variables to
515 09/05/2000 milind FEM Framework: A very fast O(n) algorithm for
516 mesh2graph , uses more memory, but the tradeoff
517 was worth it. Coded by Karthik Mahesh, minor
518 optimizations by Milind.
519 09/05/2000 milind Added a barebones charm kernel scheduling
520 overhead measurement program.
521 09/15/2000 milind Added pup support for AMPI and FEM framework.
522 09/20/2000 olawlor Added capability to have an array of base type
523 where individual element could be of derived
525 10/03/2000 gzheng New supported platform: net-linux-axp
526 10/05/2000 skumar2 Added program littleMD to the test suite.
527 10/07/2000 skumar2 New job scheduler (Faucets projects).
528 10/15/2000 milind Improved support for Fortran90 in charmc.
529 11/04/2000 jdesouza Made the Faucets scheduler multi-threaded.
530 11/05/2000 olawlor FEM Framework: supports multiple element types,
531 mesh re-assembly, etc.
532 11/15/2000 gzheng New platform support: net-cygwin
533 11/18/2000 gzheng conv-host no longer needs /bin/csh to start
535 CMK_CONV_HOST_CSH_UNAVAILABLE to 1 to use
537 11/25/2000 milind Finished experimental implementation of
538 converse-threads based on co-operative pthreads.
539 11/25/2000 milind Added a benchmark suite of all pingpongs in
541 11/28/2000 milind Removed deletion of _idx at the end of every
542 send or doneInserting call. Instead now it is
543 in the destructor of the proxy. This allows us
544 to cache proxies, when proxy creation becomes
546 11/28/2000 olawlor Added "seek blocks" to puppers. This should
547 allow out-of-order pup'ing without the ugliness
548 of getBuf; and in a way that works with all
550 11/29/2000 olawlor Simplified and regularized command-line-argument
552 11/29/2000 milind AMPI: Added multiple-communicators capability.
553 12/05/2000 gzheng Now /bin/sh is default shell to fork node
554 program on remote machines.
555 12/13/2000 olawlor Added charmrun wrapper for poe on mpi-sp.
556 12/14/2000 milind Added bluegene emulator sources and test
557 programs. Added "bluegene" as a language known
558 to charmc. Makefile now has a target called
559 bluegene. Added preliminary bluegene
560 documentation. (copied from Arun's webpage.)
561 12/15/2000 gzheng f90charm addition to Makefile and charmc. Also,
562 added fixed size arrays support to f90charm. A
563 test program f90charm/hello is checked in.
564 12/17/2000 milind Added rtest test program. Contributed by jim to
565 test Converse message transmission.
566 12/20/2000 olawlor Added charmconfig script. Enables automatic
567 determination of C++ compiler properties,
568 replacing the verbose and error-prone
569 conv-mach.h entries for CMK_BOOL,
570 CMK_STL_USE_DOT_H, CMK_CPP_CAST_OK, ...
571 12/20/2000 olawlor Charm++ Arrays optimizations: Key and object
572 now variable-length fields, instead of pointers.
573 This extra flexibility lets us save many
574 dynamic allocations in the array framework.
575 12/20/2000 olawlor Added PUP::able support-- dynamic type
576 identification, allocation, and deletion.
577 Allows you to write: p(objPtr); and
578 objPointer will be properly identified,
579 allocated, packed, and deallocated (depending
580 on the PUP::er). Requires you to register any
581 such classes with DECLARE_PUPable and
583 12/20/2000 olawlor Arrays optimizations: Made CkArrayIndex
584 fixed-size. This significantly improves
585 messaging speed (7 us instead of 10 us
586 roundtrip). Move spring cleaning check into a
587 CcdCallFnAfter, which gains more speed (down to
589 12/20/2000 olawlor More optimizations: Minor speed tweaks--
590 conv-ccs.c uses hashtable for handler lookup;
591 conv-conds skips timer test until needed;
592 convcore.c scheduler loop optmizations (no
593 superfluous EndIdle calls); threads.c
594 CMK_OPTIMIZE-> no mprotect.
595 12/20/2000 olawlor More Optimizations: Minor speed tweaks-- ck.C
596 groups cldEnqueue skip; init.h defines
597 CkLocalBranch inline; and supporting changes.
598 12/22/2000 gzheng IA64 support for Converse user level threads.
599 01/02/2001 olawlor CCS: Minor update-- enabled CcsProbe, cleaned
600 up superflous debug messages in server, added
601 Java interface (originally written for
603 01/09/2001 gzheng charmconfig converted to autoconf style, need
604 to change configure.in and conv-autoconfig.h.in,
605 and run autoconf to get configure and copy to
606 charmconfig. added fortran subroutine name
607 test and get libpthread.a
608 01/10/2001 milind Added telnet method of getting libpthread.a
609 from charm webserver.
610 01/11/2001 olawlor Moved projections files here from
611 CVSROOT/projections-java. Added fast Java
612 versions of the .log file input routines in
613 LogReader, LogLoader, LogAnalyzer, and
614 UsageCalc. Added "U.java" user interface
615 utility file, allowing times to be input in
616 seconds, milliseconds, or microseconds,
617 instead of just microseconds.
618 01/15/2001 gzheng add +trace-root to specify the directory to
619 put log files in. this is need in Scyld cluster
620 where there is no NFS mounting and no i/o
621 access to home directory sharing on nodes.
622 01/15/2001 milind Made AMPI into a f90 module instead of
623 'ampif.h' inclusion. AMPI f90 bindings are
624 now more inclusive. Fixed argc,argv handling
625 bugs in ArgsInfo message. Fixed a bug in pup
626 that caused thread not to be sized, but was
627 packed nevertheless. Moved irecv to waitall
628 instead of at in ampi_start. Made
629 AMPI_COMM_WORLD to be 0, because it clashed
630 with wildcard(-1). AMPI_COMM_UNIVERSE is now
631 handled properly in the AMPI module.
632 C/C++ data members are NOT visible to
634 01/18/2001 gzheng New supported platform: net-linux-scyld
635 01/20/2001 olawlor Moved array index field from CMessage_* to the
636 Ck envelope itself. This is the right thing
637 to do, because any message may be sent to/from
638 an array element. To reduce the wasted space
639 in a message, a union is used to overlay the
640 fields for the various possible message types.
641 01/29/2001 olawlor Freed charmrun on net-* version from using
642 remote shell to fork off processes. One can now
643 use a daemon provided in the distribution.
644 02/07/2001 olawlor Added debugging support to puppers.
645 02/13/2000 gzheng Added ++local option to charmrun to start node
646 program locally without any daemon; fix the
647 hang program if you type wrong pgm name in
648 scyld version, and redirect all output to
649 /dev/null, otherwise all node program can send
650 its output to console in scyld. Also implemented ++local in net-win32 version.
651 02/26/2000 milind Changed the varsize syntax. Now one can specify
652 actual varsize arrays in the interface file
653 and have the translator generate alloc, pack
656 --------------------------------------------------------------------------------
658 --------------------------------------------------------------------------------
660 10/29/1999 milind Replaced jmemcpy by memcpy in net versions, as
661 it was causing a bit to flip (bug reported
663 10/29/1999 milind Fixed multiline macros in all header files.
664 02/05/2000 milind Fixed linking errors by getting the order of
665 libraries right from the charmc command-line.
666 02/18/2000 paranjpy Fixed Charm++ initialization bug on SMPs.
667 02/21/2000 milind Fixed a context-switching bug in mipspro version
669 02/25/2000 milind Charm++ interface translator was segfaulting
670 on interface file errors. Fixed that. Also,
671 added linenumbers to error messages.
672 03/02/2000 milind Made CCS work on SMPs.
673 03/07/2000 milind Made ConverseInit consistent with the manual on
675 04/18/2000 milind Fixed a bug in CkWaitFuture, which was caching
676 a variable locally, while it was changed by
678 05/04/2000 paranjpy Fixed argv deletion bug on net-win32-smp.
679 06/08/2000 milind sp3 version: changed optimization flags, which
680 where power2 processor-specific.
681 06/20/2000 milind mpi-* versions: Fixed ConverseExit since it was
682 not obeying the following statement in the MPI
683 standard: The user must ensure that all pending
684 communications involving a process completes
685 before the process calls MPI_FINALIZE.
686 07/05/2000 milind Fixed a nasty bug in charmc in the -cp option.
687 It used to append the name provided to -o flag
688 to the directory provided to the -cp flag.
689 Thus, -o ../pgm -cp ../bin options meant that
690 the pgm would be copied to ../bin/.., which is
691 not the expected behavior. This fix correctly
692 copies pgm to ../bin.
693 07/07/2000 milind Removed variable arg_myhome, as it was not
694 being used anywhere, and also, setting it was
695 causing problems of env var HOME was not set.
696 07/27/2000 milind thishandle for the arrayelement was not being
697 correctly set. Bug was reported by Neelam.
698 08/26/2000 milind Origin2000: Changed the page alignment to
699 reflect the mmap alignment. The mmap man page
700 specifically states that it is not the same as
702 09/02/2000 milind Fixed a bug in code generated for threaded
703 (void) entry methods of array elements. The
704 dummy message that is passed to that method in
705 a thread has to be deleted before calling the
706 object method, because upon object method's
707 return, the thread might have migrated.
708 09/03/2000 olawlor Minor fix-fixes: 1.) Change to LBObjid hash
709 function would fail for >4-int object indices.
710 Replaced with proper function, which also
711 preserves the 1-int case. 2.) Array element
712 sends must go via the message queue to prevent
713 stack build-up for deep single-processor call
714 chains. These might happen, e.g., in a driver
715 element calling itself for the main time loop.
716 Messages are now properly noted as sent, then
717 wait through the queue for delivery. This
718 entailed minor reorganization of the message
720 09/21/2000 olawlor Tiny SMP thread fix-- registrations of a
721 thread-private variable now reserve space on
722 calls after the first. This wastes space for
723 multiple CthInitialize's-- it's a quick hack to
724 get threads working again on SMP versions.
725 10/16/2000 olawlor A few CCS fixes: -Added split-phase reply
726 (delay reply indefinitely) -Cleaned up error
727 handling -Pass user data as "void *" instead of
729 11/03/2000 wilmarth Removed 0 size array allocation in Charm++
730 quiescence detection.
731 11/20/2000 gzheng Rewrote part of Fiber thread, including a bug
732 fix for a the non thread-safe function, and a
733 different fiber free strategy.
734 11/29/2000 gzheng The LB init procedure tried to allocate
735 65536*160 as initial size, which is 10M memory
736 for communication table, which is too big.
737 Cut it down to roughly 1M, and it can expand
739 12/05/2000 gzheng In many cases, conv-host exits without print
740 out the error message from remote shell. try
741 to fix it by calling sync to flush the pipe
743 12/10/2000 milind net-linux: Made static linking the default
744 option because dynamic linking runtime causes
745 isomalloc threads to crash.
746 12/18/2000 milind Increased portability of isomalloc threads by
747 removing dependence on alloca.
748 12/28/2000 milind Fixed ctrl-getone abort bug on SMP.
749 12/28/2000 milind Made _groupTable a pointer on which a
750 constructor is explicitly called. Since it
751 was a Cpv variable, its constructor was not
752 called by default in case of an SMP version.
753 12/29/2000 olawlor Prevent infinite copy constructor recursion on
755 01/10/2001 olawlor Added "explicit" keyword to remove ambiguity
756 for KCC, which was confused by the private
757 PUP::er(int) "cast" constructor and the operator
758 |(PUP::er &p,T &t) into rejecting all operator|
759 (int,int) as ambiguous.
760 2001/01/17 gzheng fix the charmconfig bug on paragon-red: the
761 failure testing of fortran won't stop the
763 01/20/2001 olawlor Arrays reduction: Fixed bug-- reduction may end
764 because all contributors migrate away.
765 01/29/2001 olawlor Fix heap-corrupting bug-- call ->init() on
766 nodeGroupTable, which sets the "pending"
767 message queue to NULL. This prevents a nasty
768 delete-unitialized-data bug later on. Also
769 delayed queue creation until messages actually
772 --------------------------------------------------------------------------------
773 Documentation Changes:
774 --------------------------------------------------------------------------------
776 01/31/2000 milind Installation manual: Fixed bugs pointed out by
778 02/28/2000 wilmarth Added a new look Charm++ manual.
779 06/20/2000 milind Added pdflatex support to generate PDF versions
780 of manuals from LaTeX sources.
781 12/05/2000 milind Added Orion's FEM manual. Converted from HTML.
782 12/10/2000 milind Added pplmanual.sty for all manuals.
783 12/17/2000 milind Added master-slave library documentation to
785 12/21/2000 saboo Added DDT documentation.
786 01/02/2001 olawlor Updated for new CCS version.
788 --------------------------------------------------------------------------------
790 --------------------------------------------------------------------------------
792 10/24/1999 olawlor charmc is changed to Bourne shell script
793 instead of csh. All conv-mach.csh are
794 replaced by conv-mach.sh.
795 10/25/1999 olawlor SUPER_INSTALL is converted to use bourne shell.
796 10/28/1999 milind All Makefiles now take OPTS commandline
798 01/16/2000 olawlor Simplified Charm++ interface translator.
799 02/23/2000 ruiliu Changed rand() calls from all over the codes
800 to the new Converse random number generator.
801 02/26/2000 milind Simplified the converse scheduler loop by
802 combining the maxmsgs and poll modes.
803 08/31/2000 milind Imported system documentation into the CVS tree.
804 Also added super_install target for docs with
805 necessary Makefile modifications.
806 09/08/2000 olawlor Made soft links use relative pathnames instead
807 of absolute. This lets you move a charm++
808 installation without having to recompile
810 09/11/2000 olawlor Grouped commonly needed code in the new util
811 directory. Also, added pup_c a C wrapper for
813 09/11/2000 olawlor Slightly reorganized header structure. Now no
814 headers should need to be listed twice (once in
815 ALLHEADERS, again in CKHEADERS). Now headers
816 are soft-linked instead of copied. This makes
817 development much easier. Added support for the
818 new Common/util directory.
819 09/21/2000 olawlor Major reorganization of net-* codes. Now all
820 the TCP socket routines are in separate files.
821 Also combined windoes NT code with unix codes.
822 09/21/2000 olawlor Major rewrite of CCS-- underlying protocol is
823 now binary (send/recv binary data everywhere);
824 conv-host forwards requests to nodes; and
825 source has been significantly re-arranged.
826 (especially if NODE_0_IS_CONVHOST).
827 11/22/2000 milind Removed IDL translator from distribution.
828 12/01/2000 olawlor Renamed conv-host charmrun; added test for
829 script conv-host. Also added charmrun for most
831 12/17/2000 milind Moved List related data structures into
832 cklists.h in util. Removed most of the redundant
833 list implementations.
834 12/20/2000 gzheng SUPER_INSTALL: format the output of list of
835 versions and make the help page fit into one
837 12/24/2000 milind Added test-{charm,converse,ampi,fem} targets to
839 12/28/2000 milind net-sol-smp now uses pthreads.
840 01/29/2001 olawlor Merged windowsNT and unix build procedures by
841 basing the Windows build on cygwin. Added
842 scripts to deal with unix and windows