[C con Clase] threads vs openmp

Samuel Díaz García samueldg en arcoscom.com
Lun Jun 7 18:06:59 CEST 2010


Bajo el supuesto de que todo funcione, yo entiendo lo siguiente:

    1) Defines la función del hilo.
    2) En el main() entiendo se lanza UN hilo.
    3) Se termina el main() (sin esperar a que termine la ejecución de 
los hilos ni nada).

¿Sigues preguntando por qué no te funciona? Yo, desde mi punto de vista, 
sin conocer bien cómo funcionan las librerías "openmp", creo que el 
código que has mostrado no es muy consistente.

Creo que deberías saber primero en qué orden usar las diferentes 
funciones de "openmp", para inicializar y demás.

Aparte de ello, lo normal, es que el proceso principal siempre espere a 
que terminen los procesos hijos, ahora bien, al ser "hilos" de 
ejecución, se entiende que al terminar el proceso principal, el sistema 
operativo abortará la ejecución de cuantos hilos haya lanzado éste.

Salu2



Alejandro Vázquez escribió:
> Hola a todos, 
> 
> lo primero un saludo a todos. Mi cuestion es muy simple: tengo un 
> programilla que paraleliza una suma matricial (al menos en esencia) bajo 
> openmp, y funciona perfectamente, de  47 segundos pasamos a 4. El caso 
> que es que realizando la misma paralelización dentro de un thread no 
> funciona. Les adjunto un ejemplo mas simple donde lanzo un thread y 
> dentro del mismo implemento una paralelización con openmp. Si funcionase 
> cada uno de los hilos hijo deberia imprimir su número... pero no es asi.  
> 
> Pues haber si hay suerte  :-) 
> 
> Compilo con: "g++ -fopenmp man.cc -o main" en ubuntu 10.4
> 
> 
> 
> #include <iostream>
> #include <omp.h>
> #include <pthread.h>
> using namespace std;
> 
> void *hilo(void *pointer) {
> cout << "Entrando en thread" << endl<<endl;
> int j;
> #define NUM_THREADS 4 
> omp_set_num_threads(NUM_THREADS);
> #pragma omp parallel 
> {
> int m;
> #pragma omp for  private(j,m)
> for (j=1;j<5;j++) {
> m=omp_get_thread_num();
> cout << "thread:" << m << "_"  << j  << endl;
> std::cout.flush();
> }
> }
> std::cout.flush();
> 
> 
> }
> 
> main() {
> 
> pthread_t idHilo;
> pthread_create(&idHilo,NULL, hilo, NULL);
> std::cout.flush();
> 
> }
> 
> 
> 
> 
> 
> 
> 
>  
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ

-- 
    Samuel Díaz García
     Director Gerente
ArcosCom Wireless, S.L.U.

CIF: B11828068
c/ Romero Gago, 19
Arcos de la Frontera
11630 - Cadiz

http://www.arcoscom.com

mailto:samueldg en arcoscom.es
msn: samueldg en arcoscom.com

Móvil: 651 93 72 48
Tlfn.: 956 70 13 15
Fax:   956 70 34 83



Más información sobre la lista de distribución Cconclase