Combining high productivity and high performance in image processing using single assignment C on multi-core CPUs and many-core GPUs
|Title||Combining high productivity and high performance in image processing using single assignment C on multi-core CPUs and many-core GPUs|
|Journal||Journal of Electronic Imaging|
In this paper the challenge of parallelization development of industrial high performance inspection systems is addressed concerning a conventional parallelization approach versus an auto-parallelized technique. Therefore, we introduce the functional array processing language Single Assignment C (SaC), which relies on a hardware virtualization concept for automated, parallel machine code generation for multicore CPUs and GPUs. Additional, software engineering aspects like programmability, productivity, understandability, maintainability and resulting achieved gain in performance are discussed from the point of view of a developer. With several illustrative benchmarking examples from the field of image processing and machine learning, the relationship between runtime performance and efficiency of development is analyzed.