ABSTRACT
The StreamIt programming model has been proposed to exploit parallelism in streaming applications on general purpose multicore architectures. The StreamIt graphs describe task, data and pipeline parallelism which can be exploited on accelerators such as Graphics Processing Units (GPUs) or CellBE which support abundant parallelism in hardware.
In this paper, we describe a novel method to orchestrate the execution of a StreamIt program on a multicore platform equipped with an accelerator. The proposed approach identifies, using profiling, the relative benefits of executing a task on the superscalar CPU cores and the accelerator. We formulate the problem of partitioning the work between the CPU cores and the GPU, taking into account the latencies for data transfers and the required buffer layout transformations associated with the partitioning, as an integrated Integer Linear Program (ILP) which can then be solved by an ILP solver.We also propose an efficient heuristic algorithm for the work partitioning between the CPU and the GPU, which provides solutions which are within 9.05% of the optimal solution on an average across the benchmark suite. The partitioned tasks are then software pipelined to execute on the multiple CPU cores and the Streaming Multiprocessors (SMs) of the GPU. The software pipelining algorithm orchestrates the execution between CPU cores and the GPU by emitting the code for the CPU and the GPU, and the code for the required data transfers. Our experiments on a platform with 8 CPU cores and a GeForce 8800 GTS 512 GPU show a geometric mean speedup of 6.84X with a maximum of 51.96X over a single threaded CPU execution across the StreamIt benchmarks. This is a 18.9% improvement over a partitioning strategy that maps only the filters that cannot be executed on the GPU -- the filters with state that is persistent across firings -- onto the CPU.
- NVIDIA CUDA Programming Guide. URL http://www.nvidia.com/cuda.Google Scholar
- OpenCL Overview. URL http://www.khronos.org/developers/library/overview/opencl_overview.pdf.Google Scholar
- StreamIt Home Page. URL http://www.cag.lcs.mit.edu/streamit/.Google Scholar
- S. S. Bhattacharyya and E. A. Lee. Looped Schedules for Dataflow Descriptions of Multirate Signal Processing Algorithms. Formal Methods in System Design, 5(3), 1994. Google Scholar
Digital Library
- Ian Buck et. al. Brook for GPUs: Stream Computing on Graphics Hardware. ACM Trans. on Graphics, 23(3), 2004. Google Scholar
Digital Library
- J. A. Kahle et. al. Introduction to the Cell Multiprocessor. IBM Journal of Research and Development, 49(4--5), 2005. Google Scholar
Digital Library
- Michael Bedford Taylor et. al. The RAW Microprocessor: A Computational Fabric for Software Circuits and General-Purpose Programs. IEEE Micro, 22(2), 2002. Google Scholar
Digital Library
- Michael I. Gordon et. al. A Stream Compiler for Communication-Exposed Architectures. In ASPLOS-X: Proc. of the 10th Intl. Conf. on Architectural Support for Programming Languages and Operating Systems, 2002. Google Scholar
Digital Library
- Shane Ryoo et. al. Program Optimization Space Pruning for a Multithreaded GPU. In CGO '08: Proc. of the sixth annual IEEE/ACM Intl. Symp. on Code Generation and Optimization, 2008. Google Scholar
Digital Library
- Shane Ryoo et. al. Optimization Principles and Application Performance Evaluation of a Multithreaded GPU using CUDA. In PPoPP'08: Proc. of the 13th ACM SIGPLAN Symp. on Principles and Practice of Parallel Programming, 2008. Google Scholar
Digital Library
- G. R. Gao, R. Govindarajan, and P. Panangaden. Well-Behaved Dataflow Programs for DSP Computation. ICASSP-92: IEEE Intl. Conf. on Acoustics, Speech, and Signal Processing, 1992., 5, Mar 1992.Google Scholar
- Michael I Gordon, William Thies, and Saman Amarasinghe. Exploiting Coarse-grained Task, Data, and Pipeline Parallelism in Stream Programs. In ASPLOS-XII: Proc. of the 12th Intl. Conf. on Architectural Support for Programming Languages and Operating Systems, 2006. Google Scholar
Digital Library
- R. Govindarajan and Guang R. Gao. A Novel Framework for Multirate Scheduling in DSP Applications. In ASAP '93: Proc. of the 1993 Intl. Conf. on Application--Specific Array Processors, Oct 1993.Google Scholar
- R. Govindarajan, Guang R. Gao, and Palash Desai. Minimizing Memory Requirements in Rate-optimal Schedules. In ASAP '94: Proc. of the 1994 Intl. Conf. on Application Specific Array Processors, Aug 1994.Google Scholar
- Junwei Hou and Wayne Wolf. Process Partitioning for Distributed Embedded Systems. In CODES '96: Proc. of the 4th Intl. Workshop on Hardware/Software Co-Design, 1996. Google Scholar
Digital Library
- G. Karypis and V. Kumar. Multilevel k-way Partitioning Scheme for Irregular Graphs. Journal of Parallel and Distributed Computing, 48, 1998. Google Scholar
Digital Library
- B.W. Kernighan and S. Lin. An Efficient Heuristic Procedure for Partitioning Graphs. Bell System Tech. Journal, 49, Feb. 1970.Google Scholar
- Manjunath Kudlur and Scott Mahlke. Orchestrating the Execution of Stream Programs on Multicore Platforms. In PLDI '08: Proc. of the 2008 ACM SIGPLAN Conf. on Programming Language Design and Implementation, 2008. Google Scholar
Digital Library
- E. A. Lee and D. G. Messerschmitt. Static Scheduling of Synchronous Data Flow Programs for Digital Signal Processing. IEEE Trans. on Computers, 36(1), 1987. Google Scholar
Digital Library
- E.A. Lee and D.G. Messerschmitt. Synchronous Data Flow. Proc. of the IEEE, 75(9), Sept. 1987.Google Scholar
Cross Ref
- B. R. Rau. Iterative Modulo Scheduling: An Algorithm for Software Pipelining Loops. In MICRO 27: Proc. of the 27th annual Intl. Symp. on Microarchitecture, 1994. Google Scholar
Digital Library
- B. R. Rau, Michael S. Schlansker, and P. P. Tirumalai. Code Generation Schema for Modulo Scheduled Loops. In MICRO 25: Proc. of the 25th annual Intl. Symp. on Microarchitecture, 1992. Google Scholar
Digital Library
- John Ruttenberg, Guang R. Gao, A. Stoutchinin, and W. Lichtenstein. Software Pipelining Showdown: Optimal vs. Heuristic Methods in a Production Compiler. In PLDI '96: Proc. of the ACM SIGPLAN 1996 Conf. on Programming Language Design and Implementation, 1996. Google Scholar
Digital Library
- Janis Sermulins, William Thies, Rodric Rabbah, and Saman Amarasinghe Cache Aware Optimization of Stream Programs. In LCTES'05: Proc. of the 2005 ACM SIGPLAN/SIGBED Conf. on Languages, Compilers, and Tools for Embedded Systems, 2005. Google Scholar
Digital Library
- David Tarditi, Sidd Puri, and Jose Oglesby. Accelerator: Using Data Parallelism to Program GPUs for General-Purpose Uses. In ASPLOSXII: Proc. of the 12th Intl. Conf. on Architectural Support for Programming Languages and Operating Systems, 2006. Google Scholar
Digital Library
- William Thies, Michal Karczmarek, and Saman Amarasinghe. StreamIt: A Language for Streaming Applications. In CC '02: Proc. of the 11th Intl. Conf. on Compiler Construction, 2002. Google Scholar
Digital Library
- Abhishek Udupa, R. Govindarajan, and Matthew J. Thazhuthaveetil. Software Pipelined Execution of Stream Programs on GPUs. In CGO'09: Proc. of the seventh annual IEEE/ACM Intl. Symp. on Code Generation and Optimization, 2009. Google Scholar
Digital Library
- Ti-Yen Yen and Wayne Wolf. Communication Synthesis for Distributed Embedded Systems. In ICCAD '95: Proc. of the 1995 IEEE/ACM Intl. Conf. on Computer-aided Design, 1995. Google Scholar
Digital Library
- D. Zhang, Qiuyuan J. Li, Rodric Rabbah, and Saman Amarasinghe. A Lightweight Streaming Layer for Multicore Execution. SIGARCH Computer Architecture News, 36(2), 2008. Google Scholar
Digital Library
Index Terms
Synergistic execution of stream programs on multicores with accelerators
Recommendations
Synergistic execution of stream programs on multicores with accelerators
LCTES '09The StreamIt programming model has been proposed to exploit parallelism in streaming applications on general purpose multicore architectures. The StreamIt graphs describe task, data and pipeline parallelism which can be exploited on accelerators such as ...
Software Pipelined Execution of Stream Programs on GPUs
CGO '09: Proceedings of the 7th annual IEEE/ACM International Symposium on Code Generation and OptimizationThe StreamIt programming model has been proposed to exploit parallelism in streaming applications on general purpose multi-core architectures. This model allows programmers to specify the structure of a program as a set of filters that act upon data, ...
Efficient Compilation of Stream Programs for Heterogeneous Architectures: A Model-Checking based approach
SCOPES '15: Proceedings of the 18th International Workshop on Software and Compilers for Embedded SystemsStream programming based on the synchronous data flow (SDF) model naturally exposes data, task and pipeline parallelism. Statically scheduling stream programs for homogeneous architectures has been an area of extensive research. With graphic processing ...







Comments