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