Estimando p na lei de Amdahl teoricamente e na prática
Pergunta
Na computação paralela, a lei da Amdahl é usada principalmente para prever a velocidade máxima teórica para o processamento do programa usando vários processadores.Se denotarmos a velocidade, então a lei da Amdahl é dada pela fórmula:
s= 1 / ((1-p) + (p / n)
onde p é a proporção de um sistema ou programa que pode ser feito paralelo, e 1-p A proporção que permanece serial.Minha pergunta é: Como podemos calcular ou estimar p para um determinado programa?
Mais especificamente, minha pergunta tem duas partes:
Como podemos calcular p teoricamente? Como podemos calcular p na prática?
Referência: https://www.techopedia.com/definition/17035/amdahls-Law
Solução
amdahl dividiu um programa em duas partes, serial e paralelo, e assumiu cada processador para ter a mesma capacidade de computação. Este conceito foi ainda mais refinado por Hill e Marty A lei de Amdahl na era multi-core , Em outras palavras, não é necessário que todo processador tenha a mesma capacidade de computação e cassidy Além da lei de Amdahl: Uma função objetiva que liga os ganhos de desempenho multiprocessador a atrasar e energia , em outras palavras, por que dividir em apenas duas partes.
Após uma breve visão geral da lei da Amdahl, respondo a pergunta como medir as partes seriais (1-P) e paralelo (p) de um programa.
- .
- Instrumentação estática: Coloque uma função que fornece a hora atual como GetTimeOfday no Linux no início do programa, o ponto em que você cria encadeamentos e pontos onde você participa de threads e, se necessário (se o seu programa faz um monte de pós-processamento ) No final do programa. Tome diferenças e você terá o valor da p. Use o programa de rosca única. Se você quiser ter mais precisão na medição, use a instrução RDTSCP em processadores Intel Excelente blog pelo Dr. John McCalpin .
- instrumentação dinâmica: é possível fazer o acima mesmo quando você não tiver o código-fonte para fazer instrumentação estática. Você pode usar o pré-carregamento da biblioteca (ld_preload) ou a ferramenta Intel Pin Introdução ao PIN usando exemplos ou semelhantes ferramentas de instrumentação binária dinâmica, como Dynamorio, Valgrind e Linux Perf Tutorial por Brendan Gregg . Todos eles são estruturas estabelecidas, totalmente gratuitas, com várias ferramentas de pesquisa usando-as.