OPENMP F90 / 95 Loops DO aninhados - problemas para melhorar a implementação em série

Fiz algumas pesquisas, mas não consegui encontrar nada que parecesse relacionado à minha pergunta (desculpe se minha pergunta é redundante!). De qualquer forma, como o título indica, estou tendo problemas para obter melhorias na implementação serial do meu código. O trecho de código que eu preciso paralelizar é o seguinte (este é o Fortran90 com OpenMP):

do n=1,lm     
  do m=1,jm   
    do l=1,im      
      sum_u = 0
      sum_v = 0
      sum_t = 0
      do k=1,lm
       !$omp parallel do reduction (+:sum_u,sum_v,sum_t) 
        do j=1,jm  
          do i=1,im
            exp_smoother=exp(-(abs(i-l)/hzscl)-(abs(j-m)/hzscl)-(abs(k-n)/vscl))
            sum_u = sum_u + u_p(i,j,k) * exp_smoother
            sum_v = sum_v + v_p(i,j,k) * exp_smoother
            sum_t = sum_t + t_p(i,j,k) * exp_smoother

            sum_u_pert(l,m,n) = sum_u
            sum_v_pert(l,m,n) = sum_v
            sum_t_pert(l,m,n) = sum_t          

            end do
          end do
       end do      
    end do
  end do  
end do

Estou enfrentando problemas de condição de corrida? Ou estou simplesmente colocando a diretiva no lugar errado? Sou muito novo nisso, então peço desculpas se esse é um problema excessivamente simplist

e qualquer forma, sem paralelismo, o código é terrivelmente lento. Para dar uma idéia do tamanho do problema, os índices lm, jm e im são 60, 401 e 501, respectivamente. Portanto, a paralelização é crítica. Qualquer ajuda ou link para recursos úteis seria muito apreciada! Estou usando o xlf para compilar o código acima, se isso for úti

Obrigado! -Jen

questionAnswers(2)

yourAnswerToTheQuestion