MKL与VS2019配置方法

虚幻大学 xuhss 212℃ 0评论

? 优质资源分享 ?

学习路线指引(点击解锁) 知识定位 人群定位
? Python实战微信订餐小程序 ? 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
?Python量化交易实战? 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

VS2019配置oneAPI并调用MKL库

oneAPI

oneAPI是一个跨架构的编程工具,旨在简化跨GPU、CPU、FPGA和AI加速器之间的编程,可以与英特尔自身设备,或其他厂商的芯片配合使用,以优化工作负载。支持多种语言,支持跨架构性能加速,以提高程序员的生产力。

其中的oneMKL(数学内核库),是一个高度优化和广泛并行化的例程库,旨在提供跨各种CPU和加速器的最高性能。该库具有用于大多数例程的C和Fortran接口,全面支持多种数学运算,包括:

  • 线性代数
  • 快速傅里叶变换
  • 向量
  • 直接和迭代的稀疏求解器
  • 随机数生成器

下载

Intel oneAPI下载地址为Download the Intel® oneAPI Base Toolkit

5daccca195ad48dbe9c53a3d75eddeaf - MKL与VS2019配置方法

安装

默认路径,Extract

69843930621d42fd70f7ec58d6391a1f - MKL与VS2019配置方法

下一步,下一步就OK

选择自定义安装,默认路径为C:\Program Files (x86)\Intel\oneAPI

f5def12fe42d19e05131ebaf301e9864 - MKL与VS2019配置方法

安装选项中取消勾选了15G的Intel for Python

db610f46f509767b36d48b7582cea25a - MKL与VS2019配置方法

工具包会集成到VS中

945d87fb6d7fd5238ce01c203ebe9b6c - MKL与VS2019配置方法

install

2c0d7827e8a4f1dadeaad5f6f3931539 - MKL与VS2019配置方法

安装过程大概需要花费20分钟

bc3c669cf8d085662886f9637b2ad4f7 - MKL与VS2019配置方法

配置环境(VS2019)

(1)新建工程并创建main.cpp,解决方案配置为Debug x64;

a18bf8f7c50bb02acaf2c122745a6c91 - MKL与VS2019配置方法

(2)进入属性页面;在 配置属性 — > VC++目录 中分别需要配如图三个路径。(默认下载位置为C:\Program Files (x86)\Intel)

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

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

库目录:C:\Program Files (x86)\Intel\oneAPI\compiler\2022.0.3\windows\compiler\lib\intel64_win

C:\Program Files (x86)\Intel\oneAPI\mkl\2022.0.3\lib\intel64

设置好后点击“应用

4780026f1f8caa218363c095bee8c8bd - MKL与VS2019配置方法

(3)在C:\Program Files (x86)\Intel\oneAPI\mkl\2022.0.3\documentation\en\common找到mkl_link_line_advisor.htm

网页打开:

d4e69f7b38233b544a1e3ae982bc3053 - MKL与VS2019配置方法

如在win64环境下,需要添加以下库:

mkl_intel_ilp64.lib
mkl_intel_thread.lib
mkl_core.lib
libiomp5md.lib

(4)在链接器 — > 输入 复制/粘贴;添加附加依赖项

07a63184f0a50a0c12c276e736a23d69 - MKL与VS2019配置方法

测试代码

#include
#include

#include"mkl.h"
#include"mkl\_lapacke.h"
#define n 4

void main() {

    int matrix_order = LAPACK_COL_MAJOR;
    char jobvl = 'N';
    char jobvr = 'V';
    double A[n * n] = {
         0.35,  0.09, -0.44,  0.44,
         0.09,  0.07, -0.33, 0.52,
        -0.44, -0.33, -0.03, -0.1,
        0.44,  0.52,  -0.1,  0.35 };//4*4矩阵
    int lda = n;
    double wr[n] = { 0 };
    double wi[n] = { 0 };
    double vl[n * n];
    int ldvl = n;
    double vr[n * n];
    int ldvr = n;
    int info = LAPACKE_dgeev(matrix_order, jobvl, jobvr, n, A, lda, wr, wi, vl, ldvl, vr, ldvr);
    //int info=0;

    if (info == 0) {
        int i = 0;
        int j = 0;
        int flag = 0;//区分复特征值的顺序
        for (i = 0; i < n; i++) {
            printf("eigenvalue %d:", i);
            printf("%.6g + %.6gi\t", wr[i], wi[i]);
            printf("\n");
            printf("right eigenvector: ");
            if (wi[i] == 0)
            {
                for (j = 0; j < ldvr; j++) {
                    printf("%.6g\t", vr[i * n + j]);
                }
            }
            else if (flag == 0)//如果该复特征值为这对复特征值的第一个则
            {
                flag = 1;
                for (j = 0; j < ldvr; j++)
                {
                    printf("%.6g + %.6gi\t", vr[i * n + j], vr[(i + 1) * n + j]);
                }
            }
            else if (flag == 1)//如果该复特征值为这对复特征值的第二个则
            {
                flag = 0;
                for (j = 0; j < ldvr; j++)
                {
                    printf("%.6g + %.6gi\t", vr[(i - 1) * n + j], -vr[i * n + j]);
                }
            }
            printf("\n");
        }
        getchar();//必须要有这句
        printf("SUCCESS\n");
    }

    system("pause");
}

输出为

5130bba596959301a29179b02b56b116 - MKL与VS2019配置方法

配置完成!

转载请注明:xuhss » MKL与VS2019配置方法

喜欢 (0)

您必须 登录 才能发表评论!