运行更高级别的程序时出现OpenACC错误

时间:2013-12-13 03:56:25

标签: fortran openacc pgi-accelerator

使用以下代码,是否正确?我有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        

1 个答案:

答案 0 :(得分:0)

感谢Robert Crovella

我的猜测是mac上有某种显示超时(也在这里)当你增加到更大的尺寸时,矩阵乘法内核需要更长的时间。在某些时候,Mac OS中的显示驱动程序超时会重置GPU。如果是这种情况,您可以通过切换到GPU未托管显示器的系统/ GPU来解决此问题。 Linux和Windows(TDR)都有这样的超时机制。

你必须在Mac OS中启动>控制台模式,并且当控制台模式关闭Aqua(Mac中的GUI)时也禁用自动图形切换,因此应该删除限制。