Windows Vista? *NEVER* Het waarom - Opera forever!!!
I've seen chickens that were more menacing. Chickens in a coma. On ice. In my fridge
OpenMP doet uit zichzelf helemaal niets.
Er zijn wel speciale declaraties voor variabelen die geüpdatet worden in een parallele loop, waardoor je dit soort expressies niet altijd handmatig hoeft om te schrijven, maar dan nog zal OpenMP de lus alleen paralleliseren als je daar expliciet om vraagt.
edit:
Ik denk dat in dit voorbeeld je trouwens wel zelf die expressie moet omschrijven...
Er zijn wel speciale declaraties voor variabelen die geüpdatet worden in een parallele loop, waardoor je dit soort expressies niet altijd handmatig hoeft om te schrijven, maar dan nog zal OpenMP de lus alleen paralleliseren als je daar expliciet om vraagt.
edit:
Ik denk dat in dit voorbeeld je trouwens wel zelf die expressie moet omschrijven...
[ Voor 14% gewijzigd door Soultaker op 15-04-2009 13:56 ]
Zoals Soultaker al aangeeft: OMP vertrouwt enkel op de programmeur en op wat de programmeur zegt dat geparalleliseerd mag worden. En dat geef je dan aan door die #pragma'sDarkvater schreef op woensdag 15 april 2009 @ 12:19:
In hoeverre is de implementatie slim genoeg om te zien dat de iteraties onafhankelijk van elkaar gedraaid kunnen worden? Of doet OpenMP helemaal niks in die trant, en alle verantwoordelijkheid is voor de programmeur?
Dat zal je inderdaad moeten doen. En dan zou iets alsEg, ik moet zelf function door het volgende vervangen:
C++:
1 function(i * M + j, y + i * P);
C++:
1
2
3
4
5
| #pragma omp parallel { #pragma omp for private(i,j,y,P,M,N) schedule(runtime) //hier de code } |
moeten volstaan denk ik.
Note: het is wel sinds mijn studies geleden dat ik dit nog gebruikt heb, dus misschien zijn er ondertussen ook nieuwe dingen mogelijk