O que se entende por aceleração superlinear? É possível ter aceleração superlinear na prática?

9

Na computação paralela, eu sei que a equação de aceleração é

1s+1sp

Mas o que se entende por velocidade superlinear? É algo teórico? Você poderia explicar isso com equações?

LuckyB
fonte
Em que contexto você se deparou com o termo "aceleração superlinear"?
David Richerby
11
@DavidRicherby É um termo bastante comum na comunidade de computação de alto desempenho.
Anton Trunov 04/04
@AntonTrunov OK, ótimo. Mas muitos de nós não fazem parte da comunidade de computação de alto desempenho e nenhuma dessas palavras aparece na pergunta. Em outros contextos, "aceleração linear" significa outras coisas .
precisa saber é o seguinte
@DavidRicherby O OP menciona "computação paralela". Atualmente, o pessoal da HPC prefere o termo "HPC", não "computação paralela", já que o hardware e o software paralelo são apenas meios para alcançar alto desempenho.
Anton Trunov 04/04

Respostas:

12

Com equação: não realmente.

A aceleração superlinear vem do excesso de aceleração calculada de forma ingênua, mesmo após levar em conta o processo de comunicação (que está desaparecendo, mas ainda é o gargalo).

Por exemplo, você tem um algoritmo serial que leva 1 1texecutar. Você tem1024 núcleos, a aceleração tão ingênua é 1024xou leva t/1024, mas deve ser calculado como em sua equação, levando em consideração a transferência de memória, pequenas modificações no algoritmo, tempo de paralelização.

Portanto, a aceleração deve ser menor que 1024x, mas às vezes acontece que a aceleração é maior, então chamamos de svocêpereuEuneumar.

De onde vem?
De vários lugares: uso de cache (o que se encaixa em registros, memória principal ou armazenamento em massa, onde muitas vezes mais unidades de processamento fornecem mais registros por subtarefa), padrões de acerto de memória, algoritmo simplesmente melhor (ou um pouco diferente), falhas na série código.
Por exemplo, um processo aleatório que procura espaço para um resultado agora está dividido em1024pesquisadores que cobrem mais espaço ao mesmo tempo, portanto é mais provável encontrar a solução mais rapidamente. Existem subprodutos (se você trocar elementos como no tipo de bolha e alternar para a GPU, todos os pares serão trocados de uma só vez, enquanto a série é apenas o ponto).

No sistema distribuído, a comunicação é ainda mais cara, portanto, os programas são alterados para tornar o uso da memória local (o que também altera o acesso à memória, divide o problema de maneira diferente do que no aplicativo seqüencial).

E o mais importante, o programa seqüencial não é idealmente o mesmo que a versão paralela - tecnologia diferente, ambiente, algoritmo, etc., por isso é difícil compará-los.

Trecho de "Introdução à computação paralela" Segunda edição de Ananth Grama, 2003

Teoricamente, a aceleração nunca pode exceder o número de elementos de processamento p.
Se o melhor algoritmo seqüencial demorarTs unidades de tempo para resolver um determinado problema em um único elemento de processamento e, em seguida, uma aceleração de p pode ser obtido em p elementos de processamento se nenhum deles passar mais do que tempo Ts/p.
Uma aceleração maior quep só é possível se cada elemento de processamento gastar menos que o tempo Ts/presolvendo o problema.
Nesse caso, um único elemento de processamento pode emular op elementos de processamento e resolver o problema em menos de Tsunidades de tempo.
Isso é uma contradição porque a aceleração, por definição, é calculada com relação ao melhor algoritmo seqüencial .

Portanto, o nome "superlinear" nesse contexto vem da definição de aceleração.

Mal
fonte
0

Minha explicação para leigos pode ajudar com a imaginação de como funciona.

Certos tipos de algoritmos levam à aceleração superlinear se a arquitetura de interconexão HPC possibilitar a referência entre estados internos dos núcleos. O motivo é a informação (e termodinâmica) teórica e pode ser simplesmente explicada com a seguinte descrição.

Tome dois sistemas contendo 3 bits de estados possíveis em cada um:

011 e 101

O número máximo de estados possíveis desse sistema é 2 * 2 ^ 3 = 16.

Agora vamos combinar esses dois conjuntos em um composto, simplesmente com 6 bits de espaço de estado possível:

011101

O número máximo de estados possíveis desse sistema é 2 ^ 6 = 64. O sistema combinado possui um aumento de entropia disponível de 64/16 = 4 vezes.

A composição de conjuntos com maior variedade de estados internos leva a "acelerações" exponencialmente maiores, porque os núcleos podem hipoteticamente ter mais referências mútuas.

Na química, a energia é liberada quando os sistemas se combinam (pense na fusão nuclear). Essa energia vem exatamente da possibilidade de abordar mais estados para sistemas combinados.

As fontes que eu li descreviam algoritmos paralelos em núcleos isolados, onde não havia capacidade de ter referências mútuas entre bits de estado de núcleos diferentes. Do ponto de vista do aumento da entropia dos estados combinados, posso imaginar como a aceleração superlinear é possível.

Para detalhes teóricos da informação, consulte "O paradoxo da mistura" no artigo da Wikipedia https://en.wikipedia.org/wiki/Gibbs_paradox sobre a natureza termodinâmica exata desse comportamento.

Isso tem algumas implicações filosóficas para a comunicação humano-humano e a importância das conversas ao vivo em vez de digitar texto e ler livros.

Brian Haak
fonte