目前,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
編譯: