Hola a todos, <div><br></div><div>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.  </div>
<div><br></div><div>Pues haber si hay suerte  :-) </div><div><br></div><div>Compilo con: "g++ -fopenmp man.cc -o main" en ubuntu 10.4</div><meta http-equiv="content-type" content="text/html; charset=utf-8"><div>
<br></div><div><br></div><div><br></div><div><div>#include <iostream></div><div>#include <omp.h></div><div>#include <pthread.h></div><div>using namespace std;</div><div><br></div><div>void *hilo(void *pointer) {</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>cout << "Entrando en thread" << endl<<endl;</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>int j;</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>#define NUM_THREADS 4 </div><div><span class="Apple-tab-span" style="white-space:pre">       </span>omp_set_num_threads(NUM_THREADS);</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>#pragma omp parallel </div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>{</div><div><span class="Apple-tab-span" style="white-space:pre">            </span>int m;</div><div><span class="Apple-tab-span" style="white-space:pre">               </span>#pragma omp for  private(j,m)</div>
<div><span class="Apple-tab-span" style="white-space:pre">              </span>for (j=1;j<5;j++) {</div><div><span class="Apple-tab-span" style="white-space:pre">                       </span>m=omp_get_thread_num();</div><div><span class="Apple-tab-span" style="white-space:pre">                      </span>cout << "thread:" << m << "_"  << j  << endl;</div>
<div><span class="Apple-tab-span" style="white-space:pre">                      </span>std::cout.flush();</div><div><span class="Apple-tab-span" style="white-space:pre">           </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">            </span></div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>std::cout.flush();</div><div><br></div><div><br></div><div>}</div><div><br></div><div>
main() {</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre"> </span>pthread_t idHilo;</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>pthread_create(&idHilo,NULL, hilo, NULL);</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>std::cout.flush();</div><div><br></div><div>}</div></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br clear="all"><br>
 
</div>