繁体   English   中英

为什么我的OpenMP实现比单线程实现慢? (跟进)

[英]Why is my OpenMP implementation slower than a single threaded implementation? (Followup)

这是为什么我的OpenMP实现比单线程实现慢?

我已经坚持提供的答案,并使用任务而不是pragma来加速代码。 但是,与顺序(相同)程序相比,两个程序运行速度相同。 我目睹没有加速。

重新编写的代码在这里: http//pastebin.com/3SFaNEc4

我只是删除了所有for pragma并将其替换为递归过程的任务pragma。

我做错了吗? 我应该看到几乎线性的加速。 你们有什么感想?

谢谢!

首先 - 您仍然应该删除“#pragma end critical”。 它不会导致问题,但是不正确。 第二 - 正如我在你发布的另一个问题中所说的那样,你可能不得不考虑如何并行化代码以查看加速,所以用任务编译指示替换其他编译指示可能无法加快速度。 第三 - 您没有将任务放入并行区域,因此您根本不是并行运行。 而且,您不能仅在任务周围添加并行区域,或者您将多次执行相同的任务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM