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

时间:2011-02-18 16:09:19

标签: c openmp

这是Why is my OpenMP implementation slower than a single threaded implementation?的后续行动。

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

重新设计的代码位于:http://pastebin.com/3SFaNEc4

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

我做错了吗?我应该看到几乎线性的加速。你们觉得怎么样?

谢谢!

1 个答案:

答案 0 :(得分:2)

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