Ich verwende OpenMP, um Multithreading mit meinen verschachtelten Schleifen durchzuführen. Da ich neu in diesem Bereich bin, bin ich nicht sicher, ob ich OpenMP in der richtigen Art und Weise verwende, damit es die parallele Programmierung tatsächlich ausführen kann. Ich möchte also wissen, ob ich die Leistung meines C++ - Programms messen kann, das OpenMP verwendet, damit ich weiß, dass es funktioniert und ich auf dem richtigen Weg bin? So wie viele Threads parallel laufen und wie lange es dauert, bis alle fertig sind. Danke und Grüße!Wie kann ich feststellen, ob OpenMP in meinem C++ - Programm funktioniert?
Antwort
#include <omp.h>
...
int target_thread_num = 4;
omp_set_num_threads(target_thread_num);
unsigned long times[target_thread_num];
// Initialize all the times
#pragma omp parallel
{
int thread_id = omp_get_thread_num();
times[thread_id] = start_time();
std::cout << "Thread number: " << omp_get_thread_num() << endl;
times[thread_id] = end_time();
}
...
weiter
Offensichtlich müssen Sie die zwei Timerfunktionen zur Verfügung stellen, aber das ist der Kern. Die OMP-Funktionen sind ziemlich selbsterklärend. Stellen Sie außerdem sicher, dass Ihre Umgebung ordnungsgemäß eingerichtet ist und Sie mit den richtigen Mechanismen kompilieren. Die g ++ -Option ist -fopenmp. In Visual Studio gehen Sie zu den Projekteinstellungen, C++, Sprache und aktivieren Sie "OpenMP Support".
Sie können Windows-Taskmanager (STRG-SHIFT-ESC) in Windows verwenden, um die CPU-Auslastung zu überwachen, oder oben auf * nix-Boxen.
einfach überprüfen, ob viele Kerne verwendet werden oder nicht
Sie Ihre Debugger (Visual Studio, wenn Sie unter Windows sind) verwenden können, um:
- sehen, wie können Threads laufen
- sehen welcher Code jeder von ihnen läuft
- Pause einige von ihnen, während andere lassen
Wissen Sie, wie man dies mit gdb/unter Linux macht? – Tim
Dies sollte helfen: http://www.delorie.com/gnu/docs/gdb/gdb_25.html Siehe auch die Links am Ende dieser Seite. (Achtung: Ich habe das mit Google gefunden; ich bin kein GDB-Benutzer.) – RichieHindle
Unter Linux können Sie immer 'top' verwenden, um alle Ihre Kerne zu sehen und zu überprüfen, was sie tun. – Anna
- 1. Wie kann ich feststellen, ob ein Perl-Modul tatsächlich in meinem Programm verwendet wird?
- 2. Wie kann ich testen, ob C++ openmp verwendet?
- 3. C++ OpenMP Programm
- 4. Wie kann ich feststellen, ob ein Unterverzeichnis in C# existiert?
- 5. Wie kann ich feststellen, ob Moodle Cron funktioniert?
- 6. Wie kann ich feststellen, ob der Ladevorgang funktioniert?
- 7. Wie kann mein Programm feststellen, ob Delphi läuft?
- 8. Wie kann ich feststellen, ob eine C-Ganzzahlvariable signiert ist?
- 9. Wie kann ich feststellen, ob der UIScrollView-Absturz in meinem Code oder in Apple's ist?
- 10. Wie kann ich feststellen, ob eine Datei umbenannt wurde?
- 11. parallelisieren Programm zählen integral mit OpenMP C++
- 12. Wie kann ich feststellen, ob das Master-Volume stummgeschaltet ist?
- 13. Wie kann ich feststellen, ob eine Datei leer ist?
- 14. Warum funktioniert scanf in meinem Programm nicht?
- 15. Wie kann ich feststellen, ob eine Klasse serialisiert werden kann?
- 16. Wie kann ich feststellen, welches Programm gestartet wurde?
- 17. Wie kann ich programmgesteuert feststellen, ob ich Schreibrechte mit C# in .Net habe?
- 18. Wie kann ich in meinem C-Programm überprüfen, dass derzeit vier Terminals geöffnet sind?
- 19. Wie kann ich feststellen, ob die Verbindung gemessen wird?
- 20. Wie kann ich feststellen, wie viel Speicher mein Programm derzeit
- 21. Wie kann ich feststellen, ob mein DirectoryEntry tatsächlich mit meinem LDAP-Verzeichnis verbunden ist?
- 22. Wie kann ich feststellen, ob eine Datei gzip komprimiert ist?
- 23. OpenMP set_num_threads() funktioniert nicht
- 24. Wie kann ich zur Kompilierzeit feststellen, ob das Projekt ein Programm oder eine Bibliothek ist?
- 25. Wie kann ich feststellen, ob ein Programm von Valgrind ausgeführt wird?
- 26. Wie kann ich feststellen, ob in Python ein Kind existiert?
- 27. Wie kann ich feststellen, ob sich zwei Polygone schneiden?
- 28. Windows-Anmeldeinformationen in meinem C# -Programm fragen?
- 29. xsl: Wie kann ich feststellen, ob eine Variable deklariert wurde?
- 30. Wie kann ich feststellen, ob ein Benutzer einen Laptop verwendet?
Ich entschuldige mich, OpenMP mit OpenMPI zu verwechseln! Danke an Dirk Eddelbüttel für den Hinweis auf meinen Fehler! –