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