Next: Pn-Pz
Up: Linux Software Encyclopedia
Previous: On-Oz
  Contents
Last checked or modified: Oct. 28, 1998
[home /
linux ]
CATEGORIES |
NEW
Aa-Am |
An-Az |
Ba-Bm |
Bn-Bz |
Ca-Cm |
Cn-Cz |
Da-Dm |
Dn-Dz |
Ea-Em |
En-Ez |
Fa-Fm |
Fn-Fz |
Ga-Gm |
Gn-Gz |
Ha-Hm |
Hn-Hz |
Ia-Im |
In-Iz |
Ja-Jm |
Jn-Jz |
Ka-Km |
Kn-Kz |
La-Lm |
Ln-Lz |
Ma-Mm |
Mn-Mz |
Na-Nm |
Nn-Nz |
Oa-Om |
On-Oz |
Pa-Pm |
Pn-Pz |
Qa-Qm |
Qn-Qz |
Ra-Rm |
Rn-Rz |
Sa-Sm |
Sn-Sz |
Ta-Tm |
Tn-Tz |
Ua-Um |
Un-Uz |
Va-Vm |
Vn-Vz |
Wa-Wm |
Wn-Wz |
Xa-Xm |
Xn-Xz |
Ya-Ym |
Yn-Yz |
Za-Zm |
Zn-Zz |
- Paai's Text Utilities
- A collection of programs and scripts for manipulating text files.
They were written by a chap engaged in information retrieval and
corpus linguistics.
All of them depend on the availability of a weighted index which can
be generated by either the SMART package
or by the discrim program listed.
The programs comprising PTU are:
- chain, which tracks chains of words in texts;
- sent_wgt, which takes a weights file and a text file
and prints sentence weights;
- sent_til, which prints sentence number and 2-sentence
similarities;
- discrim, which computes the discrimination value of words
in text files;
- bigrams, which computes the approximate mutual information
for bigrams;
- listwords, which creates lists of words from text files;
- matrix, which creates a cross-tabulated file from a
SMART index file;
- wordsel, which extracts word-file combinations from a
cross-referenced file;
- arg-expand, which expands a range, e.g. a,c-f,..., to
a,c,d,e,f,...'
- arfftosvd, which converts an arff file to the input format
of svdinterface;
- de-matrix, which inverts the effects of matrix;
- docvec, which creates a vector representation of documents
in the Reuters database;
- rocchio, which computes the centroid of positive and
negative classes;
- simil, which compares every vector in a file with a
query and writes the results;
- smallsmart, which computes word-document weights according
to the atc variant of SMART;
- smarttosvd, which converts a three column index to the sparse
matrix format used for svd;
- splitname, which cuts a filename in substrings;
- svdtoarff, which converts the output of svdinterface to a
rectangular interface; and
- doenuplot, a simple front-end for Gnuplot.
A source code distribution of PTU is available.
The programs are written in C and in shell scripts and were developed
on a Linux Intel box.
All are documented in individual man pages.
[http://pi0959.kub.nl:2080/Paai/Publiek/]
- Pacco
- Pavia's Active Component Compound
Objects is an object-based
scripting language
approach to data processing
which is an extension of Tcl and a set
of widgets which extend the Tk toolkit
to support object visualization.
The features of Pacco include:
- a highly dynamic environment where new processing functions or
new types of objects can be auto-loaded at run-time;
- a two-language approach so a command language (Tcl) can be used
for most of the work while critical details can be programmed in C;
- an object model where complex objects can be specified and
updated at run-time by grouping basic components;
- the seamless blending of the programming model for data
processing with the model for the graphical interface;
- access to low-level features in a high-level way for the easy
creation of shared or memory-mapped objects;
- the smart loading of files in foreign formats; and
- object visualization at different levels of customization from
highly automated to highly configurable.
A generic Pacco viewer (gpv) has been written using the
library and is additionally available.
The source code for Pacco is available.
Installation and use require Tcl 7.3 or later and Tk 3.6 or
later, depending upon the version of Pacco which is used.
The package is documented online and in files included in
the distribution.
[http://iride.unipv.it/pacco/Index.html]
- Pack
- A replacement for /bin/install that allows for later uninstallation.
Pack logs all files installed during an install process into a
user-specified package log. This allows it to later automatically
remove any files installed with a given package.
This is compatible with GNU install since it is a wrapper
around that program that calls it.
[http://www.linuxos.org/Pack.html]
- package
- A skeleton framework into which source trees can be incorporated to
produce releasable packages.
This contains a general purpose, self-regenerating
makefile and several maintenance scripts to make dependences,
write rules for code modules, and index the code.
[http://www.cus.umist.ac.uk/~ivarch/linux/package/]
- packaging tools
- Packaging or archiving and related software include:
- packmon
- A security program that monitors and summarizes
network traffic. It does this by placing the network interface into
promiscuous mode and capturing all packets. Each packet is examined
and categorized by Ethernet packet type,
IP protocol number,
TCP/UDP port number, and
multicast address. The total number of bytes including all headers
is record for each packet for each category into which it fits.
Monitoring is performed during intervals at the end of which a counter
record is written to a log file. One should be fairly warned that this
generates about 24 Mb of data per data.
A source code distribution is available which is documented in
a man page.
[http://www.ers.ibm.com/~davy/software/packmon.html]
- PACT
- The Portable Application Code
Toolkit is a comprehensive,
integrated, and portable software development environment created
for applications having unique requirements not met with available
software. It defines a single, high-level programming interface
that shields developers from different hardware architectures and
operating systems. PACT is ideal for developing portable
numerical simulation, applied science and engineering software,
with such features as:
- a comprehensive set of tools for developing
portable applications,
- rapid prototyping,
- portable and efficient binary data handling,
- a graphics system interface to several
systems (X Windows, QuickDraw, DOS, PostScript,
and CGM),
- support for developing customizable GUIs,
- portable interprocess communication
and control for single CPUs, networks and parallel machines,
- a portable mathematics library,
- extensive support for the generation,
runtime, and post-processing phases of numerical simulation codes,
- a portable Scheme dialect for user extensibility,
- extensive signal processing functionality,
- portable and high-level color graphics rendering, and
- tools for browsing, intelligent
comparison, and graphical display of the contents of binary data
and picture files.
The component parts of PACT are:
- PANACEA, a library of routines to handle data flow controls, I/O
mechanisms, and database management issues which are generic
to all simulation codes;
- PDBLib, a library of file management routines used for storing
and retrieving data in a portable format, i.e. PDB;
- PDBDIFF, a tool for comparing the contents of two PDB and displaying
the differences;
- PDBView, a tool for interactively browsing
through a PDB file displaying
the contents graphically or textually;
- PGS, an application program interface (API) for graphics which is
independent of the underlying host graphics system which supports
line and text drawing primitives, line and text attributes, bit
maps for handling images, and several rendering algorithms;
- PML, a Portable Mathematics Library containing many math routines
such as equation solvers as well as structure definitions and
related functions provided to aid C programmers in organizing
computations in a mathematical way;
- PPC, a Portable Process Control library to execute and communicate
with other processes in environments which permit such operations;
- SCORE, the core foundation of PACT containing functions to smooth
over differences between different C implementations as well as
several function groups which are used extensively throughout the
system;
- SX, the PACT implementation of the Scheme
language; and ULTRA, a program for the presentation, manipulation,
and analysis of 1D data sets, i.e. X-Y pairs.
The source code is available and has been
tested on AIX, HP-UX, Irix, Linux, MAC, OSF, SunOS, Ultrix and
Unicos systems. A huge amount of documentation is available in
the form of user manuals for all of the PACT program components
available in both PostScript and HTML format.
[http://www.llnl.gov/def_sci/pact/pact_homepage.html]
- PADE
- The Parallel Applications Development
Environment is a system for facilitating the development
of parallel applications for heterogeneous networked
computers. It can employ any standard message-passing library
for interprocessor communications, but since its main purpose
is development on heterogeneous platforms the current versions
uses the PVM message passing library.
It provides a single GUI which incorporates all of
the essential tools for the development of parallel applications.
PADE incorporates a program organizer, a parallel make utility,
utilities for running PVM programs,
access to standard editors, debuggers, and performance monitors,
and a graphical interface to the structure of the virtual
machine.
The features of PADE include:
- starting a project either from scratch or by reading a
configuration file saved from a previous run;
- collecting all the data required to send files to all specified
nodes of the virtual machine;
- allowing the user to edit any specified source file on the
development host;
- starting PVM;
- saving project data in a configuration file;
- creating a PVMmake configuration file containing the files and
commands to send to each node;
- executing programs and UNIX commands; and
- providing for the smooth completion of a program, e.g. terminating
stray spawned processes and cleaning up temporary files on each node.
The source code for PADE is available.
The installation and use of this on a UNIX/X11 development
host also requires PVM
and Tcl/Tk.
The documention consists of user's and installation
manuals available in HTML and PostScript format.
[http://www.itl.nist.gov/div895/pade/]
- PadFEM
- An object-oriented environment supporting and implementing parallel
adaptive finite element simulations in 2- and 3-D.
PadFEM includes preprocessing GUIs based on both Tcl/Tk
and Java, quadtree/octree-based mesh
generators for 2- and 3-D arbitrary domains,
mesh partitioning algorithms, different solvers,
error estimators, and mesh refinement and load balancing algorithms.
An Xlib-based GUI called XFem is provided
for monitoring, debugging, and postprocessing in 2-D.
A 3-D version used OpenGL.
The parallelization model used by PadFEM is SPMB based on mesh
partitioning. The object-oriented data structure automatically
generates halo elements to provide one-element-wide virtual overlap
at inner boundaries. Adaptivity is supported by functions for
inserting nodes, edges, faces and elements.
Load balancing algorithms use built-in procedures to transfer
elements. Included solvers include multigrid, conjugate gradient,
and domain-decomposition based preconditioned conjugate gradient
solvers.
The FEM module allows the solution of stationary and nonstationary
Poisson equations with mixed boundary conditions, and will soon
(5/98) have the capability of solving the Navier-Stokes equations.
A distribution is not available as of 5/98, but is promised as
soon as the documentation is considered sufficient for general
release.
[http://www.uni-paderborn.de/cs/padfem/]
- Pad++
- A package which explores multiscale interfaces, i.e. those in
which zooming and panning are a fundamental part of the user's interaction
with the computer.
Zooming and panning are powerful visualization tools for any kind
of hierarchical data, i.e. nested details can be shown at a smaller
scale to show their relationship to large objects and the zoomed
upon to see their details.
They are also techniques that can be applied to file and Web
browsers wherein subdirectories or subdocuments can be preserved
as one navigates below or above them.
Pad++ has capabilities other than just panning and zooming, e.g.
portals or holes through which other regions on the same or another
Pad++ surface can be viewed, turning any object into a hyperlink,
making objects sticky so they ``stick'' to the surface of the
glass and remain stationary while the rest of the objects on the
Pad++ surface move around (which can be used to create automatic
hyper-buttons which float above the Pad++ surface), and
portal filters (or magic lenses) which filter what is seen
through them.
The Pad++ distribution consists of C++ code implementing
a Tcl/Tk Pad++ widget and a Paddraw
application which uses the widget.
A version of the Tcl wish shell with Pad++ built-in can be
compiled and used to create zoomable interfaces.
It is available as source code or in binary format for
SGI IRIX, IBM AIX, Sun SunOS and Solaris, and Linux Intel platforms.
Further work is being done on a Pad++ Web browser, creating
Pad++ GUI components, developing Pad++ applications for understanding
large datasets, and more.
Manuals for both Pad++ and Paddraw are available online and as
helper applications within the software.
[http://www.cs.umd.edu/hcil/pad++/]
- PADRE
- A C++ class library supporting distributed
data management and communication that provides for various distribution
mechanisms via underlying distribution libraries.
PADRE seeks to provide a uniform distributed data management interface
in the presence of a multiplicity of distribution libraries,
a choice of communication libraries,
a choice of execution models,
varied computational/communication patterns, and
a variety of architectures.
It also enables better performance than can be obtained when restricted
to the use of a single distribution library since it supports the
simultaneous use of more than one such library.
[http://acts.nersc.gov/padre/main.html]
- paintlib
- A C++ class library for image coding and manipulation.
It supports the PNG, TGA, TIFF, JPEG/JFIF, Windows BMP, and Mac PICT formats.
The PNG, TIFF, and JPEG decoders are based on libpng, libtiff, and libjpeg,
respectively. Data source and destination formats can be tailored as necessary.
Additionally, format-independent but fast bitmap manipulation classes
are available.
A source code distribution is available.
[http://user.cs.tu-berlin.de/~uzadow/paintlib/]
- paleotec
- A set of thin-plate and thin-shell
finite element programs that can be
used to model the deformation of the lithosphere, formulate tectonic
hypotheses, fit geodetic data, estimate long-term seismic hazards,
study plate rheology, or for teaching purposes.
The rheology uses in anelastic and the programs incorporate frictional
plasticity and fault sliding and/or power-law dislocation creep and/or
linear Newtonian viscosity depending on local conditions.
The isostatic approximation is used for the vertical equilibrium
component, and the vertical normal stress estimated as lithostatic.
The paleotec programs differ from the related neotec
package in that they perform historical simulations in which finite
strain accumulates for millions of years.
A deforming thermal model is incorporated, and distinct grids for the
crust and mantle layers are used since these can become detached in
some orogenies.
The primary program in this package is LARAMY, a program created
to permit simulations of continental deformation in which a crust of
either one or two rheological layers (either one of which may enclose
the brittle-ductile transition) overlies a mantle lithosphere
and/or fluid asthenosphere and/or subducting slabs.
Several other analysis and plotting programs are also contained
within the package, although most of DOS/Windoze specific and
therefore of lesser interest to those on UNIX platforms.
Most of the paleotec programs are written in
Fortran 77 or 90, although some of the
graphics programs are written in the sort of weird languages you
might find on DOS/Windoze platforms since they're developed on
such things. There may also be the odd call or two to IMSL
routines here and there for solving various equation systems.
Documentation can be found online as well as in a series of
papers by the author.
See Bird (1999).
[ftp://element.ess.ucla.edu/paleotec/]
- Paloma
- A program to manage a database of digital music files and allow their
retrieval and playback in many ways.
It works with music files in any format, and formats can be freely
intermixed.
Paloma is a virtual CD player that adds the functionality of managing
a music collection in a relational database.
This allows the playing of all songs, e.g. by a certain artist,
with a given word in the title, of a certain length, etc.
A source code distribution is available.
[http://www.cs.fsu.edu/~rose/paloma/paloma.html]
- PAM
- Pluggable Authentication Modules is flexible
mechanism for authenticating users.
This is basically a scheme
that allows authentication methods and requirements
to be changed on the fly by encapsulating them in modules that are
compiled separately from the base PAM library and plugged into it
at runtime.
The programs involved in authentication (e.g. login, ftpd, etc.)
need to be modified for the PAM library, but this modification needs to
be done only once for all present and future pluggable modules to be
able to work with those programs.
The development was motivated by the use of methods other than
password entry for authentication, e.g. hardware devices such as
smartcards, etc.
Some of the modules to be found in the PAM source distribution include:
- pam_cracklib, for checking the strength of new passwords;
- pam_deny, for denying all forms of access;
- pam_desgold, for use with the Enigma Logic DESGold smart card;
- pam_ftp, for use with FTP daemons;
- pam_kerberos, for use with Kerberos;
- pam_limits, for setting resource limits for a service;
- pam_listfile, authenticates users based on the contents of
a specified file;
- pam_radius, for performing RADIUS
authentication;
- pam_rhosts, for rhost verification;
- pam_skey, for S/Key authentication; and
- pam_time, for authorization based on time of login.
The December 1997 issue of the
Linux Journal contains an
article about PAMs.
[http://www.us.kernel.org/pub/linux/libs/pam/]
- PAMELA
- PerformAnce ModEling LAnguage is
a project to develop a modeling methodology which yields fast,
parameterized performance models of parallel programs running
of shared- and distributed-memory machines.
PAMELA is also a performance simulation language which supports
a procedure-oriented modeling paradigm, i.e. the application and
machine are modeled in terms of a PAMELA source description and
then a compile-time analysis method is used in which a PAMELA
model is automatically compiled into an explicit analytical
performance model. This method allows low cost and fully
parameterized performance models to be derived which can be
used for automatic system optimization and scalability analysis.
A PAMELA compiler is available which translates PAMELA models
to C which is linked to a PAMELA run-time system library, a
simple, standalone, discrete-event library based on light-weight
threads.
The compiler translates PAMELA models to both analytic
performance models and simulation programs.
The compiler is written in ANSI C and can be compiled on
generic UNIX platforms with an appropriate compiler.
The system is documented in a set of technical reports
available in PostScript format.
[ftp://dutepp0.et.tudelft.nl/pub/gemund]
[http://dutepp0.et.tudelft.nl/~gemund/Pamela/pamela.html]
- PAML
- The Phylogenetic Analysis by Maximum
Likelihood package is for the phylogenetic analyses of
DNA or
protein sequences using the method of maximum likelihood (ML).
It can be used to estimate the branch lengths in a phylogenetic
tree and model parameters in the evolutionary model such as
the transition/transversion rate ratio, the shape parameter of
the gamma distribution for variable evolutionary rates among sites,
and rate parameters for different genes.
It can also be used to test hypotheses concerning sequence
evolution, calculate substitution rates at sites, reconstruct
ancestral nucleotide sequences, simulate nucleotide sequence
data sets, and reconstruct phylogenetic trees via maximum
likelikhood and Bayesian methods.
The programs in the PAML package are:
- baseml, for ML analysis of nucleotide sequences, estimation
of tree topology and branch lengths and substitution parameters
under a variety of nucleotide substitution models, constant or
gamma rates for sites, etc.;
- codorml, for ML analysis of protein-coding DNA sequences
using a codon-based model, calculation of the codon-usage table,
and estimation of synonymous and nonsynonymous substitution rates;
- aaml, for ML analysis of amino acid sequences under several
amino acid substitution models, constant or gamma-distributed rates
among sites, among-gene and within-gene variation of substitution
rates, etc.;
- pamp, for parsimony-based analyses for a given tree topology,
estimation of the substitution pattern, estimation of the gamma
parameter for variable rates among sites by the method of moments, etc.
- mcmctree, for Bayesian estimation of phylogenies using DNA
sequence data and Markov chain Monte Carlo calculation of posterior
probabilities of trees; and
- listtree, for listing all rooted and unrooted trees for a given
number of species, generating random trees with branch lengths from
birth-death process with species sampling, calculating tree bipartition
distances, etc.
A source code distribution of PAML is available.
All programs are written in ANSI C and should be portable to any
platform with an appropriate compiler.
The documentation is, unfortunately, in Microshaft Word format.
[http://abacus.gene.ucl.ac.uk/ziheng/paml.html]
- PANDA
- A project to produce new data management techniques for
I/O intensive applications that will be useful in high performance
computing. A specific task is to examine the problem of efficient
support for applications that make use of extremely large
multidimensional arrays on secondary storage. The goals of the
project are to provide simpler and more abstract interfaces to
application programmers, to produce more advanced I/O libraries
supporting efficient layout alternatives for multidimensional arrays
on disk and in main memory, and to support high performance
array I/O operations.
A source code for PANDA, written in C++, is available and can
be compiled and used on distributed memory parallel architectures,
networks of workstations, and sequential workstations. Of chief interest
to Linux users is that it currently runs on the UNIX file system
using the MPICH implementation of the
MPI message passing library.
The documentation is available separately in PostScript format.
See also HDFNOW.
See Seamons and Winslett (1996).
[http://drl.cs.uiuc.edu/panda/]
- Pandora
- A package which lets the managers of Majordomo
mailing lists subscribe and unsubscribe users, manage archive files,
and change list configurations via the Web.
Pandora is designed to be usable at a screen size as low as
640x480 as well as with Lynx. It makes
extensive use of tables, although non-table users can still get
a clear and readable display. The package is highly configurable
including such things as syslog levels, page coloring, menu
options, computer aliasing, and more.
[http://faculty.ed.umuc.edu/pandora/index.html]
- Pango
- An open source framework for the layout and rendering of
internationalized text.
Pango uses Unicode for all of its encoding,
and will eventually support output in all the major languages of the world.
The design goals are modularity, font system and tookit independence,
comprehensiveness and quality.
[http://www.pango.org/]
- Panorama
- A framework for creating, rendering and processing 3-D images that
can read a description from a file in any of several supported
scene formats and output an image file into any of several graphics
formats.
Panorama is intended to become a complete system with several
supported input and output formats and renderers.
The features of Panorama include:
- a plug-in architecture in which components are loaded as needed
and which is easily extensible;
- an object-oriented scene description language with classes,
inheritance and other OO features (which is itself a plug-in);
- support for ray tracing with other rendering methods to be
added;
- a postprocessing system that lets filters be applied to images
after their generation;
- an object filter attribute in each object that lets a filter
be specified for application on an object basis; and
- a bidirectional scattering distribution function (BSDF) for materials
that encapsulates their properties with respect to light.
A source code distribution of Panorama is available as is a binary
distribution for Linux Intel platforms.
Compilation requires GCC version 2.8.1 and glibc 2.07.
Documentation is as yet (5/98) a bit sketchy.
[http://www.gnu.org/software/panorama/panorama.html]
- Paos
- The Python active object server is
an active multi-user object server with a simple query language.
The distribution consists of modules which:
implement the storing and locking of objects, the query language, and
the registration of notifications;
implement the network interface of the server;
implement the network interface of a client;
define a class in which all objects to be stored on the server need to be;
implement a number of utility functions.
Example modules are included which:
implement a producer that accepts and stores lines to the server;
implement a consumer that prints out lines produced by a producer; and
implement two-way communication.
A source code distribution of the Python modules which comprise the
package is available.
[http://www.cs.colorado.edu/~carlosm/software.html]
- PAPERS
- Purdue's Adapter for Parallel Execution
and Rapid Synchronization is specialized hardware
which connects unmodified platforms running UNIX or Linux to make
a fine-grained parallel computer. The hardware can be built or
bought (rather cheaply) and can be much more effective than using
conventional networks of workstations with, e.g., message passing
software, since PAPERS cluster even support SIMD and VLIW execution
modes.
PAPERS clusters are programmed using a library called AFAPI (the
Aggregate Function Application Program Interface).
Programs are written using the AFAPI library with C or C++, compiled
with gcc, and then executed on a PAPERS cluster (with
future plans including PAPERS compilers for parallel C dialects and
an automatic parallelizing Fortran compiler).
Two software implementations of AFAPI are currently (5/97) available.
SHMAPERS (SHared Memory Adapter for Parallel Execution and Rapid
Synchronization) implements the full user-level AFAPI for SMP
and uniprocessor Linux/UNIX systems which provide the standard System
V shared memory segment operations.
SHMAPERS is entirely bus-lock free which enhances portability and
ensures minimal bus interference during spin-lock operations.
CAPERS (Cable Adapter for Parallel Execution and Rapid Synchronization)
implements AFAPI for precisely two *86-family PCs running
Linux.
[http://garage.ecn.purdue.edu/~papers/]
- PAPyRUS
- A world processor for UNIX systems under X11/Motif.
The goal of this project is to create a complete and modern
word processor for document composition. It presently features
a good range of functionality but is still in development.
The three modules that comprise PAPyRUS are a the kernel written
in C++, a TCL command interpreter, and a GUI written in C using
the X11/Motif library.
The presently available functions include text insertion,
image insertion (via the XPM format), a command language,
modification of character and paragraph attributes, several
save formats (ASCII, PostScript, PAPyRUS format), document
printing, and a syntax checker (i.e. ispell).
The source code is available as well as statically and dynamically
linked Linux binaries. The documentation is contained within
a 130 page manual in PostScript format. It is also only
available in French at present (2/97).
[http://or.mime.univ-paris8.fr/~loscar/Papyrus/
papyrus_eng.html]
- Paradigm Visual Make
- An IDE for C/C++/etc. development built using
Tcl/Tk. It can be adjusted to various
programming languages and source file types and incorporates
text and makefile editors. It also allows external programs
to be executed and their output captured into a specialized
PVM text window.
A source code distribution is available.
[http://www.nyx.net/~dminer/pvm/]
- Parallaxis
- A structured programming language for data-parallel programming
(SIMD) systems. It is based on sequential Modula-2 but extended
with machine-independent parallel constructs.
In Parallaxis an abstraction
is achieved by declaring a processor configuration in functional form,
specifying number, arrangement, and connections between processors.
With these "virtual processors and connections", an application
program can be constructed independent of the actual computer
hardware.
The system consists of compilers for sequential and parallel computer
systems, a debugger (extensions to gdb and xgdb), and a large
selection of sample algorithms from different areas, especially
image processing.
The sequential version of Parallax is available as a binary
for Sun SunOS and Solaris, DEC Ultrix, HP 9000, IBM RS6000,
SGI Irix, and Linux Intel platforms. There are parallel versions
for MasPar MP-1 and MP-2, PVM clusters, and the Intel Paragon.
The documentation is contained within a user's manual and
a language definition report, both of which are available
in PostScript format.
See Braunl (1993).
[http://www.ee.uwa.edu.au/~braunl/parallaxis/]
- Parallel Processing Using Linux
- A repository of practical information for those engaging in the
sorcery of attempting parallel processing on Linux platforms.
The plan is to have the usual stuff about parallel processing,
e.g. software, hardware, documentation, etc., but to specialize
in discussing complete parallel environments which integrate
hardware configuration, parallel OS functions, libraries, languages,
parallel I/O, and applications, i.e. the works.
It is also planned to keep a list of open problems that have been
identified in order that they can be tackled by many folks in
the community.
[http://yara.ecn.purdue.edu/~pplinux/]
- parallel/concurrent programming
- The use of several machines or processors to perform
computational tasks.
The January 1988 issue of the
Linux Journal contains
many articles on parallel processing with Linux.
Related and interesting sites include:
Hardware-related entries include:
Languages developed for parallel programming or with parallel programming
capabilities include:
- Amoeba, a distributed OS;
- A'UM, a concurrent object-oriented language;
- BETA, an object-oriented language with facilities
for procedural and functional programming as well as the capability for
the concurrent execution of processes;
- Cilk, an algorithmic multithreaded language;
- Clean, a general purpose, higher-order pure and
lazy functional language for the development of sequential, parallel and
distributed applications;
- C++//, designed for importing reusability into
parallel and concurrent programming;
- C*, an explicitly parallel language with a compiler
that translates C* code in C code plus calls to a communication library;
- C-Talk, an object-oriented language with
multiple inheritance, parameterized classes, exceptions, multitasking
and persistent objects;
- Erlang, a language designed for building
fault-tolerant, distributed systems with a large number of concurrent
processes;
- HPF, a set of parallel extensions to Fortran;
- JAVAB, a tool for automatically detecting
and exploiting implicit loop parallelism in Java bytecode;
- JavaParty, an extension allowing distributed
Java programs to be written;
- JAVAR, a Java restucturing compiler for
making implicit parallelism explicit;
- KLIC, a parallel implementation of a concurrent
logic programming language;
- Modula-2*, a version of Modula with
explicitly parallel high-level constructs;
- mpC, a language developed for writing efficient
and portable programs for a wide range of distributed memory machines;
- NESL, a strongly-typed, applicative,
data-parallel language;
- OOF, Fortran extensions that support the declaration
and manipulation of objects in support of parallelism;
- Orca, for parallel programming on distributed
systems based on the shared data-object model;
- Parallaxis, a structured language for
data-parallel programming (SIMD) systems;
- Phantom, an interpreted language for addressing
the problems presented by large-scale, interactive, distributed applications;
- Pike, an interpreted and modular object-oriented
language with multi-threading capabilities;
- Reactive-C, a C-based language for
reactive programming with parallel programming capabilities;
- sC++, extensions to C++ for active objects and
synchronization primitives which can produce multithreaded code;
- Sisal, a functional language for developing
parallel scientific computing applications;
- SR, a language for writing concurrent programs;
- TXL, a language and system designed to support
transformational programming;
- uC++, an object-oriented language with high-level
concurrency;
- UFO, a language that unites functional and
object-oriented techniques to ease the tasks of developing programs for
parallel machines;
- Xi, an interactive language which can use
PVM for distributing computations; and
- youtoo, an object-oriented language with
parallel programming capabilities; and
- ZPL, and array programming language designed
for fast execution on both sequential and parallel machines.
Libraries that implement some sort of parallel or distributed
programming paradigm include:
- ACE, an object-oriented toolkit implementing
fundamental design patterns for concurrent communication software development;
- Adsmith, an object-based distributed shared
memory (DSM) system built on top of PVM;
- ARCH, a library of tools for parallel programming
on machines that uses MPI;
- BSPlib, an implementation of the BSP model of
parallel computation;
- C4, C++ classes for expressing
parallel programs using high-level abstractions;
- CHAOS, a C++ runtime library
for parallelizing Fortran and
C programs with irregular data access patterns;
- Counterpoint, a mechanism for communication
and synchronization among the elements of a parallel program;
- CVM, a distributed shared memory (DSM) system;
- DIPC, for creating a multi-computer system
from Linux computers on a TCP/IP network;
- Dome, a library of distributed objects for
parallel programming;
- DREAM, a distributed shared memory (DSM) library
built on top of PVM;
- Filaments, a library for creating
architecture-independent parallel programs;
- GAMMA, a library for turning a pool of
machines into an efficient parallel platform for SPMD or MIMD applications;
- Global Array, an efficient and portable
shared-memory interface for distributed memory computers;
- II, a distributed Java
framework providing a generic object model and a variety of messaging models;
- JIAJIA, a distributed shared memory (DSM) system;
- Jsync, a set of synchronization primitives for
Java for developing concurrent applications;
- mEDA-2, an extension to PVM
providing virtual shared memory (VSM) for inter-task communication and
synchronization;
- MPI, a message passing library;
- Nexus, a portable library providing multithreading,
communication and resource management for implementing languages, libraries
and applications in heterogeneous parallel and distributed environments;
- Para++, classes for encapsulating message
passing primitives into a higher level of abstraction;
- p4, a library for programming a variety of
parallel machines in C and Fortran;
- PICL, implements a generic message passing
interface on a variety of multiprocessors;
- PLUMP, for solving PDEs on unstructured,
adaptive meshes;
- PLUS, a transparent communication mechanism
between standard message passing environments;
- PM2, a portable multithreaded environment providing
execution support for highly parallel applications;
- PPI++, an object-oriented message passing library;
- PUB, a C library for developing parallel algorithms
based on the BSP model;
- PVM, a message passing library;
- Quarks, a library for running programs designed
for shared memory multiprocessors on a network of computers;
- SMARTS, supports integrated task and data
parallelism for MIMD architectures with deep memory hierarchies;
- SVMlib, an emulation of shared memory in
a distributed memory environment; and
- TOOPS, for the process-oriented simulation
of communication protocols including message passing.
Parallel programming environments which generally contain a selection
of tools for developing parallel programs in one or more languages or
with one or more libraries include:
- aCe,
- APACHE,
- Arjuna,
- Calypso,
- CHARM,
- clsh,
- CODE,
- Condor,
- Converse,
- DOGMA,
- DSC,
- Globus,
- GLU,
- GLUnix,
- HPVM,
- Mentat,
- PADE,
- PRM,
- Proteus,
- TRAPPER, a graphical programming
environment for developing parallel programs;
- UfMulti, for breaking up data analysis
programs into pieces and running them on multiple hosts;
- VPE, for creating programs based on the message
passing model.
Miscellaneous tools related to parallel programming include:
- ADAPTOR,
- AIMS,
- bWatch, a GUI showing load and memory statistics
for each node of a cluster;
- DFN-RPC,
- dmake,
- dsh,
- esep,
- Limes,
- MAD,
- Maisie,
- Nascent,
- OMIS,
- PAMELA,
- ppmake,
- PRNGlib, several pseudo-random number
generators for shared or distributed memory parallel architectures;
- pWEB,
- SCore,
- SHORE,
- TAU,
Software related to parallel numerical methods or scientific computation,
i.e. applications, include:
- A++/P++,
- Aztec,
- BILUM,
- BLACS,
- BlockSolve,
- BTN,
- CCP5,
- COSMICS,
- CuPit,
- DAGH,
- DGENESIS,
- DOUG,
- EGO,
- FEAT,
- fsolver,
- GALOPPS,
- KeLP,
- LASSAP,
- LPARX,
- Moldy,
- MOM,
- MPI-RGL,
- MPQC,
- MSG,
- NAMD,
- NWChem,
- Omega Project,
- PACT,
- PARASOL,
- ParMETIS,
- ParPre,
- Parssim1, an aquifer or reservoir simulator
for incompressible, single phase flow and reactive transport of subsurface
fluids through a heterogeneous, porous medium;
- PAWS,
- PBLAS,
- PCCM,
- PCG,
- PeIGS,
- PETSc,
- PGAPack,
- PIM,
- PLAPACK,
- PMD, for simulating the dynamics of biological
macromolecules;
- POOMA,
- pPCx,
- P-SPARSLIB,
- PSTSWM,
- QCDMPI,
- RAM,
- RSL,
- sB-BLAS,
- ScaLAPACK,
- SEA,
- SILOON,
- SPRNG,
- SYISDA,
- VIC, a package for describing and solving
CFD algorithms in data parallel fashion.
Software related to parallel I/O (e.g. filesystems and the like) includes:
- FUFS, a parallel filesystem for workstation
clusters;
- Galley, a parallel file system;
- PANDA, a parallel I/O system for workstation
clusters;
- PFSLib,
- PIOUS, a complete parallel I/O system
for the PVM environment;
- PMPIO, a portable implementation of the
MPI2 I/O chapter;
- PVFS, a parallel virtual file system;
- RAID, a group of protocols for creating
and using disk arrays;
- RAIDframe, a rapid prototyping tool
for RAID systems;
- ROMIO, a high-performance and portable
MPI-IO implementation; and
- TPIE, a parallel I/O system.
See also threads.
See
Almasi and Gottlieb (1994),
Andre et al. (1985),
Barbosa (1996),
Carriero and Gelerntner (1990),
Chandy and Misra (1988),
Codenotti and Leoncini (1993),
Dongarra and Tourancheau (1993),
Foster (1995),
Geist et al. (1994),
Gibbons and Rytter (1990),
Greenlaw et al. (1995),
Hulle et al. (1994),
Kowalik (1985),
Gelernter et al. (1990),
Gropp et al. (1994),
Jamieson et al. (1987),
Kuck (1996),
Kumar et al. (1994),
Lakshmivarahan and Dhall (1994),
Nicolau et al. (1991),
Pardalos (1999),
Perrott (1987),
Reed and Fujimoto (1987),
Sabot (1995),
Shiva (1996),
Simon (1992),
Skillicorn (1995),
Smith (1993),
Tel (1995),
Wilson (1995),
Wilson and Lu (1996),
Wolfe (1996) and
Zima and Chapman (1991).
- Paranoia
- A program that strenuously tests a programming language implementation's
floating point capabilities.
Separate source code versions of this are available
for C, Fortran (single and double
precision versions), Basic, Modula-2,
and Pascal.
[http://www.netlib.org/paranoia/]
- Para++
- A set of C++ classes that allow message passing programs to be
written by encapsulating message passing primitives into a higher
level of abstraction. All communications are defined by using
C++ streams. These C++ bindings have been implemented on top
of both PVM and
MPI.
[http://www.loria.fr/para++/parapp.html]
- PARASOL
- A project to develop new parallel algorithms for the
direct solution of sparse systems on linear equations and for
the iterative solution of such systems based on either multigrid
or domain decomposition, with any algorithms developed to be
made available in the public domain. The objectives of the
project are to develop sparse matrix algorithms according to
the needs of industry, to implement portable prototypes of these
solvers and to demonstrate them on different HPC systems,
to specify an open library interface for the library,
to integrate the solvers and additional utilities into the
PARASOL library and provide an interface to the programming
environment TRAPPER,
to establish continuous library support, and to evaluate
the library.
[http://www.genias.de/projects/parasol/index.html]
- PARI-GP
- A package capable of doing formal computations on recursive
types at high speed. It is primarily aimed at number theorists,
but can be used by people whose primary need is speed. Symbolic
manipulation a la Mathematica et al. is possible, but it usually
fares poorly compared to the beforementioned systems. Its main
advantages are speed (for certain classes of applications) and
the possibility of directly using data types familiar to
mathematicians. PARI can be used either as a library called
from any upper-level language application (e.g. C, C++, Pascal
and Fortran) or as a sophisticated programmable calculator (named
GP). Binaries are available for Amiga, Mac, and MS-DOS systems as
well as for several UNIX flavors (e.g. Dec Alpha, HP, Sun SPARC
and Solaris, and Linux). The source code is also available.
It comes with a 150+ page manual. There is an article about this
package in the May 1995 issue of the
Linux Journal. A related
project is a PARI interface to the
Python language called
PariPython.
[ftp://megrez.math.u-bordeaux.fr/pub/pari/]
[http://hasse.mathematik.tu-muenchen.de/ntsw/pari/Welcome]
- ParkBench
- PARallel Kernels and BENCHmarks is a comprehensive
set of benchmarks that is generally accepted by both users and vendors
of parallel systems.
The ParkBench system contains several levels of benchmarking.
The first level consists of various low-level benchmarks for
both single- and multi-processors.
The single processor benchmarks aim to measure performance parameters
that characterize the basic architecture of the computer and
the compiler software through which it is used. These include:
- TICK1, measures the interval between ticks of the clock being
used in the measurements;
- TICK2, confirms that the absolute values returned by the
computer clock are correct;
- RINF1, basic arithmetic operations in the form of a set of
common Fortran DO-loops; and
- POLY1 and POLY2, memory bottleneck benchmarks.
The multi-processor low-level benchmarks aim to characterize the basic
communication properties of an MPP. They include:
- COMMS1 and COMMS2, in which nodes send and receive
messages to each other;
- COMMS3, which measures the total saturation bandwidth of
a system;
- POLY3, which assesses the severity of the communication
bottleneck; and
- SYNCH1, which measures the time to execute a barrier
synchronization statement as a function of the number of processors
taking part in the barrier.
The kernel benchmarks attempt to span a reasonably wide range of application
areas by including the most frequently encountered computationally
intensive types of problems. These include:
- matrix kernel benchmarks including dense matrix multiply, transpose,
dense LU factorization with partial pivoting, QR decomposition and
matrix tridiagonalization;
- a 3-D FFT kernel benchmark;
- a PDE kernel benchmark consisting of a multigrid kernel; and
- an assortment of other benchmarks including an embarassingly
parallel kernel, a conjugate gradient kernel, a largae integer sort
kernel, and an input/output benchmark.
The compact application benchmarks include codes representative of the
fields in which parallel computers are actually used. These include:
- PSTSWM, a parallel spectral transform shallow
water model; and
- three computational fluid dynamics codes called the NPB-CFD codes.
The last benchmark level consists of an HPF compiler
benchmark suite.
A source code distribution of ParkBench is available.
All benchmarks are available through both
PVM and MPI.
A user's manual is available in PostScript format.
[http://www.netlib.org/parkbench/]
- ParMETIS
- A parallel multilevel graph partitioning and sparse matrix
ordering library which implements a variety of algorithms for
partitioning unstructured graphs and for computing fill-reducing
orderings for sparse matrices.
ParMETIS is useful for parallel numerical simulations involving
large unstructured meshes, e.g. finite element simulations, wherein
it can greatly reduce the time spent in communications by decomposing
the mesh in a way that balances the load and minimizes the number
of interface elements.
The ParMETIS algorithms are based on those in the serial
package METIS, and extend the functionality
of the latter by including routines especially suited for parallel
computations and large-scale numerical simulations.
ParMETIS supplies four major functions:
partitioning an unstructured graph, improving the quality of
an existing partition, repartitioning a graph which corresponds
to an adaptively refined mesh, and computing a fill-reducing
ordering for sparse direct factorization.
The algorithms are based on the parallel multilevel k-way graph
partitioning scheme.
The features of ParMETIS include:
- quick computation of high quality partitions of very large
graphs,
- the use of geometry information to speed up the run time
of partitioning algorithms without a loss in quality,
- the improvement of partitions produced by other algorithms,
- the quick computation of high quality repartitions of adaptively
refined meshes wherein both the number of vertices that are moved
and the edge-cut of the resulting partition are optimized,
- the computation of low fill orderings for sparse direct factorization
using a node-based nested dissection algorithm, and
- the efficient use of memory for partitioning even very large graphs.
A source code distribution of ParMETIS is available. It is
written entirely in ANSI C and MPI and is
portable to all platforms which support the latter.
A user's manual is available in
PostScript format as are several
technical reports describing the algorithms used.
See also METIS.
[http://www.cs.umn.edu/~karypis/metis/]
- PARPACK
- See ARPACK.
- parpd
- A proxy ARP daemon
for dealing with hosts having out of date implementations of the
Internet protocols that don't understand
IP subnetting.
This enables a gateway that helps brain-dead hosts by lying to them, i.e. it
sends an ARP reply packet the the gateway's Ethernet address for any host not
on the local subnet. The brain-dead host will then send its traffic
to the gateway thinking that the gateway is the destination.
The gateway will then forward the packet.
When invoked, the daemon probes for all active Ethernet interfaces on a
host and configures the Network Interface Tap (NIT) to receive any
ARP requests arriving on that interface. When an ARP request arrives,
the daemon processes in an appropriate manner.
A source code distribution is available that is documented via
a man page.
[http://www.ers.ibm.com/~davy/software/parpd.html]
- ParPre
- A library of parallel preconditioners for iterative solution methods
for linear systems of equations. The methods currently (3/97)
available include additive and multiplicative Schwarz
preconditioners and generalizd block SSOR.
It currently has a C interface with a Fortran interface planned.
ParPre runs over the
MPI message passing library,
and has been tested on the MPICH implementation.
It also uses routines from the
PETSc library, although they
are included in the ParPre distribution.
This is a component of the
ScaLAPACK.
[http://www.math.ucla.edu/~eijkhout/parpre.html]
- PARSEC
- The PARallel Simulation Environment for Complex
systems is a C-based discrete-event simulation
language that adopts the process interaction approach to discrete-event
simulation.
In PARSEC an object (i.e. physical process) or set of objects in the
physical system is represented by a logical process, with interactions
among these processes (i.e. events) modeled by timestamped message
exchanges among the corresponding logical processes.
A distinguishing feature is the capability of executing a discrete-event
simulation model using several different asynchronous parallel simulation
protocols on a variety of parallel architectures.
It is designed to cleanly separate the description of a simulation
model from the underlying simulation protocol used to execute it.
This allows a PARSEC program to be executed using the traditional
sequential simulation protocol or one of many parallel optimistic or
conservative protocols.
There are also powerful message receiving constructs that result in
shorter and more natural simulation programs as well as useful
debugging facilities. PARSEC is derived from
Maisie, and existing programs for the latter
can be converted to the former.
A source code distribution of PARSEC is available. It is written
in C and runs on several platforms including Sun Solaris and
Linux Intel.
A user's manual is available in PostScript and PDF formats.
[http://may.cs.ucla.edu/projects/parsec/]
- parser generator
- A program that converts a grammar description in some type
of context-free grammar into a program in some target language
to parse that grammar.
This are also known as compiler compilers, since they do
indeed compile compilers.
Available parser generators include
Bison,
byacc,
LLgen,
PRECCX, and
RDP.
See also the
compiler construction tools,
various package which contain parser generators as part of a suite
of tools.
- parsetools
- A collection of C extension modules to
tokenize, parse and transform abstract syntax trees for
Python source files.
The extension modules are:
- logicalline, tokenizes and breaks Python source into logical
lines;
- pgen, provides a low level interface into Python's built-in
parser; and
- nodetransformer, transforms parse trees produced by the
pgen parser into abstract syntax tree tuples that are a subset
of those used in the Python2C compiler.
[ftp://archaeopteryx.com/pub/parsetools/]
- Parssim1
- An aquifer or reservoir simulator for the incompressible, single
phase flow and reactive transport of subsurface fluids through a
heterogeneous, porous, irregular medium.
It can also simulate the decay of radioactive tracers or contaminants
in the subsurface, linear adsorption, wells and bioremediation.
The program uses a technique to map highly irregular physical
domains with hills, valleys, internal faults, strata, etc. to
a rectangular computational domain.
Parssim1 can be run on a serial machine or on a cluster using
the MPI package.
Domain decomposition techniques are used for parallel computations.
The package consists of four main parts:
- driver routines for I/O and managing the coupling between
the flow and transport routines;
- Parcel, for simulating incompressible, single-phase,
saturated flow with wells on geometrically general domains using
a locally conservative, cell-centered finite difference technique;
- ParTrans, a transport routine for simulating multiphase
transport with linear sorption, radionuclide decay, simple chemical
reactions, and wells on general geometry using a locally conservative
method of characteristics called the Godunov Method; and
- a general chemistry routine for handling equilibrium and
kinetic reactions using an interior-point algorithm for minimizing
the Gibbs free energy.
A source code distribution of this Fortran
package is available.
It is documented in a user's guide in PostScript format.
[http://www.ticam.utexas.edu/~arbogast/parssim/]
- parted
- A GNU project to create a clone of Partition
Magic, i.e. a program for creating, destroying, resizing and copying
partitions. This is still (as of 8/99) in the very early alpha
stage of development, so beware.
[http://www.gnu.org/software/parted/]
- partial evaluation
- A technique/tool for automatic program optimization that is also
known as program specialization. This is not unlike an optimizing
compiler but can be a stronger technique in several ways.
Basically, a source-to-source staging transformation is
performed in which a program and partial data are transformed
into a combined, specialized, and often faster version.
This is accomplished by precomputing the parts of the program
that depend on the partial data.
This technique has been successfully applied to ray tracing,
the FFT, simulations of electrical circuits,
and compiling and compiler generation.
Problem types especially suitable for application of this
method include:
- highly parameterized computations that spend large amounts
of time consulting parameters but which are usually run with the
same parameter settings;
- programs containing many similar subcomputations;
- highly interpretive programs, e.g. circuit simulators,
wherein this technique can remove the time it takes to scan
the object being simulated;
- database query search algorithms; and
- metaprogramming wherein a problem is solved via the design
of a user-oriented language and a suitable interpreter.
See Jones et al. (1993) and
Danvy et al. (1996).
Available partial evaluation tools include:
- Particle Simulation Methods
- A page summarizing the various methods used to simulate large
systems of particles, e.g. in astronomy. This also has many links
to available software in each category.
[http://www.amara.com/papers/nbody.html]
- Particle System (API)
- A set of C++ functions for assisting programs
in simulating the dynamics of particles (with a particle being, in the
abstract sense, a entity with a small set of attributes that dictate
its behavior and appearance).
This is intended for implementing special effects in interactive
and non-interactive graphics applications rather than for scientific
simulations, although it does use Newtonian physics where appropriate.
The API style is intended to be similar to that of
OpenGL, although for particles rather than
solid shapes.
The API consists of four sets of functions:
- calls setting the current state of the library;
- calls acting on groups of particles;
- calls operating on and managing particle groups; and
- calls creating and operating on action lists.
[http://www.cs.unc.edu/~davemc/Particle/]
- Partition Image
- A utility that saves partitions in
ext2fs, ReiserFS or
FAT 16/32 file system format to an image file.
The image file can be compressed in the
gzip or bzip2 formats,
or split into multiple files for copying onto floppies.
Unlike dd, Partition Image only copies the data portions of a
partition rather than the entire partition, i.e. free blocks as well.
[http://partimage.sourceforge.net/]
- PAS
- The Perl Application Server is a set of nested
APIs for writing Web-based intranets in
Perl and
Java. Most of the APIs are wrappers around
third-party modules. The APIs include:
- Templates, a wrapper around Text::Template and
Text::BasicTemplate;
- DB, a wrapper around DBI::DBD;
- a Java/Perl RPC API;
- an XML/XSL API; and
- an EJB API.
A source code distribution is available, although documentation is
currently (2/99) a bit sketchy.
[http://www.pault.com/Pas/]
- Pascal
- An evolutionary successor to Algol developed in 1970 by
Niklaus Wirth at ETH Zürich.
It cleaned up and left out some of the more obscure features
of Algol and added the capability to define new data types
out of existing ones. Pascal also supported dynamic
data structures.
This is one of the older languages still hanging around that has been
used for numerical analysis over the years.
There is a site specializing in
numerical analysis code for Pascal.
See Jensen and Wirth (1974) and
Mallozzi (1989).
Pascal-related software includes:
- EFLIB, an application framework implemented
in Object Pascal;
- FPKPascal, a 32-bit Pascal compiler;
- gps, the GNU Pascal compiler;
- ptoc, a Pascal to C/C++ converter;
- p2c, a Pascal to C converter; and
- P-XSC, a Pascal compiler with extensions
for scientific computation.
- Pash
- A full screen shell for UNIX that is not
unlike Norton Commander.
The features of Pash include:
- a standard main screen with two windows displaying the contents
of different directories, a menu bar, and a command line;
- a four-window mode;
- a process handling function for viewing all current processes
and sending signals to them;
- an IPC device control function that displays
all the message queues, shared memory, or semaphores active in the
system and allows them to be destroyed; and
- a directory tree function for navigating through directory
hierarchies.
Source and binary distributions are available for Linux platforms.
[http://home.inreach.com/xpierre/pash/]
- PASSCAL
- The Program for the Array Seismic Studies of
the Continental Lithosphere at Lamont-Doherty provides
a software package to aid in the field processing of seismic data
collected from RefTek data recorders. The PASSCAL software suite
consists of a set of utility programs for handling various tasks.
These programs can be divided into several categories.
The RefTek data processing programs are:
- ref2segy, which converts data from RefTek to a modified
version of the SEGY format;
- ref2mseed, similar to ref2segy but also converts
any compressed data streams into miniseed files;
- ref2log, same as ref2segy but it only writes a log
file;
- ref2tab, which produces just database tables and logfiles
from the RefTek data;
- tkref, a Tcl/TK GUI to program or interrogate the RefTek DAS;
- refpacket, which prints all packet headers from raw PASSCAL data;
- refcatalog, a diagnostic tool to produce an index of packets
on a RefTek disk;
- refextract and tkextract, command line and GUI interfaces
to extract specific events from a RefTek data stream;
- refgrep, for extractio of specific types of RefTek packets based
on packet type and DAS number;
- diskclear, which clears the data from a SCSI disk written by
RefTek;
- refecho, which echos to standard output the RefTek disk label;
- refdump, which copies from a SCSI disk the data written by
a PASSCAL instrument;
- refserial, which reads raw RefTek data from a serial line;
- refpdata, which converts a RefTek data stream into a PASSCAL
pdata stream;
- firfilt, which filters and decimates a trace;
- refclean, which removes and re-syncs erroneous packets from
a data stream;
- disk2dat, a GUI allowing the writing of multiple reftek images
to a single tape;
- refrate, a program for calculating clock offset and drift
information from logfiles;
- clockcor, which determines the clock correction for a given
SEGY file; and
- rateclean, which reads output from refrate and fixes
erroneous one second correlations.
Display software programs are:
- pql, which provides a quick way to view SEGY, SAC, mini-SEED
or AH seismic data in an X11 environment;
- psql, which provides summary PostScript output of SEGY or SAC
traces;
- clockview, which provides X11 display of external clock phase
errors;
- logview, a GUI providing useful graphs of information in
logfiles;
- pmon, which takes a PASSCAL data stream as input and displays
up to six channels in near real-time on X11; and
- tkdf, a script to create a bar graph display of the output
from the UNIX df command.
Event association programs are:
- reap, which associates trace files with events; and
- creat_table, which reads the logfiles produce by
ref2segy and creates a table with information about each trace file.
Miscellaneous programs include:
- human2epoch and epoch2human, which take a
RefTek time string and returns the
epoch seconds from Jan. 1, 1970 at 00:00 and vice-versa;
- hexdump, which prints a hexadecimal listing of a file;
- calday, which converts from Julian to calendar days;
- julday, which converts from calendar to Julian days;
- coherence, a suite of spectral analysis programs; and
- position, which calculates 2-D locations using GPS position
statements.
Several other programs are also available for dealing with SEGY and
mini-SEED data.
A source code distribution of the PASSCAL software suite is available.
It has been successfully installed on Linux Intel platforms and
requires the Tcl/Tk package.
Each program is documented in a separate man page.
[http://www.ldeo.columbia.edu/Passcal/]
- Pâté
- A Java program that transforms context-free
grammars and parses restricted and unrestricted grammars.
The parser can find a derivation for any word for a given grammar,
and the transformer can remove unit, lambda and useless productions
from context-free grammars and convert the grammar into
Chomsky Normal Form (CNF).
A source code distribution of this teaching tool is available.
[http://www.cs.duke.edu/~anya/]
- Pathetic Writer
- An X Window-based word processor for
Linux which uses Scheme as an
extension language.
See also the same author's
SIAG and
Egon Animator packages.
[http://www.edu.stockholm.se/pw/]
- Pavuk
- A program for mirroring the contents of
Web documents via HTTP, FTP, Goper and HTTPS (SSL) servers.
The features include:
- recursive downloading based on links inside HTML documents;
- transformation of Gopher and FTP directories into HTML documents;
- HTML links translated from remote to local or vice-versa;
- support for proxy servers;
- support for authentication against HTTP and proxy HTTP servers;
- several options for defining document set for transfer including
limits on server, domain, prefix, suffix, document tree level,
maximum file size and document type;
- automatic restart of transfer when interrupted;
- several modes including simple recursion, newer versions, single
documents, updating links inside HTML document, etc;
- choice of Xt or GTK
user interfaces; and
- native language support based on gettext.
A source code distribution is available.
[http://www.idata.sk/~ondrej/pavuk/]
- PAWS
- The Parallel Application WorkSpace is a software
API library and controller application that can be used to link separate
parallel applications together so they can share parallel data structures
in a simple and efficient manner.
Applications use the API to make their data structures available
for sharing with other parallel programs, even if the applications
have unequal numbers of processors, use different parallel data layout
strategies, or are written in different languages using separate
parallel run-time systems or message passing libraries.
The PAWS controller is used to coordinate the initial connections
between components and between the data structures within components,
and is used to maintain a database of active components and connections.
The PAWS API consists of a set of C++ abstract
interface classes upon which a core C++ API for connecting data with
a PAWS standard data model is built.
C and Fortran interfaces to the core API are also provided.
The data model is extensible for complex data structures that cannot
be represented with the standard PAWS data model.
A source code distribution of PAWS is available.
A C++ compiler is needed as well as the
Nexus metacomputing infrastructure package and
the Tcl scripting language.
Documentation includes a user's guide, a programmer's manual, and
a programmer's reference along with several technical reports.
[http://www.acl.lanl.gov/PAWS/]
- PBLAS
- The Parallel Basic Linear Algebra
Subroutines are parallel
versions of the BLAS
subroutines for performing basic linear algebra computations.
PBLAS is used as the underlying computational layer for
the ScaLAPACK
subroutine library.
[http://www.netlib.org/scalapack/html/pblas_qref.html]
- PBM
- See Pbmplus.
- Pbmplus
- A toolkit for converting various image formats to and from
portable formats and therefore to and from each other. This
cuts down on the number of conversion filters needed.
PBMPLUS also includes some simple tools for manipulating the
portable image formats.
The package is broken into four
parts: PBM (Portable BitMap),
the lowest common
denominator (LCD) format for
bitmaps; PGM (Portable GreyMap),
the LCD format for
grayscale images; PPM (Portable PixelMap),
the LCD format for full color images; and
PNM (Portable aNyMap),
which is not a format itself but rather performs content-independent
manipulations on any of the first three formats as well as handling
external formats which have multiple types.
The four parts are upward compatible in the obvious ways.
The image types which can be converted to PBM are:
Andrew Toolkit raster objects, Xerox doodle brushes, CMU window
manager format, Group 3 FAX, Sun icon, GEM img, MacPaint, MGR,
Atari Degas pi3, X10 or X11 bitmap (XBM), and Bennet Yee face files.
Those which PBM can be converted to are: Gemini 10x, ASCII graphic,
Andrew Toolkit raster object, BBN BitGraph, CMU window manager,
Epson printer, Group 3 FAX, GEM img, GraphOn, Sun icon, HP LaserJet,
MacPaint, MGR, Atari Degas pi3, UNIX plot(5), Printronix, X10 and
X11 bitmaps (XBM), Bennett Yee face files, and Zin Interface Library icon.
The image types which can be converted to PGM are:
FITS, Usenix FaceSaver, HIPS, Lisp Machine bitmap, PostScript image data,
and raw grayscale bytes.
Those which PGM can be converted to are: FITS, Usenix FaceSaver,
Lisp Machine format, and portable bitmap.
The image types which can be converted to PPM are:
GIF, Gould scanner file, IFF ILBM, Img-whatnot, MTV ray tracer,
PC Paintbrush, Atari Degas pi1, Macintosh PICT, HP PaintJet,
QRT, raw RGB bytes, AutoCAD slide, Atari compressed and uncompressed
Spectrum, TrueVision Targa, Xim, XPM, and Abekas YUV.
Those which PPM can be converted to are: AutoCAD database,
GIF, NCSA ICR, IFF ILBM, PC Paintbrush, portable graymap, Atari Degas pi1,
Macintosh PICT, HP PaintJet, X11 puzzle, DEC sixel, TrueVision Targa,
Motif UIL, XPM, and Abekas YUV.
Those which can be converted to PNM are: anything (attempted),
Sun raster, TIFF, and X10 or X11 window dumps.
The which PPM can be converted to are: PostScript, Sun raster,
TIFF, and X11 window dump.
The functions which the many utility routine perform include:
- ordered dithering for color images;
- fractal forgeries of clouds,
planets, and starry skies;
- printing histograms and quantizing colors;
- running a Laplacian Relief filter;
- Bentleyizing a portable graymap;
- edge-detecting or edge-enhancing a portable graymap;
- normalizing contrast in a portable graymap;
- performing arithmetic on two portable anymaps;
- concatenating anymaps; and
- rotating, scaling, shearing, inverting, enlarging, and describing
anymaps.
The source code for the package is available. It is written
in C and can be compiled using either a Makefile or
an Imakefile supplied in the distribution.
ELF binary versions of the package are available at the Linux
repositories.
Each tool in the package is documented in a separate
man page. A newer version of this with some additional
capabilities is Netpbm.
[http://sunsite.unc.edu/pub/Linux/apps/graphics/convert/]
[ftp://ftp.cc.gatech.edu/pub/linux/apps/graphics/convert/]
[http://www.acme.com/]
- Pcb
- An interactive printed circuit board layout system
for X11. It creates layout files consisting of
several mostly independent objects, with the top object being the
layout itself. The lower level objects from which boards are
constructed include:
- vias (i.e. a pin-like object) that can be added and removed
individually, e.g. for defining drill points;
- elements representing the components on the board;
- layers that can be used independently or treated as a group;
- lines used to draw tracks on the board;
- arcs for drawing tracks with right angles;
- polygons for filling large areas with solid copper; and
- text objects for labeling layouts.
The features of Pcb include:
- undo for destructive commands;
- layer groups for grouping signal layers;
- support for add-on device drivers;
- rat nest generation from simple net lists;
- automatic screen updates of changed regions;
- a simple design rule checker that checks for minimum spacing
and overlap rules.
A source code distribution of this C/X11 package is available.
It is documented in a user's manual available in the usual formats.
[http://bach.ece.jhu.edu/~haceaton/pcb/]
[ftp://ftp.uni-ulm.de/pub/pcb/mirror/]
- PCCM
- A Parallel version of the NCAR
Community Climate Model implemented for
MIMD massively parallel computers using a message passing
programming paradigm.
The CCM is a package including an atmospheric general circulation
model (AGCM), a slab ocean model, and a surface processes model
to simulate the climate of the Earth given the appropriate
boundary conditions.
The parallelization strategy decomposes the problem domain into
geographical patches with each processor assigned a subset of
the collection of patches. The physics calculations involve
only grid points and data local to a processor and are performed
in parallel. The dynamics are also computed in parallel using special
algorithms developed for semi-Lagrangian transport, the FFT, and
the Legendre transform.
The PCCM was developed for the Intel Paragon and the IBM SP2 but
will also run on a network of workstations running the
PVM package.
The source code for PCCM is available. It is written in
Fortran 77 and documented in a user's guide available in
PostScript format.
[http://www.epm.ornl.gov/chammp/pccm2.1/index.html]
- PCCTS
- The Purdue Compiler
Construction Tool Set has been
renamed ANTLR.
- PCFEAP
- A small, general purpose finite element
program designed for research and educational use.
PCFEAP is written in Fortran and
permits the solution of both linear and nonlinear problems for
static, quasi-static, and transient behavior.
The program is documented in Zienkiewicz and Taylor (1989) and
Zienkiewicz and Taylor (1991).
[http://www.ce.berkeley.edu/~rlt/]
- PCG
- The Preconditioned Conjugate Gradient
package is a system for solving linear equations which employs
various gradient-type iterative methods coupled with preconditioners
of various types. It is designed to be applicable to general linear
systems with special emphasis given to sparse systems which might
arise from the discretization of PDEs arising from physical applications.
It is also designed to give high performance with a nearly identical
user interface across different programming models such as shared
memory, data parallel, and message passing programming interfaces.
The features of PCG include:
- a wide variety of
iterative methods, e.g. the conjugate gradient (CG) and conjugate gradient
squared (CGS) methods, the biconjugate gradient (BCG) and QMR
algorithms, and restarted GMRES;
- a wide variety
of preconditioners including variants of point and block Jacobi;
- predefined matrix storage schemes chosen to provide sufficient
generality to implement a wide variety of sparse problems as well as
to take advantage of the various machine architectures;
- a choice of several levels of access, e.g. a top level
or black box call using
a predefined sparse matrix format, an iterative method level with a
direct communication interface, etc.;
- several matrix preprocessing
options to improve the solution process;
- all package routines available
in single and double precision as well as real and complex versions
(which follow the LAPACK naming conventions);
- a high degree of modularity wherein any combination of preconditioner,
iterative method, matrix format, arithmetic, precision and machine
type can be used to solve a problem; optimization for high performance
on particular parallel machines; and
- portability across several parallel
and scalar platforms.
Several versions of the PCG package are supposed to eventually
be available. Currently (3/97) the FTP site contains uniprocessor
Fortran 77 and Cray YMP versions of the
source code.
I compiled the uniprocessor version successfully with
g77 0.5.19.1 with no code modifications being necessary.
The documentation, available separately, includes a reference manual,
an examples manual, a tutorial for beginners, and some technical
reports, all in PostScript format.
See Jourbert (1994).
[http://www.cfdlab.ae.utexas.edu/pcg/]
[http://www.netlib.org/linalg/]
- PCHIP
- A collection of Fortran 77 routines for the piecewise cubic Hermite
interpolation of data.
It features routines to produce a monotone and visually pleasing
interpolant to monotone data.
Routines to determine derivative values include:
- PCHIM, used if the data are monotonic or if it is desired
that the interpolant stays within the limits of the data;
- PCHIC, used if neither of the above conditions hold or
if control over boundary derivatives is desired; and
- PCHSP, which produces a cubic spline interpolator in cubic
Hermite form for comparison purposes.
The routines used to evaluate, differentiate, or integrate the
resulting functions include:
- CHFEV, to evaluate a single cubic Hermite function at an array of
points;
- PCHFE, used when the interval is unknown or if the evaluation
array spans more than one data interval;
- CHFDV, which evaluates a single function and its first derivative
at an array of points;
- PCHFD, used when the interval is unknown or the evaluation array
spans more than one data interval;
- PCHID, computes the definite integral of a function when the
integration limits are data points; and
- PCHIA, computes the integral over an arbitrary finite interval.
The routine PCHMC is a monotonicity checker and
CHFIV, CHFMC, PCHCE, PCHCI, PCHCS,
PCHDF, PCHST, and PCHSW are internal routines
to perform various tasks.
A source code distribution of the PCHIP package is available.
All the routines are written in Fortran 77 and are documented
via comment statements included in each source code file.
This is part of CMLIB.
See Fritsch and Carlson (1980) and
Fritsch and Butland (1984).
[http://sunsite.doc.ic.ac.uk/public/computing/general/statlib/cmlib/]
- PCI
- Later. Gripe at me if later hasn't yet arrived and you think it should.
- pciutils
- A set of utilities for dealing with the PCI
bus in Linux include:
- lspci, displays detailed information about all PCI busses and
devices in the system, i.e. a replacement for the original
/proc/pci interface; and
- setpci, for reading from and writing to PCI device
configuration registers.
A source code distribution is available.
[http://atrey.karlin.mff.cuni.cz/~mj/pciutils.html]
- PCL
- The Performance Counter Library is a common interface
for portable performance counting on modern microprocessors,
where a performance counter is a part of the processor that measures
and gathers performance-relevant events occurring in the processor.
PCL is intended to be used by expert programmers who wish to perform
detailed analyses of program performance.
The processors supported include Alpha 21164, SGI R10000, UltraSPARC I/II,
PowerPC 604e and Pentium/PPro/PII.
The PCL API supports:
- queries for functionality, start and stop of performance counting,
and reading the values of the performance counters;
- nested function calls for performing hierarchical performance
measurements on program sections and subsections;
- distinguishing of performance counting in user, system
and user-or-system modes; and
- calling of functions from C, C++ and Fortran.
A source code distribution of PCL is available. It is free for
non-commercial uses and is documented in a user's guide.
[http://www.fz-juelich.de/zam/PCL/]
- PCMCIA
- The Personal Computer Memory Card International
Association is
an international standards body and trade association
founded in 1989 to establish standards for integrated circuit cards
and to promote interchangeability amongst all platforms.
The PC Card Standard defines a 68-pin interface between the
peripheral card and the socket into which it is inserted.
It also defines a software architecture to provide ``plug and play''
capability across a wide range of products, with the software
comprised of Socket Services and Card Services.
A complete PCMCIA support package for Linux platforms is
Card Services.
[http://www.pc-card.com/]
- PCNFSD
- A PC NFS authentication and print request server which supports
ONC clients on DOS, OS/2, Macintosh and other systems.
The printing model supported is based on the use of NFS
to transfer the actual print data from the client to the
server.
When the server receives an authenticatin request, it will log in
the user by validating the user name and password and returning
the corresponding uid, gids, home directory, and umask.
It will also add any entry to the wtmp data base if so desired.
A source code version of this is available which has a makefile
modified for compilation on Linux systems.
It is documented in a man page.
This can be obtained as part of the
Shadow Ina Box tool suite.
[http://sunsite.unc.edu/pub/Linux/system/network/sunacm/Other/pcnfsd/]
[http://rufus.w3.org/linux/RPM/pcnfsd.html]
[http://www.cert.org/ftp/tools/pcnfsd/]
- PCOMP
- A Fortran 77 code for automatic differentiation.
A sequence of statements describing the functions to be differentiated
are written in a language that is a subset of Fortran 77 with some
extensions. This input produces output code for the derivatives.
The package includes a parser that generates an intermediate code that
can be executed independently from the evaluation routines.
There are also subroutines for the direct computation of function
and gradient values which can be called directly from a user program.
This is TOMS algorithm 746 and is documented
in Dobmann et al. (1995).
[http://www.acm.org/calgo/contents/]
[http://www.netlib.org/toms/index.html]
- PCRE
- Perl-Compatible Regular Expressions
is a C library of functions implementing
regular expression pattern matching using the same syntax and
semantics as Perl 5.
PCRE has both its own API and a set of wrapper functions
that correspond to the POSIX API.
A source code distribution is available.
[ftp://ftp.cus.cam.ac.uk/pub/software/programs/pcre/]
- PCthreads
- A multithreading library for Linux-based Intel systems which is
based on the POSIX 1003.1 standard for
threads.
It contains the sources for the library (libpthreads),
a build environment for both ELF and a.out binaries, and a complete
set of man pages for all POSIX.1c functions.
In addition to the multithreading API, the package provides:
structured exception handling with TRY-CATCH-ENDTRY,
sources to a non-blocking version of the BSD socket library,
non-blocking select() and non-blocking read() and write(),
a large amount of example code,
and several runtime configurable parameters including clock
interrupt interval, default thread scheduling policy,
default thread stack size, and the I/O polling interval.
[http://www.aa.net/~mtp/PCthreads.html]
- PCx
- An interior-point predictor-corrector linear programming package
for solving optimization problems.
The features include: a set of high-level data structures for
linear programming constructs designed for possible reuse in other
codes; the ability to be invoked both as a stand-alone program and
as a callable procedure; a presolver; and a modular structure which
makes it easy for users to modify the code to experiment with
variants of the current algorithm.
PCx accepts any valid linear program that can be specified in
the MPS format.
The source code is available as are binaries for Sun SunOS and
Solaris, IBM AIX, SGI IRIX, HPUX, Intel Linux, and DEC Alpha
platforms. The source code is written in both C and Fortran
and thus requires compilers for each. The documentation is
contained within a user's guide in PostScript format that
is included in the distribution.
[http://www.mcs.anl.gov/home/otc/Library/PCx/]
- PD
- Pure Data is
an object-oriented graphical programming language for computer music in which
objects are patched together with lines to form a running
program.
The program can be changed at runtime for easy experimentation.
Subroutines are also available for building libraries of PD
objects.
[http://gige.epy.co.at/pd/pd.html]
[http://man104nfs.ucsd.edu/~mpuckett/software.html]
- GEM
- The Graphics Environment for Multimedia is for generating
real-time computer graphics for audio-visual compositions.
It is a collection of external programs for creating
OpenGL graphics from within the
PD program for real-time audio processing.
[http://www.danks.org/mark/GEM/]
- PDDL
- A problem specification language developed for the AIPS-98 planning
competition. The syntactic features supported include:
- basic STRIPS-style actions;
- conditional effects;
- universal quantification over dynamic universes, e.g. object
creation and destruction;
- domain axioms over stratified theories;
- specification of safety constraints;
- specification of hierarchical actions composed of subactions and
subgoals; and
- management of multiple problems in multiple domains using
differing subsets of language features.
The distribution contains a syntax checker, a solution checker,
several sample domains, and a user's manual.
The package is written in Common Lisp.
[ftp://ftp.cs.yale.edu/pub/mcdermott/software/]
- pddlparser
- A parser for strict PDDL.
[http://www.dur.ac.uk/~dcs0www/research/stanstuff/planpage.html]
- PDECOL
- See PDELIB.
- PDECONT
- A Newton-Picard single shooting code.
[http://www.cs.kuleuven.ac.be/~kurt/bifcode.html]
- PDELIB
- A collection of Fortran routines which solve
general systems of nonlinear, initial and boundary value partial differential
equations (PDEs) in one or two space dimensions, with each routine
based on the method of lines.
The components of the package are MOL1D, PDECOL, and
PDETWO.
MOL1D solves systems of linear or nonlinear initial and boundary
value problems in one space dimension. It can solve hyperbolic problems
with or without dicontinuities and parabolic equations (including
reaction-diffusion equations). It uses the method of lines based
on equi-spaced finite differences.
PDECOL solves general systems of initial and boundary value problems
in one space dimension with general boundary conditions, with spatial
derivatives allowed to be at most second order. This uses the method
of lines based on the collocation of B-spline basis functions.
PDETWO solves general nonlinear systems of initial and boundary
value problems in two spatial dimensions with quasi-linear boundary
conditions. It uses the mthod of lines based upon finite differences
on a user-specified rectangular mesh.
All of the components of PDELIB are written in Fortran and
available as source code.
Each component is documented in a separate ASCII file which
servers as a user's manual.
See Madsen and Sincovec (1979).
[http://math.nist.gov/cgi-bin/gams-serve/list-package-components/PDELIB.html]
- PDETWO
- See PDELIB.
- PDF
- The Portable Document
Format is the underlying file format for the
Acrobat
family of document interchange products created by
Adobe
(who also created the
earlier PostScript
format). Any document that would normally be printed can now
instead be turned into PDF which represents the exact appearance
of the printed document, which can then be viewed with an
Acrobat Reader.
In addition to representing the printed pages of
a document, Acrobat supports additional navigational aids such as
hyperlinks, bookmarks, and thumbnail views of images. The Acrobat
Reader is freely available for most platforms, but to create PDF
documents you need the commercially available Adobe PDFWriter
or Distiller products.
PDF is based on Level 2 PostScript although it uses a simplified
and limited set of operators, and no new operators can be defined
and there are no interative constructs. A file is structured
as a number of separate objects, each of which are numbered, which
may refer to each other and appear anywhere in the file.
PDF files cannot as yet (3/97) be sent directly to printers to
obtain hardcopy. They must first be run through a filt