Supporting Heterogenous Computing Environments in SaC
University of Amsterdam, Institute of Informatics, Science Park 904, 1098XH Amsterdam, Netherlands
13th International Symposium Trends in Functional Programming (TFP’12), 2012
From laptops to supercomputer nodes hardware architectures become increasingly heterogeneous, combining at least multiple general-purpose cores with one or even multiple GPGPU accelerators. Taking effective advantage of such systems’ capabilities becomes increasingly challenging. SaC is a functional array programming language with support for fully automatic parallelization following a data-parallel approach. As such many SaC programs are good matches for both conventional multi-core processors as well as many-core accelerators. Consequently, SaC supports both architectures, 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 GPGPU while ignoring all but one core of the host system. We present a preliminary compilation scheme and corresponding runtime system support that combines both code generation alternatives to join the computational forces of multiple general-purpose cores and multiple GPGPU accelerators to collaboratively execute SaC programs without any programmer or user support.
September 8, 2012 by hgpu