Introduction
Users
Evaluation
Status
Documentation
Developers

POET

N.B. Development of POET has ceased, as has direct support of new users by the developers. A follow-on project to POET, called InDEPS, is in the works, and if you're interested in the functionality provided by POET, we suggest you visit the INDEPS website.

Introduction

POET (Portable Object-oriented Environment and Toolkit) is a framework for encapsulating parallel algorithms. In this context, a parallel algorithm is a set of user-written components which are inserted into the POET framework. POET provides services such as starting the parallel application, running components in a specified order, and distributing data among processors. POET also provides support for various sorts of stencil operations and a sparse conjugate-gradient solver.

The POET framework is an object model, implemented in C++. Each user-written component must follow the POET template interface. Once this has been done, these components are transferable from one POET application to another. All components are run in a Single Program Multiple Data (SPMD) fashion.

An application implemented in POET has two phases:

  1. A framing phase, in which the components and the links between them are defined. Each component is instantiated and linked via POET classes.
  2. An execution phase, where control is handed to the framework which drives the components to do what they have been framed to do.
These two steps may be mixed together. For example, a component can do additional framing as it executes. A component is implemented as an sExec object within POET. This object has two methods: sExec, which runs the component; and createOverlap, which serves to define the data locality requirements of this component to the framework. The data to processor mapping is created and maintained by POET on the basis of these requirements, without any explicit message-passing on the part of the component. The necessary data are made available by POET at the beginning of the component execution. Other POET objects handle the running of multiple components, conditional loops over components, etc.

Users

The principal users of POET have been the authors and other researchers at Sandia National Laboratories. Applications have been run on IBM, SGI, Sun, DEC, Linux and HP machines.

Evaluation

The lack of a working version makes a realistic evaluation of POET unfeasible.

Status

POET is not expected to see further development and is not currently being supported by the developers. We therefore do not recommend its use in new applications.

POET is not installed on NERSC machines, and a future port is unlikely. The current difficulties center around the POET's assumption of a particular Fortran/C++ interface, and the reliance on the GNU C++ compiler.

The authors of POET are working on a follow-on project called INDEPS. It is expected to provide similar functionality to POET. Whereas POET is implemented in C++, INDEPS will be Java based. We recommend that anyone interested in the POET style framework visit the INDEPS website.

Documentation

Documentation on POET is minimal. The technical report SAND93-2901, 1994, "Application of parallel object-oriented environment and toolkit (POET) to combustion problems", by R. Armstrong and R. Cline Jr., can be obtained from the Sandia Technical Library. You may also want to take a look at the InDEPS website.

Developers

POET was developed at the Sandia National Laboratories. Its principal developers were Robert Armstrong and Robert Clay.




Tools News Project Home