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

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

8.2.2. 全局存储器手动分区

您可以对存储器手动分区,以使每个缓冲区占用不同的存储器bank。
全局存储器的默认突发交叉配置会通过确保存储器访问不会仅偏向于一个外部存储器bank来防止负载不平衡。然而,您可以选择通过对数据手动分区来控制一组缓冲区的带宽。
Intel® FPGA SDK for OpenCL™ Offline Compiler不能在不同存储器类型之间进行突发交叉存取。要对特定类型的全局存储器进行手动分区,编译具有 -no-interleaving=<global_memory_type> 标记的OpenCL™内核以将特定存储器类型的每个bank配置为non-interleaved(非交叉存取) bank。

如果您的内核访问存储器中两个等大的缓冲区,那么您可以九江数据同时分发到这两个存储器bank,无论负载之间的动态调度如何。该优化步骤可能会明显增加存储器带宽。

如果您的内核访问异构全局存储器类型,请在每个您需要手动分区的存储器类型的aoc命令中包含 -no-interleaving=<global_memory_type> 选项。
对于使用 -no-interleaving=<global_memory_type> 选项的更多信息,请参阅 Intel® FPGA SDK for OpenCL™ 编程指南中的禁用全局存储器突发交叉存取(-no-interleaving=<global_memory_type>)小节。