循环并行化 - 2022.1 简体中文

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

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

循环是表示重复算法代码的基本 C/C++/OpenCL API 方法。以下示例展示了循环结构的各个实现方面:

  for(int i = 0; i<255; i++) {
    out[i] = in[i]+in[i+1];
  }
  out[255] = in[255];

此代码基于值阵列进行迭代并添加连续值,最后一个值除外。如果此循环作为写入来执行,则每个循环迭代需要两个实现周期,这将导致总共 510 个实现周期。可以通过 HLS 工程的调度查看器对此进行详细分析:

图 1. 调度查看器中已实现的循环结构

也可通过 Vivado 综合结果对总数和时延进行分析:

图 2. 综合结果性能估算

此处的关键数值是时延数量和 LUT 使用总量。例如,根据配置,结果可能是时延数量为 511,LUT 使用总量为 47。因此,这些值可能根据所选实现而异。虽然此实现所需面积可能非常小,但可能产生巨大的时延。