AFAPI:
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 speeds.

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:

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 releases as gzip-compressed tar files that can be unpacked by tar -zxvf file.tgz under Linux. However, to make things easier for people who do not have gunzip 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 (.html, .ps)
The latest unified AFAPI reference card.
VWLib Reference Card (.pdf, .ps)
The latest Video Wall Library reference card.
Unified AFAPI 19991222 (.tgz, .tar)
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 (.tgz)
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 implementation bugs.

Reference Cards for SHMAPERS (.html), CAPERS (.html), TTL_PAPERS (.html)
The now obsolete reference cards for individual AFAPI versions.
SHMAPERS AFAPI 960801 (.tgz)
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 operations.
CAPERS AFAPI 960801 (.tgz)
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 (.tgz)
TTL_PAPERS AFAPI 961220 (.tgz)
TTL_PAPERS AFAPI 970204 (.tgz)
TTL_PAPERS AFAPI 970530 (.tgz)
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 (.html)
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.
TTL_VAPERS/TTL_PAPERS Library (.html)
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.

Research Publications

AFAPI Overview and Performance (.html, .ps)
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 CAPERS.
MPL Compiler for PAPERS (.ps)
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 (.html, .ps)
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 (.html, .ps)
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 (.ps)
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 Computing (also a book chapter from Springer Verlag), Cornell University, August 1994.
Timing Analysis and Code Scheduling (.html, .ps)
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 (.html)
Michael J. Phillip, Unification of Synchronous and Asynchronous Models for Parallel Programming Languages, MS Thesis, School of Electrical Engineering, Purdue University, May 1989.

The Aggregate. The only thing set in stone is our name.