仅对英特尔可见 — GUID: mwh1391807504031
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: mwh1391807504031
Ixiasoft
7.3. 多个计算单元
要达到更高的吞吐量, Intel® FPGA SDK for OpenCL™ Offline Compiler可以为每个内核生成多个计算单元。 离线编译器将每个计算单元实现为唯一流水线。通常,每个内核计算单元可以同时执行多个工作组。
要提高整体内核吞吐量,FPGA中的硬件调度程序将工作组分派到其他可用计算单元。一个计算单元可用于工作组分配,但前天是尚未到达其全部容量。
假设每个工作组花费相同的时间来完成其执行。如果离线编译器实现两个计算单元,则每个计算单元执行一半的工作组。因为由硬件调度程序分派工作组,您无需以自己的代码管理这个过程。
离线编译程序不会自动确定内核的最佳计算单元数。要增加内核的计算单元实现,您必须使用num_compute_units属性指定离线编译器应该创建的计算单元的数量,如以下代码范例所示。
__attribute__((num_compute_units(2))) __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]; }
增加计算单元的数量可以达到更高的吞吐量。但是,如下图所示,这样做的代价是增加了计算单元之间的全局存储器带宽。也增加了硬件资源的利用率。
图 76. 使用多计算单元的数据流