program mul7 c parameter (n=2000,m=2000) parameter (n=5500,m=5500) real*8 a(n,m),b(m,n),c(n,n),d(n,n) dimension dum(2) character*1 transa,transb data transa,transb/'n','n'/ c data transa,transb/'t','n'/ c do 5 nu=2,10 c n=2**nu ops=2.*n**3 call drnlcgu(n*m,a,1) call drnlcgu(n*m,b,1) c compute C=AxB c call matgen(a,n,m) c write(6,100)((a(i,j),j=1,n),i=1,n) 100 format(8e10.3) c call matgen(b,n,m) c write(*,*)'mat=b' c write(6,100)((b(i,j),j=1,n),i=1,n) t1=eetime(dum) c write(*,*)'t1=',t1 c subroutine call AxB call DGEMM(transa,transb,n,n,n,1.0d0, / a,n,b,n,0.d0,c,n) c subroutine call BXAls batch* call DGEMM(transa,transb,n,n,n,1.0d0, / b,n,a,n,0.d0,d,n) t2=eetime(dum) c write(*,*)'t2=',t2 write(*,*)'n=',n,t2-t1,'sec',ops/(t2-t1),'Mflops' c write(*,*)'mat=c' write(6,100)((c(i,j),j=1,3),i=1,3) c 5 continue stop end c function eetime( ) dimension time(2) eetime=timef()*0.001 c eetime=etime(time) return end