POOMA22

所属分类:超算/并行计算
开发工具:Visual C++
文件大小:1877KB
下载次数:49
上传日期:2008-01-03 10:54:51
上 传 者jinss
说明:  强大的并行科学计算软件包,包含多种并行算法,重点推荐
(Parallel Scientific Computation, powerful software package that contains a variety of parallel algorithms, focusing on the recommendation)

文件列表:
benchmarks (0, 2000-05-10)
benchmarks\ABCTest (0, 2000-05-10)
benchmarks\ABCTest\ABC.cpp (2812, 1999-11-03)
benchmarks\ABCTest\ABC.h (10234, 1999-11-03)
benchmarks\ABCTest\ABCInC.c (2476, 1999-11-03)
benchmarks\Acoustic2d (0, 2000-05-10)
benchmarks\Acoustic2d\Acoustic2d.cpp (2927, 1999-11-03)
benchmarks\Acoustic2d\Acoustic2dInC.c (2900, 1999-11-03)
benchmarks\Acoustic2d\Acoustic2dInC.h (7913, 1999-11-03)
benchmarks\Acoustic2d\Acoustic2dInCppTran.h (6694, 1999-11-03)
benchmarks\Acoustic2d\Acoustic2dInP2.h (6341, 1999-11-03)
benchmarks\BlitzLoops (0, 2000-05-10)
benchmarks\BlitzLoops\Loop18.cpp (3056, 1999-11-03)
benchmarks\BlitzLoops\Loop18InC.c (2363, 1999-11-03)
benchmarks\BlitzLoops\Loop18InC.h (4847, 1999-11-03)
benchmarks\BlitzLoops\Loop18InCppTran.h (4453, 1999-11-03)
benchmarks\BlitzLoops\Loop18InP2.h (4347, 1999-11-03)
benchmarks\Doof2d (0, 2000-05-10)
benchmarks\Doof2dField (0, 2000-05-10)
benchmarks\Doof2dField\cpptran1.cpp (2176, 1999-11-03)
benchmarks\Doof2dField\cpptran2.cpp (2194, 1999-11-03)
benchmarks\Doof2dField\Doof2dField.cpp (2637, 1999-11-03)
benchmarks\Doof2dField\Doof2dField.h (13734, 1999-11-03)
benchmarks\Doof2dField\pooma1.cpp (2165, 1999-11-03)
benchmarks\Doof2dField\pooma1c.cpp (2179, 1999-11-03)
benchmarks\Doof2dField\pooma2.cpp (2346, 1999-11-03)
benchmarks\Doof2dField\pooma3.cpp (2203, 1999-11-03)
benchmarks\Doof2dGMP (0, 2000-05-10)
benchmarks\Doof2dGMP\cpptran1.cpp (2178, 1999-11-03)
benchmarks\Doof2dGMP\cpptran2.cpp (2196, 1999-11-03)
benchmarks\Doof2dGMP\Doof2dGMP.cpp (2639, 1999-11-03)
benchmarks\Doof2dGMP\Doof2dGMP.h (13720, 1999-11-03)
benchmarks\Doof2dGMP\pooma1.cpp (2167, 1999-11-03)
benchmarks\Doof2dGMP\pooma1c.cpp (2181, 1999-11-03)
benchmarks\Doof2dGMP\pooma2.cpp (2346, 1999-11-03)
benchmarks\Doof2dGMP\pooma3.cpp (2205, 1999-11-03)
benchmarks\Doof2dUMP (0, 2000-05-10)
benchmarks\Doof2dUMP\cpptran1.cpp (2174, 1999-11-03)
benchmarks\Doof2dUMP\cpptran2.cpp (2192, 1999-11-03)
benchmarks\Doof2dUMP\Doof2dUMP.cpp (2637, 1999-11-03)
... ...

/******************************************************************* * * * POOMA Release Notes * * Version 2.2.0 * * * ******************************************************************* * For installation help, see the relevant INSTALL.* file * * * * For licensing info, see LICENSE (or LICENSE.TXT on Windows) * * * * For the people who created POOMA, see CREDITS (CREDITS.TXT) * * * * For a tutorial on using POOMA, open html/index.html in your * * web browser. * * * * For more information, including updates and new releases, * * see http://www.acl.lanl.gov/pooma * * * * For other neat software packages from the ACL, * * see http://www.acl.lanl.gov/software * * * * For help, reporting bugs, and making suggestions, please * * send e-mail to pooma@acl.lanl.gov * *******************************************************************/ //////////////////////////////////////////////////////////////////// RELEASE NOTES v2.2.0 //////////////////////////////////////////////////////////////////// OBJECT I/O ---------- Binary I/O is now experimentally supported. The first level of the design is comprised of a set of classes called the storage classes that are transparent to users. They organize any given storage resource into byte records. The system does not necessarily know the internal structure of a byte record, only its length in bytes. Records are elements of byte arrays. Each array is independently accessible within a storage resource and each record or element of a byte array is also independently addressable. A range of elements within a byte array can be read or written in one operation. These byte arrays are automatically extended whenever an operation writes past the current number of elements. Arrays are members of a collection called a storage set which serves as the logical interface to storage in terms of arrays. The physical storage in this implementation is a disk file, but a storage set is an abstraction barrier that need not be associated with a file in general. For example, future implementations may support storage sets based on databases or remote application resources. The second level is made up of the object storage classes. These classes view storage as a set of typed objects called an object set. Any instance of a type supported by the I/O system can be stored along with a descriptive label in one operation. Object sets can be queried to reveal the number of objects contained, the types of objects contained, the number of objects of each type, and the labels of each object. A single operation is sufficient to retrieve an object given either its name, or its instance ID which is equivalent to its position in the list of object instances for a given type. The storage of specific types is enabled by specializations of two generic classes: object serializers and object adapters. Storage adapters are currently hand-crafted, so there are only a few basic types supported at this time. This release supports standard native binary I/O. Future releases may support storage using the HDF5 format. NEW DEBUG FUNCTIONS ------------------- The POOMA PrintArray class has templated print() methods that print readable formatted output of large containers of values. It provides methods for controlling formatting parameters like the number of values per line, numeric format, and precision. The global dbprint() template functions are a procedural interface around PrintArray, used with a set of global functions for setting common formatting parameters shared by all subsequent dbprint() invocations. These are useful shorthand for ASCII output from source code, but more importantly, they provide a means to set up nontemplate output functions callable interactively from within a debugger. This is helpful for debugging POOMA programs by examining values from Arrays and other containers. NEW BUILD OPTIONS ----------------- The POOMA 2.2.0 configure script now supports the new options: --shared: create a shared version of the POOMA library, libPooma.so --static: create a static version of the POOMA library, libPooma.a (default) BUGS FIXED ---------- (1) Added missing initialize() functions to ConstField and Field. Now, there is a corresponding initialize() for every construct. The initialize() functions are written so that the code Field<...> f(args); and Field<...> f; f.initialize(args); leaves the object f in an identical state. (2) Fixed an assertion failure that resulted from retargeting component boundary conditions (e.g. created with ComponentBC<1, ZeroFaceBC>). (3) Fixed memory affinity of patches in a multi-patch array when running multithreaded. //////////////////////////////////////////////////////////////////// RELEASE NOTES v2.1.1 //////////////////////////////////////////////////////////////////// IMPROVED FIELD PERFORMANCE -------------------------- We have inlined functions related to indexing and ensured that domain calculations do not make their way into inner loops. The result is a factor of 6 speed-up in some kernels, particularly with compilers without the sophisticated optimization machinery of KCC. INITIALIZE FUNCTION BEHAVIOR ---------------------------- The Array, DiscreteGeometry, Mesh, and Field classes have been equipped with a sets of initialize() member functions that take the same arguments as constructors. The most basic usage is to initialize an object that has been build with a default constructor: Array<2> a; a.initialize(10, 10); // Create 10 x 10 array In prior POOMA versions, the initialize function could not be called with an already initialized object either from a constructor or a previous initialize() call. However, now, inialize() can be called multiple times: Array<2> a; a.initialize(10, 10); // Create 10 x 10 array a.initialize(20, 20); // Change the size of a to 20 x 20 Finally, note that since initialize() encompasses the behavior of Array's changeSize() member function, this function has been deleted. BOUNDARY CONDITIONS ------------------- POOMA 2.1.1 fixes problems associated with initializing a Field with a set of boundary conditions taken from another Field of the same type. The problem is due to the fact that, for efficiency and expressibility, boundary condition objects store a view of the Field they are to modify. Therefore, copying a BCondList from one Field to another previously resulted in the original Field continuing to be updated. This behavior was also seen with Field::makeOwnCopy(). Now, boundary conditions can be retargeted to a new Field. To support this, all concrete boundary condition classes must now supply a retarget() member function as illustrated by the code: template<> class BCond : public FieldBCondBase { public: BCond(const FieldType_t &f, const PositionFaceBC &bc); void applyBoundaryCondition(); BCond *retarget(const FieldType_t &f) const { return new BCond(f, bc_m); } private: PositionFaceBC bc_m; }; COMPRESSIBLE BRICK ENGINES -------------------------- The algorithm for attempting to compress a block has been modified. It now performs the check in two stages. First, if it has failed to compress before, it will compare the previously unequal elements to see if they are still unequal. If they are, it is done. If not, before doing the exhaustive search (comparing all elements to the first) it will check a few random values. Also, added --pooma-nocompress runtime flag. This disables compression of CompressibleBrick Engines, causing them to behave like Bricks. Useful for comparing performance (and correctness) of code that uses CompressibleBricks. GENERALIZED COMPONENT ACCESS ---------------------------- It is now possible to use the comp() member function of arrays to create views of arrays that reference members of user defined structures. For example, you can now write: struct State { double pressure; ... }; POOMA_COMPONENT_ACCESS(State,Pr,double,pressure) Array<2,State> a; a.comp(Pr()) = ...; See the code in examples/Components/Shock for an illustration. ENHANCED TENSOR FUNCTIONALITY ----------------------------- In addition to the Full class, we now provide three classes to use for the Tensor class' EngineTag parameter, representing non-full storage according to special symmetries: Symmetric, Antisymmetric, Diagonal The Antisymmetric class defines the diagonal elements to be zero, with negatively reflected values across the diagonal. Symmetric defines positively-reflected values across the diagonal, which can have nonzero elements. Diagonal defines zero everywhere except on the diagonal. Tensors declared using these EngineTag classes will only store the minimum required number of values, and use the symmetry properties to compute the reflected or zero values. Several new functions on Tensors return scalar or Tensor values. These also act on Arrays/Fields of Tensors: T trace(Tensor) - Sum of diagonal elements T det(Tensor) - Determinant of the tensor Tensor transpose(Tensor) - transpose(i,j) = input(j,i) template Tensor symmetrize(Tensor) - Applies appropriate symmetrizing operator. NEW BENCHMARKS AND EXAMPLES --------------------------- benchmarks/Doof2dField - same as Doof2dUMP except with Fields (to measure Field abstraction penalty). examples/Laplace2 - same as Laplace example except the boundary conditions are associated with the operator rather than the Field. examples/Components/Shock - example of how to use the new component access capabilities. //////////////////////////////////////////////////////////////////// RELEASE NOTES v2.1.0 //////////////////////////////////////////////////////////////////// SGI COMPILER VERSION 7.3 ------------------------ For users compiling with the native SGI C++ compiler on IRIX platforms, please note that version 7.3 of the SGI C++ compiler is required to compile POOMA II. Earlier versions do not provide the necessary language features. One problem you may encounter is that a common patch applied to the 7.3 compiler (patch 3659) actually is harmful to its health and should be removed in order to compile POOMA. NOTES ON RUNNING IN PARALLEL ---------------------------- Parallel operation using the SMARTS library is only supported on SGI computers running IRIX when compiled with the KCC compiler and SMARTS version 1.0. An upcoming release of SMARTS will include modifications to support more platforms and compilers and to improve performance. The new differential operators below are an experimental feature in POOMA 2.1.0 which currently does not work correctly with the parallel or the serial asynchronous schedulers (configure options --parallel --sched async or --parallel --sched serialAsync). Serial code should work for all engine types. These limitations will be addressed in a future version of POOMA. NEW GEOMETRY, MESH, AND COORDINATE SYSTEM CLASSES ------------------------------------------------- The POOMA 2.1.0 Field class (described below) is templated on a Geometry type. The Geometry concept provides metric and position data, and performs various geometry-specific services for Field. Currently, Pooma includes two models for a Geometry concept: o DiscreteGeometry - combines mesh and centering information o NoGeometry - only includes positions at which the field is defined DiscreteGoemetry depends on a Centering concept. Pooma II meshes (see below) do not know about centering - it enters at the geometry level. Centering is simply a mechanism to determine where the points of the Field are defined, relative to the mesh points. Pooma 2.1.0 includes the following centerings: o Cell - Field defined at cell centers o Vert - Field defined at mesh vertices o RectilinearCentering - Combination Vert/Cell centerings such as face and edge centering - Componentwise centerings, where different components of a multicomponent Field element type have different centerings o NoCentering - No centering information available. The Mesh concept provides a discrete set of points in a particular coordinate system, and can provide certain information about the mesh, such as mesh positions, spacings, cell volumes, etc. POOMA 2.1.0 includes two models for the Mesh concept: o UniformRectilinearMesh - constant spacing logically-rectangular mesh o RectilinearMesh - non-constant spacing logically-rectangular mesh The CoordinateSystem concept is used by meshes and geometries to perform various coordinate-specific services and calculations. POOMA 2.1.0 includes two models for the CoordinateSystem concept: o Cartesian - Dim dimensional cartesian system o Cylindrical (Dim == 3) o Polar (Dim == 2) o RhoZ (Dim == 2) o Rho (Dim == 1) - variations on cylindrical coordinates in different dimensions. See the tutorials for more information on using the new geometry, mesh, and coordinate system classes and concepts. NEW FIELD AND CONSTFIELD CLASSES -------------------------------- POOMA 2.1.0 introduces the Field class, which represents a set of points in a coordinate space, and a set of values defined at those points. The Field class takes a Geometry template parameter to represent the set of coordinate-space points: template class Field; The T and EngineTag parameters correspond exactly to the same template parameters in the Array class. Currently, we are only providing discrete classes to use for the Geometry parameter (see below). In these discrete cases, the elements of the Field are indexed like N-dimensional Array elements. Field has essentially all of the syntax and semantics of Array, including scalar-indexing and data-parallel expressions. The ConstField class, from which Field inherits, is a read-only version of Field. The Field::x() function returns an Array of position vectors; this is the set of coordinate-space points on which the Field is defined. (If you think of the Field like a mathematical function, Field::x() is the domain of the function; the Field element values themselves are the range.) Field supports automatic boundary conditions, via global guard-element layers; boundary-condition objects associated with the Field object fill in the guard elements to enforce various Dirichlet, Neumann, and periodic boundary conditions. To support this, the Field class for discrete geometries has two array domains, Field::totalDomain() and Field::physicalDomain(). The first of these two includes the global guard layers, if there are any. POOMA 2.1.0 provides a set of boundary-condition classes for Fields using Geometry classes based on (logically) rectilinear meshes, and provides a BCondList container for storing sets of boundary conditions to associate together with a Field or set of Fields sharing the same Geometry. These classes support boundary conditions expressed componentwise on Fields of multicomponent elemental types like Vectors or Tensors. Expressions involving Fields will automatically invoke the automatic boundary conditions associated with the Field whenever the expression tries to read from the global guard elements, and they haven't already been filled using up-to-date information. See the tutorials for more information on using the new Field class. NEW DIFFERENTIAL OPERATORS FOR FIELDS (EXPERIMENTAL) ---------------------------------------------------- POOMA 2.1.0 now includes all the POOMA R1 differential and averaging operators, with a new interface and new implementation using FieldStencil functors (also new in POOMA 2.1.0). The user interface to these is the following global templated functions: o div<>() o grad<>() o average<>() These have specializations for taking as arguments Fields on DiscreteGeometry with certain centerings relative to UniformRectilinearMesh or RectilinearMesh meshes. Each function requires the caller to explicitly specify the output-centering type, plus provide a Field as the input argument. For example: // Take the divergence of a Field F2 with some centering (Cell or // Vert, for example), and generate a Cell-centered Field F1. F1 = div(F2); The div<>() function takes as input argument a Field of Vector or Tensor elements and returns a Field of scalar or Vector elements. Input centering can be Cell or Vert, as can output centering, in any combination. The grad<>() function takes as input argument a Field of scalar or Vector elements and returns a Field of Vector or Tensor elements. Input/output centerings are any combination of Cell and Vert. The average<>() function is similar, except that it has prototypes including a 2nd argument to be used as a weighting Field for the averaging calculation. NEW PARTICLE CLASSES -------------------- A new Particles class has been added to POOMA II that can store a heterogenous set of particle "attributes" (DynamicArray objects that each store a list of data for some quantity) that are kept synchronized by a user-selected particle layout. Particles objects also can store a list of boundary conditions for the particle attributes. POOMA 2.1.0 includes the following particle layout classes: o SpatialLayout: Keeps particles distributed among a set of patches based on some "position" attribute, in conjunction with a provided Geometry and patch layout. o UniformLayout: Keeps particles distributed among a set of patches so that each patch stores an equal number of particles (or as close as is possible). See the tutorials for more information on using the new Particles class. NEW PARTICLE BOUNDARY CONDITION CLASSES --------------------------------------- POOMA 2.1.0 provides generalized boundary conditions or filters that can be applied to Particle ... ...

近期下载者

相关文件


收藏者