Affiliation:
1. Massachusetts Institute of Technology, Cambridge, MA, USA
Abstract
Trends in both consumer and high performance computing are bringing not only more cores, but also increased heterogeneity among the computational resources within a single machine. In many machines, one of the greatest computational resources is now their graphics coprocessors (GPUs), not just their primary CPUs. But GPU programming and memory models differ dramatically from conventional CPUs, and the relative performance characteristics of the different processors vary widely between machines. Different processors within a system often perform best with different algorithms and memory usage patterns, and achieving the best overall performance may require mapping portions of programs across all types of resources in the machine.
To address the problem of efficiently programming machines with increasingly heterogeneous computational resources, we propose a programming model in which the best mapping of programs to processors and memories is determined empirically. Programs define choices in how their individual algorithms may work, and the compiler generates further choices in how they can map to CPU and GPU processors and memory systems. These choices are given to an empirical autotuning framework that allows the space of possible implementations to be searched at installation time. The rich choice space allows the autotuner to construct poly-algorithms that combine many different algorithmic techniques, using both the CPU and the GPU, to obtain better performance than any one technique alone. Experimental results show that algorithmic changes, and the varied use of both CPUs and GPUs, are necessary to obtain up to a 16.5x speedup over using a single program configuration for all architectures.
Publisher
Association for Computing Machinery (ACM)
Cited by
5 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Automatic Matching of Legacy Code to Heterogeneous APIs;ACM SIGPLAN Notices;2018-11-30
2. Predictable Thread Coarsening;ACM Transactions on Architecture and Code Optimization;2018-06-30
3. Automatic Matching of Legacy Code to Heterogeneous APIs;Proceedings of the Twenty-Third International Conference on Architectural Support for Programming Languages and Operating Systems;2018-03-19
4. Buffer allocation for real-time streaming applications running on heterogeneous multi-processors without back-pressure;Journal of Systems Architecture;2016-01
5. Evaluating vector data type usage in OpenCL kernels;Concurrency and Computation: Practice and Experience;2014-10-23