Essa falta de velocidade está relacionada ao processador ou ao código?

0

Eu escrevi um programa que usa MPI, ele resolve um sistema muito grande de equações. Estou obtendo ótimas "acelerações" para sistemas muito grandes. O que quero dizer com isso é que, se eu aumentar o número de processos, o tempo que leva para completar as metades, além de um tempo constante adicionado a isso, que considero comunicação. Por exemplo, em um processo, pode levar 60s, depois dois, pode levar 35s (60 + 5), e em 4, 20.5 (17,5 + 3), etc.

No entanto, ao entrar em sistemas que são aproximadamente 1 milhão por 1 milhão, eu começo a obter resultados estranhos. Ao passar de 4 núcleos para 8 núcleos, recebo metade do tempo mais 10 segundos de "comunicação". Ou seja, o tempo que leva para completar o cálculo vai de ~ 260 a ~ 140.

Isso está bem, mas quando vai de 8 a 16 o tempo passa de ~ 140 a ~ 110, eu também obtenho um resultado pobre muito similar quando estou indo de 16 a 32. Ou seja, ~ 110 a ~ 85.

Parece que acho que pode ter algo a ver com o próprio processador, já que esse comportamento não apareceria de repente (?).

Existem 2 desses processadores no sistema

link

Existem cerca de 8000 GB de RAM também.

I would like some explanation as to why this might be happening.

Tenho prazer em fornecer mais informações. Eu sei que esta é uma questão complexa e não tenho certeza de quais informações você precisa no total.

    
por HMPARTICLE 28.07.2018 / 15:35

1 resposta

0

Difícil de diagnosticar dessa maneira, mas aqui estão alguns pontos:

  • Cada processo usa RAM, então dobrando o número de processos significa duplicando a RAM necessária. Se a RAM física disponível estiver esgotada, a troca para o disco diminuirá processamento.

  • Mesmo em um computador com vários núcleos, alguns recursos são comuns a todos os processos. Estes incluem principalmente RAM e disco, portanto, uso intensivo significa que processos irão disputar o acesso a recursos e haverá esperas.

  • Se os processos usarem métodos de sincronização, como semáforos, Espera-se algum tempo perdido em esperas, o que aumentará em proporção direta ao número de processos.

Muitos desses gargalos podem ser vistos simplesmente observando o comportamento de seus processos através do Gerenciador de Tarefas ou do Gerenciador de Recursos, para que você possa identificar o gargalo e aperfeiçoá-lo.

    
por 29.07.2018 / 14:56

Tags