我的意思是,他们是用DRAM还是其他东西模拟的(L1,L2甚至L3缓存?我不确定)。此外,与GPU相比,在CPU上使用共享内存的性能会受到限制,对吧?
答案 0 :(得分:4)
没有语言可以直接访问CPU缓存(被引用但是我没有足够的代表来拥有3个URL ...)。这反过来意味着OpenCL无法将私有内存保留在缓存中。
In this presentation from AMD 它们只是将内存模型称为上下文抽象的一系列内存对象(第16页)。只要缓冲区在上下文中可用于设备,它们就是可读的。当涉及到不同类型的内核内存时,您可以放心地假设在CPU而不是GPU上运行时它们之间没有性能差异(因为存在不同类型的DRAM)。
但请记住,如果您在群集上进行计算,主机内存和本地内存仍会有所不同,这仍然需要您考虑传输速率。 关于问题的第二部分,请参阅此文on memory models in OpenCL。通过以仅需要在给定工作组内进行通信的方式构建程序,可以获得性能。
如需进一步阅读,请参阅-http://software.intel.com/sites/landingpage/opencl/optimization-guide/index.htm
答案 1 :(得分:-1)
OpenCL内存模型是基于GPU架构创建的。在CPU上,访问全局内存,共享内存和常量内存通过相同的缓存层次结构。
当然,使用本地内存实现可以提高性能,因为缓存命中率会增加。