Wie erkennt man, ob OpenMP funktioniert?

8

Ich versuche, LIBSVM im parallelen Modus laufen zu lassen, aber meine Frage ist in OpenMP im Allgemeinen. Laut LIBSVM FAQ habe ich den Code mit #pragma Calls geändert Verwenden Sie OpenMP. Ich habe auch das Makefile (für un * x) modifiziert, indem ich ein Argument -fopenmp hinzugefügt habe, so dass es zu:

wird %Vor%

Der Code wird gut kompiliert. Ich überprüfe (da es nicht mein PC ist), ob OpenMP installiert ist von:

%Vor%

und sehen, dass es wahrscheinlich installiert ist:

%Vor%

Jetzt; Wenn ich das Programm starte, sehe ich keine Geschwindigkeitsverbesserungen. Auch wenn ich mit "top" überprüfe, verwendet der Prozess höchstens% 100 CPU (es gibt 8 Kerne), auch gibt es keinen CPU-Engpass (nur ein weiterer Benutzer mit% 100 CPU-Auslastung), ich habe erwartet, mehr als zu sehen % 100 (oder ein anderer Indikator), dass der Prozess mehrere Kerne verwendet.

Gibt es eine Möglichkeit zu überprüfen, dass es mehrere Kern funktioniert?

    
paul simmons 07.05.2012, 11:55
quelle

2 Antworten

7

Sie können die Funktion omp_get_num_threads() verwenden. Es gibt Ihnen die Anzahl der Threads zurück, die von Ihrem Programm verwendet werden.

    
Charles Brunet 07.05.2012, 12:00
quelle
1

Mit omp_get_max_threads() erhalten Sie die maximale Anzahl von Threads, die für Ihr Programm verfügbar sind. Es ist auch das Maximum aller möglichen Rückgabewerte von omp_get_num_threads() . Sie können die Anzahl der Threads, die von Ihrem Programm verwendet werden, explizit mit der Umgebungsvariablen OMP_NUM_THREADS , z. in bash über

%Vor%     
afischer 01.03.2014 09:19
quelle

Tags und Links