2010-01-10

xen0n: (Default)
2010-01-10 07:06 am
Entry tags:

Парадокс параллелизма

Закон Амдаля знают и понимают практически все (даже те, кто не знает, что это называется законом Амдаля :-). На нем основано простое логическое и понятное всем правило - N-процессорная система не будет в N раз быстрее однопроцессорной. (будет быстрее, но не в N раз, а поменьше. Конкретная величина уже сильно зависит характера частных задач, но принцип сохраняется).

А сегодня узнал про парадокс параллелизма - исключение из сферически-конского правила Амдаля, которое порой случается на практике. У компьютера есть несколько видов памяти с разными емкостями и скоростями: каждая следующая - бОльшего объема и более медленная:
- кэш процессора
- оперативная память
- дисковая память

Предположим, что у нас есть хорошо распараллеливаемая задача, достаточно большая, и много (N будет достаточно) узлов для выполнения вычислений. Время выполнения этой задачи на N узлах может быть в >N раз быстрее, за счет того, что задача объемная, и в "быстрой" памяти она не уместится, значит один процессор постоянно будет подгружать данные из медленной памяти, а в случае расспараллеливания - каждый процессор может свой участок работы обрабатывать в быстрой памяти.