Posso esperar escalonamento linear com o GNU Parallel

2

Estou usando o GNU Parallel para realizar benchmarking usando 20 núcleos para testar o speedup em comparação a fazer o mesmo trabalho em apenas 1 core. Devo esperar escala linear quase completa, ou seja, meu cálculo será aproximadamente 20x mais rápido do que se eu estivesse usando apenas um núcleo?

Para esclarecer, um agendador (por exemplo, slurm) está não sendo usado.

    
por cryptic0 19.08.2016 / 07:20

1 resposta

3

Depende. A única maneira de saber com certeza é medir.

Se as CPUs tiverem hyperthreading: Não. O Hyperthreading converte sua CPU em 2 núcleos, com cerca de 70% do desempenho de thread único.

Se os núcleos compartilharem cache: talvez não. Dependendo do seu aplicativo, ele pode ser altamente dependente de um grande cache. Com vários núcleos compartilhando o mesmo cache, você corre o risco de mais erros de cache.

Se as CPUs escalarem a frequência com base na temperatura (também chamada de turbo boosting): Não. Um único núcleo fará com que a CPU fique menos quente do que se dois núcleos na CPU estiverem rodando na mesma velocidade. Isso pode fazer com que a CPU trabalhe mais rápido como um único núcleo do que se mais núcleos estiverem ativos. Isso normalmente é semelhante ao hyperthreading: cada núcleo será mais lento, mas o throughput total será maior.

Se seus trabalhos dependem muito de E / S: depende. Consulte o link

    
por 19.08.2016 / 08:38