【发布时间】:2012-03-20 22:32:48
【问题描述】:
我想念 cc-NUMA 架构和刷新变量的需要。我们都知道,如果两个线程修改同一个缓存行,则“错误共享”条件将上升,迫使缓存行再次重新加载。 那么为什么我们需要刷新变量才能使线程交换信息呢? 假设在您声明的串行区域中:
int flag=0;
然后在并行区域线程0分配共享变量:
flag=1;
将线程 1:
while (!flag){}
循环是否会在没有刷新的情况下终止?如果不是,为什么我们在 cc-NUMA 架构中?
【问题讨论】:
-
从逻辑上讲,cc-NUMA 与任何其他共享内存多核机器没有什么不同。它的缓存一致性可能会慢一点(或很多),但在行为上是一样的。
标签: multithreading caching openmp