Friday, November 16, 2012

OpenCL的内存性能


《OpenCL异构计算》 

第六章 OpenCL 在 CPU/GPU 平台上的实现

第3节 OpenCL的内存性能 读书笔记


Outline:
  • OpenCL 全局内存
  • 本地内存 —— 软件管理的 cache

OpenCL 全局内存

内存分析的基本方法是判断 kernel 的实际吞吐量,通过计算 kernel 的内存带宽得到。公式如下:

其中:
EB 是有效带宽;
Br 是从全局内存中读取的字节数
Bw 是写入到全局内存的字节数
T 是 kernel 的执行时间,可由调用OpenCL 计时 API 或 剖分工具 得到。

将测得的 kernel 实际使用带宽,我们就可以和设备的峰值带宽相比较,以此来确定我们与峰值性能的差距。越接近峰值性能,内存系统的利用率就越高。如果与峰值性能差距较大,就需要考虑调整访存模式以提高带宽利用率。

本地内存 —— 软件管理的 cache

相对于硬件控制的 cache,本地内存(scratchpad 内存)有很多优点,比如 占用片上空间更少,能效比更高,在给定区域性能更高。同时也是同一个 work-group 内部的 work-item 之间相互交换数据的一个更重要的,保证访存低延迟的有效方法。

No comments:

Post a Comment