The (Flawed) Plan For a Good Reduction
I=9
Incorrect parallel program:
c$omp parallel private(suml,i)
c$omp& shared(sum,a,n)
suml = 0.0
c$omp do
do 10 i=1,n
10 suml = suml + a(i)
cBug -- Must use critical section next!!!
sum = sum + suml
c$omp end parallel
Parallel Do
I=1
I=2
I=3
I=4
I=5
I=6
Initialize
Final Sum
suml = suml
suml = suml
suml = suml
Should have
been Synched
suml = 0.0
suml = 0.0
suml = 0.0
I=7
I=8
Previous slide
Next slide
Back to first slide
View graphic version