Please note: This documentation is very dated and should be treated as an old draft. Among the major updates as of 8/2005 are a jump from version .6 to .8, the renaming of staging to launcher.

Chapter 1. Pyre in a Nutshell

Table of Contents

Introduction to Pyre
The Pyre Framework
Pyre is a Software Architecture
Pyre is a Multi-layered Architecture
Pyre and Python
Flexibility through the Use of Scripting
Python Background
Python Resources
Pyre Users
Visiting Scientist
Instrument Specialist
Expert Scientist
Analysis Expert
Software Integrator
Framework Maintainer
Pyre Conventions
Naming
File Organization and Exceptions
Constructors and Data
Public vs. Private Notation
Basic Data Members
Controlled Data Member Access
Using the Pyre Inventory

Introduction to Pyre

Pyre is not an acronym. It's not a combustible, either. It's a 21st century software framework for high performance computing. Written in Python, Pyre is an extensible, object-oriented framework for specifying and staging complex, multi-physics simulations. It includes support for remote monitoring and visualization. With Pyre, you do not need to be fluent in FORTRAN or C to harness the power of massively parallel resources.

Pyre, which has the ability to utilize code written in other languages, provides a level of transparency that allows scientists to focus on their research rather than being distracted by computational details. However, while Pyre will enable the average user, it was also designed not to hinder expert users, offering powerful, flexible development features.

Pyre provides a software framework, or environment, in which the assorted codes can coexist. It was designed to solve the types of compatibility issues run rampant in scientific computing. The framework can utilize codes written in Fortran, C, or C++, and produces a veneer that permits access to scientific computation without the user having to be a software engineer. Pyre also reduces the risk that changes in one code may produce unexpected results in another code.

Very Brief History

Michael Aivazis of the Center for Advanced Computing Research at Caltech began coding Pyre in 1998. As of September 1, 2003 shows Python consists of at 1300 classes and 70,000 lines of code with C++ having 30,000 lines of bindings and infrastructure. The largest run to-date was performed on the US Department of Energy's Nirvana: 1764 processors, 2.7 mel solid fluid, 256x256x512 fluid, approximately 3,000 timesteps/24 hours, and approximately 1.5 terabytes of data.

Pyre development has been funded by the Department of Energy's Advanced Simulation and Computing program and the National Science Foundation's Information Technology Research (ITR) program (grant #0205653). Development is housed at Caltech's Center for Advanced Computing Research.

Pyre is Neither Pythia Nor an Acronym

There has been some confusion over the distinction between Pythia and Pyre. Pythia is a larger collection of tools that includes Pyre.

Pyre was never intended to be an acronym, though various people have extracted one from a PYthon fRamEwork, PYthon Run-time Environment and the PYre Research Environment.

Figure 1.1. Pyre vs. Pythia

Pyre vs. Pythia
Pythia refers to the Pyre framework and a collection of packages that interact with it, such an interface to the ACIS solid modeling package.