We present a tutorial description of the CAP Computer-Aided Parallelization tool. CAP has been designed with the goal of letting the parallel application programmer have the complete control about how his application is parallelized, and at the same time freeing him from the burden of managing explicitly a large number of threads and associated synchronization and communication primitives. The CAP tool, a precompiler generating C++ source code, enables application programmers to specify at a high level of abstraction the set of threads present in the application, the processing operations offered by these threads, and the parallel constructs specifying the flow of data and parameters between operations. A configuration map specifies the mapping between CAP threads and operating system processes, possibly located on different computers. The generated program may run on various parallel configurations without recompilation. We discuss the issues of flow control and load balancing and show the solutions offered by CAP. We also show how CAP can be used to generate relatively complex parallel programs incorporating neighborhood dependent operations. Finally, we briefly describe a real 3D image processing application: the Visible Human Slice Server, its implementation according to the previously defined concepts and its performance.
[1]
Ioannis Pitas,et al.
Parallel Algorithms for Digital Image Processing, Computer Vision and Neural Networks
,
1993
.
[2]
Michael J. Ackerman,et al.
Accessing the Visible Human Project
,
1995,
D Lib Mag..
[3]
Roger D. Hersch,et al.
Performance of CAP-Specified Linear Algebra Algorithms
,
1997,
PVM/MPI.
[4]
Joel H. Saltz,et al.
Parallel Programming Using C++
,
1996
.
[5]
Roger D. Hersch,et al.
Synthesizing parallel imaging applications using the CAP (computer-aided parallelization) tool
,
1997,
Electronic Imaging.
[6]
Roger D. Hersch,et al.
Performances of the PS2 Parallel Storage and Processing System for Tomographic Image
,
1997
.
[7]
Andrew S. Grimshaw,et al.
Easy-to-use object-oriented parallel processing with Mentat
,
1993,
Computer.
[8]
Roger D. Hersch,et al.
Parallelizing I/O-intensive image access and processing applications
,
1999,
IEEE Concurr..
[9]
Gregory V. Wilson,et al.
Parallel Programming Using C
,
1996
.
[10]
Ian Foster,et al.
Designing and building parallel programs
,
1994
.
[11]
Roger D. Hersch,et al.
Computer-Assisted Generation of PVM/C++ Programs Using CAP
,
1996,
PVM.