这是矩阵乘法的代码
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
当我执行此操作时,使用加速器指令和 PGI 编译器时的执行时间为 75 毫秒。但是,当我使用“cuda fortran”实现运行相同的矩阵乘法时,执行时间仅为 5 毫秒。所以即使我使用了加速器指令,也有很大的不同。所以我怀疑我的加速器指令是否正常工作。