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?
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.
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