多线程 – omp flush和cc-NUMA架构
发布时间:2020-12-15 02:32:31 所属栏目:Java 来源:网络整理
导读:我想念cc-NUMA架构以及需要刷新变量.我们都知道,如果两个线程修改相同的高速缓存行,那么“错误共享”条件将上升,迫使高速缓存行再次重新加载. 那么为什么我们需要刷新变量才能生成线程交换信息呢? 假设您在串行区域中声明: int flag=0; 然后在并行区域中,
我想念cc-NUMA架构以及需要刷新变量.我们都知道,如果两个线程修改相同的高速缓存行,那么“错误共享”条件将上升,迫使高速缓存行再次重新加载.
那么为什么我们需要刷新变量才能生成线程交换信息呢? 假设您在串行区域中声明: int flag=0; 然后在并行区域中,线程0分配共享变量: flag=1; 将线程1: while (!flag){} 循环没有刷新终止?如果不是,为什么我们在cc-NUMA架构? 解决方法
不要忘记编译器还可以执行导致上述代码中断的优化,而不仅仅是CPU.
因此,我认为无论硬件支持高速缓存一致性,仍然需要刷新. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |