对往来器件的数据传输进行最优化 - 2023.2 简体中文

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

Document ID
UG1393
Release Date
2023-12-13
Version
2023.2 简体中文

在加速应用中,数据必须从主机传输到器件,在基于 PCIe 的应用案例中尤其如此。这样会产生时延,时延对于应用的总体性能来说可能代价高昂。

数据需在正确的时间进行传输,否则如果内核必须等待数据变为可用,就会对应用性能造成负面影响。因此,重要的是提前传输数据,而不是等到内核需要数据时才传输。这是通过将数据传输与内核执行重叠来实现的,如 使器件内核始终保持在使用中状态 中所述。如前图中的顺序所示,此方法支持隐藏数据传输的时延开销,并避免出现内核不得不等待数据就绪的状况。

最优化数据传输的另一种方法是传输最佳大小的缓冲器。如下图所示,根据传输的缓冲器大小,PCIe 的有效吞吐量差异巨大。缓冲器越大,吞吐量越大,因此就更能确保加速器始终具有操作数据并且不浪费周期。通常,传输的数据最好不少于 1 MB。提前运行 DMA 测试对于找到最佳缓冲器大小非常有用。并且,在确定最佳缓冲器大小时,请考虑缓冲器过大对于资源使用率和传输时延的影响。

最优化数据传输的另一种方法是传输最佳大小的缓冲器。根据传输的缓冲器大小,数据传输的有效吞吐量差异巨大。缓冲器越大,吞吐量越大,因此就更能确保加速器始终具有操作数据并且不浪费周期。

如上图所示,在基于 PCIe 的系统上,通常,传输的数据最好不少于 1 MB。提前使用 xbutil 实用工具运行 DMA 测试对于找到最佳缓冲器大小非常有用。

图 1. PCIe 传输的性能是缓冲器大小的函数

AMD 建议,在公共缓冲器中集合多组数据,以实现尽可能高的吞吐量。