本次课程将介绍英特尔数学核心计算库Intel Math Kernel Library(MKL),并指导用户如何使用Intel MKL来提升运用程序的性能。
【课程大纲】
1.英特尔数学核心计算库(MKL)简介
2.如何搭建MKL环境
3.如何使用MKL提高用户计算性能
4.实验结果及分析
英特尔是半导体行业和计算创新领域的全球领先厂商,以智能互联技术奠定全球创新基石。英特尔创始于1968年,拥有50余年推动技术创新和耕耘产业生态的成功经验。如今,英特尔正转型为一家以数据为中心的公司。英特尔的战略愿景聚焦于三个方面:一是致力于生产世界上最好的半导体芯片;二是引领人工智能与“自能”革命;三是做全球领先的端到端技术平台提供者。英特尔正与合作伙伴一起,共推人工智能、自动驾驶、 5G及物联网等领域的技术创新与应用突破,驱动智能互联世界,从而解决人类面临的重大挑战。 英特尔于1985年进入中国,是在华高科技领域最大的外国投资企业之一,协议总投入约130亿美元。中国是英特尔全球战略之重点,英特尔在中国拥有美国总部之外最为全面的业务部署,覆盖了前沿研究、产品技术开发、精尖制造、产业生态合作、市场营销、客户服务、风险投资和企业社会责任等。英特尔中国现有员工约9,500人。扎根中国三十四年,英特尔见证并深度参与了中国的改革开放,从浦东开发、西部开发到振兴东北等,英特尔一直跟随改革开放的步伐,积极带动区域经济发展,为高端制造持续注入新动力。 2014年12月,英特尔宣布在未来15年将为成都工厂投资16亿美元,首次引入英特尔最先进的高端测试技术( ATT),使成都工厂在原有的芯片封装与测试业务之外进一步升级为英特尔在美国境外唯一的ATT技术工厂;该技术已于2016年11月18日正式投产。 2015年10月,英特尔宣布投资55亿美元,将英特尔大连工厂升级为非易失性存储技术制造基地;该项目已经于2016年7月正式投产, 2017年发布了两款全新的基于3D NAND的数据中心级固态盘;其二期项目已经在2018年9月投产英特尔最先进的96层3D NAND产品。英特尔中国研究院是英特尔全球五大创新中枢之一,而英特尔亚太研发中心已发展成为英特尔在亚洲最大的综合性研发基地之一。 英特尔中国积极履行企业社会责任,涵盖了人才培养、员工关爱、多元化和包容、环境可持续、供应链建设、志愿服务等领域。英特尔连续20多年被教育部评为最佳合作伙伴。我们持续支持英特尔杯嵌入式大赛、英特尔杯软件创新大赛和人工智能人才培养等项目,开展丰富多彩的校园活动,每年都有上万名学生的直接参与,受益青少年数以十万计。英特尔中国员工在2018年参与志愿活动人数达8,636人,贡献志愿服务时间超过12万小时,参与比例为69%; 10年来累计志愿服务时间超过72 万小时。我们把公司运营与环境可持续发展协调并进,积极减少碳足迹;还和政府、产业链以及公益组织深入合作,共同推动绿色可持续发展。全球独立机构声望研究院发布的“中国最具声望的公司”( RepTrak? 100) 2018年百强排行榜中,英特尔荣登榜首。
第一章 英特尔数学核心计算库(MKL)简介
第二章 如何搭建MKL开发环境
第三章 如何使用MKL提高用户计算性能
第四章 实验结果及分析
通过提供高度优化,线程化和向量化的数学函数,加快科学,工程,金融和机器学习应用程序的计算速度
提供用于密集和稀疏线性代数(BLAS,LAPACK,PARDISO),FFT,矢量数学,摘要统计,样条曲线等的关键功能
自动为每个处理器分配优化的代码,而无需分支代码
针对单核向量化和缓存利用率进行了优化
多核和多核自动并行化
从单核运算扩展到集群函数
自动调度特定于ISA的代码路径以获得最佳的调优性能
英特尔®MKL BLAS(基本线性代数包)
英特尔®MKL快速傅立叶变换(FFT)
英特尔®MKL矢量运算
Intel® MKL 稀疏分解器
资源 | 网址 |
---|---|
Intel® MKL Website | https://software.intel.com/en-us/intel-mkl |
Intel® MKL Forum | https://software.intel.com/en-us/forums/intel-math-kernel-library |
Intel® MKL Benchmarks | https://software.intel.com/en-us/intel-mkl/benchmarks# |
Intel®MKL Link Line Advisor | http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor/ |
步骤
使用腾讯云服务器
在镜像市场中找到 Intel Parallel Studio境像
选择镜像后完成服务器配置
本示例衡量了计算实矩阵乘积的性能
使用三重嵌套循环的C = alpha * A * B + beta * C,其中A,B和C是矩阵,而alpha和beta是双精度标量。
在这个简单的示例中,省略了良好的编程风格和较高的Intel®MKL性能所必需的诸如内存管理,数据对齐和I / O之类的操作,以提高可读性。
当alpha=1, beta=0时:
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
sum = 0.0;
for (k = 0; k < p; k++)
sum += A[p*i+k] * B[n*k+j];
C[n*i+j] = sum;
}
}
#include "mkl.h"
/* Computing real matrix C=alpha*A*B+beta*C, where A, B, and C
are matrices and alpha and beta are double precision scalars */
// Step 1: Allocate memory for Matrix aligned on 64-byte boundary
double *C = (double *)mkl_malloc( m*n*sizeof( double ), 64 );
// Step 2: Perform C=alpha*A*B+beta*C by calling cblas_dgemm
cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans,
m, n, p, alpha, A, p, B, n, beta, C, n);
// Step 3: Free allocated memory
mkl_free(C);
为矩阵A,B,C分配内存
初始化输入矩阵A(2000 x 200)和B(200 x 1000)
计算矩阵C=矩阵A乘矩阵B
输出矩阵运算耗时
Intel编译器或GCC
Intel数学核心库(MKL)
如果采用MKL镜像生成实例则上述软件包已经装配好了
/home/ubuntu/mkl example/demo matrix multiply.c 和 matrix_multiply_mkl.c
source /opt/intel/compilers and libraries 2019.4.243/linux/bin/compilervars.sh intel64
make libintel64 compiler=gnu function=matrix_multiply
make libintel64 compiler=gnu function=matrix_multiply_mkl
results/gnu_lp64_parallel _intel64_lib/matrix multiply.out
results/gnu_lp64 parallel intel64_lib/matrix multiply_mkl.out
课程学习交流
请扫码关注腾讯产业互联网学堂微信公众号