Abstract
From laptops to supercomputer nodes hardware architectures become increasingly heterogeneous, combining at least multiple general-purpose cores with one or even multiple GPU accelerators. Taking effective advantage of such systems’ capabilities becomes increasingly important, but is even more challenging.
SaC is a functional array programming language with support for fully automatic parallelization following a data-parallel approach. Typical SaC programs are good matches for both conventional multi-core processors as well as many-core accelerators. Indeed, SaC supports both architectures in an entirely compiler-directed way, but so far a choice must be made at compile time: either the compiled code utilizes multiple cores and ignores a potentially available accelerator, or it uses a single GPU while ignoring all but one core of the host system.
We present a compilation scheme and corresponding runtime system support that combine both code generation alternatives to harness the computational forces of multiple general-purpose cores and multiple GPU accelerators to collaboratively execute SaC programs without explicit encoding in the programs themselves and thus without going through the hassle of heterogeneous programming.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Grelck, C., et al.: SAC: a functional array language for efficient multi-threaded execution. International Journal of Parallel Programming 34(4), 383–427 (2006)
Wieser, V., et al.: Combining High Productivity and High Performance in Image Processing Using Single Assignment C on Multi-core CPUs and Many-core GPUs. Journal of Electronic Imaging 21(2) (2012)
Chamberlain, R., et al.: Visions for application development on hybrid computing systems. Parallel Computing 34(4), 201–216 (2008)
Kumar, R., et al.: Heterogeneous chip multiprocessors. Computer 38(11) (2005)
Guo, Z., et al.: A quantitative analysis of the speedup factors of FPGAs over processors. In: Field Programmable Gate Arrays, Monterrey, CA, USA (2004)
Che, S., et al.: A performance study of general-purpose applications on graphics processors using CUDA. Journal of Parallel and Distributed Computing 68(10), 1370–1380 (2008)
Williams, S., et al.: The potential of the cell processor for scientific computing. In: 3rd Conference on Computing Frontiers, Ischia, Italy. ACM (2006)
RapidMind Inc.: Writing Applications for the GPU Using the RapidMindTM Development Platform (2006)
Papakipos, M.: The PeakStream platform: High-Productivity software development for multi-core processors. Technical report, PeakStream Inc. (2007)
Dolbeau, R., et al.: HMPPTM: A hybrid multi-core parallel programming environment. In: General Purpose Processing on Graphics Processing Units, Boston, MA, USA (2007)
Tomov, S., et al.: MAGMA Users’ Guide. University of Tennessee (2010)
Horton, M., et al.: A Class of Hybrid LAPACK Algorithms for Multicore and GPU Architectures. In: Application Accelerators in High-Performance Computing, Knoxville, TN, USA (2011)
Ravi, V., et al.: Compiler and runtime support for enabling reduction computations on heterogeneous systems. Concurrency and Computation: Practice and Experience 24(5), 463–480 (2011)
Grelck, C.: Shared memory multiprocessor support for functional array processing in SAC. Journal of Functional Programming 15(3), 353–401 (2005)
Guo, J., et al.: Breaking the GPU programming barrier with the auto-parallelising SAC compiler. In: Declarative Aspects of Multicore Programming, Austin, TX, USA (2011)
Hummel, S., et al.: Load-sharing in heterogeneous systems via weighted factoring. In: Parallel Algorithms and Architectures, Padua, Italy, pp. 318–328. ACM (1996)
Boyer, M., et al.: Automatic Intra-Application Load Balancing for Heterogeneous Systems. In: AMD Fusion® Developer Summit 2011, Bellevue, Washington, USA (2011)
Grelck, C.: Single Assignment C (SAC): High Productivity meets High Performance. In: Zsók, V., Horváth, Z., Plasmeijer, R. (eds.) CEFP. LNCS, vol. 7241, pp. 207–278. Springer, Heidelberg (2012)
Grelck, C., Scholz, S.B.: Merging compositions of array skeletons in SAC. Journal of Parallel Computing 32(7+8), 507–522 (2006)
Grelck, C., et al.: On code generation for multi-generator with-loops in SAC. In: Koopman, P., Clack, C. (eds.) IFL 1999. LNCS, vol. 1868, pp. 77–94. Springer, Heidelberg (2000)
Guo, J.: Compilation of SAC to CUDA. PhD thesis, University of Hertfordshire, Hatfield, UK (2012)
Augonnet, C., et al.: A unified runtime system for heterogeneous multi-core architectures. In: Euro-Par 2008, Las Palmas, Spain (2008)
Papamarcos, M., et al.: A low-overhead coherence solution for multiprocessors with private cache memories. Computer Architecture News 12(3), 348–354 (1984)
DAS-4: Distributed ASCI Supercomputer 4, http://www.cs.vu.nl/das4/
Chakravarty, M., et al.: Accelerating Haskell array codes with multicore GPUs. In: Declarative Aspects of Multicore Programming, Austin, TX, USA (2011)
Microsoft Research: An Introduction to Microsoft Accelerator v2 (July 2012)
Luk, C.K., et al.: Qilin: exploiting parallelism on heterogeneous multiprocessors with adaptive mapping. In: Microarchitecture, New York, NY, USA (2009)
Augonnet, C., et al.: StarPU: A unified platform for task scheduling on heterogeneous multicore architectures. In: Euro-Par 2009, Delft, Netherlands (2009)
Song, F., et al.: Efficient Support for Matrix Computations on Heterogeneous Multi-core and Multi-GPU Architectures, University of Tennessee (2011)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2013 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Diogo, M., Grelck, C. (2013). Towards Heterogeneous Computing without Heterogeneous Programming. In: Loidl, HW., Peña, R. (eds) Trends in Functional Programming. TFP 2012. Lecture Notes in Computer Science, vol 7829. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-40447-4_18
Download citation
DOI: https://doi.org/10.1007/978-3-642-40447-4_18
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-40446-7
Online ISBN: 978-3-642-40447-4
eBook Packages: Computer ScienceComputer Science (R0)