omp 刷新和 cc-NUMA 架构
Posted
技术标签:
【中文标题】omp 刷新和 cc-NUMA 架构【英文标题】:omp flush and cc-NUMA architecture 【发布时间】:2012-03-20 22:32:48 【问题描述】:我想念 cc-NUMA 架构和刷新变量的需要。我们都知道,如果两个线程修改同一个缓存行,则“错误共享”条件将上升,迫使缓存行再次重新加载。 那么为什么我们需要刷新变量才能使线程交换信息呢? 假设在您声明的串行区域中:
int flag=0;
然后在并行区域线程0分配共享变量:
flag=1;
将线程 1:
while (!flag)
循环是否会在没有刷新的情况下终止?如果不是,为什么我们在 cc-NUMA 架构中?
【问题讨论】:
从逻辑上讲,cc-NUMA 与任何其他共享内存多核机器没有什么不同。它的缓存一致性可能会慢一点(或很多),但在行为上是一样的。 【参考方案1】:不要忘记,编译器也可以执行导致上述代码中断的优化,而不仅仅是 CPU。
因此,无论硬件是否支持缓存一致性,我认为刷新仍然是必要的。
【讨论】:
以上是关于omp 刷新和 cc-NUMA 架构的主要内容,如果未能解决你的问题,请参考以下文章