0

使用以下代码,是否正确?我有 2GB Geforce 750M 并使用 PGI Fortran 编译器。该程序适用于4000x4000数组,即使它不应该抱怨任何更高的东西,你可以看到我已经分配了一个9000x9000数组但是如果我使用一个值> 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        
4

1 回答 1

0

感谢罗伯特·克罗维拉

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

您必须在 Mac OS 中启动 >console 模式并禁用自动图形切换,因为控制台模式会关闭 Aqua(Mac 中的 GUI),因此应该消除限制。

于 2013-12-22T09:17:23.887 回答