1) Visualize the data distributions resulting from the following statements: !HPF PROCESSORS p (6), q (2,3) REAL A1(10), A2(10,10) a) !HPF DISTRIBUTE A1(BLOCK) ONTO p b) !HPF DISTRIBUTE A1(CYCLIC) ONTO p c) !HPF DISTRIBUTE A1(CYCLIC(2)) ONTO p d) !HPF DISTRIBUTE A2(BLOCK,*) ONTO p e) !HPF DISTRIBUTE A2(*,BLOCK) ONTO p f) !HPF DISTRIBUTE A2(BLOCK,CYCLIC) ONTO q (10 points) 2) Visualize the data alignments resulting from the following statements: REAL s, A1(5), B1(5), A2(5,5), B2(5,5) a) !HPF ALIGN A1(*) WITH s b) !HPF ALIGN s WITH A1(*) c) !HPF ALIGN A2(:,*) WITH A1(:) d) !HPF ALIGN A1(:) WITH A2(:,*) e) !HPF ALIGN A1(:) WITH A2(:,2) f) !HPF ALIGN A2(I,J) WITH B2(J,I) g) !HPF ALIGN A1(*) WITH B1(*) h) !HPF ALIGN A2(:,*) WITH B2(*,:) (15 points) 3) Consider the following nested FORALL construct: FORALL I=1,5 A2(I,I) = I FORALL J=I-1,I+1 , J\=I .AND. J>=1 .AND. J<=5 A2(I,J) = A2(I,I)*A2(J,J) END FORALL END FORALL a) Detemine the valid and active index sets b) What is the resulting matrix A2 (10 points) 4) Parallelize the following piece of code in OpenMP (pencil and paper): READ *,n w = 1/n sum = 0 DO i=1,n x = w * (i-0.5) sum = sum + 4/(1+x*x) ENDDO (15 points)