分类: 高性能计算
2016-02-06 17:21:12
MIC简介
一:MIC是什么?
(一)MIC是架构名称-Intel Many Integrated Core(Intel集成众核)
(二)众核协处理器(Co-Processor)
--通过PCIE与CPU通信
--众核、重核
(三)基于x86架构和x86指令集
二:MIC特性
MIC卡:
最高61 cores
主频1.2GHz
244 Threads 但是最多能开240个线程,有4个线程跑OS
最高内存容量16GB,内存带宽352GB/s
单卡双精度峰值性能>1.2TFLOPS
MIC Core的组成
X86架构普通指令单元
512bit向量宽度VPU
内嵌LinuxOS,可配置IP地址
通用的编程模型、语言和工具链
编程模型:MPI、OpenMP、OpenCl
编程语言:C、C++、Fortran
编程工具:vtune、MPITrace
编程库:MKL
编译器:icc/icpc/ifort
三:为什么要使用MIC?
(一)并行计算式未来发展趋势
通用架构并行
--同构多核并行(粗粒度)
--异构众核并行(细粒度)
CPU+GPU异构协同计算
CPU+MIC异构协同计算
(二)MIC技术优势
1.微异构架构:开发和维护一份代码,单节点资源最大化利用(CPU和MIC,不需要像GPU一样重新编译)
2.高性能与低功耗
3.软件编程高效
MIC编程模式:
MIC五种应用模式
--串行+并行模式
并行度不高
CPU hosted
--串行+高并行模式
Offload(常用)
--对称模式(Symmetric模式)
进程并行(MPI)
--高并行+串行模式
MIC hosted
CPU co-processed
--高并行模式(Native模式)
MIC hosted
GPU只支持offload模式(串行+高并行模式)
4.前期快速移植
(1)MIC移植:offload模式
--引语方式,类似OpenMP,不需要重写代码
--沿用原有OpenMP、MPI、OpenCL编程模型
Main()
{ double pi=0.0f;long i;
#pragma offload target (mic)
#pragma omp parallel for reduction(+:pi)
for(i=0;i
{
double t=(double)((i+0.5)/N);pi+=4.0/(1.0+t*t);
}
printf(“pi=%f\n”,pi/N);
}
(2)GPU移植:offload模式
--采用新的CUDA编程模型,程序需要重写
--需要烤炉线程索引,数据映射等细节
5.编程复用性:CPU和MIC公用代码
6.工具链丰富
7.计算规模易扩展
(四)什么时候使用MIC
适合MIC的应用
使用前提:完全拥有源代码(必须):软件自身源码+数学库源码
应用所具备的特征
--高度并行
并行度带到百级,最好千级以上
并行效率较高,线程可扩展性好,能扩展到200以上线程并行
--计算密集型应用,F/B高
计算/PCIE传输比例高,计算能掩盖PCIE输出
计算时间/访存时间高,没现成内存带宽较低
--SIMD模式,热点算法为向量化计算,向量化程度高
--数据可分块处理,突破MIC容量的瓶颈
--访存可实现连续,L1/L2Cache命中率高(局部性原理)
(MIC VS GPU)MIC和GPU的比较
算法特性
MIC
GPU
细粒度并行密集计算
ok
ok
并发性比较低
满足200个并行线程
线程+指令级并行
需要改变算法,增加并行性
多逻辑分支(if..else)
ok
严重影响性能,需要设计并行算法来去除分支
大程序,复杂的结构
ok(用引语就好)
移植和优化周期长
并行外设方案,热分散
ok
no