Automatic Mapping of Stream Programs on Multicore Architectures
CEA, LIST
International Workshop on Compilers for Parallel Computers, 2010
Stream languages explicitly describe fork-join and pipeline parallelism, offering a powerful programming model for general multicore systems. This parallelism description can be exploited on hybrid architectures, eg. composed of Graphics Processing Units (GPUs) and general purpose multicore processors. In this paper, we present a novel approach to optimize stream programs for hybrid architectures composed of GPU and multicore CPUs. The approach focuses on memory and communication performance bottlenecks for this kind of architecture. The initial task graph of the stream program is first transformed so as to reduce fork-join synchronization costs. The transformation is obtained through the application of a sequence of some optimizing elementary stream restructurations enabling communication efficient mappings. Then tasks are scheduled in a software pipeline and coarsened with a coarsening level adapted to their placement (CPU of GPU). Our experiments show the importance of both the synchronization cost reduction and of the coarsening step on performance, adapting the grain of parallelism to the CPUs and to the GPU.
February 28, 2013 by hgpu