Avatar billede killer_r Nybegynder
15. august 2008 - 13:32 Der er 1 løsning

OpenMP i Fortran 95 - Virker ikke!?

Hej eksperter...

Jeg har følgende Fortran 95-kode der kører i parallel vha. OpenMP... Den skal finde det det element der er størst, men lige nu ser det ud til at den bare overskriver det største element (Amax) uanset om det private element i tråden (priv_max) er større eller mindre.... Hvad sker der?!

Amax = 0.0_dbl
!$OMP PARALLEL DEFAULT(SHARED) PRIVATE(j,alpha,beta,nu,A,priv_max,priv_numax)
priv_max = 0.0_dbl
!$OMP DO
do j = 1,Nspec
    nu = nu_min+dF*(j-1)

    ! Calculate alpha and beta:
    call CalcAlphaBeta(t,f,w,nu,alpha,beta)
   
    ! Calculate amplitude and phase:
    A = sqrt(alpha**2 + beta**2)
     
    if (A > priv_max) then
        priv_max = A
        priv_numax = nu
    endif
enddo
!$OMP END DO
!$OMP FLUSH (Amax)
if (priv_max > Amax) then
    !$OMP CRITICAL
        if (priv_max > Amax) then
            print *, priv_max
            Amax = priv_max
            numax = priv_numax
        endif
    !$OMP END CRITICAL
endif
!$OMP END PARALLEL

Hvis noget af det jeg skrev var uforståeligt, så sig til!

/Killer_R
Avatar billede killer_r Nybegynder
04. november 2009 - 15:07 #1
Det viste sig at være en fejl i compileren!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester