O cluster Kerrighed não usa todos os nós ao executar o OpenMP

0

Recebi acesso a um cluster recém-construído que usa o Kerrighed. Sou o primeiro usuário deste cluster, portanto, problemas de configuração e configuração podem ser uma possibilidade. Eu também sou totalmente novo no Kerrighed (e principalmente novo na computação em cluster). Estou tendo problemas para executar algumas tarefas básicas e quero verificar se estou apropriadamente concebendo como o cluster deve funcionar.

Em particular, criei um programa OpenMP simples como um caso de teste. Com base na maneira como eu configurei, compilei e executei o programa, espero que o programa utilize 24 núcleos do cluster. No entanto, esse não é o caso, apesar de alterar a variável de ambiente OMP_NUM_THREADS e outras variáveis de ambiente do OMP.

Estou usando este programa como um caso de teste:

#include <omp.h>

#define NRA 4800                
#define NCA 1000        
#define NCB 10000

int main (int argc, char *argv[])
{
int     tid, nthreads, chunk, i, j, k;

chunk = 100;                    /* set loop iteration chunk size */
double temp;

/*** Spawn a parallel region explicitly scoping all variables ***/
#pragma omp parallel shared(nthreads,chunk) private(temp,tid,i,j,k)
  {
  tid = omp_get_thread_num();
  if (tid == 0)
    {
    nthreads = omp_get_num_threads();
    }

  /*** Put work inside inner loops, parallelize over the outer loop**/
  #pragma omp for schedule (static, chunk)
  for (i=0; i<NRA; i++)
    {
    for(j=0; j<NCB; j++)
      for (k=0; k<NCA; k++)
        temp = (i+k) * (j+k);
    }
  }   /*** End of parallel region ***/

}

Eu então compilo o programa de teste com:

gcc-4.7 -fopenmp test.c -o omp

Eu configurei o número de threads como uma variável de ambiente

$ OMP_NUM_THREADS=24 ; export OMP_NUM_THREADS

Em seguida, execute o programa:

$ ./omp

Ao observar o uso do cluster, o comando omp usa apenas 12 núcleos para executar (existem 84 núcleos listados em / proc / cpuinfo). É minha expectativa que os passos que eu coloquei resultem no uso de 24 núcleos desde que eu executei este código como um teste em uma verdadeira máquina SMP com esses resultados.

Eu fiz algo errado na compilação deste arquivo para o cluster do Kerrighed? Eu tenho algum outro grande mal-entendido? Se não, então qual seria o próximo passo na dedução do problema com o cluster?

Obrigado pela ajuda, Andrew

    
por Sevenless 22.08.2012 / 21:45

1 resposta

0

Sugiro que você tente aqui -

link

link

Lista de discussão de baixo tráfego, mas alguns desenvolvedores dedicados respondem perguntas técnicas.

Como o cluster do kerrighed é novo, provavelmente ajudará a fornecer informações sobre o hardware (quantos núcleos por nó? qual modelo de CPU exata? todos os nós são idênticos?) e em suas versões de software para openmp / kerrighed / linux.

p.s. O AFAIK kerrighed só suporta a migração de processos, ao contrário da migração de threads, o que poderia confundir sua contagem de núcleos?

    
por 16.04.2013 / 23:56