函数内联 - 2022.1 简体中文

Vitis 统一软件平台文档 应用加速开发 (UG1393)

Document ID
UG1393
Release Date
2022-05-25
Version
2022.1 简体中文

C 语言代码通常由多个函数组成。默认情况下,每个函数均由 Vitis 编译器单独进行编译和最优化。针对函数体将生成一个唯一的硬件模块,并按需复用。

就性能而言,一般最好将函数内联或者消除函数层级。这样有助于 Vitis 编译器跨函数边界全局执行最优化。例如,如果在流水打拍的循环内部调用函数,那么内联函数有助于编译器进行更为激进的最优化,并提升循环的流水线性能(启动时间间隔 (II) 更短)。

以下 INLINE 编译指示置于函数体内部,用于指示编译器将该函数内联。
foo_sub (p, q) {
  #pragma HLS INLINE
  ....
  ...
}

但如果函数体过大并在主内核函数内部多次调用,那么内联函数可能因耗用过多资源而导致容量问题。如果您无法内联此类函数,那么请让 v++ 编译器在其局部环境内单独最优化该函数。