Olej писал(а):
- насколько можно ожидать ускорение от параллельного исполнения кода?
Здесь накопилось за долгие годы масса мнений, заблуждений, предрассудков и красивых народных легенд

:
- из-за того, что начиная с середины 60-х годов, с написания Э.Дейкстрой работы "Взаимодействие последовательных процессов", с которой и началось, собственно, параллельное программирование, и до начала 2000-х - всё параллельное программирование было квази-параллельным - выполнялось на 1-м процессоре, с разделением его времени...
(реально параллельные многопроцессорные реализации существовали только как отдельные спецпроекты).
- одна из первых "легенд" - это то, что на одном процессоре распараллеливание не увеличивает скорость, а только используется для удобства ... это не соответствует действительности, но в некоторых случаях параллельные реализации могут быть даже медленнее, чем последовательная альтернатива - за счёт накладных расходов на распараллеливание.
- один из (исторически) первых способ распараллеливания - fork(); и здесь ещё одна красивая народная легенда, что реализация на fork() (параллельными процессами)
намного медленнее, чем реализация через pthread_create() (параллельными потоками) ... якобы из-за частых переключений контекстов и т.д. - в этой легенде мы обязаны, скорее всего, преподавателям ВУЗов, которые сами программ не писали, но рассказывали какие-то гипотетические сказки, которые потом обрастали деталями.
- картина сильно поменялась с года ~2005 ... когда сначала широко стали распространены SMP в серверах, а потом массово - многоядерный процессоры в любом самом пионерском компьютере ... а поменялась она в сторону усложнения:
а). всё, что писалось и обсуждалось в предыдущие 40 лет, оказалось в полной мере применимо к многопроцессорам...
б). синхронизировать теперь нужно не только между параллельными ветвями кода, но и между процессорами (так появились "собственные данные процессора" в ядре Linux, афинити-маска потока и т.д.)...
в). перебрасывание выполняемой ветки между процессорами может иметь следствием частую перезагрузку кэша RAM, что увеличит время обращений к RAM в 2-4 раза, и не увеличит скорость, а уменьшит её...
в). ... и другие тонкие эффекты.
Вот на это всё хотелось бы иметь демонстрирующие примеры кода.