在openMP中,如何确保线程在继续之前已同步?

错误的代码

我正在使用#pragma omp屏障来确保我的所有并行线程在继续操作之前在同一点相遇(没有花哨的有条件分支代码,只是直线循环),但是我推测屏障pragma实际上并不能保证同步性,只是完成,因为这些是我得到的结果:

0: func() size: 64 Time: 0.000414 Start: 1522116688.801262 End: 1522116688.801676
1: func() size: 64 Time: 0.000828 Start: 1522116688.801263 End: 1522116688.802091

线程0的启动时间比线程1快约一微秒,这给它带来了0.414毫秒的不切实际完成时间,顺便说一下,在单个内核/线程运行中,运行时间平均约为0.800毫秒。(请原谅我,如果我的单位关了,那就晚了)。

我的问题是:有没有办法确保在openMP中所有线程都在同一时间启动?还是我必须引入另一个库,例如pthread才能具有此功能?

用户9478968

barrier与其他语言一样,OpenMP中语句可确保在所有线程到达障碍之前,线程不会继续前进。

它没有指定线程重新开始执行的顺序。据我所知,在OpenMP或Pthread库中无法手动调度线程(请参见下面的注释)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何确保Async.StartChild在继续之前已启动?

在Dart中,如何确保流更新在继续之前完成?

在继续其余代码之前,如何确保已保存App Engine NDB根实体

在继续之前如何确保 UI 更新

在重启之前,系统会确保mdadm已同步吗?

OpenMp:如何确保每个线程在动态调度中至少进行1次迭代

在 NightwatchJS 中,如何进行同步数据库调用并使 Nightwatch 在继续之前等待响应

如何确保异步函数在继续之前返回值

在继续之前,如何确保我对 postgres 的承诺得到解决?

在继续之前确保加载javascript

如何确保在同一函数终止之前在函数中创建的所有线程都返回?

在继续加载Angular应用之前,请确保翻译JSON文件已加载

R:在使用 dplyr 的函数中,如何在继续之前检查以确保没有引用参数名称?

在PageLoad上添加类之前,如何确保元素已加载

在继续之前,如何验证复选框是否已选中?

在修改C#WPF应用程序中的binded属性之前,如何确保与UI同步基于绑定的样式更改?

如何在多个线程中加载之前同步存储?

在Android中如何让执行线程等待,但UI线程继续

如何在循环中使用Promises,并确保在继续执行之前全部实现?

如何确保在主线程停止之前所有线程都已停止?

如何在Oracle中同步线程?

如何让当前线程在继续之前等待另一个线程完成?

如何处理此“ InvalidOperationException:确保只能从主线程调用确保运行中主线程”

OpenMP如何重用线程

在后台运行线程并继续使用OpenMP主线程

如何在继续之前等待 Javascript 同步循环内的异步回调完成

确保线程已启动WinAPI C ++

确保 Cassandra 中的同步读写

确保在评估之前已运行javascript中的链接比较器中的所有方法?