[C con Clase] threads vs openmp

Alejandro Vázquez alnavegante en gmail.com
Lun Jun 7 22:30:24 CEST 2010


Añadir que si funcionase correctamente deberia imprimir

trhead  - 0
trhead  - 0
trhead  - 0
trhead  - 0
trhead  - 0
trhead  - 1
trhead  - 1
trhead  - 1
trhead  - 1
trhead  - 1
...
y asi hasta el thread 4

El 7 de junio de 2010 18:06, Samuel Díaz García <samueldg en arcoscom.com>escribió:

> 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
>
> _______________________________________________
> 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
>



-- 
Alejandro Vazquez-Otero
Group of Non Linear Physics
Facultad de Fisicas. Univ. de Santiago de Compostela
15782 Santiago de Compostela. Spain
Tel: (+34) 981 563100 x 14002
Fax: (+34) 981 522089
E-Mail: alnavegante en gmail.com  alejandro.vazquez en rai.usc.es
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20100607/71a9710a/attachment.html>


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