有没有办法知道 OpenMP 中归约运算符的执行顺序?换句话说,我想知道线程如何执行归约操作——是从左到右吗?当存在不是 2 的幂的数字时会发生什么?
我想你会发现 OpenMP 只会减少关联操作,例如+
and *
(如果您愿意,也可以是加法和乘法),这意味着它可以忽略跨线程的约简表达式的组成部分的求值顺序。
我强烈建议您在使用 OpenMP 时以相同的方式进行操作,尝试找出或限制执行顺序,最好的情况是将并行程序变成顺序程序,最坏的情况是继续为您提供有效的随机结果。
我无法理解你关于非 2 的幂的数字的最后一句话。
正如@JimCownie 所指出的,诸如+
and *
与浮点数不严格关联。解释我的参考关联运算第一句话的意思是当应用于实数时,这些运算是结合的,但是,由于现代计算机上数值计算的熟练从业者充分理解的原因,当应用于浮点数时,这些运算无法结合.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)