硬件高效型 C++ 语言代码的示例 - 2021.2 Chinese

Vitis 高层次综合用户指南 (UG1399)

Document ID
UG1399
Release Date
2021-12-15
Version
2021.2 Chinese

针对 CPU 进行 C++ 语言代码编译时,编译器会将 C++ 语言代码转换并最优化为一组 CPU 机器指令。大部分情况下,开发者的工作在此阶段完成。但如果存在性能需求,那么开发者将执行以下部分或全部操作:

  • 了解是否可通过编译器执行任何其它最优化。
  • 尝试进一步了解处理器架构并修改代码以充分利用任何特定于架构的行为(例如,减少条件分支以改进指令流水打拍)。
  • 修改 C++ 语言代码以使用特定于 CPU 的内部函数来并行执行关键运算(例如, Arm® NEON 内部函数)。

同样的方法也适用于针对 DSP 或 GPU 编写的代码,使用 FPGA 时也适用:FPGA 只是另一个目标而已。

Vitis HLS 综合的 C++ 语言代码将在 FPGA 上执行,提供与 C++ 仿真相同的功能。某些情况下,开发者的工作在此阶段完成。

但通常由于 FPGA 卓越性能而选择使用 FPGA 来实现 C++ 语言代码,FPGA 的大规模并行架构使其执行运算的速度远高于处理器的固有顺序运算,而用户通常都希望能够充分利用此性能。

此处重点在于了解 C++ 语言代码对于可达成的结果的影响以及如何通过修改 C++ 语言代码来充分发挥该列表的前三项的优势。