[Beowulf] OpenMP wierdness on dual AMD 2350 box w/ SL5.2 x86_64

Nathan Moore ntmoore at gmail.com
Thu Nov 27 06:50:25 PST 2008


Dmitri,

Perfect!  Thanks so much for the response.  Your guess about the barrier was
exactly correct.  The problem has disappeared.

I was ignorant about the proper way to specify shared variables.  Thanks for
the correction.  Is the following use of reduction acceptable?

   !$OMP PARALLEL
    !$OMP& PRIVATE(i,j)
    !$OMP& SHARED(Ny,Nx,dv,v,boundary))
    !
    !$OMP DO
...
...
    !$OMP END DO

    max_dv = 0.d0
    !$OMP BARRIER

    !$OMP DO
    !$OMP& REDUCTION(MAX:max_dv)
    do j=2,(Ny-1)
        do i=2,(Nx-1)
            v(i,j) = v(i,j) + dv(i,j)
            if(dabs(dv(i,j)) .gt. max_dv) then
                max_dv = dv(i,j)
            endif
        end do
    end do
    !$OMP END DO


On Thu, Nov 27, 2008 at 4:07 AM, Dmitri Chubarov
<dmitri.chubarov at gmail.com>wrote:

> Nathan, hello,
>
> I gave your code a second look and noticed this:
>
>         !$OMP PARALLEL
>>
>
>>         !$OMP DO
>>
> ....
>>         !$OMP END DO
>>
>>         max_dv = 0.d0
>>         !$OMP DO
>>
>  ....
>
>>         !$OMP END DO
>>         !$OMP END PARALLEL
>>
>>
> There is a BARRIER missing between max_dv = 0.d0 and the following loop.
> One of the threads in the pool might've been late and get to this statement
> when the rest have already completed the reduction loop.
>
> The barrier is also important to ensure that no thread would use the values
> of dv(i,j) in the reduction loop before they are updated by the main
> computational loop above.
>
> Finally
>             if(dv(i,j) .gt. max_dv) then
>                 max_dv = dv(i,j)
>             endif
> Does not look right since it would not handle negative values of dv(i,j)
> correctly. I assume it should read
> as
>             max_dv = max(max_dv, dabs(dv(i,j) ))
>
> Best regards,
>   Dmitri Chubarov
>
> --
> Junior Researcher
> Siberian Branch of the Russian Academy of Sciences
> Institute of Computational Technologies
>
>


-- 
- - - - - - -   - - - - - - -   - - - - - - -
Nathan Moore
Assistant Professor, Physics
Winona State University
AIM: nmoorewsu
- - - - - - -   - - - - - - -   - - - - - - -
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.beowulf.org/pipermail/beowulf/attachments/20081127/5346f032/attachment.html>


More information about the Beowulf mailing list