GPU L1缓存一致性

时间:2013-10-22 02:48:03

标签: gpu gpgpu

在OPENCL和CUDA中,分别有基元,即barrier()和syncthread(),以强制L1数据高速缓存/共享存储器的一致性。这是否意味着缓存本身不一致,即在L1缓存的硬件中没有像缓存一致性协议那样的CPU?

2 个答案:

答案 0 :(得分:4)

大多数缓存一致性算法不适用于GPU。此外,在GPU中具有高速缓存一致性会给GPU内存系统带来大量流量,这已经成为GPU的瓶颈。因此,他们使用简单的逐出技术来保持私有缓存和共享缓存之间的数据一致。简单地说,只要有对全局数据的写入,具有该数据的高速缓存行就被驱逐到共享高速缓存。 最近,引入了一些技术,但我怀疑它们实际上是在硬件中实现的。

答案 1 :(得分:0)

在nvidia路线图中,由于fermi arch引入了l1和共享的l2数据缓存,所以写回策略可能是AmirC提到的L1数据缓存中的write-evit,因此会发生缓存非一致性。 kepler arch引入了一个新的只读数据缓存,用于加载gloabl数据,但是在kepler arch之后,它们不允许在l1中写入全局数据(maxwell,pascal,volta,turing,安培等)。