Fortran Processor C Processor PARAFRASE2 Parallel Fortran Program

  • Slides: 44
Download presentation

コンパイラの役割 Fortran Processor C Processor PARAFRASE-2 Parallel Fortran Program Database Parallel C Scheduler  逐次プログラムを並列プログラムにリストラクチャリング

コンパイラの役割 Fortran Processor C Processor PARAFRASE-2 Parallel Fortran Program Database Parallel C Scheduler  逐次プログラムを並列プログラムにリストラクチャリング

ループの並列実行 Do I=1, N Statement(I) Enddo Statement(1) Statement(2) Statement(N) Doall I=1, N Statement(I) Enddoall

ループの並列実行 Do I=1, N Statement(I) Enddo Statement(1) Statement(2) Statement(N) Doall I=1, N Statement(I) Enddoall Statement(1) Statement(2) Statement(N)

I 5 4 3 loop skewing 2 並列実効可 1 0 1 2 3 4

I 5 4 3 loop skewing 2 並列実効可 1 0 1 2 3 4 5 J 5 I 4 3 2 1 0 1 2 3 4 5 6 7 8 J

ループ・スキューイング適用後 Do I=1, M Do J=I, N+I A(I, J-I+1) = (A(I, J-I+1)+A(I+1, J-I+1)+A(I, J-I+2))/3

ループ・スキューイング適用後 Do I=1, M Do J=I, N+I A(I, J-I+1) = (A(I, J-I+1)+A(I+1, J-I+1)+A(I, J-I+2))/3 Enddo I 6 5 4 3 2 1 0 1 2 3 4 5 6 7 J

λ= 2 の場合 DO I = 3 , N A(I)=B(I-2)-1 B(I)=A(I-3)*K ENDDO (a) 逐次ループ

λ= 2 の場合 DO I = 3 , N A(I)=B(I-2)-1 B(I)=A(I-3)*K ENDDO (a) 逐次ループ DO J = 3 , N , 2 DOALL I = J , J + 1 A(I)=B(I-2)-1 B(I)=A(I-3)*K ENDDOALL ENDDO (b) 変換後のループ I=3: A(3)=B(1)– 1 B(3)=A(0)*K I=4: A(4)=B(2)– 1 B(4)=A(1)*K I=5: A(5)=B(3)– 1 B(5)=A(2)*K I=6: A(6)=B(4)– 1 B(6)=A(3)*K I=7: A(7)=B(5)– 1 B(7)=A(4)*K (c) b のアンロール版

依存巡回の距離が違う場合 DO I = 1 , N X(I)=Y(I)+Z(I) Y(I+3)=X(I-4)*W(I) φ1 = 4, φ2 =

依存巡回の距離が違う場合 DO I = 1 , N X(I)=Y(I)+Z(I) Y(I+3)=X(I-4)*W(I) φ1 = 4, φ2 = 3 ENDDO Reduction Factor λ= min (3, 4) = 3 (a) DO J = 1 , N , 3 DOALL I = J , J + 2 X(I)=Y(I)+Z(I) Y(I+3)=X(I-4)*W(I) ENDDOALL ENDDO (b) 縮小

単純巡回縮小 DO I 1= 3 , N 1, 2 DO J 1= 5 ,

単純巡回縮小 DO I 1= 3 , N 1, 2 DO J 1= 5 , N 2, 4 DOALL I = I 1, I 1 + 1 DOALL J = J 1, J 1 + 3 A ( I , J ) = B ( I – 3, J - 5 ) B ( I , J ) = A ( I – 2, J – 4 ) ENDDOALL ENDDO (b) 並列度=2*4

J 12 11 10 I のループに対する依存距離 9 A: 2 8 B: 3 7 A

J 12 11 10 I のループに対する依存距離 9 A: 2 8 B: 3 7 A 6 5 2 B 4 3 2 1 0 1 2 3 4 5 6 7 I

J 14 13 12 11 10 9 8 7 A 6 5 B 4

J 14 13 12 11 10 9 8 7 A 6 5 B 4 3 0 1 2 3 4 5 6 7 8 I

TD 巡回縮小 DO K = 1 , NM , λ T 1 = (

TD 巡回縮小 DO K = 1 , NM , λ T 1 = ( K DIV M ) + 1 T 2 = ( ( K + λ) DIV M ) + 1 T 3 = ( K MOD M ) + 5 T 4 = ( ( K + λ) MOD M ) – 1 + 5 DOALL I = T 1, T 2 IF I <> T 1 THEN L 1 = 5 ELSE L 1 = T 3 IF I <> T 2 THEN L 2 = N 2 ELSE L 2 = T 4 DOALL J = L 1, L 2 A ( I , J ) = B ( I – 3, J - 5 ) B ( I , J ) = A ( I – 2, J – 4 ) ENDDOALL ENDDO (c)