Ubuntu Intel MKL 安装 + 使用clion运行mkl

您所在的位置:网站首页 微导电材料应用前景 Ubuntu Intel MKL 安装 + 使用clion运行mkl

Ubuntu Intel MKL 安装 + 使用clion运行mkl

2024-03-29 07:19| 来源: 网络整理| 查看: 265

第一步是安装Intel mkl

1. 进入intel mkl官网下载安装包,选择linux版本后,用邮箱注册,开始下载intel mkl安装包。

2 下载完成后解压,进入文件夹,使用 sudo ./install.sh进行安装,默认安装到/opt/intel中。

第二步是配置clion运行环境,即配置工程的CMakeList.txt文件

1. 以工程名为Intel_MKL为例。

CMakeList.txt为

cmake_minimum_required(VERSION 3.13) project(Intel_MKL) set(CMAKE_CXX_STANDARD 14) include_directories(/opt/intel/mkl/include/) link_directories(/opt/intel/mkl/lib/intel64 /opt/intel/lib/intel64) add_executable(Intel_MKL main.cpp) target_link_libraries(Intel_MKL -L${MKLROOT}/lib/intel64 -lmkl_intel_ilp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm -ldl)

include_directories(/opt/intel/mkl/include/) 找到头文件,无需修改 link_directories(/opt/intel/mkl/lib/intel64 /opt/intel/lib/intel64) 找到库文件,无需修改

target_link_libraries表示链接的库文件,不同的主机不相同,需要修改。修改方法为:打开/opt/intel/documentation_2019/en/mkl/common/mkl_link_line_advisor.htm文件,根据自己的配置生成链接的库文件。选择好自己的配置后,在下方的Use this link line空白中会显示命令。将其复制到target_link_libraries中即可。

第三步 找个mkl的样例进行测试 //============================================================== // // SAMPLE SOURCE CODE - SUBJECT TO THE TERMS OF SAMPLE CODE LICENSE AGREEMENT, // http://software.intel.com/en-us/articles/intel-sample-source-code-license-agreement/ // // Copyright 2016-2018 Intel Corporation // // THIS FILE IS PROVIDED "AS IS" WITH NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT // NOT LIMITED TO ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR // PURPOSE, NON-INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS. // // ============================================================= /******************************************************************************* * 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 * scalars in double precision. * * In this simple example, practices such as memory management, data alignment, * and I/O that are necessary for good programming style and high Intel(R) MKL * performance are omitted to improve readability. ********************************************************************************/ #define min(x,y) (((x) < (y)) ? (x) : (y)) #include #include #include "mkl.h" int main() { double *A, *B, *C; int m, n, p, 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, p = 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, p, p, 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*p*sizeof( double ), 64 ); B = (double *)mkl_malloc( p*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*p); i++) { A[i] = (double)(i+1); } for (i = 0; i < (p*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, p, alpha, A, p, B, n, beta, C, n); printf ("\n Computations completed.\n\n"); printf (" Top left corner of matrix A: \n"); for (i=0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3