Calculadora da Lei de Amdahl
Entradas
| Parte paralelizável | 95 % |
|---|---|
| Processadores | 16 |
Calculadora da Lei de Amdahl
Estime a aceleração máxima de um programa obtida pela paralelização usando a lei de Amdahl, a partir da fração paralelizável do trabalho e do número de processadores.
Entradas
Carga de trabalho
Resultados
Insira um valor para ver os resultados.
Aceleração
Eficiência
A lei de Amdahl
A lei de Amdahl prevê quanto mais rápido uma tarefa de tamanho fixo pode ser executada quando parte dela roda em paralelo entre vários processadores. Ela responde a uma pergunta que todo engenheiro enfrenta ao escalar software para mais núcleos: se apenas parte do trabalho pode ser paralelizada, qual é a aceleração realista e a partir de que ponto adicionar hardware deixa de ajudar? A calculadora recebe a fração paralelizável do trabalho e um número de processadores e retorna a aceleração resultante, o teto teórico e a eficiência paralela.
O gargalo serial
A maioria dos programas contém uma mistura de trabalho. Algumas partes — iterações independentes de um laço, renderização de blocos de imagem separados, processamento de registros distintos — podem ser executadas simultaneamente. Outras partes — leitura de um arquivo de configuração, construção de uma estrutura de dados da qual tudo o mais depende, uma etapa final de redução — precisam ser executadas em sequência. As partes seriais não podem ser aceleradas pela adição de processadores, de modo que estabelecem um piso para o tempo total de execução.
A lei de Amdahl torna isso preciso. Seja a fração do tempo de execução original que é paralelizável e a fração serial. Com processadores, a parte paralela termina em do tempo original, enquanto a parte serial ainda leva . A aceleração total é o tempo original dividido pelo novo tempo:
O teto
À medida que cresce, o termo encolhe em direção a zero, mas o termo serial permanece fixo. Tomando o limite, obtém-se a aceleração máxima que o programa pode alcançar:
Um programa que é 95% paralelo nunca pode ultrapassar uma aceleração de 20×, por mais processadores que sejam empregados. Um programa que é 50% paralelo chega no máximo a 2×. É por isso que reduzir a fração serial — e não apenas comprar mais núcleos — costuma ser a otimização de maior impacto.
Exemplo resolvido
Suponha que 95% de um trabalho seja paralelizável e que ele seja executado em 16 processadores. A aceleração é:
S=(1−0,95)+160,951=0,05+0,0593751=0,1093751≈9,14Assim, 16 processadores entregam cerca de 9,1× de aceleração — bem abaixo de um 16× perfeito. O teto teórico aqui é , e a eficiência paralela é , o que significa que quase metade da capacidade de computação adicionada se perde no gargalo serial.
Por que a eficiência importa
A eficiência paralela, , mede o quão bem os processadores extras estão sendo aproveitados. Uma eficiência próxima de 100% indica uma escalabilidade quase linear; uma eficiência que cai rapidamente à medida que aumenta sinaliza que a fração serial domina e que mais hardware tem baixo custo-benefício. A lei de Amdahl descreve a escalabilidade forte — uma carga de trabalho fixa em mais processadores. Quando a própria carga de trabalho cresce junto com o hardware, aplica-se a mais otimista Calculadora da Lei de Gustafson.
Trate a fração paralelizável como uma estimativa: ela é geralmente medida por perfilamento e muitas vezes muda com o tamanho do problema e o hardware, de modo que a aceleração prevista é uma orientação sobre o comportamento esperado, e não uma garantia.
Perguntas frequentes (FAQ)
O que é a lei de Amdahl?
A lei de Amdahl, formulada por Gene Amdahl em 1967, fornece a aceleração teórica de uma tarefa de tamanho fixo quando parte dela é paralelizada. Se uma fração p do trabalho pode ser executada em paralelo entre N processadores e a parte restante 1 − p deve ser executada de forma serial, a aceleração total é S = 1 / ((1 − p) + p / N).
A parte serial impõe um teto rígido: por mais processadores que sejam adicionados, o programa nunca poderá ser executado mais rápido do que 1 / (1 − p) vezes o tempo original.
Por que adicionar mais processadores traz retornos decrescentes?
À medida que o número de processadores aumenta, a parte paralela do trabalho encolhe em direção a zero, mas a parte serial permanece constante. Quando a parte paralela é pequena em relação à parte serial, cada processador adicional quase não altera o tempo total de execução.
Por exemplo, com 90% de trabalho paralelizável, passar de 1 para 16 processadores produz uma aceleração de cerca de 6,4×, mas passar de 16 para 1.024 processadores chega a apenas cerca de 9,9× — ainda abaixo do teto de 10×.
Qual é a diferença entre a lei de Amdahl e a lei de Gustafson?
A lei de Amdahl pressupõe um tamanho de problema fixo e pergunta quanto mais rápido ele é executado com mais processadores — enfatizando o limite imposto pelo trabalho serial. A lei de Gustafson pressupõe que o tamanho do problema cresce com os processadores disponíveis (um orçamento de tempo fixo, com carga de trabalho maior) e prevê uma aceleração que escala de forma mais favorável.
Ambas estão corretas; respondem a perguntas diferentes sobre escalabilidade forte e escalabilidade fraca.
Como estimo a parte paralelizável do meu programa?
A parte paralelizável é mais bem medida do que estimada por suposição. Faça o perfil do programa para descobrir quanto tempo de relógio é gasto em código que pode ser executado de forma concorrente em comparação com código que deve ser executado em sequência (preparação de E/S, cadeias de dependência, sincronização).
Também é possível inferi-la a partir de dois tempos de execução medidos com diferentes números de processadores, rearranjando a fórmula da aceleração. Trate qualquer estimativa isolada como aproximada, já que a fração paralelizável costuma mudar com o tamanho do problema e o hardware.
Próximas sugestões
Calculadora da Lei de Gustafson
Estime a aceleração escalada de uma carga de trabalho paralela usando a lei de Gustafson, em que o tamanho do problema cresce com o número de processadores em vez de permanecer fixo.