omp flush和cc-NUMA架构

时间:2012-03-20 22:32:49

标签: multithreading caching openmp

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

int flag=0;

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

 flag=1;

将线程1:

while (!flag){}

循环没有刷新就终止了吗?如果不是,为什么我们采用cc-NUMA架构?

1 个答案:

答案 0 :(得分:1)

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

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