仅对英特尔可见 — GUID: npn1500574869050
Ixiasoft
产品终止通知
1. Intel® FPGA SDK for OpenCL™ Pro Edition最佳实践指南介绍
2. 查看您Kernel的report.html文件
3. OpenCL内核设计概念
4. OpenCL内核设计最佳实践
5. 分析(Profiling)您的内核来识别性能瓶颈
6. 提高单个Work-Item内核性能的策略
7. 提高NDRange内核数据处理效率的策略
8. 提高存储器访问效率的策略
9. 优化FPGA面积使用的策略
10. 优化英特尔 Stratix 10 OpenCL设计的策略
11. 提高主机应用程序性能的策略
12. Intel® FPGA SDK for OpenCL™ Pro版最佳实践指南存档
A. Intel® FPGA SDK for OpenCL™ Pro版最佳实践指南修订历史
仅对英特尔可见 — GUID: npn1500574869050
Ixiasoft
8.6. 最小化循环流水线的存储器依赖
Intel® FPGA SDK for OpenCL™ Offline Compiler 确保来自同一线程的存储器访问遵循程序顺序。当您编译NDRange内核时,请使用barrier来同步同一工作组中线程之间的存储器访问。
由于与存储器访问相关的延迟,循环依赖可能会将瓶颈引入单个work-item内核。离线编译器延迟存储器操作,直到依赖项存储器操作完成。这样会影响循环启动间隔(II)。离线编译器指示优化报告中的存储器依赖性。
要最小化存储器依赖对循环流水线的影响:
- 请确保离线编译器不会假设错误的依赖。
静态存储器依赖分析无法证明不存在依赖性时,离线编译器会假设依赖性的存在并修改内核执行来强制执行该依赖。如果存储器系统无停顿,则该强制依赖的影响较小。
- load-store单元上具有数据依赖性的先读后写仅需要两个时钟周期(II=2)。其它无停顿场景最多可能需要七个时钟周期。
- 先写后读(控制依赖)操作可以由离线编译器完全解决。
- 如果您确定该循环不包含任何依赖项,则在内核代码的循环之前,先通过添加行#pragma ivdep来覆盖静态存储器依赖性分析。