仅对英特尔可见 — GUID: ewa1396463252140
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: ewa1396463252140
Ixiasoft
6.1. 根据优化报告反馈解决单个Work-Item内核依赖项
在许多情况下,将您的OpenCL™应用程序设计成单个work-item内核就足以最限度提高性能,而无需执行其它优化步骤。 为了进一步改善单个work-item内核的性能,您可以通过解决优化报告中确认的依赖关系来进行优化。
提示: 如果您在找寻 Intel® oneAPI DPC++/C++ Compiler的具体详情,请参阅 Intel® oneAPI Toolkits的FPGA优化指南中的单个Work-item内核小节。
以下流程图概述了您可以用来迭代设计并优化单个work-item内核的方法。有关 Intel® FPGA SDK for OpenCL™ Emulator和Profiler的使用信息,请参阅 Intel® FPGA SDK for OpenCL™ 编程指南中的仿真和调试您的OpenCL内核以及分析您的OpenCL内核小节分别进行了解。有关 Intel® FPGA dynamic profiler for OpenCL™ GUI和profiling信息,请参阅分析您的内核以确认性能瓶颈小节。
Intel® 建议使用以下优化选项来解决单个work-item内核循环携带的依赖项,适用顺序为:删除、松弛、简化并转移到局部存储器。
图 75. 优化单个Work-Item内核的工作流程
- 删除循环携带的依赖项
基于从优化报告来的反馈,您可以通过实现更简单的存储器访问模式来删除循环携带的依赖项。 - 松弛循环携带的依赖性
基于优化报告的反馈,您可以通过增加依赖项的距离来松弛循环携带的依赖性。 - 将循环携带的依赖项转移到局部存储器
对于您无法删除的循环携带依赖项,可通过将具有循环携带依赖项的数组从全局存储器转移到局部存储器来改善II(启动间隔)。 - 通过推断移位寄存器来松弛循环携带的依赖项
要启动 Intel® FPGA SDK for OpenCL™ Offline Compiler来处理有效执行双精度浮点运算的单个work-item内核,请通过推断移位寄存器来删除循环携带的依赖项。 - 移除由于对存储器阵列的访问而引起的循环依赖
在您的单个work-item内核中包含ivdep pragma,以置位对存储器阵列的访问从而避免导致循环携带依赖项。