LAPACK windows visual studio 开发安装

2025年4月25日 更新,采用Inter MKL替代BLAS和LAPACK

安装Inter Fortran Essentials时,也会安装MKL,默认位置如下:
C:\Program Files (x86)\Intel\oneAPI\mkl
在这里插入图片描述
使用时,添加宏定义BLA_VENDOR 为Intel10_64lp(大多数情况下可用,超大数据场景时采用Intel10_64ilp),
cmake找不到库时添加宏定义CMAKE_PREFIX_PATH,指定为MKL路径即可。
并且MKL好像比OpenBLAS更加稳定。推荐用MKL

2025年4月25日 更新,采用OpenBLAS替代BLAS和LAPACK

OpenBLAS是BLAS和LAPACK的兼容版本,采用OpenBLAS可以直接替代BLAS和LAPACK。
直接去这里下载https://github.com/OpenMathLib/OpenBLAS的预编译版本。
下载完解压放到第三方库目录后,
用CMAKE编译其他第三方库如suitesparse等
在这里插入图片描述
编译时需要点击Add Entry添加BLA_VENDOR宏定义为OpenBLAS。
另外cmake自带的FindLAPACK.cmake和FindBLAS.cmake(可能是在这个位置D:\Program Files\CMake\share\cmake-3.25\Modules)默认查找的是openblas.lib。看你下载的OpenBLAS库的库名称是什么,如果不是openblas.lib,需要修改,如实际上可能是libopenblas.lib。那么修改如下:
请添加图片描述
在这里插入图片描述
把FindLAPACK.cmake和FindBLAS.cmake文件的上述行的openblas修改为libopenblas。这样cmake就会查找libopenblas.lib库了。
如果Configure还是找不到,添加CMAKE_PREFIX_PATH指定库路径。
添加CMAKE_FIND_DEBUG_MODE为ON,查看debug信息。

===========================================================

下面是正常安装LAPACK库的步骤

1.下载Inter Fortran Essentials

下载地址
https://www.intel.com/content/www/us/en/developer/tools/oneapi/hpc-toolkit-download.html?packages=fortran-essentials&fortran-essentials-os=windows&fortran-essentials-win=offline
在这里插入图片描述
下载后,按照提示安装

2.下载lapack

下载地址
https://icl.utk.edu/lapack-for-windows/lapack/index.html#lapacke
在这里插入图片描述
下载后打开CMAKE,进行编译。注意需要指定fortran 编译器。选择前面安装的Fortran编译器的位置
在这里插入图片描述
生成工程后,打开visual studio 2019进行编译安装。
运行测试可能会失败,那是由于其他原因。安装成功后可以采用程序进行验证是否成功。
在这里插入图片描述

3. 测试代码

program test_dgels
    implicit none
    integer, parameter :: m = 4, n = 2
    integer :: info, lwork
    real(8) :: a(m, n), b(m), work(100)

    ! 定义矩阵 A 和右侧向量 B
    a = reshape([1.0, 2.0, 3.0, 4.0, &
                 5.0, 6.0, 7.0, 8.0], [m, n])
    b = [1.0, 2.0, 3.0, 4.0]

    ! 查询最佳工作数组大小
    lwork = -1
    call dgels('N', m, n, 1, a, m, b, m, work, lwork, info)
    lwork = int(work(1))

    ! 调用 DGELS 求解最小二乘问题
    call dgels('N', m, n, 1, a, m, b, m, work, lwork, info)

    if (info == 0) then
        print *, "Least squares solution vector X:"
        print *, b(1:n)
    else
        print *, "Error in least squares solution. Info =", info
    end if
    read(*,*)
end program test_dgels
program test_dgesv
    implicit none
    integer, parameter :: n = 3
    integer :: info, ipiv(n)
    real(8) :: a(n, n), b(n)

    ! 定义系数矩阵 A 和右侧向量 B
    a = reshape([3.0, 1.0, 2.0, &
                 1.0, 4.0, 1.0, &
                 2.0, 1.0, 5.0], [n, n])
    b = [6.0, 7.0, 8.0]

    ! 调用 DGESV 求解
    call dgesv(n, 1, a, n, ipiv, b, n, info)

    if (info == 0) then
        print *, "Solution vector X:"
        print *, b
    else
        print *, "Error in solving the system. Info =", info
    end if
end program test_dgesv
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值