0
使用以下代码,它是否正确?我有2GB的Geforce 750M和使用PGI Fortran编译器。该程序工作正常4000x4000
阵列,任何更高的抱怨,即使它不应该,你可以看到我已经分配9000x9000
数组,但如果我使用n值> 4000它抱怨并引发运行时错误。运行程度较高的程序时出现OpenACC错误
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
你能更具体然后“抱怨”吗?什么是错误信息? –
我想堆栈大小的问题,因为数组仍然需要在主机内存上。另外,也许除了这点之外,也可以用CuBLAS来完成矩阵乘法。 – steabert
我能够在Tesla M2050(3GB),PGI 13.10编译器,CUDA 5.0,RHEL 5.5上成功编译和运行上述代码。即使我将'n'增加到9000,它也能正常运行(大约需要60秒)。对不起,我没有GeForce 750M来试用它。 –