2011-02-18 38 views
0

這是跟進Why is my OpenMP implementation slower than a single threaded implementation?爲什麼我的OpenMP實現比單線程實現更慢? (Followup)

我一直堅持提供的答案,並使用任務代替編譯指示來加速代碼。然而,與順序(相同)程序相比,這兩個程序的運行速度同樣快。我目睹沒有加速。

返工代碼是在這裏:http://pastebin.com/3SFaNEc4

我只是刪除了所有的編譯指示和替換它任務的遞歸程序編譯指示。

我做錯了什麼?我應該看到幾乎線性的加速。你們有什麼感想?

謝謝!

回答

2

首先 - 你還有一個「#pragma end critical」應該被刪除。這不是導致問題,但它是不正確的。其次 - 正如我在您發佈的其他問題中所說的,您可能不得不考慮如何對代碼進行並行化以查看加速,因此只需使用任務編譯指示替換其他編譯指示可能無法加快速度。第三 - 你沒有把這些任務放到一個平行區域,所以你沒有平行運行。而且,您不能只在任務周圍添加平行區域,或者您將多次執行相同的任務。

+0

我沒有得到有關將任務並行執行的部分,我已經看過一些示例,但似乎並不需要,您確定嗎?此外,我沒有更換,我做了遞歸過程的任務。 – nubela 2011-02-18 16:39:00

相關問題