2012-03-17 6 views
0

이것은 내가 병렬화 PGI 가속기 디렉티브를 사용하고 있지만 오류가

을 보여주고있다 "컴파일러 메시지를 -Minfo 참조 (가속 영역을 번역하는 데 실패

program load_flow 


!!!!!!!region starts 
!$acc region 
p1=0;p=0 
do i=2,n 
    do j=1,n 
     p1=(V(i)*V(j)*Yabs(i,j)*cos(angle(i,j)-d(i)+d(j))) 
     p=p1+p 
    end do 
    P0(i-1)=p 
    p=0 
end do 

! % % % %------Reactive Power Calculation-----% 
p=0;p1=0 

do i=2,(n-m) 
     do j=1,n 
p1=-(V(i)*V(j)*Yabs(i,j)*sin(angle(i,j)-d(i)+d(j))) 
p=p1+p 
     end do 
     Q0(i-1)=p 
     p=0 
end do 

!!!!!!!!!!!mismatch factor 
do i=1,(n-1) 
    B1(i)=Ps(b,i)-P0(i) 
    end do 
do i=1,(n-m-1) 
    B2(i)=Qs(b,i)-Q0(i) 
end do 

MF(1,1:38)=B1(1:38) 
MF(1,39:67)=B2(1:29) 
!!!!!!!!jacobian calculation for preddictor step 
!!!!!!!!!!!!!!!!!!!!!!dia of j1 
p=0;p1=0 
do i=2,n 
    do j=1,n 
     if(j .ne. i)then 
p1=V(i)*V(j)*Yabs(i,j)*sin(angle(i,j)-d(i)+d(j)) 

p=p1+p 
     end if 

    end do 
    i=i-1 
    dia1(i,i)=p 

    p=0 
    i=i+1 
end do 

!!!!!!!!!!!!!!off dia. of j1 
q=0;q1=0 

do k=2,n 
i=k 
    do j=2,n 
     if(j .ne. i)then 
     q1=V(i)*V(j)*Yabs(i,j)*sin(angle(i,j)-d(i)+d(j)) 
     end if 
     i=i-1;j=j-1 
offdia1(i,j)=-q1 
q1=0 
i=i+1;j=j+1 
    end do 
end do 

do i=1,38 
do j=1,38 
J1(i,j)=offdia1(i,j)+dia1(i,j) 
end do 
end do 
!!!!!!!!!!!!!!!!!!!dia. of j2 
p=0;p1=0 
do i=2,(n-m) 
    do j=1,n 
     if(j .ne. i)then 
     p1=V(j)*Yabs(i,j)*cos(angle(i,j)-d(i)+d(j)) 
p=p1+p 
     end if 

    end do 

    dia2(i-1,i-1)=p+(2*V(i)*Yabs(i,i)*cos(angle(i,i))) 
    p=0; 

end do 
!!!!!!!!!!!!!!!!!!off dia. of j2 
p1=0; 

do k=2,n 
i=k 
    do j=2,(n-m) 
     if(j .ne. i)then 
     p1=V(i)*Yabs(i,j)*cos(angle(i,j)-d(i)+d(j)); 
     end if 
     i=i-1;j=j-1 
offdia2(i,j)=p1 
    p1=0; 
    i=i+1;j=j+1 
    end do 
end do 

do i=1,(n-m-1) 

    offdia2(i,i)=dia2(i,i) 

end do 
J2=offdia2 
!!!!!!!!!!!!!!!!!!!!dia. of j3 
p=0;p1=0 
do i=2,(n-m) 
    do j=1,n 
     if(j .ne. i)then 
      p1=V(i)*V(j)*Yabs(i,j)*cos(angle(i,j)-d(i)+d(j)) 
p=p1+p; 
     end if 
    end do 
    i=i-1; 
    dia3(i,i)=p 
    p=0; 
    i=i+1; 
end do 
!!!!!!!!!!!!!!off dia of j3 
p=0;p1=0 

do k=2,(n-m) 
i=k; 
    do j=2,n 
     if(j .ne. i)then 
    p1=V(i)*V(j)*Yabs(i,j)*cos(angle(i,j)-d(i)+d(j)) 
     end if 
    i=i-1;j=j-1 
    offdia3(i,j)=-p1; 
    p1=0; 
    i=i+1;j=j+1 
    end do 
end do 

do i=1,(n-m-1) 
     offdia3(i,i)=dia3(i,i) 

end do 
J3=offdia3 
!!!!!!!!!!dia of j4 
p=0;p1=0 
do i=2,(n-m) 
    do j=1,n 
     if(j .ne. i)then 
      p1=V(j)*Yabs(i,j)*sin(angle(i,j)-d(i)+d(j)) 
p=p1+p 
     end if 

    end do 

    dia4(i-1,i-1)=-(2*V(i)*Yabs(i,i)*sin(angle(i,i)))-p 
    p=0;p1=0 
end do 
!!!!!!!!!!!!!!!off dia of j4 
p1=0;p=0 

do k=2,(n-m) 
i=k; 
    do j=2,(n-m) 
     if(j .ne. i)then 
     p1=V(i)*Yabs(i,j)*sin(angle(i,j)-d(i)+d(j)) 
     end if 
    i=i-1;j=j-1 
    offdia4(i,j)=-p1 
    p1=0; 
    i=i+1;j=j+1 
    end do 
end do 

do i=1,(n-m-1) 
offdia4(i,i)=dia4(i,i); 
end do 

J4=offdia4 
!!!!!!! 
!!!!!!!!!!!!!!!!!!!formation of final jacobian!!!!!!!!!! 
Jac(1:38, 1:38) = J1 (1:38,1:38) 
Jac(1:38,39:67) = J2 (1:38,1:29) 
Jac(39:67, 1:38) = J3 (1:29,1:38) 
Jac(39:67,39:67) = J4 (1:29,1:29) 
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
!!!!!!!!!!region ends 
!$acc end region 

end program load_flow 

내 코드입니다) : 제로 스텝 값을 가진 유도 변수 "

+4

너무 오래 읽을 수있는에만 관련 섹션 – Anycorn

+1

을 보여 오류가 어디에서 발생했는지 확인할 수 있습니다. -Minfo는 무엇을 보여줄까요? –

+0

귀하의 질문은 무엇입니까? – talonmies

답변

1

제대로 작동하지 않지만 정확한 방향의 단계가되어야합니다 :

!!!!!!!region starts 
p1=0;p=0 
!$acc region do 
do i=2,n 
    do j=1,n 
     p1=(V(i)*V(j)*Yabs(i,j)*cos(angle(i,j)-d(i)+d(j))) 
     p=p1+p 
    end do 
    P0(i-1)=p 
    p=0 
end do 
+0

나는 시도했다. 그러나 그것은 "ACC 지역 DO 이후에 예상되는 DO 루프"를 보여주고있다. – user991852

+0

미안하지만 그건 실수였다. – user991852

+1

PGI 컴파일러에서 작동하는 OpenACC로 전환하는 것이 좋습니다. – harrism

1

이 외부 루프의 상단에 P = 0을 초기화 변경해보십시오 : 왜 $ 작성일의 범위를 줄임으로써 시작하지,

!!!!!!!region 
!$acc region do 
do i=2,n 
    p=0 
    do j=1,n 
     p1=(V(i)*V(j)*Yabs(i,j)*cos(angle(i,j)-d(i)+d(j))) 
     p=p1+p 
    end do 
    P0(i-1)=p 
end do