Aggregate Function Application Program Interface
Once upon a time, there was the PAPERS library. It was good, but it
only worked with either a real TTL_PAPERS unit or a "virtual"
TTL_VAPERS simulator. And people told us that was bad... because
they didn't have PAPERS hardware and didn't want to run at simulated
Thus was born AFAPI (pronounced "ah-fa'-pea"), a fully abstract
program interface that seeks to provide the most important aggregate
communication functions in as clean and portable a structure as
possible. AFAPI has numerous improvements over the old libraries,
including more consistent naming conventions and the addition of an
aggregate signal system.
Although TTL_PAPERS is particularly well-suited for implementing most
AFAPI operations, AFAPI can be implemented reasonably efficiently on
any parallel hardware offering low-latency communication. Thus far,
efficient versions of AFAPI exist for:
SHMAPERS, the SHared Memory Adapter for Parallel Execution and
Rapid Synchronization, which uses UNIX System V shared memory
segments to efficiently implement operations on standard SMPs
and even uniprocessors. This version does not support
clusters, but can be run on Linux, Solaris, HP-UX, etc.,
machines without changes.
CAPERS, the Cable Adapter for Parallel Execution and Rapid
Synchronization, which simply connects two IA32 Linux PCs
using a "LapLink" cable. This version has been somewhat
overshadowed by WAPERS (below).
WAPERS, a passive wiring pattern using "wired AND" of
open-collector parallel port lines to connect small numbers of
IA32 Linux PCs as a cluster.
TTL_PAPERS, any version from November 1994 or later,
connecting between 2 and 32 IA32 Linux PCs as a cluster. (Up
to thousands of PCs can be connected using TTL_PAPERS; the 32
limit is an artifact of the current library implementation.)
The latest AFAPI is a single, unified, release that will
include all versions of the AFAPI (but is temporarily missing
CAPERS). If you are just getting started with AFAPI, you'll
probably want to first play with SHMAPERS on a uniprocessor
UNIX system. Then, if you're interested in running on a
cluster, you will want to decide which network hardware
(CAPERS, WAPERS, or one of the TTL_PAPERS versions) to use....
To minimize file transmission time, we generally post software
files that can be unpacked by
file.tgz under Linux. However, to make
things easier for people who do not have
handy, we also post uncompressed
tar files for
the current versions.
The Latest Software Release
The following is the latest version of the AFAPI software;
use this for all new installations and upgrades.
AFAPI Reference Card
The latest unified AFAPI reference card.
VWLib Reference Card
The latest Video Wall Library reference card.
Unified AFAPI 19991222
This is the unified AFAPI release, including SHMAPERS, WAPERS,
and TTL_PAPERS support, as well as the new VWLib. Also included
are the latest reference cards the validation and benchmark suites.
CAPERS AFAPI 970530
CAPERS is not yet integrated into the unified AFAPI release;
note, however, that this CAPERS also predates the library fixes
and clarifications indicated on the latest reference card.
Old Software Releases
The following old releases should generally be avoided. They
are kept here primarily as a project history and as support for
old code that may have depended on the behavior of certain
Reference Cards for SHMAPERS
The now obsolete reference cards for individual AFAPI versions.
SHMAPERS AFAPI 960801
SHMAPERS is the SHared Memory Adapter for Parallel Execution and Rapid
Synchronization. It implements the full user-level AFAPI for SMP and
uniprocessor Linux/UNIX systems that provide the standard System V
shared memory segment operations. Unlike most shared-memory libraries,
SHMAPERS AFAPI is entirely bus-lock free; this both enhances
portability and ensures minimal bus interference during spin-lock
CAPERS AFAPI 960801
CAPERS is the Cable Adapter for Parallel Execution and Rapid
Synchronization; 970530 fixes a major bug concerning 16-bit data
transmission. It implements the full user-level AFAPI for
precisely two 386-family PCs running Linux (or one such SMP
unit with two SPP parallel ports). Although there is no practical way
to scale CAPERS to larger systems, CAPERS does provide a nice
zero-hardware introduction to PAPERS cluster technology....
TTL_PAPERS AFAPI 960801
TTL_PAPERS AFAPI 961220
TTL_PAPERS AFAPI 970204
TTL_PAPERS AFAPI 970530
These are the 960801, 961220, 970204, and 970530 releases of AFAPI for
TTL_PAPERS, the TTL implementation of Purdue's Adapter for Parallel
Execution and Rapid Synchronization. These libraries work with any of the
released designs (dated November 1994 or later). The full
user-level AFAPI is implemented for between 2 and 32 386-family PCs running
Linux. This library even supports mixing uniprocessor and SMP machines with
multiple TTL_PAPERS connections for each SMP, and parallel jobs can be
started on any PE within the cluster (rather than just from one
specific designated PE). However, the parallel meta-OS support provided is
still quite crude... we are working on that. ;-)
Linux I/O Permission Patch
This brief document explains the addition of a new system call to Linux:
giveioperm(). In standard Linux, only priv processes can get
the direct port access needed for use of PAPERS, thus compromising system
security. In contrast, this new call allows a priv process to control the
port access rights of an arbitrary Linux process.
This document is the old home page for distributing the TTL_PAPERS and
TTL_VAPERS library software. The TTL_VAPERS simulator even provides
an X-windows simulation of the TTL_PAPERS front panel! However, since
the release of AFAPI, this software is considered obsolete.
AFAPI Overview and Performance
H. G. Dietz, T. I. Mattox, and G. Krishnamurthy, The Aggregate Function
API: It's Not Just For PAPERS Anymore, proceedings of the Workshop on
Languages and Compilers for Parallel Computing (LCPC97), August 1997. This
is a nice overview of the AFAPI as a portable library; it also quotes
performance comparisons for many operations using SHMAPERS, TTL_PAPERS, and
MPL Compiler for PAPERS
W. E. Cohen and H. G. Dietz, A Data-Parallel Language on Purdue's
Adapter for Parallel Execution and Rapid Synchronization, paper
presented at the Midwest Society for Programming Languages and Systems
(MSPLS) October 1995 workshop. This paper describes how the MasPar
MPL compiler (a GCC-based SIMD parallel C dialect) was converted to
generate portable C code with embedded calls to the PAPERS library.
Model And Benchmarks For The PAPERS Library
H. G. Dietz, T. M. Chung, and T. I. Mattox,
A Parallel Processing Support Library
Based On Synchronized Aggregate Communication,
1995 Workshop on Languages and Compilers for Parallel Machines.
Although this paper describes the pre-AFAPI PAPERS library,
AFAPI contains very similar operations.
PAPERS Library Technical Report
H. G. Dietz, T. M. Chung, T. Mattox, and T. Muhammad,
A Synchronization and Aggregate Communication Library
for PAPERS Clusters,
Purdue University School of Electrical Engineering,
Draft Technical Report, January 1995.
(This is an older, but otherwise more complete,
version of the above document.)
PAPERS Compiler Technology
H. G. Dietz, W. E. Cohen, T. Muhammad, and T. I. Mattox,
"Compiler Techniques For Fine-Grain Execution
On Workstation Clusters Using PAPERS,"
7th Annual Workshop on Languages and Compilers for Parallel
(also a book chapter from Springer Verlag),
Cornell University, August 1994.
Timing Analysis and Code Scheduling
H. G. Dietz, M. T. O'Keefe, and A. Zaafrani,
"An Introduction to Static Scheduling for MIMD Architectures,"
Proceedings of the Third Workshop on Programming Languages and
Compilers for Parallel Computing, pp. 1-26, Irvine, California,
August 1990. (A revised version appears in
Advances in Languages and Compilers for Parallel Processing,
edited by A. Nicolau, D. Gelernter, T. Gross, and D. Padua, The MIT
Press, Cambridge, Massachusetts, 1991, pp. 425-444.)
SIMD/MIMD Mode-Independent Parallel Languages
Michael J. Phillip, Unification of Synchronous and Asynchronous
Models for Parallel Programming Languages, MS Thesis, School of
Electrical Engineering, Purdue University, May 1989.
The only thing set in stone is our name.