使用以下代码,是否正确?我有2GB Geforce 750M并使用PGI Fortran编译器。该程序适用于4000x4000
数组,即使它不应该更高的抱怨,你可以看到我已经分配了一个9000x9000
数组但是如果我使用n值> 4000它抱怨并抛出运行时错误。
program matrix_multiply
!use openacc
implicit none
integer :: i,j,k,n
real, dimension(9000,9000) :: a, b, c
real x_scalar
real x_vector(2)
n=5000
call random_number (b)
call random_number (a)
!$acc kernels
do k = 1,n
do i = 1,n
do j = 1,n
c(i,k) = c(i,k) + a(i,j) * b(j,k)
enddo
enddo
enddo
!$acc end kernels
end program matrix_multiply
答案 0 :(得分:0)
感谢Robert Crovella
我的猜测是mac上有某种显示超时(也在这里)当你增加到更大的尺寸时,矩阵乘法内核需要更长的时间。在某些时候,Mac OS中的显示驱动程序超时会重置GPU。如果是这种情况,您可以通过切换到GPU未托管显示器的系统/ GPU来解决此问题。 Linux和Windows(TDR)都有这样的超时机制。
你必须在Mac OS中启动>控制台模式,并且当控制台模式关闭Aqua(Mac中的GUI)时也禁用自动图形切换,因此应该删除限制。