OpenCL系列(四)-Memory

1 Star2 Stars3 Stars4 Stars5 Stars
Loading ... Loading ...

Memory分类和访问(Memory Layout and Access)

opencl将存储模型分为三种:Private Memory,Local Memory,Constant Memory和Global Memory。其中Private Memory只可以被work-item使用,也就是单个work-item私有的;Local Memory可以被同一个work-group内的work-item所使用;Global Memory可以被所有的work-item访问和修改;而Constant Memory是Global Memory的一种,区别在于它是不能被更改的。示意图如下[1]:
opencl_memory_layout

大致了解了opencl中存储类型后,就会发现opencl的memory model和cuda的极为类似,ok,这里就简单的列出opencl中集中memory类型在Nvidia的GPU、AMD的GPU和CPU中实际对应的数据类型:

Opencl Nvidia CUDA ATI GPU AMD CPU
Global Memory Global Memory global buffer (g[] in CAL/IL) 系统内存(RAM)
Local Memory Shared Memory Local Data Share CPU L1缓存
Private Memory Register scratch memory (x[] in CAL/IL) 系统内存RAM

update@2009.11.30
Opencl中还有一种存储类型:Image,也就是cuda中的纹理内存,包含2D和3D image。与CUDA中纹理一样提供不同的插值(采样)方式,同时也提供一定cache(硬件支持的),个人感觉,这是一个GPU的遗留产物,在CPU和DSP等的Opencl实现极有可能不提供对其的支持。所以要注意在使用时,最好先查询一下是否支持。

如何使用(How to use these memory)
to be continued…

标签: , , | Print Print | 457 views

留下回复