Как правильно распараллелить код на C++ с использованием OpenMP?
Реализовал один численный метод. Директивы вроде верно расставил, все должно работать. Но параллелит очень странно. Например - при 1 потоке время работы ~ 4.5 сек, при 2 потоках ~ 2.3 сек, при 4-х - может выдать и 1.6 сек, а может и 2.7 сек, при 8-ми потоках вообще 2.2+ сек и быстрее не работает.
У кого есть время и кто имеет опыт работы с OpenMP, помогите пожалуйста, желательно в скайпе tmp_skype_929292 .
@kodwi а с чего вы решили что ускорение будет линейным? Линейным оно было бы если бы вы запускали 4 независимых процесса. при чем только если больше ничего не было. А есть еще штуки типа кеши процессора, когерентность кеша процессора и т.д. Проверьте есть ли рост кеш-мисов при росте количества потоков. Так же попробуйте повысить приоритет процесса.
Увы, я не настолько сведущь в этой теме. Если будут хоть какие-то результаты, напишите если не сложно.