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<N;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

时间: 2024-08-07 16:59:18

MIC简介的相关文章

MIC编程

(基础部分,可参考上一篇<MIC简介>) 几个问题: 1.什么是MIC? 协处理器.加速卡 2.什么是MIC编程? 让程序运行在MIC卡上 3.如何发挥MIC卡的优势? 并行(在众多核心上) 4.如何并行? 应用并行库:OpenMP.MPI.pThread.TBB…… MIC应用模式 MIC卡可以看作协处理器,也可以看作独立的节点 MIC有5中应用模式: CPU原生模式 CPU为主MIC为辅模式(最常用) CPU与MIC对等模式 MIC为主CPU为辅模式 MIC原生模式(native模式) 微

简介Intel MIC上的分布式开发以及Offload模式下的各种限制

最近要在MIC机群上做分布式开发,发现有两种模式可以用: 1) offload模式:该模式和GPGPU编程思想类似,把并行度高的代码转移到local的MIC处理器上执行,其它代码仍然在CPU上执行.MIC只负责本地计算,分布式通信必须在CPU上执行. 2)symmetric模式:编译出在MIC和CPU上执行的两份二进制代码.该模式逻辑上允许MIC进行分布式通信,虽然物理上消息还是从CPU走的.这种模式编程最大的难点是load balancing问题. 通过几天探索,发现了offload模式下的各

OpenCL学习笔记(三):OpenCL安装,编程简介与helloworld

OpenCL安装 安装我不打算花篇幅写,原因是OpenCL实在是可以太多的平台+环境下实现了,包括GPU和FPGA,以及不同的器件支持,在这里我主要把网上可以找到比较不错的经验贴列一下,方便大家,我主要关注了FPGA的,其他GPU的大家网上搜搜吧: altera opencl sdk下载: https://www.altera.com.cn/products/design-software/embedded-software-developers/opencl/overview.html alt

音频(四) - 音频压缩(Speex使用&amp;Opus简介)

版权声明:本文为原创文章,未经允许不得转载 博客地址:http://blog.csdn.net/kevindgk GitHub地址:https://github.com/KevinDGK/MyAudioDemo 一简介 二局域网语音配置 三Speex 1 简介 2 技术特点 3 开发-语音压缩 4 相关计算 四Opus - 音频编解码器中的瑞士军刀 1 简介 2 技术 3 开发插件 4 版本信息 libopus 113稳定发行版 5 对比 6 模块API文档 61 Opus Encoder 类型

TLV简介

引子: 前段时间在项目中第一次接触TLV,项目中用这种格式来传输图片,语音等. 关于TLV TLV是一种可变的格式,意为:Type类型, Lenght长度,Value值.Type:该字段是关于标签和编码格式的信息; Length:该字段是定义数值的长度; Value:字段表示实际的数值.Type和Length的长度固定,一般那是2.4个字节(unsigned short 或 unsigned long ,具体用哪种编码和解析统一就行了,本文就取unsigned long类型):Value的长度有

Android网络通讯简介

网络通信应该包含三部分的内容:发送方.接收方.协议栈.发送方和接收方是参与通信的主体,协议栈是发送方和接收方进行通信的契约.按照服务类型,网络通信可分为面向连接和无连接的方式.面向连接是在通信前建立通信链路,而通信结束后释放该链路.无连接的方式则不需要在通信前建立通信连接,这种方式不保证传输的质量. Android提供了多种网络通信的方式,如Java中提供的网络编程,在Android中都提供了支持.Android中常用的网络编程方式如下: 针对TCP/IP协议的Socket和ServerSock

微信红包的架构设计简介

@来源于QCon某高可用架构群整理,整理朱玉华. 背景:有某个朋友在朋友圈咨询微信红包的架构,于是乎有了下面的文字(有误请提出,谢谢) 概况:2014年微信红包使用数据库硬抗整个流量,2015年使用cache抗流量. 微信的金额什么时候算? 答:微信金额是拆的时候实时算出来,不是预先分配的,采用的是纯内存计算,不需要预算空间存储.. 采取实时计算金额的考虑:预算需要占存储,实时效率很高,预算才效率低. 实时性:为什么明明抢到红包,点开后发现没有? 答:2014年的红包一点开就知道金额,分两次操作

JSON 简介

ylbtech-JSON: JSON 简介 JSON:JavaScript Object Notation(JavaScript 对象表示法) JSON是存储和交换文本信息的语法,类似 XML. JSON 比 XML 更小.更快.更易解析. JSON 实例 { "employee":[ {"firstName":"John","lastName":"Doe"}, {"firstName"

Docker简介

Docker简介 什么是Docker: 正所谓Docker的英文本意为"搬运工",所以在我们的世界里,可以理解为Docker搬运的是装满任意类型的APP的集装箱,开发者可以通过Docker将APP变成一种标准化的.可移动植的.自动管理的组件.它用一种新的方式实现了轻量级的虚拟机,专业术语成为应用容器(Application Container) Docker的优势: 1.利用率高 ·Docker对系统资源的利用率很高,一台主机可以同时运行数千个Docker容器 2.可以快速的交付应用程