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