SA-C(ID:3572/sac004)

Parallel C 


for Single Assignment C

high-level Parallel-programming dialect of C for expressing image processing algorithms

"a single assignment variant of the C programming language designed to exploit both coarse-grain and fine-grain parallelism in computer vision and image processing applications"

Jeffrey P. Hammes, Robert Rinker, Wim Böhm, Walid A. Najjar and Bruce Draper

1997 Colorado State University


Related languages
C => SA-C   Built on
SA-C => Sassy   Derivation of

References:
  • Jeffrey P. Hammes et al "A High Level, Algorithmic Programming Language and Compiler for Reconfigurable Systems" view details pdf External link: Cite seer page Abstract: This paper presents a high level, machine independent, algorithmic, singleassignment programming language SA-C and its optimizing compiler targeting recon- figurable systems, and intended for Image Processing applications. Language features are introduced and discussed. The intermediate forms DDCF and DFG, used in the optimization and code-generation phases are described. Conventional and reconfigurable system specific optimizations are briefiy introduced. The code generation process, using an abstract target machine, is described. Finally the performance efiects of combinations of various optimizations are compared to hand coded C, using an edge detection algorithm followed by a threshold operator. Timing results are encouraging. Improvements of the compilation and code generation route are discussed.
  • Scholz, S.-B. With-loop-folding in sac--Condensing Consecutive Array Operations. In C. Clack, T. Davie, and K. Hammond, editors, Proceedings of the 9th International Workshop on Implementation of Functional Languages, pages 225--242. University of St. Andrews, 1997. view details External link: Cite-seer Abstract: This paper introduces a new compiler optimization called with-loop-folding. It is based on a special loop construct, the with- loop, which in the functional language Sac (for Single Assignment C) serves as a versatile vehicle to describe array operations on an elementwise basis. A general mechanism for combining two of these with-loops into a single loop construct is presented. This mechanism constitutes a powerful tool when it comes to generate efficiently executable code from high-level array specifications. By means of a few examples it is shown that even complex nestings of array operations similar to those available in Apl can be transformed into single loop operations which are similar to hand-optimized with-loop specifications. As a consequence, the way a complex array operation is combined from primitive array operations does not affect the runtime performance of the compiled code
  • Bruce A. Draper et al, "Compiling {SA--C} Programs to {FPGAs}: Performance Results", Lecture Notes in Computer Science volume 2095 pp 220 2001 view details Abstract: At the first ICVS, we presented SA-C ("sassy"), a singleassignment variant of the C programming language designed to exploit both coarse-grain and fine-grain parallelism in computer vision and image processing applications. This paper presents a new optimizing compiler that maps SA-C source code onto field programmable gate array (FPGA) configurations. The compiler allows programmers to exploit FPGAs as inexpensive and massively parallel processors by writing high-level source code rather than hardware-level circuit designs. We present several examples of simple image-based programs and the optimizations that are automatically applied to them during compilation, and compare their performance on FPGAs and Pentiums of similar ages. From this, we determine what types of applications benefit from current FPGA technology, and conclude with some speculations on the future development of FPGAs and their expanding role in computer vision systems.
    External link: Citeseer page