Sto usando OpenMP per eseguire il multithreading con i miei cicli nidificati. Dal momento che sono nuovo in questa roba, non sono sicuro se sto usando OpenMP nel modo corretto in modo che possa effettivamente fare la programmazione parallela. Quindi mi piacerebbe sapere se posso misurare le prestazioni del mio programma C++ che usa OpenMP così posso dire che funziona davvero e sono sulla strada giusta? Come quanti thread sono in esecuzione in parallelo e quanto tempo ci vuole per terminare ciascuno di essi. Grazie e saluti!Come sapere se OpenMP funziona nel mio programma C++
risposta
#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();
}
...
Ovviamente è necessario fornire le due funzioni del timer, ma questo è l'essenza. Le funzioni OMP sono piuttosto auto-esplicative. Assicurati inoltre che il tuo ambiente sia impostato correttamente e che tu stia compilando i meccanismi appropriati. l'opzione g ++ è -fopenmp. Su Visual Studio, vai alle impostazioni del progetto, C++, lingua e abilita "Supporto OpenMP".
È possibile utilizzare Windows taskmanager (CTRL-SHIFT-ESC) su Windows per monitorare l'utilizzo della CPU o superiore su * nix box.
Basta controllare se vengono utilizzati molti core o no
È possibile utilizzare il debugger (Visual Studio se siete su Windows) per:
- vedere come possono le discussioni sono in esecuzione
- vedere quale codice ciascuno di essi è in esecuzione
- pausa alcuni di loro, mentre altri continuano lasciando
Sai come fare questi con gdb/su Linux? – Tim
Questo dovrebbe aiutare: http://www.delorie.com/gnu/docs/gdb/gdb_25.html Vedi anche i collegamenti in fondo a quella pagina. (Caveat: l'ho trovato con Google, non sono un utente GDB.) – RichieHindle
Su linux puoi sempre usare 'top' per vedere tutti i tuoi core, e controllare cosa stanno facendo. – Anna
- 1. C++ OpenMP programma
- 2. Gestione del segnale nel programma parallelo OpenMP
- 3. OpenMP set_num_threads() non funziona
- 4. Perché 2nd scanf non funziona nel mio programma?
- 5. Come abilitare il core dump nel mio programma Linux C++
- 6. OpenMP e programma ibrido MPI
- 7. Perché il comando cd non funziona nel mio programma shell?
- 8. Come faccio a sapere se il mio server ha NUMA?
- 9. Come sapere se il mio programma viene convogliato ad un altro (Perl)
- 10. Come faccio a sapere se il mio programma ha abilitato o meno ARC?
- 11. Come posso sapere se il mio SignalR Backplane (Redis) funziona davvero come dovrebbe?
- 12. OpenMP e C paralleli per ciclo: perché il mio codice rallenta quando si utilizza OpenMP?
- 13. Shellcode nel programma C
- 14. Come posso sapere se il mio contesto è ancora valido?
- 15. C++: Protezione memoria condivisa OpenMP
- 16. Come funziona CTRL-C con programma Java
- 17. Estensioni Python e OpenMP C
- 18. Come funziona la direttiva SECTIONS in OpenMP?
- 19. Letterale "o" nel programma C++?
- 20. Cmake non funziona con openMP su Maverick
- 21. Uso "da __future__ import division" nel mio programma, ma non è caricato con il mio programma
- 22. C++ OpenMP con shared_pointer
- 23. Come sapere se Google Analytics funziona (app per Android)?
- 24. Come posso sapere se il cron di moodle funziona?
- 25. come accedere ai contatti nel mio programma Android
- 26. Printf l'indirizzo corrente nel programma C
- 27. Come controllare se il mio programma è eseguito dall'utente come amministratore (Vista/Win7, C++)
- 28. Come posso eseguire Javascript nel mio programma Delphi senza TWebBrowser?
- 29. Come posso trovare perdite di memoria nel mio programma Python?
- 30. \ n non funziona nel mio fwrite()
Le mie scuse per aver confuso OpenMP con OpenMPI! Grazie a Dirk Eddelbuettel per avermi cortesemente segnalato il mio errore! –