Visual Studio2022 配置MKL库

本人的初心是在 Visual Studio2022 中的 C++ 模块中使用矩阵运算库,众所周知,Intel MKL 是一个非常好的矩阵运算库,而且其运算速度是非常可观的。所以我就用 VS2022 来配置 MKL。在刚开始的时候,我去网络上找了很多 VS配置MKL 的案例,但大多数都是老版本的,无论是从官网上下载 MKL 还是配置VS,都与新版本有很大的不同,所以我根据前人的案例,以及自己的一些摸索,成功配置了MKL库。详细步骤如下:

目录

1. 先下载安装 Visual Studio2022

2. 下载 Intel MKL

3. 配置 Visual Studio2022 的环境

4. 运行时出现的一些问题

1. 先下载安装 Visual Studio2022

下载地址:https://visualstudio.microsoft.com/zh-hans/vs/

Visual Studio2022 配置MKL库_第1张图片

选择 Community 2022 下载即可。

因为我只是用 C++编程,所以我只选择了下面两个组件

Visual Studio2022 配置MKL库_第2张图片

安装完成之后

Visual Studio2022 配置MKL库_第3张图片

2. 下载 Intel MKL

下载地址:https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl.html

选择下面

Visual Studio2022 配置MKL库_第4张图片

Windows 系统选择

Visual Studio2022 配置MKL库_第5张图片

选择 API下载

Visual Studio2022 配置MKL库_第6张图片

点击 “Download”,你可以选择注册后下载,也可以直接下载 

Visual Studio2022 配置MKL库_第7张图片

 我选择不注册直接下载安装包

打开安装包

Visual Studio2022 配置MKL库_第8张图片

Continue 

Visual Studio2022 配置MKL库_第9张图片

默认安装位置: C:\Program Files (x86)\Intel\oneAPI

选择 I accept the terms of the license agreement

选择 Customize,因为推荐安装有很多我不需要,可以选择性安装

Visual Studio2022 配置MKL库_第10张图片

我这里只选择 MKL库

Visual Studio2022 配置MKL库_第11张图片

选择你的 VS版本,我选择 VS2022

Visual Studio2022 配置MKL库_第12张图片

然后同意

Visual Studio2022 配置MKL库_第13张图片

Visual Studio2022 配置MKL库_第14张图片

安装完成

3. 配置 Visual Studio2022 的环境

打开 Visual Studio2022,并新建一个.cpp文件,内容如下,测试用。

#include
#include
#include
int main()
{
    float* A, * B;//两个向量
    int a = 1, b = 1;//标量
    int n = 5;//向量⼤⼩
    A = (float*)mkl_malloc(n * 1 * sizeof(float), 64);
    B = (float*)mkl_malloc(n * 1 * sizeof(float), 64);
    printf("The 1st vector is ");
    for (int i = 0; i < n; i++) {
        A[i] = i;
        printf("%2.0f", A[i]);
    }
    printf("\n");
    printf("The 2st vector is ");
    for (int i = 0; i < n; i++) {
        B[i] = i + 1;
        printf("%2.0f", B[i]);
    }
    printf("\n");
    //计算a*A+b*B
    cblas_saxpby(n, a, A, 1, b, B, 1);
    printf("The a*A+b*B is ");
    for (int i = 0; i < n; i++) {
        printf("%2.0f", B[i]);
    }
    printf("\n");
    mkl_free(A);
    mkl_free(B);
    getchar();
    return 0;
}

打开属性管理器。属性管理器在视图-其他窗口。打开之后右上角出现下图

Visual Studio2022 配置MKL库_第15张图片

我这里写的是Debug下x64的程序,所以要右击 Debug | x64,添加新项目属性表。添加属性表的目的是为了让我之后使用MKL的程序不用在重新配置环境,只需要添加现有属性表就可以。

Visual Studio2022 配置MKL库_第16张图片

添加 MKL属性表,并打开。

Visual Studio2022 配置MKL库_第17张图片

 在 Intel Libraries for oneAPI 中把 Use oneMKL 设置成 Parallel

在 VC++目录中,设置

可执行文件目录:C:\Program Files (x86)\Intel\oneAPI\mkl\2022.1.0\bin\intel64 

包含目录:C:\Program Files (x86)\Intel\oneAPI\mkl\2022.1.0\include

库目录(有两个):C:\Program Files (x86)\Intel\oneAPI\mkl\2022.1.0\lib\intel64

C:\Program Files (x86)\Intel\oneAPI\compiler\2022.1.0\windows\compiler\lib\intel64_win

Visual Studio2022 配置MKL库_第18张图片

在链接器-输入中附加依赖项,根据电脑不同配置,选择不同依赖项。

选择地址:http://file:///C:/Program%20Files%20(x86)/Intel/oneAPI/mkl/2022.1.0/documentation/en/common/mkl_link_line_advisor.htm

 Visual Studio2022 配置MKL库_第19张图片

我用的64位,所以要link下面四项

mkl_intel_ilp64.lib

mkl_intel_thread.lib

mkl_core.lib

libiomp5md.lib

按理来说,到目前为止就算配置成功的,但是你在运行测试算例的时候发现,并不能编译,会出现一些问题,这也就是我写这篇文章的主要目的,把我踩过的坑告诉大家怎么处理。

4. 运行时出现的一些问题

找不到 mkl_intel_thread.2.dll

Visual Studio2022 配置MKL库_第20张图片

你在搜索路径中发现其实它在 C:\Program Files (x86)\Intel\oneAPI\mkl\2022.1.0\redist\intel64

我的方法有三种,但是只有一种亲测可用。

方法一,将文件的路径添加到可执行文件目录下,发现还是找不到 mkl_intel_thread.2.dll 文件,此方法失败。

Visual Studio2022 配置MKL库_第21张图片

方法二,将文件拷贝到我的 .cpp文件旁边,这样在编译过程中,会搜索到文件。但其实这种方法,是找到了 mkl_intel_thread.2.dll 文件,但是并没有实际效果,如下

Visual Studio2022 配置MKL库_第22张图片

Visual Studio2022 配置MKL库_第23张图片

程序运行中断,没有显示结果。

方法三,也是本文的重点!!!!!!

在Windows系统搜索框中搜索 “编辑系统环境变量”。

Visual Studio2022 配置MKL库_第24张图片

打开

Visual Studio2022 配置MKL库_第25张图片 

点击环境变量

Visual Studio2022 配置MKL库_第26张图片 

 在系统变量中,选择 Path 变量

Visual Studio2022 配置MKL库_第27张图片

将 mkl_intel_thread.2.dll 的路径放到里面,确定。

然后重新打开的 Visual Studio 2022,点击运行。

Visual Studio2022 配置MKL库_第28张图片

出现这个结果,说明你的 MKL 库配置成功!!!!! 

如果大家在配置过程中还遇到什么问题,可以留言或私信。

 

你可能感兴趣的:(计算机,c++,visual,studio,开发语言)