VS2022 Fortran配置MKL 调用lapack 64位库

首先,可以在官网下载以下lib

0754e542b9ff4a4db5e96b937108e40e.png

下载64位的,然后就是添加文件所在的文件夹,以及添加lib,就可以直接使用lapack中的函数,但是现在Oneapi中集成了lapack库,所以可以直接调用,如下所示。

1. 首先,项目-属性-Fortran-General中Additional Include Directories

b3e9000cc00648c292cba7f3eec48a48.png

添加C:\Program Files (x86)\Intel\oneAPI\mkl\latest\include\intel64\lp64

2. 项目-属性-Fortran-Libraries中Use Intel Math Kernel Library选择

6b7faab4eef54f98aae341c92836c766.png

3. 项目-属性-Linker-General中Additional Libraries Directories中

4bc6c70a15314592b5bf2af4a4608ef6.png

 添加C:\Program Files (x86)\Intel\oneAPI\mkl\2023.0.0\lib\intel64

4. 项目-属性-Linker-Input中Additional Denpendencies中

5af6a91563b24942a5cb77317f511ef5.png

 添加mkl_lapack95_lp64.lib

5. 在电脑属性-高级-环境变量-系统Path中添加

C:\Program Files (x86)\Intel\oneAPI\mkl\2023.0.0\redist\intel64

这样就大功告成了,下面的示例代码测试是否调用成功。

    PROGRAM MatrixInverse
    use lapack95
    IMPLICIT NONE

    INTEGER, PARAMETER :: N = 3
    REAL(KIND=8) :: A(N,N), WORK(N*N)
    INTEGER :: IPIV(N), INFO,i,j

    ! 初始化矩阵A的值
    A = RESHAPE((/1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 10.0/), SHAPE(A))

    ! 输出原始矩阵A
    WRITE(*,*) '原始矩阵A:'
    DO I = 1, N
        WRITE(*, '(3F6.2)') (A(I,J), J = 1, N)
    END DO

    ! 计算矩阵逆
    CALL DGETRF(N, N, A, N, IPIV, INFO)
    IF (INFO /= 0) THEN
        WRITE(*,*) '矩阵逆计算失败!'
        STOP
    END IF

    CALL DGETRI(N, A, N, IPIV, WORK, N*N, INFO)
    IF (INFO /= 0) THEN
        WRITE(*,*) '矩阵逆计算失败!'
        STOP
    END IF

    ! 输出逆矩阵A
    WRITE(*,*) '逆矩阵A:'
    DO I = 1, N
        WRITE(*, '(3(F12.10,1x))') (A(I,J), J = 1, N)
    END DO

    END PROGRAM MatrixInverse

注意:第四步中写的lib名称只是这个代码中函数所需的,具体你代码中的函数需要哪个,看文档是在哪个lib中,不确定可以都写进去试试,如:

mkl_lapack95_lp64.lib mkl_intel_lp64.lib mkl_scalapack_lp64.lib 

具体的文件夹路径:C:\Program Files (x86)\Intel\oneAPI\mkl\2023.0.0\redist\intel64

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空花缱绻三分

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值