用于算法设计的OpenCL内存访问性能评估

用于算法设计的OpenCL内存访问性能评估,opencl,gpu,gpgpu,Opencl,Gpu,Gpgpu,我有一个任务,我需要使用几种可能的算法之一来完成 每种算法都有自己的局部内存优化机会,我想根据计算操作和内存访问的计数来估计哪种算法性能最好 为了比较本地内存访问操作与全局内存访问操作的不同数量,我想估算本地内存访问(读/写)与全局内存访问的价格(以周期为单位?) (在现代消费级GPU上)执行以下各项需要多少个周期: 从本地存储器读取 写入本地存储器 从全局内存读取 写入全局内存 注意:在OpenCL中,我使用“本地内存”和“全局内存”的含义。通常,访问本地内存需要几个GPU周期。访问全局内

我有一个任务,我需要使用几种可能的算法之一来完成

每种算法都有自己的局部内存优化机会,我想根据计算操作和内存访问的计数来估计哪种算法性能最好

为了比较本地内存访问操作与全局内存访问操作的不同数量,我想估算本地内存访问(读/写)与全局内存访问的价格(以周期为单位?)

(在现代消费级GPU上)执行以下各项需要多少个周期:

  • 从本地存储器读取
  • 写入本地存储器
  • 从全局内存读取
  • 写入全局内存

注意:在OpenCL中,我使用“本地内存”和“全局内存”的含义。

通常,访问本地内存需要几个GPU周期。访问全局内存需要数十个周期。从一张显卡到另一张显卡,数字差别很大。所以这是非常一般的数字,只显示大小的差异


据我所知,您关心的是低级优化。若这是正确的,那个么您就可以使用软件,它通常由GPU供应商随SDK提供。其中许多(AMD、ARM等)提供了离线编译器,允许导出CLPROGRAM的编译二进制汇编程序,其中包含每个周期的指令信息。然后你会得到最确定的数字。

@Ben Un,我不确定我是否100%理解了你的问题,但你看到带宽测试样本了吗?不,这是什么?我试图澄清这个问题。您要测量的是本地内存带宽和全局内存带宽。我看到了一个测试全局内存带宽的示例。它被称为。但我想根据我的用户的“平均”GPU(我还不知道他们是谁)来估计它。这些数字不是有一个共同的估计吗?看看源代码,所有支持opencl的GPU的计算方法都是一样的。