Почему моя реализация OpenMP медленнее, чем однопоточная реализация? (Следовать за) - PullRequest
0 голосов
/ 18 февраля 2011

Это продолжение до Почему моя реализация OpenMP медленнее, чем однопоточная реализация? .

Я придерживался предоставленного ответа и использовал задачи вместо прагм дляускорить код.Однако по сравнению с последовательной (одной и той же) программой обе программы работают одинаково быстро.Я не наблюдаю ускорения.

Переработанный код находится здесь: http://pastebin.com/3SFaNEc4

Я просто удалил все прагмы for и заменил их прагмами задач для рекурсивных процедур.Я делаю что-то не так?Я должен видеть почти линейную скорость.Что вы, ребята, думаете?

Спасибо!

1 Ответ

2 голосов
/ 18 февраля 2011

Во-первых, у вас все еще есть «#pragma end критический», который следует удалить.Это не вызывает проблемы, но это неверно.Во-вторых, как я уже сказал в другом вопросе, который вы опубликовали, вам, возможно, придется подумать о том, как вы распараллеливаете код, чтобы увидеть ускорение, поэтому простая замена других прагм прагмами задач может не ускорить его.Третье - вы не поместили задачи в параллельный регион, поэтому вы вообще не работаете в параллельном режиме.И вы не можете просто добавить параллельную область вокруг задач, или вы будете выполнять одни и те же задачи несколько раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...