VS2019配置MKL教程(Windows)

摘要:
配置文件首先创建一个Windows桌面项目,再添加一个CPP源文件。打开项目属性页--配置属性,会多出IntelPerformance...这一项,看下图配置在打开VC++目录,进行配置。我安装MKL的地方在D:IntelSWTools打开D:IntelSWToolscompilers_and_libraries_2019.5.281windows,由于版本不同,可能后面的版本更新日期可能不同。按照下面根据你的情况添加。可执行文件目录:D:IntelSWToolscompilers_and_libraries_2019.5.281windowsmklin包含目录:D:IntelSWToolscompilers_and_libraries_2019.5.281windowsmklinclude库目录:D:IntelSWToolscompilers_and_libraries_2019.5.281windowscompilerlibia32_winD:IntelSWToolscompilers_and_libraries_2019.5.281windowsmkllibia32_win注意:在选择生成程序时,选择生成x86程序。

下载链接:https://software.intel.com/en-us/mkl

文件下载

VS2019配置MKL教程(Windows)第1张

官网注册后,选择MKL下载下来,安装到指定目录就行,不在多说。

配置文件

首先创建一个Windows桌面项目,再添加一个CPP源文件。

VS2019配置MKL教程(Windows)第2张

打开项目属性页--配置属性,会多出Intel Performance...这一项,看下图配置

VS2019配置MKL教程(Windows)第3张

在打开VC++目录,进行配置。我安装MKL的地方在D:IntelSWTools

打开D:IntelSWToolscompilers_and_libraries_2019.5.281windows,由于版本不同,可能后面的版本更新日期可能不同。按照下面根据你的情况添加。

可执行文件目录:D:IntelSWToolscompilers_and_libraries_2019.5.281windowsmklin

包含目录:D:IntelSWToolscompilers_and_libraries_2019.5.281windowsmklinclude

库目录:

D:IntelSWToolscompilers_and_libraries_2019.5.281windowscompilerlibia32_win

D:IntelSWToolscompilers_and_libraries_2019.5.281windowsmkllibia32_win

注意:在选择生成程序时,选择生成x86程序。如果要生成x64程序,那么库文件那里选择intel64_win。

VS2019配置MKL教程(Windows)第4张

打开链接器,在附加依赖项添加(如果配置64位程序,需要将mkl_intel_c.lib改成mkl_intel_lp64.lib

mkl_intel_c.lib;mkl_intel_thread.lib;mkl_core.lib;libiomp5md.lib;

VS2019配置MKL教程(Windows)第5张

配置测试
#include <stdio.h>#include <stdlib.h>
#include "mkl.h"

#define min(x,y) (((x) < (y)) ? (x) : (y))

intmain()
{
    double* A, * B, *C;
    intm, n, k, i, j;
    doublealpha, beta;

    printf("This example computes real matrix C=alpha*A*B+beta*C using 
"
        "Intel(R) MKL function dgemm, where A, B, and  C are matrices and 
"
        "alpha and beta are double precision scalars

");

    m = 2000, k = 200, n = 1000;
    printf("Initializing data for matrix multiplication C=A*B for matrix 
"
        "A(%ix%i) and matrix B(%ix%i)

", m, k, k, n);
    alpha = 1.0; beta = 0.0;

    printf("Allocating memory for matrices aligned on 64-byte boundary for better 
"
        "performance 

");
    A = (double*)mkl_malloc(m * k * sizeof(double), 64);
    B = (double*)mkl_malloc(k * n * sizeof(double), 64);
    C = (double*)mkl_malloc(m * n * sizeof(double), 64);
    if (A == NULL || B == NULL || C ==NULL) {
        printf("ERROR: Can't allocate memory for matrices. Aborting... 

");
        mkl_free(A);
        mkl_free(B);
        mkl_free(C);
        return 1;
    }

    printf("Intializing matrix data 

");
    for (i = 0; i < (m * k); i++) {
        A[i] = (double)(i + 1);
    }

    for (i = 0; i < (k * n); i++) {
        B[i] = (double)(-i - 1);
    }

    for (i = 0; i < (m * n); i++) {
        C[i] = 0.0;
    }

    printf("Computing matrix product using Intel(R) MKL dgemm function via CBLAS interface 

");
    cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans,
        m, n, k, alpha, A, k, B, n, beta, C, n);
    printf("Computations completed.

");

    printf("Top left corner of matrix A: 
");
    for (i = 0; i < min(m, 6); i++) {
        for (j = 0; j < min(k, 6); j++) {
            printf("%12.0f", A[j + i *k]);
        }
        printf("");
    }

    printf("Top left corner of matrix B: 
");
    for (i = 0; i < min(k, 6); i++) {
        for (j = 0; j < min(n, 6); j++) {
            printf("%12.0f", B[j + i *n]);
        }
        printf("");
    }

    printf("Top left corner of matrix C: 
");
    for (i = 0; i < min(m, 6); i++) {
        for (j = 0; j < min(n, 6); j++) {
            printf("%12.5G", C[j + i *n]);
        }
        printf("");
    }

    printf("Deallocating memory 

");
    mkl_free(A);
    mkl_free(B);
    mkl_free(C);

    printf("Example completed. 

");

    system("PAUSE");
    return 0;
}

VS2019配置MKL教程(Windows)第6张

免责声明:文章转载自《VS2019配置MKL教程(Windows)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Caffeine批量加载浅析Java 使用POI操作EXCEL及测试框架搭建、测试开发的一些想法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

IOCP九:Client退出后投递WSASend

实验过程:         过程一:                 1.Server等待Client到来                2.Client进入                3.Server接受连接,发送"nihaihaoma"                4.Client接收"nihaihaoma",马上退出             ...

【STM32H7教程】第73章 STM32H7的SPI总线应用之驱动W25QXX(支持查询,中断和DMA)

完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第73章       STM32H7的SPI总线应用之驱动W25QXX(支持查询,中断和DMA) 本章节为大家讲解标准SPI接线方式驱动W25QXX,实现了查询,中断和DMA三种方式。 73.1 初学者重要提示 73.2...

第一篇:CUDA 6.0 安装及配置( WIN7 64位 / 英伟达G卡 / VS2010 )

前言        本文讲解如何在VS 2010开发平台中搭建CUDA开发环境。        当前配置:               系统:WIN7 64位               开发平台:VS 2010               显卡:英伟达G卡               CUDA版本:6.0        若配置不同,请谨慎参考本文。 第一...

【linux】【qt5】【将linux下的qt程序打包发布(完全适用于中标麒麟)】

前言: 最近因项目需求,需要打包linux-qt程序给客户先用一下子。百度一大堆终于找了几个靠谱的来综合一下,留为备用吧。 由于是先遣版所以仅制作为免安装程序的格式。 正文: 博主的qt是5.9.2的,程序名称为ocs,下面看到这个名称替换成自己的就是了。 1.先找个地方,比如桌面创建一个名字为OCS的空文件夹用于放打包后的文件。 2.将项目使用Relea...

linux系统下信号具体解释2

信号是UNIX 系统所使用的进程通信方法中,最古老的一种。信号不但能从内核发往一个进程,也能从一个进程发往还有一个进程。比如,用户在后台启动了一个要运行较长时间的程序,假设想中断其运行,能够用kill 命令把SIGTERM信号发送给这个进程,SIGTERM 将终止此进程的运行。信号还提供了向UNIX 系统进程传送软中断的简单方法。信号能够中断一个进程,而...

linux 应用程序直接读写寄存器或物理内存

1.程序说明: 调试驱动程序时,经常遇到候需要查看或设置寄存器的情况,但是直接更改内核代码又不方便。 这里提供一个应用程序源码能在应用层访问底层寄存器。(网上找到的,进行过更改)。 这里只提供4字节数据的访问,如果需要其他字节宽度则需要更改代码。 line40 增加了O_DSYNC标志,防止cache导致数据写入不及时。 2.应用程序源码 1 #incl...