Мне приходилось несколько раз распараллеливать часть программ с OpenMP, чтобы заметить, что в конце концов, несмотря на хорошую масштабируемость, большая часть предполагаемого ускорения была потеряна из-за плохой производительности однопоточного случая ( если сравнивать с серийной версией).
Обычное объяснение, которое появляется в Интернете для этого поведения, состоит в том, что код, сгенерированный компиляторами, может быть хуже в многопоточном случае. Во всяком случае, я не могу найти нигде ссылку, которая объясняет, почему сборка может быть хуже.
Итак, я бы хотел спросить у компилятора:
Можно оптимизировать оптимизацию компилятора с помощью многопоточности? В случае, как повлиять на производительность?
Если это может помочь сузить вопрос, меня интересуют в основном высокопроизводительные вычисления.
Отказ от ответственности. Как указано в комментариях, часть ответов ниже может стать устаревшей в будущем, поскольку они вкратце обсуждают, как оптимизация обрабатывается компиляторами во время постановки вопроса.