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