⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 trans1.h90

📁 shpf 1.9一个并行编译器
💻 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 + -