仅对英特尔可见 — GUID: mwh1391807511509
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: mwh1391807511509
Ixiasoft
8.2.1. Contiguous Memory Access(连续存储访问)
连续存储访问优化静态分析内核中全局加载和储存操作的访问模式。 在整个内核调用过程中发生的顺序加载或者储存操作过程中, Intel® FPGA SDK for OpenCL™ Offline Compiler指示内核访问全局存储器中的连续位置。
请参考如下代码实例:
__kernel void sum ( __global const float * restrict a, __global const float * restrict b, __global float * restrict c ) { size_t gid = get_global_id(0); c[gid] = a[gid] + b[gid]; }
来自数组a的加载操作使用的索引是一个work-item全局ID的指导功能。通过基于work-item全局ID的数组索引,连线编译器可以指导连续的加载操作。这些加载操作按顺序从输入数组中检索数据,并根据需要将读取的数据发送到流水线。然后,连续储存操作将退出计算流水线的结果的元素存储在全局存储器内的顺序位置上。
提示: 对任意只读全局缓冲区使用const限定词(qualifier),以便离线编译器可以对加载操作执行更积极的优化。
下图说明连续存储访问优化的实例:
图 81. Contiguous Memory Access(连续存储访问)
连续加载和储存操作提高了存储访问的效率,因为它们可以提高访问速度并减少硬件资源需求。数据同时进和出流水线的计算部分,允许计算和存储访问之间的重叠。如果可能,请使用指引连续存储器位置的work-item ID来进行访问全局存储器的加载和储存操作。对全局存储器的顺序访问提高了存储器访问效率,因为它们提供了理想的访问模式。