从并行计算的角度对比,MPI 与 OpenMP 有什么区别?
OpenMP和MPI是并行编程的两个手段,对比如下:
OpenMP:线程级(并行粒度);共享存储;隐式(数据分配方式);可扩展性差。
MPI:进程级;分布式存储;显式;可扩展性好。OpenMP采用共享存储,意味着它只适应于SMP,DSM机器,不适合于集群。MPI虽适合于各种机器,但它的编程模型复杂。
需要分析及划分应用程序问题,并将问题映射到分布式进程集合。需要解决通信延迟大和负载不平衡两个主要问题。
延伸论述:
我认为,要理解OpenMP和MPI,首先要有一些操作系统知识和系统编程基础——OpenMP对应的实际上是单进程多线程的并发编程模型,可以将一个单线程的程序按for循环拆分成多线程——相当于pthread_create。
对于同一个进程的多个线程来说,由于它们只是独占自己的栈内存,堆内存是共享的,因此数据交换十分地容易,直接通过共享变量就可以进行交换,编程模型非常简单易用,并且对于操作系统来说,线程的上下文切换成本也比进程低很多。
然而另一方面,由于线程不能脱离进程独立存在,而一个进程不能存在于多台机器上,所以OpenMP只适用于拥有多个CPU核心的单台电脑。并且多线程编程存在临界区(Critical Section),需要你自己去加锁,解决Race Condition问题,否则的话很容易导致不可预知的后果。
而MPI则是多进程的并发编程模型,相当于你自己调用fork——每一个进程的内存地址空间都是独立的,它们彼此之间几乎什么都不共享,只能通过进程间通信(IPC)来交换彼此的数据,因此编程难度明显要大很多。
MPI有一个非常显著的优点,那就是对于一个分布式系统来说,进程是可以在分布式系统的每一台电脑之间转移的,因此对于拥有多台电脑的分布式系统来说,其并发性要明显好于OpenMP。
串口硬盘的详情
鼠标并没有并行鼠标之说,但主板接口有并口。
鼠标的接口类型:
鼠标按接口类型可分为串行鼠标、PS/2鼠标、 USB鼠标三种。串行鼠标是通过串行口与计算机相连,有9针接口和25针接 口两种,这是最早的鼠标。PS/2鼠标通过一个六针微型DIN接口与计算机相连,它与键盘的接口非常相似,使用时注意区分。USB鼠标是通过USB接口进行连接的鼠标,是目前主流。
这还要从主板的总线说起,总线,英文叫作“BUS”,即我们中文的“公共车”,这是非常形象的比如,公共车走的路线是一定的,我们任何人都可以坐公共车去该条公共车路线的任意一个站点。如果把我们人比作是电子信号,这就是为什么英文叫它为“BUS”而不是“CAR”的真正用意。当然,从专业上来说,总线是一种描述电子信号传输线路的结构形式,是一类信号线的集合,是子系统间传输信息的公共通道。通过总线能使整个系统内各部件之间的信息进行传输、交换、共享和逻辑控制等功能。如在计算机系统中,它是CPU、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过主机相连接,外部设备通过相应的接口电路再于总线相连接。
接口分类图
鼠标的接口类型:
鼠标按接口类型可分为串行鼠标、PS/2鼠标、 USB鼠标三种。串行鼠标是通过串行口与计算机相连,有9针接口和25针接 口两种,这是最早的鼠标。PS/2鼠标通过一个六针微型DIN接口与计算机相连,它与键盘的接口非常相似,使用时注意区分。USB鼠标是通过USB接口进行连接的鼠标,是目前主流。
一直以来 IDE硬盘都采用并行传输模式(并行ATA),但是并行传输过程中存在一个不可避免的问题:线路间的信号会互相干扰。在传输速率比较低的情况下,存在一定的信号串扰并不会带来多大的影响,但是在高速数据传输过程中,信号串扰问题就显得非常突出,严重的影响着系统的稳定性。因此,在人们对硬盘传输速率要求越来越高的同时,并行ATA却显得越来越力不从心了。另外,并行ATA也存在着一些显而易见的缺点:首先,并行ATA每次传输多位数据,因此数据通道要求的数据线的数量比较多,在ATA/66以前连接硬盘的数据排线就是40线的,而ATA/66、ATA/100和最新的ATA/133的接口数据电缆则都是80线的,这样不仅接口线缆的成本提高了,而且也造成了机箱内连线复杂凌乱,空气流通受阻,散热受到影响。其次,并行ATA设计采用5V电压供电,在当今不断降低电压、减小功耗的趋势下,这也是需要改进的。
在并行 ATA性能提升后劲不足的情况下,2000年2月Intel在IDF(Intel Developer Forum——Intel开发者论坛)上,首次提出了串行ATA(Serial ATA)的技术构想,并专门成立了Serial ATA标准的官方工作组(Serial ATA Working Group)。 2000年12月18日,Serial ATA工作组公布了Serial ATA草案1.0版。
2001年8月,Seagate在IDF Fall 2001大会上宣布了Serial ATA 1.0标准,Serial ATA规范正式确立。在1.0版规范中规定的Serial ATA数据传输速度为150MB/s,比目前主流的并行 ATA标准ATA/100高出50%,比最新的ATA/133还要高出约13%。而且随着未来后续版本的发展,其接口速率还可扩展到2X和4X(300MB/s和600MB/s)。从其发展计划来看,未来Serial ATA的也将通过提升时钟频率来提高接口传输速率。 串行 ATA比并行ATA快
目前的并行 ATA一次可传输4个字节(4×8位)的数据,而串行ATA每次传输的数据只有一位,那么为什么在高速传输过程中却要使用串行ATA呢?其实主要原因还是并行传输存在着信号串扰的问题。而串行传输就没有这个问题了,从理论上说串行传输的工作频率可以无限提高,Serial ATA就是通过提高工作频率来提升接口传输速率的。因此Serial ATA可以实现更高的传输速率,而并行ATA在没有有效地解决信号串扰问题之前,则很难达到这样高的传输速率,这也是为什么新的硬盘接口标准会采用串行传输的原因。 Serial ATA实现数据传输的原理相对而言是比较简单的。顾名思义,它采用的是串行数据传输方式,每一个时钟周期只传输一位二进制数据。因此,Serial ATA的接口连接线就变得非常简洁了——只需要4根线就可以实现数据传输(第1根发数据,第2根接收数据,第3根供电,第4根地线)。目前并行ATA采用80线的接口连接线,而Serial ATA的硬盘接口线则明显地要简洁得多,所以,在实际应用中,使用Serial ATA设备的机箱会更整洁一些,散热效果也相对要好一点。而且,Serial ATA传输线的成本低。
另外,由于串行传输方式不会遇到信号串扰问题,所以 Serial ATA要想提高传输速度的话,只需要提高控制芯片的工作频率即可。 Serial ATA采用的是点对点传输协议,每一个硬盘与主机通信时都独占一个通道,系统中所有的硬盘都是对等的,因此,在Serial ATA中将不存在“主/从”盘的区别, 用户也不用再费事去设置硬盘的相关跳线了。 Serial ATA的点对点传输模式的另一个好处是,每一个硬盘都可以独享通道带宽,这对于提高性能是有好处的。
由于串行ATA与传统的并行ATA是不兼容的,对于这个问题,Serial ATA在设计的时候也着重加以考虑。目前的Serial ATA可以通过转换器与现有的并行ATA系统兼容使用。转换器能够将主板的并行ATA信号转换成串行ATA信号供Serial ATA硬盘所用,或者将主板的Serial ATA信号转换成普通并行ATA硬盘能够接收的并行ATA信号,而且这种转换器的使用方式也非常灵活。 SATA是Intel公司在IDF2000大会上推出的,该技术可以让用户拥有高效能的硬盘,却不必牺牲资料的完整性。SATA最大的优势是传输速率高。SATA的工作原理非常简单:采用连续串行的方式来实现数据传输从而获得较高传输速率。2003年发布SATA1.0规格提供的传输率就已经达到了150MB/s,不但已经高出普通IDE硬盘所提供的100MB/s(ATA100)甚至超过了133MB/s(ATA133)的最高传输速率。
SATA在数据可靠性方面也有了大幅度提高。SATA可同时对指令及数据封包进行循环冗余校验(CRC),不仅可检测出所有单bit和双bit的错误,而且根据统计学的原理,这样还能够检测出99.998%可能出现的错误。相比之下,PATA只能对来回传输的数据进行校验,而无法对指令进行校验,加之高频率下干扰甚大,因此数据传输稳定性很差。 除了传输速度、传输数据更可靠外,节省空间是SATA最具吸引力之处,更有利于机箱内部的散热,线缆间的串扰也得到了有效控制。不过SATA 1.0规范存在不少缺点,特别是缺乏对于服务器和网络存储应用所需的一些先进特性的支持。比如在多任务、多请求的典型服务器环境里面SATA1.0硬盘的确会有性能大幅度下降、可维护性不强、可连接性不好等等缺点。这时,SATA2.0的出现在这方面却得到了很好的补充。
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!