[目次] [1ページ目] [前ページ] [OHP] [質疑応答]
(5/5)

表A-3 サブルーチンRECURのソースコード
        1      C=======================================================================
        2            SUBROUTINE RECUR(XX,AA,BB,CC,DD,NN,N0,N1)
        3      C=======================================================================
        4      C                                     2000/7/11
        5      C                                     RIAM, KYUSHU UNIVERSITY
        6      C                                     MASATOSHI YAGI
        7      C
        8      C     AA(I)*XX(N-1)+BB(N)*XX(N)+CC(N)*XX(N+1)=DD(N)     N=0,---,NN
        9      C            N0=0 : XX( 0)=A0 ;  N0=1 : D(XX( 0))/DY=AN.
       10      C            N1=0 : XX(NN)=B0 ;  N1=1 : D(XX(NN))/DY=BN.
       11      C
       12      C            N0=0 XX(0)  = A0
       13      C            N1=0 XX(NN) = B0
       14      C            N0=1 XX(0)  = DR*AN
       15      C            N1=1 XX(NN) = DR*BN
       16      C=======================================================================
       17            IMPLICIT REAL*8(A-H,O-Z)
       18            PARAMETER( IDM = 200 )
       19            COMPLEX*16, DIMENSION(0:IDM) :: XX,AA,BB,CC,DD,EE,FF
       20            COMPLEX*16 GG
       21      C-----------------------------------------------------------------------
       22            NM=NN-1
       23      C-----
       24            SELECT CASE (N1)
       25            CASE(0) ! N1=0
       26            EE(NM)=0.0D0
       27            FF(NM)=XX(NN)
       28            CASE(1) ! N1=1
       29            GG    =1.0D0/(3.0D0*AA(NM)-CC(NM))
       30            EE(NM)=(4.0D0*AA(NM)+BB(NM))*GG
       31            FF(NM)= - (DD(NM)-2.0D0*XX(NN)*AA(NM))*GG
       32      C##      EE(NM)=(4.0D0*AA(NM)+BB(NM))/(3.0D0*AA(NM)-CC(NM))
       33      C##      FF(NM)= - (DD(NM)-2.0D0*XX(NN)*AA(NM))/(3.0D0*AA(NM)-CC(NM))
       34            END SELECT
       35      C
       36  s2        DO N=NM-1,0,-1  ! EE(NN-2),....EE(0)
       37  s2        GG=1.0D0/(BB(N+1)+CC(N+1)*EE(N+1))
       38  s2        EE(N)=-AA(N+1)*GG
       39  s2        FF(N)=(DD(N+1)-CC(N+1)*FF(N+1))*GG
       40      C##      EE(N)=-AA(N+1)/(BB(N+1)+CC(N+1)*EE(N+1))
       41      C##      FF(N)=(DD(N+1)-CC(N+1)*FF(N+1))/(BB(N+1)+CC(N+1)*EE(N+1))
       42  s2        END DO
       43      C
       44            IF(N0 .EQ. 1) THEN
       45            XX(0)=((4.-EE(1))*FF(0)-FF(1))/(3.-(4.-EE(1))*EE(0))
       46           & -2.0D0*XX(0)/(3.0D0-(4.0D0-EE(1))*EE(0))
       47            END IF
       48      C
       49  s6        DO  N=1,NN ! XX(1),...XX(NN)
       50  s6        XX(N)=EE(N-1)*XX(N-1)+FF(N-1)
       51  s6        END DO
       52      C
       53            RETURN
       54            END

 Vectorization messages: program name(RECUR)
  jpc2217i-i   "zztext.f", line 37 - 38: EE is not vectorized since recursive reference takes place. 
  jpc2217i-i   "zztext.f", line 39: FF is not vectorized since recursive reference takes place. 
  jpc2217i-i   "zztext.f", line 50: XX is not vectorized since recursive reference takes place. 
tmrhs.f:
 UXP/V  Fortran V20L20  Mon Aug 14 10:39:05 2000


表A-4 サブルーチンbanfac,bansolのソースコード
        1            subroutine banfac(b,n,int)
        2            complex*16 b(5,n)
        3      C##
        4            select case(int)
        5            case(1)
        6      C
        7      C     int = 1, linear elements = tridiagonal system
        8      C
        9  s4        do j = 2, n
       10  m4        b(2, j) = b(2, j) / b(3, j-1)
       11  s4        b(3, j) = b(3, j) - b(2,j)*b(4,j-1)
       12  v4        end do
       13      C
       14      C##
       15            case(2)
                .
                .
                .
       40            end select
       41            return
       42            end

      Vectorization messages: program name(banfac)
  jpc2306i-i   "banfac.f", line 9: This DO loop is not vectorized since partial vectorization overhead is too large.
  jpc2217i-i   "banfac.f", line 10 - 11: b is not vectorized since recursive reference takes place. 
  jpc2217i-i   "banfac.f", line 35 - 37: b is not vectorized since recursive reference takes place. 

        1            subroutine bansol(r,x,b,n,int)
        2            complex*16 r(n), x(n), b(5,n)
        3            select case(int)
        4            case(1)
        5      C##
        6      C##     int = 1,   tridiagonal system
        7      C##
        8  s6        do  j = 2, n
        9  s6           r(j) = r(j) - b(2,j)*r(j-1)
       10  s6        end do
       11      C##
       12               x(n) = r(n) / b(3, n)
       13  s4           do  j = n-1, 1, -1
       14  m4              x(j) = (r(j) - b(4,j)*x(j+1))/b(3,j)
       15  v4           end do
       16      C##
       17              case(2)
                      .
                      .
                      .
    39              end select
       40                 return
       41                 end
Vectorization messages: program name(bansol)
  jpc2217i-i   "bansol.f", line 9: r is not vectorized since recursive reference takes place. 
  jpc2306i-i   "bansol.f", line 13: This DO loop is not vectorized since partial vectorization overhead is too large.
  jpc2217i-i   "bansol.f", line 14: x is not vectorized since recursive reference takes place. 



[目次] [1ページ目] [前ページ] [OHP] [質疑応答]