在 OPENCL 和 CUDA 中,分别有原语,即barrier() 和syncthread(),用于强制L1 数据缓存/共享内存的一致性。这是否意味着缓存本身是不连贯的,即在硬件中没有为 L1 缓存实现类似 CPU 的缓存连贯协议?
大多数缓存一致性算法对于 GPU 来说是不可扩展的。此外,GPU 中的缓存一致性会给 GPU 内存系统带来大量流量,这已经是 GPU 的瓶颈。因此,他们使用简单的逐出技术来保持私有缓存和共享缓存之间的数据一致。简单地说,每当写入全局数据时,具有该数据的缓存行就会被驱逐到共享缓存中。最近,一些技术被引入,但我怀疑它们是否真的在硬件中实现。
归档时间: |
|
查看次数: |
954 次 |
最近记录: |