。這是一個矩陣乘法加速器指令不工作
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