FPGAs are an attractive type of accelerator for all-purpose HPC computing systems due to the possibility of deploying tailored hardware on demand. However, the common tools for programming and operating FPGAs are still complex to use, especially in scenarios where diverse types of tasks should be dynamically executed. In this work we present a programming abstraction with a simple interface that internally leverages High-Level Synthesis, Dynamic Partial Reconfiguration and synchronisation mechanisms to use an FPGA as a multi-tasking server with preemptive scheduling and priority queues. This leads to an improved use of the FPGA resources, allowing the execution of several different kernels concurrently and deploying the most urgent ones as fast as possible. The results of our experimental study show that our approach incurs only a 10% overhead in the worst case when using two reconfigurable regions, whilst providing a significant performance improvement of at least 24% over the traditional full reconfiguration approach.
翻译:由于有可能在需求时部署量身定制的硬件,FPGA是所有目的HPC计算机系统的一种有吸引力的加速器。然而,用于编程和操作FPGA的通用工具仍然很复杂,难以使用,特别是在应动态地执行不同类型任务的情况下。在这项工作中,我们提出了一个程序抽象,有一个简单的界面,在内部利用高级合成、动态部分重新配置和同步机制,利用FPGA作为多任务服务器,带有先发制人的时间排队和优先排队。这导致更好地使用FPGA资源,允许同时执行若干不同的内核并尽快部署最紧迫的内核。我们实验研究的结果显示,在使用两个可重新配置的区域时,我们的方法在最坏的情况下只产生10%的间接费用,同时在传统的全面重组方法上提供至少24%的业绩改进。