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.org/gallen/cpn

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>