gpt4 book ai didi

c - 有序并行代码的运行速度比单线程慢。有解决办法吗?

转载 作者:行者123 更新时间:2023-11-30 20:28:34 27 4
gpt4 key购买 nike

#pragma omp parallel for default(none) shared(x) private (y, z, f) ordered
for (i = 0; i < 512; i++) {
#pragma omp ordered
for (y = 0; y < 512; y++) {
for (z = 0, f = 0; z < 512; z++) {
x[f++] = z + i + y;
}
}
}

上面的代码运行速度比非SMP执行慢大约20% 在双核上。如果没有“#pragma omp Ordered”,它比非 SMP 快大约 50%。

假定 x[f++] 序列必须保持有序形式,因为稍后会类似地重用它。

有序代码可以比单线程更快吗?还有其他方法可以实现吗?

系统是win32/mingw-w64。

最佳答案

它并不是真正有序的,因为一次迭代的结果并不依赖于前一次迭代,除非您使用 f

你能从iyz导出f吗?看起来你可以。例如:

f = z + y * 512 + i * 512 * 512 + initial_f;

现在您的代码是无序的,您可以从并行化中获得真正的好处。

关于c - 有序并行代码的运行速度比单线程慢。有解决办法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4254532/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com