» »

OpenMP

OpenMP

scarymovie ::

Pozdravljeni, imam vprašanje, ki se nanša na paralelno programiranje (OpenMP) in sicer, moram dobiti stavke iz teksta ter jih vstaviti v 3 funkcije, katere se morajo izvesti vzporedno. Zadevo sem sicer naredil tako:
for (...)
{
   ... // dobim stavek iz besedila
   #pragma omp parallel
   {
       funkicja1(stavek)
       funkcija2(stavek)
       funkcija3(stavek) 
   }
}
Zdaj me pa zanima če je to pravilni pristop, ker se mi funkcije izvedeje večkrat kot je načrtovano. Ali bi moral pred vsako funkcijo preveriti nit (if (id_nit==0,1...))?

bigbada ::

Kolikor mi je znano in jasno moraš preveriti z if stavki

if(mynode==1){}
itd...

bigbada ::

@scarymovie a ti je ze kaj uspelo? Zanima me, če moraš te #pragma dodat sam pred funkcije al pred for zanke tud? Če ti je kaj uspelo bi prosil za kaki hint al pa delcek kode :)

c0dehunter ::

Tukaj je nekaj kvalitetne obrazložitve. Vendar še vedno dobivam slabše rezultate kot pri računanju brez paralelizacije, kljub temu da sem preizkusil že več pristopov. ;((

Pri parallel direktivi pazi, saj le-ta pomeni da se vse znotraj bloka izvede večkrat (kolikor imaš niti).

Če prav razumem, je tukaj treba delati z sections/section in dodatkom nowait - torej da se niti med sabo ne čakajo. Trenutno imam tako
                
#pragma omp sections nowait
       {
        #pragma omp section
            result+=longest_word(line);
        #pragma omp section
            result+=number_of_vowels(line);
        #pragma omp section
            result+=number_of_blanks(line);
       }

a je še vseeno slabše kot brez paralelizacije - če bo kdo dobil kake boljše rezultate, se priporočam(o) ;)
I do not agree with what you have to say,
but I'll defend to the death your right to say it.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

C++ IDE on Windows

Oddelek: Programiranje
387484 (6576) noraguta
»

[C++] OpenMP težave

Oddelek: Programiranje
6822 (694) Rokm
»

[C++] izris v [x,y]

Oddelek: Programiranje
131153 (855) DuleKrtola
»

[C++]Kako narediti screenshot?

Oddelek: Programiranje
121507 (1078) *ziga*
»

openGL v visual c++ 6.0

Oddelek: Programiranje
211929 (1656) Lord_Rand

Več podobnih tem