目前,cuda有许多库函数可以直接调用,不多都是基于C开发,对于Fortran用户,稍显麻烦一点的是需要自己定义调用这些库函数的接口。据我的了解,目前cubals,cula已经做好接口,可以直接使用。下面就以cubals为例:
! openacc_cublas.f90
program main
use cublas
integer, parameter :: N = 2**20
real, dimension(N) :: X, Y
X(:) = 1.0
Y(:) = 0.0
!$acc data copy(y) copyin(x)
!$acc host_data use_device(x,y)
call cublassaxpy(N, 2.0, x, 1, y, 1)
!$acc end host_data
!$acc end data
print *, y(1)
end program
编译: