。这是一个矩阵乘法加速器指令不工作
program ex
implicit none
real :: a(256,256),b(256,256),c(256,256),t1,t2
integer i,j,k,sum
sum=0
do j = 1,256
do i = 1,256
a(i,j) = 1
b(i,j) = 1
c(i,j) = 0.0
enddo
enddo
call cpu_time(t1)
!$acc region do
do i=1,256
do j=1,256
sum=0
do k=1,256
sum=sum+a(i,k)*b(k,j)
c(i,j)=sum
end do
end do
end do
!$acc end region
call cpu_time(t2)
print*,"cpu time=",t2-t1
print*,c
end program ex
代码当我执行这个执行时间是75毫秒使用加速器指示和PGI编译器时。但是当我用“cuda fortran”实现同样的矩阵乘法时,执行时间只有5毫秒。所以即使我使用加速器指令也有很大的区别。所以我怀疑我的加速器指令工作正常。
而你的问题是? – talonmies 2012-03-20 14:53:16
我是愚蠢的,还是OP使用加速器指令时表示执行时间从75毫秒减少到5毫秒? – 2012-03-20 15:17:08
@HighPerformanceMark:CUDA fortran *可能指的是PGI的Fortran设备代码编译器,而不是PGI加速器,但谁知道? – talonmies 2012-03-20 15:23:12