Откуда берется сверхлинейное ускорение?

при параллельных вычислениях теоретически сверхлинейное ускорение невозможно. Но на практике мы видим такие случаи. одна из причин-эффект кэша но я не понимаю, что она играет. Кроме того, есть и другие вещи, но что это такое? В резюме,

Как возможны сверхлинейные ускорения?

Я новичок в отношении параллельных вычислений.

2 ответов


Предположим, у вас есть 8-процессорная машина, каждый процессор имеет кэш 1 МБ, и Ваше вычисление использует 6 МБ данных.

на 1 процессоре вычисление будет делать много движения данных между процессором, кэшем и ОЗУ. На 8 процессорах вычисление должно будет только перемещать данные между процессором и кэшем. Таким образом, вы можете достичь сверхлинейного ускорения.

эти цифры и этот анализ были упрощены для экспозиции для новичка.


короче говоря, сверхлинейное ускорение достигается, когда общий объем работы процессоров строго меньше, чем общая работа, выполняемая одним процессором.

Это может произойти тремя способами:

  • оригинальный последовательный алгоритм был действительно плохим, используя параллельную версию алгоритма на одном процессоре, как правило, покончит со сверхлинейным ускорением.

  • параллельный алгоритм использует некоторый поиск как случайный чем больше процессоров идет, тем меньше расстояние нужно пройти, прежде чем вы достигнете того, что ищете.

  • современные процессоры имеют более быструю и медленную память. Как правило, он будет пытаться сохранить данные, которые вы используете в быстрой памяти. Мы можем с уверенностью сказать, что ваш объем данных больше, чем объем быстрой памяти. При использовании N процессоров объем оперативной памяти увеличивается в n раз. Больше данных помещается в быструю память, которая позволяет потратьте меньше времени (таким образом, объем работы) на ту же задачу.