【发布时间】:2019-01-14 01:20:45
【问题描述】:
我想使用 BLAS 的 SGEMV 子例程在 fortran 中执行矩阵向量乘积。 我有一个类似的代码:
program test
integer, parameter :: DP = selected_real_kind(15)
real(kind=DP), dimension (3,3) :: A
real(kind=DP), dimension (3) :: XP,YP
call sgemv(A,XP,YP)
A 是 3x3 矩阵,XP 和 YP 是向量。 在包含的模块中可以看到以下代码:
PURE SUBROUTINE SGEMV_F95(A,X,Y,ALPHA,BETA,TRANS)
! Fortran77 call:
! SGEMV(TRANS,M,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
USE F95_PRECISION, ONLY: WP => SP
REAL(WP), INTENT(IN), OPTIONAL :: ALPHA
REAL(WP), INTENT(IN), OPTIONAL :: BETA
CHARACTER(LEN=1), INTENT(IN), OPTIONAL :: TRANS
REAL(WP), INTENT(IN) :: A(:,:)
REAL(WP), INTENT(IN) :: X(:)
REAL(WP), INTENT(INOUT) :: Y(:)
END SUBROUTINE SGEMV_F95
我知道有些参数是可选的,那么我在方法调用中哪里错了?
【问题讨论】:
-
请包含您在尝试编译时收到的错误消息。
-
您显示了子程序
sgemv_f95的接口,但call sgemv。您也不使用任何模块。因此,正如之前的评论所暗示的,我们需要更多关于您的问题的详细信息。
标签: visual-studio fortran blas intel-fortran intel-mkl