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.

Pyre and Python

Pyre has been developed in Python for many reasons ranging from the technical to the aesthetic. Python is relatively easy to learn, yet powerful and efficient enough to take advantage of advanced parallel computing resources. As a result, Pyre has inherited the ability to be flexible enough to bind to rigid, expensive-to-port applications such as legacy FORTRAN codes and to serve as a meta-framework, harnessing other frameworks.

Flexibility through the Use of Scripting

Scripting enables the organization of a large number of simulation parameters and allows the simulation environment to discover new capabilities without the need for recompilation or relinking. The python interpreter uses a modern object oriented language and is robust, portable, mature, well-supported, and well-documented. It is easily extensible and has rapid application development. Support for parallel programming consists of trivial embedding of the interpreter in an MPI compliant manner and a python interpreter on each compute node. MPI is fully integrated (bindings + OO layer) and has no measurable impact on either performance or scalability.

Figure 1.3. Integrating Codes

Integrating Codes

Pyre is integrated into existing codes through relatively simple python bindings.

Python Background

An interesting, short explanation of Python is provided by the Python open source community. The following quotation from their website, http://www.python.org, also conveys some of the flavor of Python documentation and perhaps gives some insight into the open source community itself.

python, (Gr. Myth. An enormous serpent that lurked in the cave of Mount Parnassus and was slain by Apollo) 1. any of a genus of large, non-poisonous snakes of Asia, Africa and Australia that suffocate their prey to death. 2. popularly, any large snake that crushes its prey. 3. totally awesome, bitchin' language that will someday crush the $'s out of certain other so-called VHLL's ;-). Python was developed by Guido van Rossum, who named it after the classic British television comedy series Monty Python's Flying Circus.

Python is an interpreted, interactive, object-oriented programming language. It is often compared to Tcl, Perl, Scheme or Java.

Python combines remarkable power with very clear syntax. It has modules, classes, exceptions, very high level dynamic data types, and dynamic typing. There are interfaces to many system calls and libraries, as well as to various windowing systems (X11, Motif, Tk, Mac, MFC). New built-in modules are easily written in C or C++. Python is also usable as an extension language for applications that need a programmable interface.

The Python implementation is portable: it runs on many brands of UNIX, on Windows, DOS, OS/2, Mac, Amiga... If your favorite system isn't listed here, it may still be supported, if there's a C compiler for it. Ask around on comp.lang.python - or just try compiling Python yourself. Python is copyrighted but freely usable and distributable, even for commercial use.

Python Resources

There are many excellent resources available for learning and using Python.