【发布时间】:2019-10-01 18:46:46
【问题描述】:
我尝试使用 openACC 提高 Fortran 代码的性能,但是编译器显示设备和主机之间有很多传输
我尝试使用数据区域来减少内存移动
这是代码的一部分, 完整的子程序用于使用 LU 求解方程
!EXCHANGING AND ELIMINATING COLUMNS
!$acc data copy(a(:,k:n))create(a(:,k:n))
!$acc kernels
DO J = K + 1, N
TQ = A(M, J)
A(M, J) = A(K, J)
A(K, J) = TQ
IF (DABS(TQ) .GT. 0) THEN
DO I = K + 1,N
A(I,J)=A(I,J)+A(I,K)*TQ
ENDDO
END IF
ENDDO
!$acc end kernels
!$acc end data
我希望减少计算时间,代码在没有数据区域的情况下运行但非常慢,当使用数据区域时,由于不可能的因式分解,程序停止
【问题讨论】: