2. Obtaining, Using, and Modifying POOMA

The POOMA Toolkit is open-source software. Anyone may download, read, redistribute, or modify the POOMA source code. Here we briefly describe how to download, configure, and compile the POOMA Toolkit for UNIX operating systems. Instructions for Microsoft Windows and Mac users as well as more details appear in the subsequent chapter. Those wanting to run distributed POOMA programs should also read the subsequent chapter.

Obtain the POOMA source code pooma-2.3.0.tgz from the POOMA download page (http://pooma.codesourcery.com/pooma/download) available off the POOMA home page (http://www.codesourcery.com/pooma/pooma/). The "tgz" indicates this is a compressed tar archive file. To extract the source files, use tar xzvf pooma-2.3.0.tgz. Move into the source code directory pooma-2.3.0 directory; e.g., cd pooma-2.3.0.

Configuring the source code determines the file and program names needed for compilation. First, determine a configuration file in the config/arch/ directory corresponding to your operating system and compiler. For example, LINUXgcc.conf supports compiling under a Linux operating system with g++, while SGI64KCC.conf supports compiling under a 64-bit SGI Irix operating system with KCC. Next, configure the source code:


./configure - -arch LINUXgcc - -opt - -suite LINUXgcc-opt
. The architecture argument to the - -arch option is the name of the corresponding configuration file, omitting its .conf suffix. The - -opt indicates the POOMA Toolkit will contain optimized source code, which makes the code run more quickly but may impede debugging. Alternatively, use the - -debug option which supports debugging. The suite name can be any arbitrary string. We chose LINUXgcc-opt to remind us of the architecture and optimization choice. configure creates subdirectories named "LINUXgcc-opt" for use when compiling the source files. Comments at the beginning of lib/suiteName/PoomaConfiguration.h record the configuration arguments.

To compile the source code, set the POOMASUITE environment variable to the suite name and then type make. To set the environment variable for the bash shell use


export POOMASUITE=suiteName
substituting the suite name's suiteName. For the csh shell, use

setenv POOMASUITE LINUXgcc-opt
Issuing the make command compiles the POOMA source code files to create the POOMA library. The POOMA makefiles assume the GNUMake is available so substitute the proper command to run GNUMake if necessary. The POOMA library can be found in, e.g., lib/LINUXgcc-opt/libpooma-gcc.a.

Anyone may modify the POOMA source code. If an application requires a specialized container not already available, any programmer may add it. Any programmer can extend it to solve problems in previously unsupported domains. Companies using the toolkit can read the source code to ensure it has no security holes. It may be downloaded at no cost and used for perpetuity. There are no annual licenses and no on-going costs. Users are guaranteed the software will never disappear. In summary, the POOMA Toolkit is low-risk software.