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