如何配置MKL与VS2019环境?

2026-05-19 15:351阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计936个文字,预计阅读时间需要4分钟。

如何配置MKL与VS2019环境?

CVS2019配置oneAPI并调用MKL库

oneAPI是一个跨平台的编程工具,支持简化跨GPU、CPU、FPGA和AI加速器之间的编程。它可以与英特尔的自身设备或其他厂商的芯片配合使用,以优化工作负载。

VS2019配置oneAPI并调用MKL库 oneAPI

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

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

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

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

安装

默认路径,Extract

下一步,下一步就OK

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

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

工具包会集成到VS中

install

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

配置环境(VS2019)

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

如何配置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

设置好后点击“应用

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

网页打开:

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

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

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

测试代码

#include<stdio.h> #include<stdlib.h> #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"); }

输出为

配置完成!

本文共计936个文字,预计阅读时间需要4分钟。

如何配置MKL与VS2019环境?

CVS2019配置oneAPI并调用MKL库

oneAPI是一个跨平台的编程工具,支持简化跨GPU、CPU、FPGA和AI加速器之间的编程。它可以与英特尔的自身设备或其他厂商的芯片配合使用,以优化工作负载。

VS2019配置oneAPI并调用MKL库 oneAPI

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

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

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

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

安装

默认路径,Extract

下一步,下一步就OK

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

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

工具包会集成到VS中

install

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

配置环境(VS2019)

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

如何配置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

设置好后点击“应用

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

网页打开:

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

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

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

测试代码

#include<stdio.h> #include<stdlib.h> #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"); }

输出为

配置完成!