2009-08-19 11 views
5

Estoy usando OpenMP para hacer subprocesos con mis bucles anidados. Como soy nuevo en esto, no estoy seguro de si estoy usando OpenMP de la manera correcta para que realmente pueda hacer la programación paralela. Entonces, me gustaría saber si puedo medir el rendimiento de mi programa C++ que usa OpenMP, así que puedo decir que realmente funciona y estoy en el camino correcto. Como cuántos subprocesos se ejecutan en paralelo y cuánto tardan en terminarlos. ¡Gracias y saludos!Cómo saber si OpenMP funciona en mi programa C++

+0

¡Mis disculpas por confundir OpenMP con OpenMPI! ¡Gracias a Dirk Eddelbuettel por señalar educadamente mi error! –

Respuesta

9
#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(); 
} 
... 

Obviamente necesita ot proporcionar las dos funciones de temporizador, pero esa es la esencia. Las funciones de OMP son bastante auto explicativas. También asegúrese de que su entorno esté configurado correctamente y de que esté compilando con los mecanismos adecuados. La opción g ++ es -fopenmp. En Visual Studio vaya a la configuración del proyecto, C++, Language, y habilite "OpenMP Support".

1

Puede usar el administrador de tareas de Windows (CTRL-SHIFT-ESC) en las ventanas para monitorear el uso de la CPU, o arriba en las casillas * nix.

Sólo tienes que comprobar si se utilizan muchos núcleos o no

1

Puede utilizar el depurador (Visual Studio si estás en Windows) para:

  • ver cómo pueden las discusiones se están ejecutando
  • ver que codifican cada uno de ellos se está ejecutando
  • pausa de algunos de ellos, mientras que dejar que otros continúan
+0

¿Sabes cómo hacer esto con gdb/en Linux? – Tim

+0

Esto debería ayudar: http://www.delorie.com/gnu/docs/gdb/gdb_25.html Vea también los enlaces en la parte inferior de esa página. (Advertencia: lo encontré con Google; no soy un usuario de GDB). – RichieHindle

+0

En Linux siempre puedes usar 'top' para ver todos tus núcleos y comprobar lo que están haciendo. – Anna

Cuestiones relacionadas