omp flush and cc-NUMA architecture



关于cc-NUMA体系结构和刷新变量的需要,我错过了一些东西。我们都知道,如果两个线程修改同一个缓存线,那么"错误共享"条件将出现,迫使缓存线再次重新加载。那么,为什么我们需要刷新变量来进行线程交换信息呢?假设在序列区域中声明:

int flag=0;

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

 flag=1;

将线程1:

while (!flag){}

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

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

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

最新更新