Implementing SPMD
program work
C$OMP PARALLEL DEFAULT(PRIVATE)
C$OMP& SHARED(N,global)
nthreads = omp_get_num_threads()
iam = omp_get_thread_num()
ichunk = N/nthreads
istart = iam*ichunk
iend = iam+1*ichunk -1
call my_sum(istart, iend, local)
C$OMP ATOMIC
global = global + local
C$OMP END PARALLEL
print*, global
end
Each thread works on its piece.
Previous slide
Next slide
Back to first slide
View graphic version