比较CPU,GPU,MIC架构特点和简述流水线技术特点的特点

GPU与CPU体系结构
[问题点数:40分]
GPU与CPU体系结构
[问题点数:40分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|计算机系统结构,分析CPU、GPU和MIC中的互连网络,试编程测试,不懂也查不到资料怎么办?_百度知道
计算机系统结构,分析CPU、GPU和MIC中的互连网络,试编程测试,不懂也查不到资料怎么办?
您的回答被采纳后将获得:
系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏130(财富值+成长值)
我有更好的答案
CPU GPU 的状态可以用cpuz和gpuz 查看 你可以用throttlestop可以控制cpu超频mic网络 你可以用wireshark这种监控软件抓包查看编程的话不太清楚啊 你去inter和nvdia看看手册里看看能不能找到
为您推荐:
其他类似问题
计算机系统结构的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。Computer(2)
CPU和GPU的设计区别
CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景。CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断、又会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂。而GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。
于是CPU和GPU就呈现出非常不同的架构(示意图如下):
图片来自nVidia CUDA文档。其中绿色的是计算单元,橙红色的是存储单元,橙黄色的是控制单元。
GPU采用了数量众多的计算单元和超长的流水线,但只有简单的控制逻辑并省去了Cache。而CPU不仅被Cache占据了大量空间,而且还有复杂的控制逻辑和诸多优化电路,相比之下计算能力只是CPU很小的一部分。
从上图可以看出:
Cache, local memory:CPU & GPU
Threads(线程数):GPU & CPU
Registers:GPU & CPU,多寄存器可以支持非常多的Thread,Thread需要用到Register,Thread数目大,Register也必须跟着很大才行。
SIMD Unit(单指令多数据流,以同步方式,在同一时间内执行同一条指令):GPU & CPU。
CPU基于低延时的设计:
CPU有强大的ALU(算术运算单元),它可以在很少的时钟周期内完成算术计算。
当今的CPU可以达到64bit双精度。执行双精度浮点运算的加法和乘法只需要1~3个时钟周期。
CPU的时钟周期的频率是非常高的,达到1.532~3gigahertz(千兆HZ,10的9次方)。
大的缓存也可以降低延时。保存很多的数据放在缓存里面,当需要访问的这些数据,只要在之前访问过,如今直接在缓存里面取即可。
复杂的逻辑单元控制。当程序含有多个分支的时候,它通过提供分支预测的能力来降低延时。
数据转发。当一些指令依赖前面的指令结果时,数据转发的逻辑控制单元决定这些指令在pipeline中的位置并且尽可能快的转发一个指令的结果给后续的指令。这些动作需要很多的对比电路单元和转发电路单元。
GPU是基于大的吞吐量设计。
GPU的特点是有很多的ALU和很少的Cache。缓存的目的不是保存后面需要访问的数据,这点和CPU不同,而是为Thread提供服务。如果有很多线程需要访问同一个相同的数据,缓存会合并这些访问,然后再去访问DRAM(因为需要访问的数据保存在DRAM中而不是Cache里面),获取数据后Cache会转发这个数据给对应的线程,这个时候是数据转发的角色。但是由于需要访问DRAM,自然会带来延时的问题。
GPU的控制单元(左边的黄色区域块)可以把多个访问合并成少的访问。
GPU虽然有DRAM访问延时,却有非常多的ALU和非常多的Thread。为了平衡延时的问题,我们可以充分利用多的ALU的特性达到一个非常大的吞吐量的效果,尽可能多的分配Threads。通常来看,GPU ALU会有非常重的pipeline就是因为这样。
所以与CPU擅长逻辑控制,串行的运算和通用类型数据运算不同,GPU擅长的是大规模并发计算,这也正是密码破解等所需要的。所以GPU除了图像处理,也越来越多的参与到计算当中来。
GPU的工作大部分就是这样,计算量大,但没什么计算含量,而且需要重复很多很多次,就像你有个工作需要算几亿次一百以内加减乘除一样,最好的办法就是雇上几十个小学生计算,一人算一部分,反正这些计算也没什么技术含量,纯粹体力活而已。而CPU就像老教授,积分微分都会,就是工资高,一个老教授顶二十个小学生,你要是富士康你雇哪个?
GPU就是这样,用很多简单的计算单元去完成大量的计算任务,纯粹的人海战术。这种策略基于一个前提,就是小学生A和小学生B的工作没有什么依赖性,是互相独立的。很多涉及到大量计算的问题基本都有这种特性,比如你说的密码破解,数据挖掘和图像计算,这些计算可以分解为多个相同的简单小任务,每个任务就可以分给一个小学生去做。但还有一些任务涉及到流的问题,比如说你去相亲,双方看着顺眼才能继续发展,总不能你这边还没见面,那边就把证领了。这种比较复杂的问题就需要CPU来解决。
总而言之,CPU和GPU因为最初用来处理的任务就不同,所以设计上有不小的区别。而某些任务和GPU最初用来解决的问题比较相似,所以用GPU就可以加快效率。GPU的运算速度取决于雇了多少小学生,CPU的运算速度取决于请了多少厉害的教授,教授处理复杂的任务的能力肯定是碾压小学生的,但是对于没那么复杂的任务,还是顶不住人多算得快。当然,现在的GPU也能做一部分稍微复杂的工作了,相当于升级成初中生或者高中生的水平,但还是需要CPU把数据喂到嘴边才能开始干活。
什么类型的程序适合在GPU上运行?
(1)计算密集型的程序。所谓计算密集型(Compute-intensive)的程序,就是其大部分运行时间花在了寄存器运算上,寄存器的速度和处理器的速度相当,从寄存器读写数据几乎没有延时。可以做一下对比,读内存的延迟大概是几百个时钟周期;读硬盘的速度就不说了,即便是SSD,也实在是太慢了。
(2)易于并行的程序。GPU其实是一种SIMD(Single Instruction Multiple Data)的架构,它有成百上千个核,每一个核在同一时间最好能做同样的事情。一:MIC是什么?
(一)MIC是架构名称-Intel&Many&Integrated&Core(Intel集成众核)
(二)众核协处理器(Co-Processor)
&&&&&&&--通过PCIE与CPU通信
&&&&&&&--众核、重核
(三)基于x86架构和x86指令集
二: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编程模型
{&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的比较
细粒度并行密集计算
并发性比较低
满足200个并行线程
线程+指令级并行
需要改变算法,增加并行性
多逻辑分支(if..else)
严重影响性能,需要设计并行算法来去除分支
大程序,复杂的结构
ok(用引语就好)
移植和优化周期长
并行外设方案,热分散
阅读(...) 评论()}

我要回帖

更多关于 分布式架构特点 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信