Computational Process Networks

Computational Process Networks is a model and a framework library for real-time high-throughput signal and image processing. The model combines:

Computational Process Networks model algorithms on overlapping continuous streams of data (such as digital filters and overlap-and-save fast Fourier transforms), and provides liveness and determinate execution. Our C++ implementation provides a portable, high-performance, scalable framework using POSIX Threads.

The Computational Process Network source code is publicly available, under the GNU GPL.

Release 1.0.0 (October 2011) and all future releases have moved to

Bitbucket is a widely used code hosting site. From there we can easily make small bugfix releases, have tagged release versions (including tarballs), and easily accept contributions. This is a minor release from before, mostly an update to the build system. CPN now uses GNU autotools instead of including a set of makefiles for a limited number of platforms.

Release 20110601 - This is our fifth major release. Specific new features include:
This release represents the version used for dissertation case studies [5]. It contains about 30K lines of code in about 330 source files (as estimated by cloc). This software for POSIX systems includes makefiles for Linux on i686 and x86_64, and MacOS X on i386.

Release 20101207 - This is our fourth major release. Specific new features include:

Release 20100212 - This is our third major release, and our first release in nearly 4 years. It is our first release after a major rewrite of portions of the CPN framework. Specific new features include:

Release 20061110 - This release branch never left pre-alpha state. It was our first release to include the D4R algorithm.

Release 20000329 - The original release of CPN worked only on symmetric multiprocessing workstations. It was used in a March 2000 paper [4] which prototypes a 3-D sonar beamfomer. The beamfomer sustains a real-time 4 GFLOPS on a Sun Ultra Enterprise 4000 with 12 336 MHz UltraSPARC-II processors.

  1. G. Kahn, "The Semantics of a Simple Language for Parallel Programming," Information Processing, pp. 471-475, Stockholm, Aug. 1974.
  2. T. M. Parks, "Bounded Scheduling of Process Networks," Technical Report UCB/ERL-95-105, Ph.D. Dissertation, EECS Department, University of California, Berkeley, CA 94720-1770, Dec. 1995.
  3. R. M. Karp and R. E. Miller, "Properties of a Model for Parallel Computations: Determinacy, Termination, Queueing," SIAM Journal, vol. 14, pp. 1390-1411, Nov. 1966.
  4. G. E. Allen and B. L. Evans, "Real-Time Sonar Beamforming on a Unix Workstation Using Process Networks and POSIX Threads", IEEE Transactions on Signal Processing, pp. 921-926, March 2000.
  5. G. E. Allen, "Computational Process Networks: A Model and Framework for High-Throughput Signal Processing," doctoral dissertation, Dept. of Electrical and Computer Engineering, The University of Texas at Austin, Austin, Texas, 2011.

Software Developers: Gregory E. Allen and John F. Bridgman
Research Guidance: Brian L. Evans

This work is supported by the Independent Research and Development program at
Applied Research Laboratories: The University of Texas at Austin.

For more information contact: Greg Allen <gallen AT arlut DOT utexas DOT edu>