VS2019配置MKL教程(Windows)

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

 

1.文件下载

VS2019配置MKL教程(Windows)

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

 

2.配置文件

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

VS2019配置MKL教程(Windows)

 

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

VS2019配置MKL教程(Windows)

 

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

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

可执行文件目录:D:\IntelSWTools\compilers_and_libraries_2019.5.281\windows\mkl\bin

包含目录:D:\IntelSWTools\compilers_and_libraries_2019.5.281\windows\mkl\include

库目录:

D:\IntelSWTools\compilers_and_libraries_2019.5.281\windows\compiler\lib\ia32_win

D:\IntelSWTools\compilers_and_libraries_2019.5.281\windows\mkl\lib\ia32_win

 

打开链接器,在附加依赖项添加

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

VS2019配置MKL教程(Windows)

 

3.配置测试

#include <stdio.h>
#include <stdlib.h>

#include "mkl.h"

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

int main()
{
    double* A, * B, * C;
    int m, n, k, i, j;
    double alpha, beta;

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

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

    printf(" Allocating memory for matrices aligned on 64-byte boundary for better \n"
        " performance \n\n");
    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("\n ERROR: Can‘t allocate memory for matrices. Aborting... \n\n");
        mkl_free(A);
        mkl_free(B);
        mkl_free(C);
        return 1;
    }

    printf(" Intializing matrix data \n\n");
    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 \n\n");
    cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans,
        m, n, k, alpha, A, k, B, n, beta, C, n);
    printf("\n Computations completed.\n\n");

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

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

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

    printf("\n Deallocating memory \n\n");
    mkl_free(A);
    mkl_free(B);
    mkl_free(C);

    printf(" Example completed. \n\n");

    system("PAUSE");
    return 0;
}

VS2019配置MKL教程(Windows)

VS2019配置MKL教程(Windows)

上一篇:[AGC005D] ~K Perm Counting


下一篇:API离线查看工具