📄 trans1.h90
字号:
PROGRAM TRANS1
! ==================================================================
! === ===
! === GENESIS Distributed Memory Benchmarks ===
! === ===
! === Matrix Transpose (Grid based) ===
! === Subset HPF version ===
! === ===
! === ===
! === Original author: James Allwright ===
! === Subset HPF version: Vladimir Getov ===
! === Department of Electronics and Computer Science ===
! === University of Southampton ===
! === Southampton SO9 5NH, U.K. ===
! === fax.:+44-703-593045 e-mail:jra@uk.ac.soton.ecs ===
! === vsg@uk.ac.soton.ecs ===
! === ===
! === Last update: March 1993; Release: 2.2 ===
! === ===
! ==================================================================
IMPLICIT NONE
INTEGER MAXD, SIDE, LOOPS, COUNT, NW1
INCLUDE 'trans1.inc'
DOUBLE PRECISION DATA(MAXD,MAXD), TEMP(MAXD,MAXD)
DOUBLE PRECISION TIME, TIME1, TIME2, RESLT, RB
PARAMETER(NW1=11)
!HPF$ PROCESSORS GRID(SIDE,SIDE)
INTEGER I, J
!HPF$ ALIGN TEMP(I,J) WITH DATA(I,J)
!HPF$ DISTRIBUTE DATA(BLOCK,BLOCK) ONTO GRID
OPEN(NW1,FILE='result')
REWIND(NW1)
CALL HEADER(NW1,MAXD)
RESLT = 0
CALL TIMER(TIME1)
DO COUNT = 1,LOOPS
TEMP = TRANSPOSE(DATA)
DATA(1:MAXD,1:MAXD) = TEMP(1:MAXD,1:MAXD)
ENDDO
CALL TIMER(TIME2)
RESLT = TIME2-TIME1
! ==================================================================
! === ===
! === Printing the results. ===
! === ===
! ==================================================================
TIME = RESLT/DBLE(LOOPS)
RB = (MAXD*(MAXD-1))/TIME/1E3
WRITE(NW1,999) MAXD,MAXD
WRITE(NW1,899) TIME,RB
999 FORMAT(/,10X,'Benchmark TRANS1 Matrix size ',I5,'x',I5,/)
899 FORMAT(10X, 'Time = ', F9.3, ' s , Performance = ',F9.3,' kW/s')
CLOSE(NW1)
STOP
END
SUBROUTINE HEADER(IO,MAXD)
! ==================================================================
! === ===
! === Subset HPF version ===
! === ===
! ==================================================================
INTEGER MAXD, IO
WRITE(IO,*)' ================================================='
WRITE(IO,*)' === ==='
WRITE(IO,*)' === GENESIS Distributed Memory Benchmarks ==='
WRITE(IO,*)' === ==='
WRITE(IO,*)' === TRANS1 ==='
WRITE(IO,*)' === ==='
WRITE(IO,*)' === Program: Matrix Transpose (Grid) ==='
WRITE(IO,*)' === Version: Subset HPF ==='
WRITE(IO,*)' === Author : James Allwright ==='
WRITE(IO,*)' === Modified by : Vladimir Getov ==='
WRITE(IO,*)' === Update: March 1993; Release: 2.2 ==='
WRITE(IO,*)' === ==='
WRITE(IO,*)' ================================================='
WRITE(IO,*)
! CALL SETDAT(IO)
CALL SETDTL(IO)
WRITE(IO,*)
WRITE(IO,*)' ********************************************'
WRITE(IO,*)' * *'
WRITE(IO,*)' * PRESENT PROBLEM SIZE INFORMATION *'
WRITE(IO,*)' * *'
WRITE(IO,*)' ********************************************'
WRITE(IO,*)
WRITE(IO,*)' Matrix size =', &
&MAXD,'x',MAXD
WRITE(IO,*)
WRITE(6,*)
WRITE(6,*)'The calculation proceeds ...Please, wait.'
WRITE(6,*)
WRITE(IO,*)
WRITE(IO,*)'CALCULATION FINISHED.'
WRITE(IO,*)
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -