仅对英特尔可见 — GUID: mwh1391807501175
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: mwh1391807501175
Ixiasoft
7. 提高NDRange内核数据处理效率的策略
请参考如下内核代码:
__kernel void sum (__global const float * restrict a, __global const float * restrict b, __global float * restrict answer) { size_t gid = get_global_id(0); answer[gid] = a[gid] + b[gid]; }
该内核添加数组a和b,一次添加一个单元。每个work-item负责添加两个单元,各来自一个数组,并将求和结果存储到数组answer中。如果不进行优化,该内核对每个work-item执行一次加法。
要最大程度提高您的OpenCL™内核,请考虑实现使用的优化技术来提高数据处理的效率。
- 指定最大工作组大小或者需要的工作组大小
尽可能为内核指定max_work_group_size或者reqd_work_group_size属性。这些属性使得 Intel® FPGA SDK for OpenCL™ Offline Compiler执行更积极的优化来以使内核与硬件资源相匹配,而无需任何多余的逻辑。 - 内核矢量化
内核矢量化使得多个work-items以单指令多数据(SIMD)方式执行。 - 多个计算单元
要达到更高的吞吐量, Intel® FPGA SDK for OpenCL™ Offline Compiler可以为每个内核生成多个计算单元。 - 计算单元复制与内核SIMD矢量化合并
如果您的复制或矢量化OpenCL内核不适用于FPGA,则您可以通过复制计算单元或者矢量化内核来修改内核。 - 在HTML报告中查看内核属性和循环展开状态
当您编译NDRange内核时, Intel® FPGA SDK for OpenCL™ Offline Compiler生成的 <your_kernel_filename>/reports/report.html文件提供有关所选内核的属性和循环展开状态的信息。