【问题标题】:omp flush and cc-NUMA architectureomp 刷新和 cc-NUMA 架构
【发布时间】:2012-03-20 22:32:48
【问题描述】:

我想念 cc-NUMA 架构和刷新变量的需要。我们都知道,如果两个线程修改同一个缓存行,则“错误共享”条件将上升,迫使缓存行再次重新加载。 那么为什么我们需要刷新变量才能使线程交换信息呢? 假设在您声明的串行区域中:

int flag=0;

然后在并行区域线程0分配共享变量:

 flag=1;

将线程 1:

while (!flag){}

循环是否会在没有刷新的情况下终止?如果不是,为什么我们在 cc-NUMA 架构中?

【问题讨论】:

  • 从逻辑上讲,cc-NUMA 与任何其他共享内存多核机器没有什么不同。它的缓存一致性可能会慢一点(或很多),但在行为上是一样的。

标签: multithreading caching openmp


【解决方案1】:

不要忘记,编译器也可以执行导致上述代码中断的优化,而不仅仅是 CPU。

因此,无论硬件是否支持缓存一致性,我认为刷新仍然是必要的。

【讨论】:

    猜你喜欢
    • 2014-07-10
    • 2012-12-04
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多