Intel® FPGA SDK for OpenCL™ Pro Edition: 最佳实践实践指南

ID 683521
日期 9/26/2022
Public
文档目录

4.1. 通过 Intel® FPGA SDK for OpenCL™ 通道或OpenCL管道传输数据

为了提高内核之间的数据传输效率,请使用您内核程序中的 Intel® FPGA SDK for OpenCL™ 通道扩展。如果您需要使用通道的功能,但又想使用其它SDK运行您的内核程序,就请实现OpenCL管道。

有时,FPGA-to-global存储器带宽会限制内核之间的数据传输效率。FPGA-to-global存储器的最大理论带宽取决于目标Custom Platform和电路板中可用的全局存储器bank数而有所不同。要确定您电路板的最大理论带宽,请参阅电路板供应商的文档。

在实践中,内核无法实现最大可用全局存储器带宽的100%利用率。利用了水平取决于算法的访问模式。

如果全局存储器带宽限制了您OpenCL内核的性能,首先请尝试将算法分解为多个较小的内核。其次,如下图所示,通过实现SDK的通道或OpenCL管道来进行内核之间的数据传输,以消除一部分对全局存储器的访问。

图 68. 通道或管道的实现导致全局存储器访问模式的差异

有关通道使用的更多信息,请参阅 Intel® FPGA SDK for OpenCL™ 编程指南实现 Intel® FPGA SDK for OpenCL™ 通道扩展小节。

有关管道使用的更多信息,请参阅 Intel® FPGA SDK for OpenCL™ 编程指南实现OpenCL管道小节。