Kerrighed Cluster verwendet beim Ausführen von OpenMP nicht alle Knoten

680
Sevenless

Ich habe Zugang zu einem kürzlich gebauten Cluster erhalten, der Kerrighed verwendet. Ich bin der erste Benutzer dieses Clusters, daher sind möglicherweise Setup- und Konfigurationsprobleme möglich. Ich bin auch völlig neu bei Kerrighed (und vor allem beim Cluster-Computing). Ich habe Probleme bei der Ausführung einiger grundlegender Aufgaben und möchte überprüfen, ob ich die Funktionsweise des Clusters richtig verstehe.

Insbesondere habe ich ein einfaches OpenMP-Programm als Testfall erstellt. Ich erwarte, dass das Programm 24 Kerne des Clusters verwendet, je nachdem, wie ich das Programm eingerichtet, kompiliert und ausgeführt habe. Dies ist jedoch nicht der Fall, obwohl die Umgebungsvariable OMP_NUM_THREADS und andere OMP-Umgebungsvariablen geändert wurden.

Ich verwende dieses Programm als Testfall:

#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 ***/  } 

Ich kompiliere das Testprogramm dann mit:

gcc-4.7 -fopenmp test.c -o omp 

Ich habe die Anzahl der Threads als Umgebungsvariable festgelegt

$ OMP_NUM_THREADS=24 ; export OMP_NUM_THREADS 

Dann führe das Programm aus:

$ ./omp 

Bei der Verwendung des Clusters werden zur Ausführung des Befehls omp nur 12 Kerne verwendet (in / proc / cpuinfo sind 84 Kerne aufgeführt). Ich gehe davon aus, dass die von mir beschriebenen Schritte zur Verwendung von 24 Kernen führen werden, da ich diesen Code als Test auf einem echten SMP-Computer mit diesen Ergebnissen ausgeführt habe.

Habe ich beim Kompilieren dieser Datei für den Kerrighed-Cluster etwas falsch gemacht? Habe ich ein anderes großes Missverständnis? Wenn nicht, was wäre dann der nächste Schritt bei der Ableitung des Problems mit dem Cluster?

Danke für die Hilfe, Andrew

0

1 Antwort auf die Frage

0
afs4

Schlagen Sie vor, Sie versuchen es hier -

https://listes.irisa.fr/sympa/arc/kerrighed.users

http://dir.gmane.org/gmane.linux.cluster.kerrighed.user

E-Mail-Liste mit wenig Verkehr, aber einige bekannte Entwickler beantworten dort technische Fragen.

Da Ihr kerrighed-Cluster frisch ist, wird dies wahrscheinlich helfen, Informationen über Ihre Hardware (wie viele Kerne pro Knoten, welches genaue CPU-Modell - alle Knoten sind identisch) und Ihre Softwareversionen für openmp / kerrighed / linux zu geben.

ps AFAIK kerrighed unterstützt nur die Prozessmigration, im Gegensatz zur Thread-Migration, was Ihre Kernzählung verwirren könnte.