| POOMA: A C++ Toolkit for High-Performance Parallel Scientific Computing | ||
|---|---|---|
| Prev | Appendix B. DANGER: Overview of POOMA Sources | Next |
The POOMA Toolkit files are divided into directories according to their purposes. See Table B-1. In that table, directories and files are categorized:
introductions to the toolkit, its installation, and its use
source code for POOMA programs. POOMA users can read these programs as examples how to use the toolkit.
user-level explanations of how to use the toolkit's features
C++ files implementing the toolkit. In their programs, users may need to refer to header files. Otherwise, these files are mainly read by developers. Source code subdirectories are described in Table B-2.
used by POOMA developers when writing and preparing toolkit files
used when converting the toolkit source code into an executable library. This process can involve architecture- and machine-dependent code.
The src directory, containing source code, contains many files so it is described in the separate table Table B-2. CVS subdirectories are scattered throughout the source code. The Concurrent Versions System is a version control system. The subdirectories have files storing the CVS state. Ignore these subdirectories.
Table B-1. Toolkit Directories and Files
| directory or file | type | contents |
|---|---|---|
| benchmarks | user code | source code for programs used to test the toolkit's speed |
| bin | development | scripts useful for creating releases |
| config | installation | files used to configure the library |
| config/arch | installation | machine- and compiler-specific configuration files |
| config/Shared | installation | machine-independent configuration and make files |
| configure | installation | script used by user to configure the library |
| docs | documentation | documentation describing using the toolkit |
| docs/manual | documentation | documentation describing using the R2.4 toolkit |
| examples | user code | source code for programs used to illustrate using the toolkit |
| ide | development | files to support using integrated development environments to develop POOMA |
| lib | installation | directory where POOMA library is placed |
| LICENSE | use | description of rules for using the POOMA Toolkit |
| makefile | installation | makefile rules to create the toolkit |
| README | use | release notes for various versions |
| scripts | installation | scripts to install POOMA and related libraries |
| src | source code | toolkit source code. See Table B-2. |
| Not all directories and files are listed. |
Table B-2. Source Code Directories (Within src)
| src subdirectory | contents |
|---|---|
| arch | files necessary for using specific architectures or compilers. Some replace missing header files. Others modify POOMA files. |
| Array | declaration and implementation of the Array container class |
| Array/tests | programs testing the Array code and features |
| CoordinateSystems | Cartesian, cylindrical, and spherical coordinate system classes useful with meshes |
| Domain | Domain declarations and implementations |
| Domain/tests | programs testing the Domain code and features |
| DynamicArray | declaration and implementation of the DynamicArray container class |
| DynamicArray/tests | programs testing the DynamicArray code and features |
| Engine | declarations and implementations of the Engine classes |
| Engine/tests | programs testing the Engine code and features |
| Evaluator | classes evaluating expressions quickly. For example, one Evaluator evaluates data-parallel expressions. |
| Evaluator/tests | programs testing the Evaluator code |
| Field | declaration and implementation of the Field container class |
| Field/DiffOps | implementation of Field stencils |
| Field/Mesh | declarations and implementations of meshes, which specify a field's spatial extent |
| Field/Relations | declarations and implementations of relations among Fields, supporting automatic computation of field values |
| Field/tests | programs testing the Field code and features |
| FileTemplates | files illustrating the usual structure of source code files |
| Functions | unsupported files currently under development |
| IO | declarations and implementation of input-output classes to store containers in files |
| IO/tests | programs testing the input-output (IO) code |
| Layout | declarations and implementations of the Layout classes, which specify the mappings between processors and container values |
| Layout/tests | programs testing the Layout code and features |
| Particles | declares and implements the Particles class, which is not currently supported |
| Particles/tests | programs testing the unsupported Particles class code and features |
| Partition | declares and implements partitions, which specify how a container's domain is split into patches for distributed computation |
| Partition/tests | programs testing partition code and features |
| PETE | implements the PETE framework |
| Pooma | header files declaring all user-level classes |
| Pooma/PETE | input files integrating POOMA containers into the PETE framework for fast data-parallel expressions |
| Pooma/tests | programs testing simple POOMA programs |
| Threads | classes integrating Smarts threads into POOMA |
| Tiny | declarations and implementations of TinyMatrix, Tensor, and Vector |
| Tiny/tests | programs testing TinyMatrix, Tensor, and Vector classes |
| Tulip | interface between POOMA and the Cheetah messaging library |
| Tulip/tests | programs testing the interface between POOMA and the Cheetah messaging library |
| Utilities | declarations and implementations of classes used throughout the toolkit |
| Utilities/tests | programs testing utility classes |
| Not all directories and files are listed. |
A filename's suffix indicates its purpose. See Table B-3. Implementations of template classes are usually stored in header files so the C++ compiler can instantiate the classes. Sometimes some of the implementation of longer functions is stored in .cc files, which are included by the preprocessor in the corresponding header files. When C++ compilers and linkers fully support template class compilation, the inclusion will no longer be necessary.
Table B-3. Filename Suffixes
| filename suffix | meaning |
|---|---|
| Source Code Files | |
| .c | C-language file, usually containing an entire C program |
| .cpp | C++-language file, frequently containing an entire C++ POOMA program. Sometimes these illustrate using POOMA or test the source code. Others contain long definitions of template class functions. |
| .cmpl.cpp | C++ class implementation file to be compiled and included in the POOMA library. Only non-templated classes occur in these files. |
| .h | C++ header file. Some are included directly in user programs. Others declare and implement classes, particularly templated classes. A few are C header files. |
| .in | PETE input file |
| .inst.cpp | preinstantiations of templated C++ classes. |
| Compilation and Execution Files | |
| .a | POOMA library |
| .mk | file containing Make rules, typically included within another makefile |
| .info | log file created when compiling POOMA source |
| Documentation Files | |
| .dsl | DSSSL stylesheet used to convert documentation in DocBook format into other formats |
| .gif | Graphics Interchange Format file containing a figure suitable for display via the WWW |
| .html | HTML documentation file suitable for display via the WWW |
| .mp | MetaPost source code for manual illustrations. |
| Portable Document Format (PDF) file, usually containing toolkit documentation | |
| .png | Portable Network Graphics file suitable for display via the WWW |
| .xml | eXtended Markup Language (XML) file, usually containing toolkit documentation |