next up previous
Next: Results Up: AE 597: HW #3 Previous: Distribution of Array

Program listing

The compile command used for the SP2 is:
xlhpf comm.f -O3 -qstrict -qarch=pwr2 -qtune=pwr2 -qhot -o comm
      
      Program Commtime

      implicit none

      integer n, k
      parameter ( n = 4096 )
      parameter ( k = 500 )

      real*8, dimension(n,n) ::  A, B
      real*8 time0,time0i,time1,time1i
      integer  i,j,mclock

!hpf$ processors procs(4,4)
!hpf$ distribute(block,block) onto procs::A
!hpf$  align with A :: B

!  fill the array with random numbers between 0. and 1.
      do i = 1, n
            do j = 1, n
             call random_number(A(i,j))
            enddo
      enddo

      print *, "Matrix A initialized."

      time0 = time1 = 0.0

      time0i = real(mclock())/100.0
      do i = 1,k
        B = cshift( A,  1,  1 )
!       B = cshift( A,  3,  1 )            ! Case 4
!       B(1:n-1:1,:) = A(2:n:1,:)          ! Triplet Notation (line 1)
!       B(n,:) = A(1,:)                    ! Triplet Notation (line 2)
        B = A*B
      enddo
      time0 = time0 + real(mclock())/100.0 - time0i
      time0 = time0/(k*1.0)

      time1i = real(mclock())/100.0
      do i = 1,k
        B = A*B
      enddo
      time1 = time1 + real(mclock())/100.0 - time1i
      time1 = time1/(k*1.0)

      time0 = time0 - time1

      print *, ' N :' , n
      print *, ' k :' , k
      print *, ' Time taken per CSHIFT for 16 processors (sec) :' ,time0
      print *, ' Finished.'

      stop
      end



Anirudh Modi
3/20/1998