mpirun -np N, e se N for maior que meu número principal?

5

Digamos que eu tenha uma estação de trabalho de quatro núcleos, o que o linux (Ubuntu) faria se eu executasse

mpirun -np 9 XXX

Q1. Será que 9 correrão imediatamente juntos ou correrão 4 após 4?

Q2. Eu suponho que usar 9 não é bom, porque o resto 1, fará o computador confuso, (eu não sei se vai ficar confuso ou a "cabeça" do computador vai decidir qual núcleo entre os 4 núcleos serão usados?) Ou será escolhido aleatoriamente. Quem decide qual núcleo deve ser chamado?

Q3. Se eu sinto que minha CPU não é ruim e meu carneiro é bom e grande o suficiente, e meu caso não é muito grande. É uma boa idéia para usar totalmente o meu cpu e ram, que eu faço mpirun -np 8 XXX, ou mesmo mpirun -np 12 XXX.

Q4. Quem decide todas essas otimização de eficiência, Ubuntu ou Linux, ou placa-mãe ou cpu?

Sua iluminação seria muito apreciada.

    
por Daniel 30.05.2012 / 23:42

3 respostas

4
  1. 9 será executado simultaneamente.
  2. Não há confusão para o processo 1 restante; mpirun agendas na ordem round-robin por padrão, então o primeiro núcleo / nó será atribuído a esse processo.
  3. Você pode aumentar np além do número de núcleos / nós físicos disponíveis. A desvantagem é que a sobrecarga aumenta com um número maior de processos que os núcleos / nós. Se o seu código não estiver vinculado à CPU (por exemplo, requer tempo de espera de IO significativo), você deve fazer isso. Em última análise, você não sabe se será mais rápido até você tentar.
  4. MPI faz o agendamento inicial, mas para mais de um processo por nó, ou apenas em geral (já que há vários outros processos sendo executados em segundo plano também), o agendador de kernel do Linux assume o controle.

Veja esta página man para mais informações.

    
por ish 31.05.2012 / 00:21
0

9 imediatamente.

Se não, o tamanho do universo estará incorreto. Todos os processos devem existir ao mesmo tempo ou não estarão visíveis para as outras instâncias.

Se a memória da sua instância estiver muito alta, você pode parar manualmente os outros 5 processos até que os outros 4 tenham terminado.

No entanto, se você estiver usando o MPI dessa maneira (somente para sua máquina local), deixe-me recomendar-lhe o OpenMP / tbb. A MPI é realmente projetada para distribuir o aplicativo em vários computadores de rede ou nós de cluster.

    
por polo 30.05.2012 / 23:55
0

Sim, você precisaria modificar o código significativamente para transformá-lo de um aplicativo MPI em um aplicativo OpenMP ou TBB. Se a sua aplicação já foi desenvolvida, experimente e faça medições de desempenho antes de fazer algo tão drástico.

    
por Justin 16.07.2013 / 17:44