CDVM COMP CDVM COMP COMP PROGRAM JACOpen MPDVM

  • Slides: 21
Download presentation

CDVM$ C$OMP CDVM$ C$OMP + C$OMP PROGRAM JAC_Open. MP_DVM PARAMETER (L=8, ITMAX=20) REAL A(L,

CDVM$ C$OMP CDVM$ C$OMP + C$OMP PROGRAM JAC_Open. MP_DVM PARAMETER (L=8, ITMAX=20) REAL A(L, L), B(L, L) DISTRIBUTE ( BLOCK, BLOCK) : : A ALIGN B(I, J) WITH A(I, J) PARALLEL SHARED(A, B) PRIVATE (I, J, ITMAX) SINGLE PRINT *, '***** TEST_JACOBI *****‘ END SINGLE DO IT = 1, ITMAX PARALLEL (J, I) ON A(I, J) DO DO J = 2, L-1 DO I = 2, L-1 A(I, J) = B(I, J) ENDDO PARALLEL (J, I) ON B(I, J), SHADOW_RENEW (A) DO DO J = 2, L-1 DO I = 2, L-1 B(I, J) = (A(I-1, J) + A(I, J-1) + A(I+1, J) + A(I, J+1)) / 4 ENDDO END PARALLEL END 3 В. Бахтин

CDVM$ PROGRAM JAC_Open. MP_DVM PARAMETER (L=8, ITMAX=20) REAL A(L, L), B(L, L) DISTRIBUTE (

CDVM$ PROGRAM JAC_Open. MP_DVM PARAMETER (L=8, ITMAX=20) REAL A(L, L), B(L, L) DISTRIBUTE ( BLOCK, BLOCK) : : A ALIGN B(I, J) WITH A(I, J) PRINT *, '***** TEST_JACOBI *****‘ DO IT = 1, ITMAX PARALLEL (J, I) ON A(I, J) PARALLEL DO SHARED (A, B), PRIVATE(I, J) DO J = 2, L-1 DO I = 2, L-1 A(I, J) = B(I, J) ENDDO PARALLEL (J, I) ON B(I, J), SHADOW_RENEW (A) C$OMP PARALLEL DO SHARED (A, B), PRIVATE(I, J) CDVM$ C$OMP DO J = 2, L-1 DO I = 2, L-1 B(I, J) = (A(I-1, J) + A(I, J-1) + A(I+1, J) + + A(I, J+1)) / 4 ENDDO C$OMP END PARALLEL END В. Бахтин 4

CDVM$ C$OMP + C$OMP PROGRAM JAC_Open. MP_DVM PARAMETER (L=8, ITMAX=20) REAL A(L, L), B(L,

CDVM$ C$OMP + C$OMP PROGRAM JAC_Open. MP_DVM PARAMETER (L=8, ITMAX=20) REAL A(L, L), B(L, L) DISTRIBUTE ( BLOCK, BLOCK) : : A ALIGN B(I, J) WITH A(I, J) PRINT *, '***** TEST_JACOBI *****' PARALLEL SHARED(A, B) PRIVATE (I, J, IT) DO IT = 1, ITMAX PARALLEL (J, I) ON A(I, J) DO DO J = 2, L-1 DO I = 2, L-1 A(I, J) = B(I, J) ENDDO PARALLEL (J, I) ON B(I, J), SHADOW_RENEW (A) DO DO J = 2, L-1 DO I = 2, L-1 B(I, J) = (A(I-1, J) + A(I, J-1) + A(I+1, J) + A(I, J+1)) / 4 ENDDO END PARALLEL END

PROGRAM SOR_DVM PARAMETER (L=8, ITMAX=20) REAL A(L, L) CDVM$ DISTRIBUTE ( BLOCK, BLOCK) :

PROGRAM SOR_DVM PARAMETER (L=8, ITMAX=20) REAL A(L, L) CDVM$ DISTRIBUTE ( BLOCK, BLOCK) : : A PRINT *, '***** TEST_SOR *****‘ DO IT = 1, ITMAX CDVM$ PARALLEL ( J, I) ON A( I, J), ACROSS (A(1: 1, 1: 1)) DO J = 2, L-1 DO I = 2, L-1 A(I, J) = (A(I-1, J) + A(I, J-1) + A(I+1, J) + A(I, J+1)) / 4 ENDDO END В. Бахтин 8

Конвейерный параллелизм ( dvm run 3 1 sor ) j i p 0 t

Конвейерный параллелизм ( dvm run 3 1 sor ) j i p 0 t 1 t 2 t 3 t 4 t 5 t 6 t 7 p 1 t 2 t 3 t 4 t 5 t 6 t 7 t 8 p 2 t 3 t 4 t 5 t 6 t 7 t 8 t 9 В. Бахтин 10

PROGRAM SOR_Open. MP PARAMETER (L=8, ITMAX=20) REAL A(L, L) PRINT *, '***** TEST_SOR *****‘

PROGRAM SOR_Open. MP PARAMETER (L=8, ITMAX=20) REAL A(L, L) PRINT *, '***** TEST_SOR *****‘ DO IT = 1, ITMAX !$OMP PARALLEL SHARED(A, B) PRIVATE(I, J, NEWJ, IAM) !$ IAM = OMP_GET_THREAD_NUM () DO NEWJ = 2, L-1 + OMP_GET_NUM_THREADS () – 1 J = NEWJ - IAM !$OMP DO SCHEDULE (STATIC) DO I = 2, L-1 !$ IF (J. LT. 2. OR. J. GT. L - 1) THEN !$ CYCLE !$ ENDIF A(I, J) = (A(I-1, J) + A(I, J-1) + A(I+1, J) + A(I, J+1)) / 4 ENDDO !$OMP END PARALLEL ENDDO END В. Бахтин 11

PROGRAM SOR_Open. MPDVM PARAMETER (L=8, ITMAX=20) REAL A(L, L) !DVM$ DISTRIBUTE ( BLOCK, BLOCK)

PROGRAM SOR_Open. MPDVM PARAMETER (L=8, ITMAX=20) REAL A(L, L) !DVM$ DISTRIBUTE ( BLOCK, BLOCK) : : A PRINT *, '***** TEST_SOR *****‘ DO IT = 1, ITMAX !$OMP PARALLEL SHARED(A, B) PRIVATE(I, J, NEWJ, IAM) !$ IAM = OMP_GET_THREAD_NUM () !DVM$ PARALLEL ( NEWJ, I) ON A( I, NEWJ-IAM), !DVM$* ACROSS (A(1: 1, 1: 1)) DO NEWJ = 2, L-1 + OMP_GET_NUM_THREADS () – 1 J = NEWJ - IAM !$OMP DO SCHEDULE (STATIC) DO I = 2, L-1 !$ IF (J. LT. 2. OR. J. GT. L - 1) THEN !$ CYCLE !$ ENDIF A(I, J) = (A(I-1, J) + A(I, J-1) + A(I+1, J) + A(I, J+1)) / 4 ENDDO !$OMP END PARALLEL В. Бахтин ENDDO END 13