nicht sicher, was FREIGEGEBEN werden soll oder PRIVAT in der openmp-Schleife

Ich habe eine Schleife, welche updates Sie eine matrix a und ich will es machen openmp, aber ich bin mir nicht sicher, welche Variablen geteilt werden sollte und private. Ich hätte gedacht, dass nur ii und jj arbeiten würde, aber es funktioniert nicht. Ich glaube, ich brauche eine !$OMP ATOMIC UPDATE irgendwo zu...

Die Schleife nur berechnet den Abstand zwischen N und N-1 Teilchen und updates einer matrix A.

            !$OMP PARALLEL DO PRIVATE(ii,jj)
            do ii=1,N-1
                    do jj=ii+1,N
                            distance_vector=X(ii,:)-X(jj,:)
                            distance2=sum(distance_vector*distance_vector)
                            distance=DSQRT(distance2)
                            coff=distance*distance*distance
                            PE=PE-M(II)*M(JJ)/distance
                            A(jj,:)=A(jj,:)+(M(ii)/coff)*(distance_vector)
                            A(ii,:)=A(ii,:)-(M(jj)/coff)*(distance_vector)
                    end do
            end do
            !$OMP END PARALLEL DO

InformationsquelleAutor Griff | 2013-01-16

Schreibe einen Kommentar