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