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