Computational Process Networks
This is the download page for CPN releases circa 2010-2011,
until it got moved to bitbucket.
After bitbucket did its reorganization, the code was offline for awhile.
Now it's hosted on github.
Computational Process Networks is a model and a framework library for real-time high-throughput signal and image processing. The model combines:
- Process Networks [1], a formal, concurrent model for functional parallelism
- Bounded Scheduling [2] for realization in finite memory
- Firing Thresholds from Computation Graphs [3]
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:
- user API changes and updates for clarity
- a tutorial document with sample code
- improved remote queue performance
- updates and improvements to case studies (as used in dissertation results)
- addition of several types of utility nodes in node library
- bug fixes to D4R, the CPN Kernel, PthreadLib, and more
- stability and robustness as demonstrated by multiple 72 hour tests
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:
- D4R - the distributed dynamic deadlock detection and resolution algorithm
- beamforming case study (used in Asilomar 2010 paper)
- updated prime sieve case study
- construction of CPN programs from XML and JSON descriptions
- significant changes to the remote queue implementation
- reorganization of layout to have a node library
- Pseudo nodes - I/O endpoints to a CPN network embedded in another application
- Functional nodes - templated nodes from functions or functional objects
- improvements to the pthread library
- general cleanup
- bug fixes
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:
- a distributed implementation targeting clusters of workstations
- a CPN kernel for dynamic construction of CPN programs
- extensive built-in unit testing
- case studies to exercise this new framework
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.
- G. Kahn, "The Semantics of a Simple Language for Parallel Programming," Information Processing, pp. 471-475, Stockholm, Aug. 1974.
- 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.
- 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.
- 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.
- 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 utexas DOT edu>