Я работаю над проектом, в котором нас попросили написать простой код OpenMP для распараллеливания программы, работающей с дифференциальными уравнениями. Нас также попросили протестировать производительность кода с оптимизацией компилятора и без нее. Я работаю с компилятором Sun CC, поэтому для оптимизированной версии я использовал параметры
-xopenmp -fast
и для неоптимизированных
-xopenmp=noopt
Неудивительно, что время работы с включенной оптимизацией компилятора было намного меньше, чем в другом случае. Что меня удивляет, так это то, что производительность масштабирования намного лучше в неоптимизированной версии. Здесь под производительностью я подразумеваю коэффициент ускорения, то есть отношение времени работы программы на M процессорах к времени работы программы на 1 процессоре.
Намекнули, что это может зависеть от того факта, что оптимизированная версия привязана к памяти, а неоптимизированная версия привязана к процессору. Я не уверен, как «связанность» может повлиять на возможности масштабирования моего кода. У вас есть какие-либо предложения?