小编Nic*_*uez的帖子

我怎样才能避免这个循环中的“i”依赖?福特兰语言

我在代码中使用 OpenMP,但为了做到这一点,我必须解决此依赖性:

do q=1,pppp
    i=0
    
    DO j=1, pppp
        do c1=1,3
            vect(c1)=xx(q,c1)-xx(j,c1)
        end do
        dist=sqrt(vect(1)**2+vect(2)**2+vect(3)**2)
        if(dist<0.0001)then
            i=i+1
            if(i>10)i=10
            caravec(q,i)=j
        endif
    ENDDO
ENDDO  
Run Code Online (Sandbox Code Playgroud)

我试图避免使用该ordered条款,因为它很昂贵,但我不知道如何消除依赖性。我怎样才能做到这一点?
感谢所有的帮助

parallel-processing multithreading fortran openmp

2
推荐指数
2
解决办法
156
查看次数