fixed paths
This commit is contained in:
60
Sapfor/projects/dvm/fdvm/trunk/examples/gausf.fdv
Normal file
60
Sapfor/projects/dvm/fdvm/trunk/examples/gausf.fdv
Normal file
@@ -0,0 +1,60 @@
|
||||
PROGRAM GAUSF
|
||||
PARAMETER ( N = 10 )
|
||||
REAL A( N, N+1 ),X( N )
|
||||
C section A(1:N,1:N) - matrix of coefficients "A"
|
||||
C section A(1:N,N+1) - vector of free members "b"
|
||||
CDVM$ DISTRIBUTE A ( BLOCK, *)
|
||||
CDVM$ ALIGN X(I) WITH A(I,N+1)
|
||||
PRINT *, '********** TEST_GAUSS **********'
|
||||
CDVM$ PARALLEL (I) ON A(I,*)
|
||||
DO 100 I=1,N
|
||||
DO 100 J=1,N+1
|
||||
IF (I .EQ. J) THEN
|
||||
A(I,J)=2.0
|
||||
ELSE
|
||||
IF (J .EQ. N+1) THEN
|
||||
A(I,J)=1.0
|
||||
ELSE
|
||||
A(I,J)=0.0
|
||||
ENDIF
|
||||
ENDIF
|
||||
100 CONTINUE
|
||||
C
|
||||
C ELIMINATION
|
||||
C
|
||||
DO 1 I = 1, N-1
|
||||
|
||||
C the i-th row of array A will be buffered before
|
||||
C execution of i-th iteration, and reference A(I,K)
|
||||
C will be replaced with corresponding reference to buffer
|
||||
CDVM$ PARALLEL ( J ) ON A( J, * ), REMOTE_ACCESS (A( I, :))
|
||||
DO 5 J = I+1, N
|
||||
DO 5 K = I+1, N+1
|
||||
A( J, K ) = A( J, K ) - A( J, I ) * A( I, K ) / A( I, I )
|
||||
5 CONTINUE
|
||||
1 CONTINUE
|
||||
X( N ) = A( N, N+1 ) / A( N, N )
|
||||
C BACK SUBSTITUTION
|
||||
C
|
||||
DO 6 J = N-1, 1, -1
|
||||
C the (j+1)-th elements of array X will be buffered before
|
||||
C execution of j-th iteration, and reference X(J+1)
|
||||
C will be replaced with reference to temporal variable
|
||||
CDVM$ PARALLEL ( I ) ON A( I , * ), REMOTE_ACCESS ( X( J+1 ))
|
||||
DO 7 I = 1, J
|
||||
A( I, N+1 ) = A( I, N+1 ) - A( I,J+1)*X(J+1)
|
||||
7 CONTINUE
|
||||
X( J ) = A( J, N+1 ) / A( J, J)
|
||||
6 CONTINUE
|
||||
PRINT *, X
|
||||
END
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
57
Sapfor/projects/dvm/fdvm/trunk/examples/gausgb.fdv
Normal file
57
Sapfor/projects/dvm/fdvm/trunk/examples/gausgb.fdv
Normal file
@@ -0,0 +1,57 @@
|
||||
PROGRAM GAUSGB
|
||||
PARAMETER ( N = 10 ,N1 = N-3)
|
||||
REAL A( N, N+1 ),X( N )
|
||||
INTEGER GB(2)
|
||||
C section A(1:N,1:N) - matrix of coefficients "A"
|
||||
C section A(1:N,N+1) - vector of free members "b"
|
||||
CDVM$ DISTRIBUTE A ( GEN_BLOCK(GB), *)
|
||||
CDVM$ ALIGN X(I) WITH A(I,N+1)
|
||||
DATA GB(1)/3/, GB(2)/N1/
|
||||
PRINT *, '********** TEST_GAUSGB **********'
|
||||
CDVM$ PARALLEL (I) ON A(I,*)
|
||||
DO 100 I=1,N
|
||||
DO 100 J=1,N+1
|
||||
IF (I .EQ. J) THEN
|
||||
A(I,J)=2.0
|
||||
ELSE
|
||||
IF (J .EQ. N+1) THEN
|
||||
A(I,J)=1.0
|
||||
ELSE
|
||||
A(I,J)=0.0
|
||||
ENDIF
|
||||
ENDIF
|
||||
100 CONTINUE
|
||||
C
|
||||
C ELIMINATION
|
||||
C
|
||||
DO 1 I = 1, N
|
||||
|
||||
C the i-th row of array A will be buffered before
|
||||
C execution of i-th iteration, and reference A(I,K)
|
||||
C will be replaced with corresponding reference to buffer
|
||||
CDVM$ PARALLEL ( J ) ON A( J, * ), REMOTE_ACCESS (A( I, :))
|
||||
DO 5 J = I+1, N
|
||||
DO 5 K = I+1, N+1
|
||||
A( J, K ) = A( J, K ) - A( J, I ) * A( I, K ) / A( I, I )
|
||||
5 CONTINUE
|
||||
1 CONTINUE
|
||||
X( N ) = A( N, N+1 ) / A( N, N )
|
||||
C BACK SUBSTITUTION
|
||||
C
|
||||
DO 6 J = N-1, 1, -1
|
||||
C the (j+1)-th elements of array X will be buffered before
|
||||
C execution of j-th iteration, and reference X(J+1)
|
||||
C will be replaced with reference to temporal variable
|
||||
CDVM$ PARALLEL ( I ) ON A( I , * ), REMOTE_ACCESS ( X( J+1 ))
|
||||
DO 7 I = 1, J
|
||||
A( I, N+1 ) = A( I, N+1 ) - A( I,J+1)*X(J+1)
|
||||
7 CONTINUE
|
||||
X( J ) = A( J, N+1 ) / A( J, J)
|
||||
6 CONTINUE
|
||||
PRINT *, X
|
||||
END
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
45
Sapfor/projects/dvm/fdvm/trunk/examples/gaush.hpf
Normal file
45
Sapfor/projects/dvm/fdvm/trunk/examples/gaush.hpf
Normal file
@@ -0,0 +1,45 @@
|
||||
PROGRAM GAUSH
|
||||
PARAMETER ( N = 10 )
|
||||
REAL A( N, N+1 ),X( N )
|
||||
C section A(1:N,1:N) - matrix of coefficients "A"
|
||||
C section A(1:N,N+1) - vector of free members "b"
|
||||
CHPF$ DISTRIBUTE A ( BLOCK, *)
|
||||
CHPF$ ALIGN X(I) WITH A(I,N+1)
|
||||
PRINT *, '********** TEST_GAUSSHPF *********'
|
||||
CHPF$ INDEPENDENT
|
||||
DO 100 I=1,N
|
||||
DO 100 J=1,N+1
|
||||
IF (I .EQ. J) THEN
|
||||
A(I,J)=2.0
|
||||
ELSE
|
||||
IF (J .EQ. N+1) THEN
|
||||
A(I,J)=1.0
|
||||
ELSE
|
||||
A(I,J)=0.0
|
||||
ENDIF
|
||||
ENDIF
|
||||
100 CONTINUE
|
||||
C
|
||||
C ELIMINATION
|
||||
C
|
||||
DO 1 I = 1, N-1
|
||||
|
||||
CHPF$ INDEPENDENT
|
||||
DO 5 J = I+1, N
|
||||
DO 5 K = I+1, N+1
|
||||
A( J, K ) = A( J, K ) - A( J, I ) * A( I, K ) / A( I, I )
|
||||
5 CONTINUE
|
||||
1 CONTINUE
|
||||
X( N ) = A( N, N+1 ) / A( N, N )
|
||||
C BACK SUBSTITUTION
|
||||
C
|
||||
DO 6 J = N-1, 1, -1
|
||||
CHPF$ INDEPENDENT
|
||||
DO 7 I = 1, J
|
||||
A( I, N+1 ) = A( I, N+1 ) - A( I,J+1)*X(J+1)
|
||||
7 CONTINUE
|
||||
X( J ) = A( J, N+1 ) / A( J, J)
|
||||
6 CONTINUE
|
||||
PRINT *, X
|
||||
END
|
||||
|
||||
53
Sapfor/projects/dvm/fdvm/trunk/examples/gauswh.fdv
Normal file
53
Sapfor/projects/dvm/fdvm/trunk/examples/gauswh.fdv
Normal file
@@ -0,0 +1,53 @@
|
||||
PROGRAM GAUSWH
|
||||
PARAMETER ( N = 10 )
|
||||
REAL A( N, N+1 ),X( N )
|
||||
DOUBLE PRECISION WB(10)
|
||||
C section A(1:N,1:N) - matrix of coefficients "A"
|
||||
C section A(1:N,N+1) - vector of free members "b"
|
||||
CDVM$ DISTRIBUTE A ( WGT_BLOCK(WB,10), *)
|
||||
CDVM$ ALIGN X(I) WITH A(I,N+1)
|
||||
DATA WB/10.,9.,8.,7.,6.,5.,4.,3.,2.,1./
|
||||
|
||||
CDVM$ PARALLEL (I) ON A(I,*)
|
||||
DO 100 I=1,N
|
||||
DO 100 J=1,N+1
|
||||
IF (I .EQ. J) THEN
|
||||
A(I,J)=2.0
|
||||
ELSE
|
||||
IF (J .EQ. N+1) THEN
|
||||
A(I,J)=1.0
|
||||
ELSE
|
||||
A(I,J)=0.0
|
||||
ENDIF
|
||||
ENDIF
|
||||
100 CONTINUE
|
||||
C
|
||||
C ELIMINATION
|
||||
C
|
||||
DO 1 I = 1, N-1
|
||||
|
||||
C the i-th row of array A will be buffered before
|
||||
C execution of i-th iteration, and reference A(I,K)
|
||||
C will be replaced with corresponding reference to buffer
|
||||
CDVM$ PARALLEL ( J ) ON A( J, * ), REMOTE_ACCESS (A( I, :))
|
||||
DO 5 J = I+1, N
|
||||
DO 5 K = I+1, N+1
|
||||
A( J, K ) = A( J, K ) - A( J, I ) * A( I, K ) / A( I, I )
|
||||
5 CONTINUE
|
||||
1 CONTINUE
|
||||
X( N ) = A( N, N+1 ) / A( N, N )
|
||||
C BACK SUBSTITUTION
|
||||
C
|
||||
DO 6 J = N-1, 1, -1
|
||||
C the (j+1)-th elements of array X will be buffered before
|
||||
C execution of j-th iteration, and reference X(J+1)
|
||||
C will be replaced with reference to temporal variable
|
||||
CDVM$ PARALLEL ( I ) ON A( I , * ), REMOTE_ACCESS ( X( J+1 ))
|
||||
DO 7 I = 1, J
|
||||
A( I, N+1 ) = A( I, N+1 ) - A( I,J+1)*X(J+1)
|
||||
7 CONTINUE
|
||||
X( J ) = A( J, N+1 ) / A( J, J)
|
||||
6 CONTINUE
|
||||
PRINT *, X
|
||||
END
|
||||
|
||||
47
Sapfor/projects/dvm/fdvm/trunk/examples/jac.fdv
Normal file
47
Sapfor/projects/dvm/fdvm/trunk/examples/jac.fdv
Normal file
@@ -0,0 +1,47 @@
|
||||
PROGRAM JAC
|
||||
PARAMETER (L=8, ITMAX=20)
|
||||
REAL A(L,L), EPS, MAXEPS, B(L,L)
|
||||
CDVM$ DISTRIBUTE ( BLOCK, BLOCK) :: A
|
||||
CDVM$ ALIGN B(I,J) WITH A(I,J)
|
||||
C arrays A and B with block distribution
|
||||
|
||||
PRINT *, '********** TEST_JACOBI **********'
|
||||
MAXEPS = 0.5E - 7
|
||||
CDVM$ PARALLEL (J,I) ON A(I, J)
|
||||
C nest of two parallel loops, iteration (i,j) will be executed on
|
||||
C processor, which is owner of element A(i,j)
|
||||
DO 1 J = 1, L
|
||||
DO 1 I = 1, L
|
||||
A(I, J) = 0.
|
||||
IF(I.EQ.1 .OR. J.EQ.1 .OR. I.EQ.L .OR. J.EQ.L) THEN
|
||||
B(I, J) = 0.
|
||||
ELSE
|
||||
B(I, J) = ( 1. + I + J )
|
||||
ENDIF
|
||||
1 CONTINUE
|
||||
DO 2 IT = 1, ITMAX
|
||||
EPS = 0.
|
||||
CDVM$ PARALLEL (J, I) ON A(I, J), REDUCTION ( MAX( EPS ))
|
||||
C variable EPS is used for calculation of maximum value
|
||||
DO 21 J = 2, L-1
|
||||
DO 21 I = 2, L-1
|
||||
EPS = MAX ( EPS, ABS( B( I, J) - A( I, J)))
|
||||
A(I, J) = B(I, J)
|
||||
21 CONTINUE
|
||||
CDVM$ PARALLEL (J, I) ON B(I, J), SHADOW_RENEW (A)
|
||||
C Copying shadow elements of array A from
|
||||
C neighbouring processors before loop execution
|
||||
DO 22 J = 2, L-1
|
||||
DO 22 I = 2, L-1
|
||||
B(I, J) = (A( I-1, J ) + A( I, J-1 ) + A( I+1, J)+
|
||||
* A( I, J+1 )) / 4
|
||||
22 CONTINUE
|
||||
PRINT 200, IT, EPS
|
||||
200 FORMAT(' IT = ',I4, ' EPS = ', E14.7)
|
||||
IF ( EPS . LT . MAXEPS ) GO TO 3
|
||||
2 CONTINUE
|
||||
3 OPEN (3, FILE='JAC.DAT', FORM='FORMATTED', STATUS='UNKNOWN')
|
||||
WRITE (3,*) B
|
||||
CLOSE (3)
|
||||
END
|
||||
|
||||
62
Sapfor/projects/dvm/fdvm/trunk/examples/jacas.fdv
Normal file
62
Sapfor/projects/dvm/fdvm/trunk/examples/jacas.fdv
Normal file
@@ -0,0 +1,62 @@
|
||||
PROGRAM JACAS
|
||||
PARAMETER (K=8, ITMAX=20)
|
||||
REAL A(K,K), EPS, MAXEPS, B(K,K)
|
||||
CDVM$ DISTRIBUTE ( BLOCK, BLOCK) :: A
|
||||
CDVM$ ALIGN B(I,J) WITH A(I,J)
|
||||
CDVM$ REDUCTION_GROUP REPS
|
||||
C arrays A and B with block distribution
|
||||
|
||||
PRINT *, '********** TEST_JACOBI_AS **********'
|
||||
CDVM$ SHADOW_GROUP SA ( A )
|
||||
C creation of descriptor for operations with imported/exported
|
||||
C elements of array A
|
||||
MAXEPS = 0.5E - 7
|
||||
CDVM$ PARALLEL ( J, I) ON A( I, J)
|
||||
C nest of parallel loops for initialization of arrays
|
||||
DO 1 J = 1, K
|
||||
DO 1 I = 1, K
|
||||
A( I, J) = 0.
|
||||
IF(I.EQ.1 .OR. J.EQ.1 .OR. I.EQ.K .OR. J.EQ.K) THEN
|
||||
B(I, J) = 0.
|
||||
ELSE
|
||||
B(I, J) = ( 1. + I + J )
|
||||
ENDIF
|
||||
1 CONTINUE
|
||||
DO 2 IT = 1, ITMAX
|
||||
EPS = 0.
|
||||
C descriptor of reduction operations is created
|
||||
C and initial values of reduction variables are stored
|
||||
CDVM$ PARALLEL ( J, I) ON A( I, J) , SHADOW_START SA,
|
||||
CDVM$* REDUCTION(REPS:MAX(EPS))
|
||||
C the loops iteration order is changed: at first
|
||||
C exported (boundary) elements of A are calculated and sent
|
||||
C then internal elements of array A are calculated
|
||||
DO 21 J = 2, K-1
|
||||
DO 21 I = 2, K-1
|
||||
EPS = MAX ( EPS, ABS( B( I, J) - A( I, J)))
|
||||
A( I, J) = B( I, J)
|
||||
21 CONTINUE
|
||||
CDVM$ REDUCTION_START REPS
|
||||
C start of reduction operation to accumulate the partial results
|
||||
C calculated in copies of variable EPS on every processor
|
||||
CDVM$ PARALLEL ( J, I) ON B( I, J) , SHADOW_WAIT SA
|
||||
C the loops iteration order is changed: at first
|
||||
C internal elements of B are calculated, then imported elements
|
||||
C of array A from neighboring processors are received,
|
||||
C then boundary elements of array B are calculated
|
||||
DO 22 J = 2, K-1
|
||||
DO 22 I = 2, K-1
|
||||
B(I, J) = (A( I-1, J ) + A( I, J-1 ) + A( I+1, J ) +
|
||||
* A( I, J+1 ))/4
|
||||
22 CONTINUE
|
||||
CDVM$ REDUCTION_WAIT REPS
|
||||
C awaiting completion of reduction operation
|
||||
PRINT 200, IT, EPS
|
||||
200 FORMAT(' IT = ',I4, ' EPS = ', E14.7)
|
||||
IF ( EPS .LT. MAXEPS ) GO TO 3
|
||||
2 CONTINUE
|
||||
3 OPEN (3, FILE='JACAS.DAT', FORM='FORMATTED',STATUS='UNKNOWN')
|
||||
WRITE (3,*) B
|
||||
CLOSE (3)
|
||||
END
|
||||
|
||||
44
Sapfor/projects/dvm/fdvm/trunk/examples/jach.hpf
Normal file
44
Sapfor/projects/dvm/fdvm/trunk/examples/jach.hpf
Normal file
@@ -0,0 +1,44 @@
|
||||
PROGRAM JACH
|
||||
PARAMETER (L=8, ITMAX=20)
|
||||
REAL A(L,L), B(L,L)
|
||||
CHPF$ DISTRIBUTE ( BLOCK, BLOCK) :: A
|
||||
CHPF$ ALIGN B(I,J) WITH A(I,J)
|
||||
C arrays A and B with block distribution
|
||||
|
||||
PRINT *, '********** TEST_JACH **********'
|
||||
C nest of two INDEPENDENT loops, iteration (i,j) will be executed on
|
||||
C processor, which is owner of element A(i,j)
|
||||
CHPF$ INDEPENDENT
|
||||
DO 1 J = 1, L
|
||||
CHPF$ INDEPENDENT
|
||||
DO 1 I = 1, L
|
||||
A(I, J) = 0.
|
||||
IF(I.EQ.1 .OR. J.EQ.1 .OR. I.EQ.L .OR. J.EQ.L) THEN
|
||||
B(I, J) = 0.
|
||||
ELSE
|
||||
B(I, J) = ( 1. + I + J )
|
||||
ENDIF
|
||||
1 CONTINUE
|
||||
DO 2 IT = 1, ITMAX
|
||||
CHPF$ INDEPENDENT
|
||||
DO 21 J = 2, L-1
|
||||
CHPF$ INDEPENDENT
|
||||
DO 21 I = 2, L-1
|
||||
A(I, J) = B(I, J)
|
||||
21 CONTINUE
|
||||
|
||||
CHPF$ INDEPENDENT
|
||||
DO 22 J = 2, L-1
|
||||
CHPF$ INDEPENDENT
|
||||
DO 22 I = 2, L-1
|
||||
B(I, J) = (A( I-1, J ) + A( I, J-1 ) + A( I+1, J)+
|
||||
* A( I, J+1 )) / 4
|
||||
22 CONTINUE
|
||||
PRINT 300, IT
|
||||
300 FORMAT(' IT = ',I4)
|
||||
2 CONTINUE
|
||||
3 OPEN (3, FILE='JACH.DAT', FORM='FORMATTED', STATUS='UNKNOWN')
|
||||
WRITE (3,*) B
|
||||
CLOSE (3)
|
||||
END
|
||||
|
||||
46
Sapfor/projects/dvm/fdvm/trunk/examples/redbf.fdv
Normal file
46
Sapfor/projects/dvm/fdvm/trunk/examples/redbf.fdv
Normal file
@@ -0,0 +1,46 @@
|
||||
PROGRAM REDBF
|
||||
PARAMETER (N=10)
|
||||
REAL A(N,N), EPS, MAXEXP, W
|
||||
INTEGER ITMAX
|
||||
CDVM$ DISTRIBUTE A(BLOCK, BLOCK)
|
||||
PRINT *, '********** TEST_REDBLACK **********'
|
||||
ITMAX = 20
|
||||
MAXEXP = 0.5E - 5
|
||||
W = 0.5
|
||||
CDVM$ PARALLEL (J,I) ON A(I, J)
|
||||
DO 1 J = 1,N
|
||||
DO 1 I = 1,N
|
||||
IF (I.EQ.J) THEN
|
||||
A(I,J) = N+2
|
||||
ELSE
|
||||
A(I,J) = -1.
|
||||
ENDIF
|
||||
1 CONTINUE
|
||||
DO 2 IT = 1, ITMAX
|
||||
EPS = 0.
|
||||
C loop for red and black variables
|
||||
DO 3 IRB = 0,1
|
||||
CDVM$ PARALLEL (J,I) ON A(I, J), NEW (S), REDUCTION (MAX(EPS)),
|
||||
CDVM$* SHADOW_RENEW (A)
|
||||
C variable S - private variable in loop iterations
|
||||
C variable EPS is used for calculation of maximum value
|
||||
|
||||
C Exception : iteration space is not rectangular
|
||||
|
||||
DO 21 J = 2,N-1
|
||||
DO 21 I = 2 + MOD(J+IRB,2), N-1, 2
|
||||
S = A(I,J)
|
||||
A(I,J) = (W/4) * (A(I-1,J) + A(I+1,J) + A(I,J-1) +
|
||||
* A(I,J+1)) + (1-W) * A(I,J)
|
||||
EPS = MAX (EPS, ABS(S - A(I,J)))
|
||||
21 CONTINUE
|
||||
3 CONTINUE
|
||||
PRINT 200, IT, EPS
|
||||
200 FORMAT(' IT = ',I4, ' EPS = ', E14.7)
|
||||
IF (EPS.LT.MAXEXP) GO TO 4
|
||||
2 CONTINUE
|
||||
4 OPEN (3, FILE='REDBF.DAT', FORM='FORMATTED',STATUS='UNKNOWN')
|
||||
WRITE (3,*) A
|
||||
CLOSE (3)
|
||||
END
|
||||
|
||||
53
Sapfor/projects/dvm/fdvm/trunk/examples/redbh.hpf
Normal file
53
Sapfor/projects/dvm/fdvm/trunk/examples/redbh.hpf
Normal file
@@ -0,0 +1,53 @@
|
||||
PROGRAM REDBH
|
||||
PARAMETER (N1 = 20,N2 = 10)
|
||||
REAL A(N1,N2),W
|
||||
INTEGER ITMAX
|
||||
!HPF$ DISTRIBUTE (BLOCK,BLOCK) :: A
|
||||
ITMAX = 20
|
||||
W = 0.5
|
||||
!HPF$ INDEPENDENT
|
||||
DO 1 J = 1,N2
|
||||
!HPF$ INDEPENDENT
|
||||
DO 1 I = 1,N1
|
||||
IF (I.EQ.J) THEN
|
||||
A(I,J) = N1+2
|
||||
ELSE
|
||||
A(I,J) = (-(1.))
|
||||
ENDIF
|
||||
1 CONTINUE
|
||||
DO 2 IT = 1,ITMAX
|
||||
!HPF$ INDEPENDENT
|
||||
DO 21 J = 1,N2/2-1
|
||||
!HPF$ INDEPENDENT
|
||||
DO 21 I = 1,N1/2-1
|
||||
A(2*I+1,2*J+1) = W/4*(A(2*I,2*J+1)+A(2*I+2,2*J+1)+
|
||||
+ A(2*I+1,2*J)+A(2*I+1,2*J+2))+(1-W)*A(2*I+1,2*J+1)
|
||||
21 CONTINUE
|
||||
!HPF$ INDEPENDENT
|
||||
DO 22 J = 1, N2/2-1
|
||||
!HPF$ INDEPENDENT
|
||||
DO 22 I = 1,N1/2-1
|
||||
A(2*I,2*J) = W/4*(A(2*I-1,2*J)+A(2*I+1,2*J)+A(2*I,2*J-1)+
|
||||
+ A(2*I,2*J+1))+(1-W)*A(2*I,2*J)
|
||||
22 CONTINUE
|
||||
!HPF$ INDEPENDENT
|
||||
DO 23 J = 1,N2/2-1
|
||||
!HPF$ INDEPENDENT
|
||||
DO 23 I = 1,N1/2-1
|
||||
A(2*I,2*J+1) = W/4*(A(2*I-1,2*J+1)+A(2*I+1,2*J+1)+
|
||||
+ A(2*I,2*J)+A(2*I,2*J+2))+(1-W)*A(2*I,2*J+1)
|
||||
23 CONTINUE
|
||||
!HPF$ INDEPENDENT
|
||||
DO 24 J = 1,N2/2-1
|
||||
!HPF$ INDEPENDENT
|
||||
DO 24 I = 1,N1/2-1
|
||||
A(2*I+1,2*J) = W/4*(A(2*I,2*J)+A(2*I+2,2*J)+A(2*I+1,2*J-1)+
|
||||
+ A(2*I+1,2*J+1))+(1-W)*A(2*I+1,2*J)
|
||||
24 CONTINUE
|
||||
PRINT *,'IT= ',IT
|
||||
2 CONTINUE
|
||||
OPEN (3, FILE='REDBH.DAT', FORM='FORMATTED',STATUS='UNKNOWN')
|
||||
WRITE (3,*) A
|
||||
CLOSE (3)
|
||||
END
|
||||
|
||||
38
Sapfor/projects/dvm/fdvm/trunk/examples/sor.fdv
Normal file
38
Sapfor/projects/dvm/fdvm/trunk/examples/sor.fdv
Normal file
@@ -0,0 +1,38 @@
|
||||
PROGRAM SOR
|
||||
PARAMETER ( N = 10 )
|
||||
REAL A( N, N ), EPS, MAXEPS, W
|
||||
INTEGER ITMAX
|
||||
*DVM$ DISTRIBUTE A ( BLOCK, BLOCK )
|
||||
PRINT *, '********** TEST_SOR **********'
|
||||
ITMAX=20
|
||||
MAXEPS = 0.5E - 5
|
||||
W = 0.5
|
||||
*DVM$ PARALLEL ( J, I ) ON A( I, J )
|
||||
DO 1 J = 1, N
|
||||
DO 1 I = 1, N
|
||||
IF ( I .EQ.J) THEN
|
||||
A( I, J ) = N + 2
|
||||
ELSE
|
||||
A( I, J ) = -1.0
|
||||
ENDIF
|
||||
1 CONTINUE
|
||||
DO 2 IT = 1, ITMAX
|
||||
EPS = 0.
|
||||
*DVM$ PARALLEL ( J, I) ON A( I, J), NEW (S),
|
||||
*DVM$* REDUCTION ( MAX( EPS )), ACROSS (A(1:1,1:1))
|
||||
|
||||
DO 21 J = 2, N-1
|
||||
DO 21 I = 2, N-1
|
||||
S = A( I, J )
|
||||
A( I, J ) = (W / 4) * (A( I-1, J ) + A( I+1, J ) + A( I, J-1 ) +
|
||||
* A( I, J+1 )) + ( 1-W ) * A( I, J)
|
||||
EPS = MAX ( EPS, ABS( S - A( I, J )))
|
||||
21 CONTINUE
|
||||
PRINT 200, IT, EPS
|
||||
200 FORMAT(' IT = ',I4, ' EPS = ', E14.7)
|
||||
IF (EPS .LT. MAXEPS ) GO TO 4
|
||||
2 CONTINUE
|
||||
4 OPEN (3, FILE='SOR.DAT', FORM='FORMATTED',STATUS='UNKNOWN')
|
||||
WRITE (3,*) A
|
||||
CLOSE (3)
|
||||
END
|
||||
130
Sapfor/projects/dvm/fdvm/trunk/examples/task2j.fdv
Normal file
130
Sapfor/projects/dvm/fdvm/trunk/examples/task2j.fdv
Normal file
@@ -0,0 +1,130 @@
|
||||
PROGRAM TASK2J
|
||||
PARAMETER (L=8, ITMAX=20)
|
||||
REAL A(L,L), EPS,EPS1, MAXEPS, B(L,L),A1(L,L),B1(L,L)
|
||||
INTEGER LP(2),HP(2)
|
||||
CDVM$ PROCESSORS P(NUMBER_OF_PROCESSORS())
|
||||
CDVM$ TASK MB( 2 )
|
||||
CDVM$ ALIGN B1( I, J ) WITH A1( I, J )
|
||||
CDVM$ ALIGN B ( I, J ) WITH A ( I, J )
|
||||
CDVM$ DISTRIBUTE :: A, A1
|
||||
PRINT *, '********** TEST_TASK2J ***********'
|
||||
CALL DPT(LP,HP,2)
|
||||
CDVM$ MAP MB( 1 ) ONTO P( LP( 1) : HP(1))
|
||||
CDVM$ REDISTRIBUTE A ( *, BLOCK ) ONTO MB( 1 )
|
||||
CDVM$ MAP MB( 2 ) ONTO P( LP(2) : HP(2) )
|
||||
CDVM$ REDISTRIBUTE A1( *, BLOCK ) ONTO MB( 2 )
|
||||
MAXEPS = 0.5E - 7
|
||||
CDVM$ TASK_REGION MB
|
||||
CDVM$ ON MB( 1 )
|
||||
CDVM$ PARALLEL (J,I) ON A(I, J)
|
||||
C nest of two parallel loops, iteration (i,j) will be executed on
|
||||
C processor, which is owner of element A(i,j)
|
||||
DO 1 J = 1, L
|
||||
DO 1 I = 1, L
|
||||
A(I, J) = 0.
|
||||
IF(I.EQ.1 .OR. J.EQ.1 .OR. I.EQ.L .OR. J.EQ.L) THEN
|
||||
B(I, J) = 0.
|
||||
ELSE
|
||||
B(I, J) = ( 1. + I + J )
|
||||
ENDIF
|
||||
1 CONTINUE
|
||||
DO 2 IT = 1, ITMAX
|
||||
EPS = 0.
|
||||
CDVM$ PARALLEL (J, I) ON A(I, J), REDUCTION ( MAX( EPS ))
|
||||
C variable EPS is used for calculation of maximum value
|
||||
DO 21 J = 2, L-1
|
||||
DO 21 I = 2, L-1
|
||||
EPS = MAX ( EPS, ABS( B( I, J) - A( I, J)))
|
||||
A(I, J) = B(I, J)
|
||||
21 CONTINUE
|
||||
CDVM$ PARALLEL (J, I) ON B(I, J), SHADOW_RENEW (A)
|
||||
C Copying shadow elements of array A from
|
||||
C neighbouring processors before loop execution
|
||||
DO 22 J = 2, L-1
|
||||
DO 22 I = 2, L-1
|
||||
B(I, J) = (A( I-1, J ) + A( I, J-1 ) + A( I+1, J)+
|
||||
* A( I, J+1 )) / 4
|
||||
22 CONTINUE
|
||||
IF ( EPS . LT . MAXEPS ) GO TO 3
|
||||
2 CONTINUE
|
||||
3 OPEN (1, FILE='JACOBI1.DAT',FORM='FORMATTED',STATUS='UNKNOWN')
|
||||
WRITE (1,200) IT, EPS
|
||||
200 FORMAT(' IT = ',I4, ' EPS = ', E14.7)
|
||||
CLOSE (1)
|
||||
CDVM$ END ON
|
||||
CDVM$ ON MB( 2 )
|
||||
CDVM$ PARALLEL (J,I) ON A1(I, J)
|
||||
C nest of two parallel loops, iteration (i,j) will be executed on
|
||||
C processor, which is owner of element A1(i,j)
|
||||
DO 19 J = 1, L
|
||||
DO 19 I = 1, L
|
||||
A1(I, J) = 0.
|
||||
IF(I.EQ.1 .OR. J.EQ.1 .OR. I.EQ.L .OR. J.EQ.L) THEN
|
||||
B1(I, J) = 0.
|
||||
ELSE
|
||||
B1(I, J) = ( 1. + I + J )
|
||||
ENDIF
|
||||
19 CONTINUE
|
||||
DO 29 IT = 1, ITMAX
|
||||
EPS1 = 0.
|
||||
CDVM$ PARALLEL (J, I) ON A1(I, J), REDUCTION ( MAX( EPS1 ))
|
||||
C variable EPS1 is used for calculation of maximum value
|
||||
DO 219 J = 2, L-1
|
||||
DO 219 I = 2, L-1
|
||||
EPS1 = MAX ( EPS1, ABS( B1( I, J) - A1( I, J)))
|
||||
A1(I, J) = B1(I, J)
|
||||
219 CONTINUE
|
||||
CDVM$ PARALLEL (J, I) ON B1(I, J), SHADOW_RENEW (A1)
|
||||
C Copying shadow elements of array A1 from
|
||||
C neighbouring processors before loop execution
|
||||
DO 229 J = 2, L-1
|
||||
DO 229 I = 2, L-1
|
||||
B1(I, J) = (A1( I-1, J ) + A1( I, J-1 ) + A1(I+1, J)+
|
||||
* A1( I, J+1 )) / 4
|
||||
229 CONTINUE
|
||||
IF ( EPS1 . LT . MAXEPS ) GO TO 39
|
||||
29 CONTINUE
|
||||
39 OPEN (2, FILE='JACOBI2.DAT',FORM='FORMATTED',STATUS='UNKNOWN')
|
||||
WRITE (2,200) IT, EPS1
|
||||
CLOSE (2)
|
||||
CDVM$ END ON
|
||||
CDVM$ END TASK_REGION
|
||||
PRINT *, ' B'
|
||||
PRINT *, B
|
||||
PRINT *, ' '
|
||||
PRINT *, ' B1'
|
||||
PRINT *, B1
|
||||
END
|
||||
|
||||
SUBROUTINE DPT(LP,HP,NT)
|
||||
C distributing processors for NT tasks (NT = 2)
|
||||
INTEGER LP(2), HP(2)
|
||||
NUMBER_OF_PROCESSORS() = 1
|
||||
CDVM$ DEBUG 1 (D = 0)
|
||||
NP = NUMBER_OF_PROCESSORS()
|
||||
NTP = NP/NT
|
||||
IF(NP.EQ.1) THEN
|
||||
LP(1) = 1
|
||||
HP(1) = 1
|
||||
LP(2) = 1
|
||||
HP(2) = 1
|
||||
ELSE
|
||||
LP(1) = 1
|
||||
HP(1) = NTP
|
||||
LP(2) = NTP+1
|
||||
HP(2) = NP
|
||||
END IF
|
||||
CDVM$ ENDDEBUG 1
|
||||
END
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
126
Sapfor/projects/dvm/fdvm/trunk/examples/tasks.fdv
Normal file
126
Sapfor/projects/dvm/fdvm/trunk/examples/tasks.fdv
Normal file
@@ -0,0 +1,126 @@
|
||||
PROGRAM TASKS
|
||||
C rectangular grid is distributed on two blocks
|
||||
C
|
||||
C
|
||||
PARAMETER (K=8, N1 = 4, ITMAX=20, N2 = K - N1 )
|
||||
CDVM$ PROCESSORS P(NUMBER_OF_PROCESSORS( ))
|
||||
REAL A1(N1+1,K), A2(N2+1,K), B1(N1+1,K), B2(N2+1,K)
|
||||
INTEGER LP(2),HP(2)
|
||||
CDVM$ TASK MB( 2 )
|
||||
CDVM$ ALIGN B1( I, J ) WITH A1( I, J )
|
||||
CDVM$ ALIGN B2( I, J ) WITH A2( I, J )
|
||||
CDVM$ DISTRIBUTE :: A1, A2
|
||||
CDVM$ REMOTE_GROUP BOUND
|
||||
PRINT *, '********** TEST_TASKS **********'
|
||||
CALL DPT(LP,HP,2)
|
||||
CDVM$ MAP MB( 1 ) ONTO P( LP(1) : HP(1))
|
||||
CDVM$ REDISTRIBUTE A1( *, BLOCK ) ONTO MB( 1 )
|
||||
CDVM$ MAP MB( 2 ) ONTO P( LP(2) : HP(2))
|
||||
CDVM$ REDISTRIBUTE A2( *, BLOCK ) ONTO MB( 2 )
|
||||
C Initialization
|
||||
CDVM$ PARALLEL ( J, I ) ON A1(I, J)
|
||||
DO 10 J = 1, K
|
||||
DO 10 I = 1, N1
|
||||
IF(I.EQ.1 .OR. J.EQ.1 .OR. J.EQ.K) THEN
|
||||
A1(I, J) = 0.
|
||||
B1(I, J) = 0.
|
||||
ELSE
|
||||
B1(I, J) = 1. + I + J
|
||||
A1(I, J) = B1(I, J)
|
||||
ENDIF
|
||||
10 CONTINUE
|
||||
CDVM$ PARALLEL ( J, I ) ON A2(I, J)
|
||||
DO 20 J = 1, K
|
||||
DO 20 I = 2, N2+1
|
||||
IF(I.EQ.N2+1 .OR. J.EQ.1 .OR. J.EQ.K) THEN
|
||||
A2(I, J) = 0.
|
||||
B2(I, J) = 0.
|
||||
ELSE
|
||||
B2(I, J) = 1. + (I+N1-1) + J
|
||||
A2(I, J) = B2(I, J)
|
||||
ENDIF
|
||||
20 CONTINUE
|
||||
DO 2 IT = 1, ITMAX
|
||||
CDVM$ PREFETCH BOUND
|
||||
C exchange bounds
|
||||
CDVM$ PARALLEL ( J ) ON A1(N1+1, J),
|
||||
CDVM$* REMOTE_ACCESS (BOUND : B2( 2, J ) )
|
||||
DO 30 J = 1, K
|
||||
30 A1(N1+1, J) = B2(2, J)
|
||||
CDVM$ PARALLEL ( J ) ON A2( 1, J),
|
||||
CDVM$* REMOTE_ACCESS (BOUND : B1( N1, J ) )
|
||||
DO 40 J = 1, K
|
||||
40 A2(1, J) = B1(N1, J)
|
||||
CDVM$ TASK_REGION MB
|
||||
CDVM$ ON MB( 1 )
|
||||
CDVM$ PARALLEL ( J, I ) ON B1(I, J),
|
||||
CDVM$* SHADOW_RENEW ( A1 )
|
||||
DO 50 J = 2, K-1
|
||||
DO 50 I = 2, N1
|
||||
50 B1(I, J)=(A1(I-1, J) + A1(I,J-1) + A1(I+1,J) + A1(I,J+1))/4
|
||||
CDVM$ PARALLEL ( J, I ) ON A1(I, J)
|
||||
DO 60 J = 2, K-1
|
||||
DO 60 I = 2, N1
|
||||
60 A1(I, J) = B1( I, J )
|
||||
CDVM$ END ON
|
||||
CDVM$ ON MB( 2 )
|
||||
CDVM$ PARALLEL ( J, I ) ON B2(I, J),
|
||||
CDVM$* SHADOW_RENEW ( A2 )
|
||||
DO 70 J = 2, K-1
|
||||
DO 70 I = 2, N2
|
||||
70 B2(I,J) = (A2(I-1,J) + A2(I,J-1) + A2(I+1,J) + A2(I,J+1))/4
|
||||
CDVM$ PARALLEL ( J, I ) ON A2(I, J)
|
||||
DO 80 J = 2, K-1
|
||||
DO 80 I = 2, N2
|
||||
80 A2(I, J) = B2( I, J )
|
||||
CDVM$ END ON
|
||||
CDVM$ END TASK_REGION
|
||||
2 CONTINUE
|
||||
PRINT *, 'A1'
|
||||
PRINT *, A1
|
||||
PRINT *, ' '
|
||||
PRINT *, 'A2'
|
||||
PRINT *, A2
|
||||
END
|
||||
|
||||
SUBROUTINE DPT(LP,HP,NT)
|
||||
C distributing processors for NT tasks (NT = 2)
|
||||
INTEGER LP(2), HP(2)
|
||||
NUMBER_OF_PROCESSORS() = 1
|
||||
CDVM$ DEBUG 1 (D = 0)
|
||||
NP = NUMBER_OF_PROCESSORS()
|
||||
NTP = NP/NT
|
||||
IF(NP.EQ.1) THEN
|
||||
LP(1) = 1
|
||||
HP(1) = 1
|
||||
LP(2) = 1
|
||||
HP(2) = 1
|
||||
ELSE
|
||||
LP(1) = 1
|
||||
HP(1) = NTP
|
||||
LP(2) = NTP+1
|
||||
HP(2) = NP
|
||||
END IF
|
||||
CDVM$ ENDDEBUG 1
|
||||
END
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
169
Sapfor/projects/dvm/fdvm/trunk/examples/taskst.fdv
Normal file
169
Sapfor/projects/dvm/fdvm/trunk/examples/taskst.fdv
Normal file
@@ -0,0 +1,169 @@
|
||||
PROGRAM TASKST
|
||||
C rectangular grid is distributed on two blocks
|
||||
C
|
||||
C
|
||||
PARAMETER (K=8, N1 = 4, ITMAX=20, N2 = K - N1 )
|
||||
CDVM$ PROCESSORS P(NUMBER_OF_PROCESSORS( ))
|
||||
REAL A1(N1+1,K), A2(N2+1,K), B1(N1+1,K), B2(N2+1,K)
|
||||
REAL A(K,K), B(K,K)
|
||||
INTEGER LP(2),HP(2)
|
||||
CDVM$ TASK MB( 2 )
|
||||
CDVM$ DISTRIBUTE A(*,BLOCK) ONTO P
|
||||
CDVM$ ALIGN B( I, J ) WITH A( I, J )
|
||||
CDVM$ ALIGN B1( I, J ) WITH A1( I, J )
|
||||
CDVM$ ALIGN B2( I, J ) WITH A2( I, J )
|
||||
CDVM$ DISTRIBUTE :: A1, A2
|
||||
CDVM$ REMOTE_GROUP BOUND
|
||||
PRINT *, '********** TEST_TASKS_T **********'
|
||||
CALL DPT(LP,HP,2)
|
||||
CDVM$ MAP MB( 1 ) ONTO P( LP(1) : HP(1) )
|
||||
CDVM$ REDISTRIBUTE A1( *, BLOCK ) ONTO MB( 1 )
|
||||
CDVM$ MAP MB( 2 ) ONTO P( LP(2) : HP(2) )
|
||||
CDVM$ REDISTRIBUTE A2( *, BLOCK ) ONTO MB( 2 )
|
||||
C Initialization
|
||||
CDVM$ PARALLEL ( J, I ) ON A1(I, J)
|
||||
DO 10 J = 1, K
|
||||
DO 10 I = 1, N1
|
||||
IF(I.EQ.1 .OR. J.EQ.1 .OR. J.EQ.K) THEN
|
||||
A1(I, J) = 0.
|
||||
B1(I, J) = 0.
|
||||
ELSE
|
||||
B1(I, J) = 1. + I + J
|
||||
A1(I, J) = B1(I, J)
|
||||
ENDIF
|
||||
10 CONTINUE
|
||||
CDVM$ PARALLEL ( J, I ) ON A2(I, J)
|
||||
DO 20 J = 1, K
|
||||
DO 20 I = 2, N2+1
|
||||
IF(I.EQ.N2+1 .OR. J.EQ.1 .OR. J.EQ.K) THEN
|
||||
A2(I, J) = 0.
|
||||
B2(I, J) = 0.
|
||||
ELSE
|
||||
B2(I, J) = 1. + (I+N1-1) + J
|
||||
A2(I, J) = B2(I, J)
|
||||
ENDIF
|
||||
20 CONTINUE
|
||||
|
||||
DO 2 IT = 1, ITMAX
|
||||
CDVM$ PREFETCH BOUND
|
||||
C exchange bounds
|
||||
CDVM$ PARALLEL ( J ) ON A1(N1+1, J),
|
||||
CDVM$* REMOTE_ACCESS (BOUND : B2( 2, J ) )
|
||||
DO 30 J = 1, K
|
||||
30 A1(N1+1, J) = B2(2, J)
|
||||
CDVM$ PARALLEL ( J ) ON A2( 1, J),
|
||||
CDVM$* REMOTE_ACCESS (BOUND : B1( N1, J ) )
|
||||
DO 40 J = 1, K
|
||||
40 A2(1, J) = B1(N1, J)
|
||||
CDVM$ TASK_REGION MB
|
||||
CDVM$ ON MB( 1 )
|
||||
CDVM$ PARALLEL ( J, I ) ON B1(I, J),
|
||||
CDVM$* SHADOW_RENEW ( A1 )
|
||||
DO 50 J = 2, K-1
|
||||
DO 50 I = 2, N1
|
||||
50 B1(I, J)=(A1(I-1, J) + A1(I,J-1) + A1(I+1,J) + A1(I,J+1))/4
|
||||
CDVM$ PARALLEL ( J, I ) ON A1(I, J)
|
||||
DO 60 J = 2, K-1
|
||||
DO 60 I = 2, N1
|
||||
60 A1(I, J) = B1( I, J )
|
||||
CDVM$ END ON
|
||||
CDVM$ ON MB( 2 )
|
||||
CDVM$ PARALLEL ( J, I ) ON B2(I, J),
|
||||
CDVM$* SHADOW_RENEW ( A2 )
|
||||
DO 70 J = 2, K-1
|
||||
DO 70 I = 2, N2
|
||||
70 B2(I,J) = (A2(I-1,J) + A2(I,J-1) + A2(I+1,J) + A2(I,J+1))/4
|
||||
CDVM$ PARALLEL ( J, I ) ON A2(I, J)
|
||||
DO 80 J = 2, K-1
|
||||
DO 80 I = 2, N2
|
||||
80 A2(I, J) = B2( I, J )
|
||||
CDVM$ END ON
|
||||
CDVM$ END TASK_REGION
|
||||
2 CONTINUE
|
||||
|
||||
C 1-task JACOBI
|
||||
CDVM$ PARALLEL (J,I) ON A(I, J)
|
||||
C nest of two parallel loops, iteration (i,j) will be executed on
|
||||
C processor, which is owner of element A(i,j)
|
||||
DO 1 J = 1, K
|
||||
DO 1 I = 1, K
|
||||
A(I, J) = 0.
|
||||
IF(I.EQ.1 .OR. J.EQ.1 .OR. I.EQ.K .OR. J.EQ.K) THEN
|
||||
B(I, J) = 0.
|
||||
ELSE
|
||||
B(I, J) = ( 1. + I + J )
|
||||
ENDIF
|
||||
1 CONTINUE
|
||||
DO 3 IT = 1, ITMAX
|
||||
CDVM$ PARALLEL (J, I) ON A(I, J)
|
||||
C variable EPS is used for calculation of maximum value
|
||||
DO 21 J = 2, K-1
|
||||
DO 21 I = 2, K-1
|
||||
A(I, J) = B(I, J)
|
||||
21 CONTINUE
|
||||
CDVM$ PARALLEL (J, I) ON B(I, J), SHADOW_RENEW (A)
|
||||
C Copying shadow elements of array A from
|
||||
C neighbouring processors before loop execution
|
||||
DO 22 J = 2, K-1
|
||||
DO 22 I = 2, K-1
|
||||
B(I, J) = (A( I-1, J ) + A( I, J-1 ) + A( I+1, J)+
|
||||
* A( I, J+1 )) / 4
|
||||
22 CONTINUE
|
||||
|
||||
3 CONTINUE
|
||||
C compare 2-task JACOBI with 1-task JACOBI
|
||||
CDVM$ PARALLEL (I,J) ON B1(I,J),REMOTE_ACCESS (B(I,J))
|
||||
DO 11 I = 2,N1
|
||||
DO 11 J = 2, K-1
|
||||
IF(B1(I,J).NE.B(I,J)) THEN
|
||||
PRINT *, 'error B1(',I,',',J,')'
|
||||
STOP
|
||||
ENDIF
|
||||
11 CONTINUE
|
||||
CDVM$ PARALLEL (I,J) ON B2(I,J),REMOTE_ACCESS (B(I+(N1-1),J))
|
||||
DO 12 I = 2,N2
|
||||
DO 12 J = 2, K-1
|
||||
IF(B2(I,J).NE.B(I+(N1-1),J)) THEN
|
||||
PRINT *, 'error B2(',I,',',J,')','B(',I+N1-1,',',J,')'
|
||||
STOP
|
||||
ENDIF
|
||||
12 CONTINUE
|
||||
PRINT *, '--- DONE ---'
|
||||
END
|
||||
|
||||
SUBROUTINE DPT(LP,HP,NT)
|
||||
C distributing processors for NT tasks (NT = 2)
|
||||
INTEGER LP(2), HP(2)
|
||||
NUMBER_OF_PROCESSORS() = 1
|
||||
CDVM$ DEBUG 1 (D = 0)
|
||||
NP = NUMBER_OF_PROCESSORS()
|
||||
NTP = NP/NT
|
||||
IF(NP.EQ.1) THEN
|
||||
LP(1) = 1
|
||||
HP(1) = 1
|
||||
LP(2) = 1
|
||||
HP(2) = 1
|
||||
ELSE
|
||||
LP(1) = 1
|
||||
HP(1) = NTP
|
||||
LP(2) = NTP+1
|
||||
HP(2) = NP
|
||||
END IF
|
||||
CDVM$ ENDDEBUG 1
|
||||
END
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user