Release Notes: Keep Version 1.3 ------------------------------------------ Contents 1.0 Changes from prior release 2.0 Features to be deprecated in next release 3.0 Known bugs and problems ----------------------------------------- 1.0 Changes from prior release 1.1 Instantiated data types expanded. The basic Keep class templates are now instantiated for the following built-in C++ data types: int, float, double, long int, unsigned int, long double and char. 1.2 Improvement to class MotionPlanX All overloaded versions of the function CopyOnIntersection() now test for empty intersected regions. This increases efficiency by avoiding communications overhead when there is no data to move. No change in user code is required. Note however that the member function Copy() is unchanged. It remains the user's responsibility to ensure that that only valid regions are passed to Copy(). 1.2 Increased Functionality in Class Grid. Class Grid has been augmented with arithmetic/assgignment operators =, +=, -=, *= and /=. This functionality was formerly implemented in class GridBlock, which has now been deprecated. Classes dGrid and ReplicatedGrid, formerly derived from GridBlock are now derived directly from Grid. Users of classes dGrid and ReplicatedGrid from the dgrid library should see no difference and require no changes to their code. Direct reference to GridBlock or attempts to derive classes from it are no longer possible. Simply changing such references in existing code to Grid class should fix any problems. ------------------------------------------------------------------------------ 2.0 Features to be deprecated in next release The purpose of this section is to alert users to features of KeLP which will no longer be supported in future releases. Unless otherwise noted in the specific descriptions below, the changes are scheduled to take effect as of October, 2000. Writers of new applications should avoid all use of these features. Users of older KeLP applications have advance notice of necessary changes. In order to ease the transition, the next release of KeLP (version 1.4), tentatively planned for March 15, 2000, will support conditional compilation of deprecated features. Support cannot be counted on in succeeding releases and code which relies upon deprecated features may no longer work. #if defined DEPRECATED [ do it the old way] #else [do it the new way] #endif where the user can set -DDEPRECATED as a compiler option. 2.1 Cast of XArrayX to FloorPlanX to be deprecated. This feature was at best confusing and at worst unsafe. In particular, this means that it will no longer be possible to pass an XArray as an argument to the Copy member functions of class MotionPlan, which are declared to take FloorPlanX arguments. For example, code which formerly looked like void initMover(XArray2 >& X, MotionPlan2 &M ) { int i; int j; for (indexIterator1 ii(X); ii; ++ii) { i = ii(0); Region2 inside = grow(X(i).region(), -1); for (indexIterator1 jj(X); jj; ++jj) { j = jj(0); if (i != j) M.CopyOnIntersection(X,i,X,j,inside); } } } would be replaced by void initMover(FloorPlan2& X, MotionPlan2 &M ) { int i; int j; for (indexIterator1 ii(X); ii; ++ii) { i = ii(0); Region2 inside = grow(X(i), -1); for (indexIterator1 jj(X); jj; ++jj) { j = jj(0); if (i != j) M.CopyOnIntersection(X,i,X,j,inside); } } } Since the application programmer will typically have built the XAarray in question as "XArrayX(FloorPlanX F)" this should present no difficulty. If the call is so deeply nested that this is terribly inconvenient then explicit use of access functions is encouraged: -------------------------------------------------------------------------- void initMover(XArray2 >& Y, MotionPlan2 &M ) { FloorPlan2 X = Y.floorplan(); ... ------------------------------------------------------------------------ 2.2 Change in argument list to MoverX Currently , Mover is declared with two type parameters: MoverX< GridX, type >. The second argument will be unnecessary in, and interferes with generalizations planned for, future releases. Therefor in future versions of KeLP MoverX will take only one type parameter, e.g. MoverX< GridX >. This change effects only the declaration of the mover, e.g. in // Create a Mover and execute the MotionPlan Mover3, double> Mv(X,X,Plan); Mv.execute(); the middle line would change to Mover3 > Mv(X,X,Plan); Continued support for the older version cannot be relied on beyond the date given in the introduction to this section. 2.3 for_* macros deprecated. This refers to for_all, for_i, and similar macros. These macros are obsolete and have been replaced with *Iterator classes (NodeIterator, IndexIterator). See section 8 of the Users Guide and section 3 of the Reference Manual for details. 2.4 Union operator deprecated. 3.0 Known bugs and problems We are aware of the following problems in the current KeLP release. Fixes will be made available as soon as possible. 3.1 dGrid single argument constructor doesn't work Objects declared using the constructor dGrid3(const Decomposition3& D, const int alloc=TRUE): XArray3 >(D,alloc), _decomp(D) {} fail, e.g. dGrid3 V(Dt); dGrid3 W(Dt); dGrid3 eTerms(Dt); won't work properly. Instead, declare empty dGrids... dGrid3 V,W; dGrid3 eTerms; ...and use the instantiate() member function. V.instantiate(Dt); W.instantiate(Dt); eTerms.instantiate(Dt); 3.3 Some example applications won't run on Cray T3E. The sample applications supplied with the KeLP package run correctly on all supported platforms (IBM SP2, SGI Origin 2000, Sun Solaris, Linux, Cray T3E) with the following exceptions: The NAS benchmarks, FT and MG, exit prematurely without error message but dumping core files. SUMMA fails in the call to the libsci routine SGEMM. SUMMA_MPI, which is written in C, not C++ gives a link error looking for libsci routines. As noted in the local README file, SUMMA requires that BLAS level 3 or a vendor supplied equivalent must be installed. 3.4 MPICH problems under Linux While this is not really a KeLP problem, KeLP is built on top of MPI so users should be alerted that there have been problems with some types of messages in MPI programs running on Linux platforms, at least with earlier versions of the Linux kernel. Users should take care that their versions of Linux and MPI are compatible.