Heterogeneous many-cores are now an integral part of modern computing systems ranging from embedding systems to supercomputers.While heterogeneous many-core design offers the potential for energy-efficient high-perfor...Heterogeneous many-cores are now an integral part of modern computing systems ranging from embedding systems to supercomputers.While heterogeneous many-core design offers the potential for energy-efficient high-performance,such potential can only be unlocked if the application programs are suitably parallel and can be made to match the underlying heterogeneous platform.In this article,we provide a comprehensive survey for parallel programming models for heterogeneous many-core architectures and review the compiling techniques of improving programmability and portability.We examine various software optimization techniques for minimizing the communicating overhead between heterogeneous computing devices.We provide a road map for a wide variety of different research areas.We conclude with a discussion on open issues in the area and potential research directions.This article provides both an accessible introduction to the fast-moving area of heterogeneous programming and a detailed bibliography of its main achievements.展开更多
基金partially funded by the National Key Research and Development Program of China under Grant No.2018YFB0204301the National Natural Science Foundation of China under Grant agreements 61972408,61602501 and 61872294a UK Royal Society International Collaboration Grant.
文摘Heterogeneous many-cores are now an integral part of modern computing systems ranging from embedding systems to supercomputers.While heterogeneous many-core design offers the potential for energy-efficient high-performance,such potential can only be unlocked if the application programs are suitably parallel and can be made to match the underlying heterogeneous platform.In this article,we provide a comprehensive survey for parallel programming models for heterogeneous many-core architectures and review the compiling techniques of improving programmability and portability.We examine various software optimization techniques for minimizing the communicating overhead between heterogeneous computing devices.We provide a road map for a wide variety of different research areas.We conclude with a discussion on open issues in the area and potential research directions.This article provides both an accessible introduction to the fast-moving area of heterogeneous programming and a detailed bibliography of its main achievements.