To increase performance and efficiency, systems use FPGAs as reconfigurable accelerators. A key challenge in designing these systems is partitioning computation between processors and an FPGA. An appropriate division of labor may be difficult to predict in advance and require experiments and measurements. When an investigation requires rewriting part of the system in a new language or with a new programming model, its high cost can retard the study of different configurations. A single-language system with an appropriate programming model and compiler that targets both platforms simplifies this exploration to a simple recompile with new compiler directives. This work introduces StreamBlocks, an open-source compiler and runtime that uses the CAL dataflow programming language to partition computations across heterogeneous (CPU/accelerator) platforms. Because of the dataflow model's semantics and the CAL language, StreamBlocks can exploit both thread parallelism in multi-core CPUs and the inherent parallelism of FPGAs. StreamBlocks supports exploring the design space with a profile-guided tool that helps identify the best hardware-software partitions.
翻译:为了提高性能和效率,系统使用FPGAs作为可重新配置的加速器。设计这些系统的一个关键挑战是在处理器和FPGA之间进行分割计算。 适当的分工可能难以预先预测,需要实验和测量。 当调查要求以新语言或新编程模式重写系统的一部分时, 其高昂的成本会阻碍对不同配置的研究。 一个单语言系统, 配有适当的编程模型和编译器, 将双平台的探索简化为与新编译器指令的简单重新拼接。 这项工作引入了 StreamBlocks、 开源编译器和运行时间, 使用 CAL 数据流编程编程语言在多种( CPU/ 加速器) 平台中进行分割计算。 由于数据流模型的语义和 CAL 语言, StreamBlocks 能够利用多核心 CPU 和 FPGAs 固有的平行功能。 StreamBlocks 支持以配置工具探索设计空间。