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;

(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");
}

输出为

配置完成!

MKL与VS2019配置方法的更多相关文章

  1. CentOS 6.3下Samba服务器的安装与配置方法(图文详解)

    这篇文章主要介绍了CentOS 6.3下Samba服务器的安装与配置方法(图文详解),需要的朋友可以参考下   一.简介  Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件, ...

  2. CentOS防火墙iptables的配置方法详解

    CentOS系统也是基于linux中的它的防火墙其实就是iptables了,下面我来介绍在CentOS防火墙iptables的配置教程,希望此教程对各位朋友会有所帮助. iptables是与Linux ...

  3. Wampserver 2.5 多站点配置方法

    写在开头:本文适用于wampserver2.5版本,和wamp的老版本配置有语法上的区别,笔者正是因为被老版本的配置办法给整迷糊了所以才总结了一篇针对2.5版本的配置方法,如果您还停留在1.x或着已经 ...

  4. docker网络配置方法总结

    docker启动时,会在宿主主机上创建一个名为docker0的虚拟网络接口,默认选择172.17.42.1/16,一个16位的子网掩码给容器提供了65534个IP地址.docker0只是一个在绑定到这 ...

  5. XAMPP中proftpd的简明配置方法

    XAMPP中proftpd的简明配置方法   用LAMPP的安装方法可以开一个默认的nobody用户,用lampp security就可以初始设置相应的默认用户密码.如果要有多用户,又怎样管理.目录怎 ...

  6. Cotex-M3内核STM32F10XX系列时钟及其配置方法

    一.背景 最近做个项目,需要使用STM32,还是以前一样的观点,时钟就是MCU心脏,供血即时钟频率输出,想要弄明白一个MCU,时钟是一个非常好的切入点.言归正传,网上已经有太多大神详述过STM32的详 ...

  7. Cotex-M3内核LPC17xx系列时钟及其配置方法

    一.背景: 最近正在接手一个项目,核心芯片既是LPC17XX系列MCU,内核为ARM的Cotex-M3内核. 想要玩转一个MCU,就一定得搞定其时钟! 时钟对MCU而言,就好比人类的心脏.由其给AHB ...

  8. 【转】Nginx服务器的反向代理proxy_pass配置方法讲解

    [转]Nginx服务器的反向代理proxy_pass配置方法讲解 转自:http://www.jb51.net/article/78746.htm 就普通的反向代理来讲Nginx的配置还是比较简单的, ...

  9. windows下MySQL 5.7+ 解压缩版安装配置方法

    方法来自伟大的互联网. 1.去官网下载.zip格式的MySQL Server的压缩包,根据需要选择x86或x64版.注意:下载是需要注册账户并登录的. 2.解压缩至你想要的位置. 3.复制解压目录下m ...

随机推荐

  1. 航模电池平衡头接线,1S-6S原理图

    1-4S平衡头接线 S数代表几级锂电池串联,比如3S代表串联了3级,所以总电压为3*3.7V=11.4V.(每一级可能是多个电芯并联) 图源:百度贴吧 图源:5imx论坛 3S电池示例 B6充电器

  2. 如何看待malloc产生内存碎片

    上代码直接研究: int main() { int *heap_d; int *heap_e; int *heap_f; heap_d = (int *)malloc(10); heap_e = (i ...

  3. C++各种输入

    https://blog.csdn.net/qq_29735775/article/details/81165882 1.cin 2.cin.get() 3.cin.getline() 4.getli ...

  4. 学习RabbitMQ(一)

    消息中间件 一.简介 消息中间件就是在消息的传输过程中保存消息的容器.消息中间件再将消息从它的源中继到它的目标时充当中间人的作用.队列的主要目的是提供路由并保证消息的传递:如果发送消息时接收者不可用, ...

  5. centos安装服务参考博客,亲测可用

    centos 安装nginx参考 日志log报错 nginx -c /etc/nginx/nginx.conf https://blog.csdn.net/weixin_41004350/articl ...

  6. 搞懂高并发性能指标:QPS、TPS、RT、吞吐量

      一.QPS,每秒查询 QPS:Queries Per Second意思是"每秒查询率",是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的 ...

  7. kali Linux 渗透测试 | ettercap图形界面(ARP 欺骗 + DNS欺骗)

    上次我们使用 arpspoof 工具在命令行中完成了 arp 欺骗实验,今天我们用另一种工具 ettercap 工具来实现.ettercap支持图形化操作,对新手非常友好,并且操作非常简单, ette ...

  8. Linux基础学习 | 用户及用户组

    Linux 用户及用户组 目录 一.用户    添加用户实例 二.用户组    添加用户组实例 三.用户及用户组文件 四.各命令参数对照 一.用户 Linux系统是一个多用户多任务的分时操作系统.任何 ...

  9. 二、cadence焊盘与封装制作操作步骤详细说明

    一.焊盘制作 1.打开Pad Designer软件,新建文件--设置保存路径和焊盘名称(规范命名) 2.Parameters--设置单位--过孔类型--是否镀金 3.Layers--single la ...

  10. PCB各层的含义

    阻焊层:solder mask,是指板子上要上绿油的部分:因为它是负片输出,所以实际上有solder mask的部分实际效果并不上绿油,而是镀锡,呈银白色! 助焊层:paste mask,是机器贴片时 ...