在OPENCL和CUDA中,分别有基元,即barrier()和syncthread(),以强制L1数据高速缓存/共享存储器的一致性。这是否意味着缓存本身不一致,即在L1缓存的硬件中没有像缓存一致性协议那样的CPU?
答案 0 :(得分:4)
大多数缓存一致性算法不适用于GPU。此外,在GPU中具有高速缓存一致性会给GPU内存系统带来大量流量,这已经成为GPU的瓶颈。因此,他们使用简单的逐出技术来保持私有缓存和共享缓存之间的数据一致。简单地说,只要有对全局数据的写入,具有该数据的高速缓存行就被驱逐到共享高速缓存。 最近,引入了一些技术,但我怀疑它们实际上是在硬件中实现的。
答案 1 :(得分:0)