Analysis and Modeling of Collaborative Execution Strategies for Heterogeneous CPU-FPGA Architectures

被引:26
作者
Huang, Sitao [1 ]
Chang, Li-Wen [2 ,7 ]
El Hajj, Izzat [1 ]
De Gonzalo, Simon Garcia [3 ]
Gomez-Luna, Juan [4 ]
Chalamalasetti, Sai Rahul [5 ]
El-Hadedy, Mohamed [6 ]
Milojicic, Dejan [5 ]
Mutlu, Onur [4 ]
Chen, Deming [1 ]
Hwu, Wen-mei [1 ]
机构
[1] UIUC, ECE, Champaign, IL 61820 USA
[2] Microsoft, Albuquerque, NM USA
[3] UIUC, CS, Champaign, IL USA
[4] Swiss Fed Inst Technol, CS, Zurich, Switzerland
[5] Hewlett Packard Labs, Palo Alto, CA USA
[6] Cal Poly Pomona, ECE, Pomona, CA USA
[7] UIUC, Champaign, IL USA
来源
PROCEEDINGS OF THE 2019 ACM/SPEC INTERNATIONAL CONFERENCE ON PERFORMANCE ENGINEERING (ICPE '19) | 2019年
关键词
CPU-FPGA architectures; Heterogeneous systems; OpenCL; Performance analysis;
D O I
10.1145/3297663.3310305
中图分类号
TP301 [理论、方法];
学科分类号
081202 ;
摘要
Heterogeneous CPU-FPGA systems are evolving towards tighter integration between CPUs and FPGAs for improved performance and energy efficiency. At the same time, programmability is also improving with High Level Synthesis tools (e.g., OpenCL Software Development Kits), which allow programmers to express their designs with high-level programming languages, and avoid time-consuming and error-prone register-transfer level (RTL) programming. In the traditional loosely-coupled accelerator mode, FPGAs work as of-fload accelerators, where an entire kernel runs on the FPGA while the CPU thread waits for the result. However, tighter integration of the CPUs and the FPGAs enables the possibility of fine-grained collaborative execution, i.e., having both devices working concurrently on the same workload. Such collaborative execution makes better use of the overall system resources by employing both CPU threads and FPGA concurrency, thereby achieving higher performance. In this paper, we explore the potential of collaborative execution between CPUs and FPGAs using OpenCL High Level Synthesis. First, we compare various collaborative techniques (namely, data partitioning and task partitioning), and evaluate the tradeoffs between them. We observe that choosing the most suitable partitioning strategy can improve performance by up to 2x. Second, we study the impact of a common optimization technique, kernel duplication, in a collaborative CPU-FPGA context. We show that the general trend is that kernel duplication improves performance until the memory bandwidth saturates. Third, we provide new insights that application developers can use when designing CPU-FPGA collaborative applications to choose between different partitioning strategies. We find that different partitioning strategies pose different tradeoffs (e.g., task partitioning enables more kernel duplication, while data partitioning has lower communication overhead and better load balance), but they generally outperform execution on conventional CPU-FPGA systems where no collaborative execution strategies are used. Therefore, we advocate even more integration in future heterogeneous CPU-FPGA systems (e.g., OpenCL 2.0 features, such as fine-grained shared virtual memory).
引用
收藏
页码:79 / 90
页数:12
相关论文
共 82 条
[1]  
Alsop Johnathan, 2018, ISCA
[2]  
Altera, 2015, ALT US CUST ARM BAS
[3]  
[Anonymous], 2008, ISCA
[4]  
[Anonymous], 2016, MICRO
[5]  
[Anonymous], 2016, FPGA
[6]  
[Anonymous], ACM TACO
[7]  
[Anonymous], 2013, HPCA
[8]  
[Anonymous], 1981, COMMUNICATIONS ACM
[9]  
[Anonymous], 2017, MICROSOFT UNVEILS PR
[10]  
[Anonymous], 2014, ISCA