Archives

帖子来自 yah99_wolf RSS

多核时代:并行程序设计探讨 (1) —— 并行系统

作者: yah99_wolf (2 篇文章) 日期: 八月 13, 2009 在 4:21 下午
评论 (1)

大家可能会有疑问:你一会儿并行,一会儿多核,到底是谁跟谁啊? 我开始也有这个疑问,甚至以为并行就是多核,其实两个并不能对等,一句话就是:多核是并行的一种。 并行本身是一个广泛的概念,其实早在多核之前并行处理就已经存在N久了,大家想想看:IBM、SUN、HP的小型机,哪个不是多CPU的?甚至连DELL的工作站,都是两CPU的,更不用说那些中型机、大型机、巨型机了。所以说“并行处理”是一个比“多核处理”要广泛、要早的多的技术,多核只是在PC领域实现了并行处理而已(当然,如果再把多核CPU放到以前的多CPU系统中,那自然系统就更加强大了)。 言归正传,我们还是看看大师们是怎么划分这个并行系统的。 1、费林分类Flynn's Taxonomy 费林分类法(Flynn's Taxonomy),是一种高效能计算机的分类方式。1972年费林(Michael J. Flynn)根据资讯流(information stream)可分成指令(Instruction)和资料(Data)两种。据此又可分成四种计算机类型:SISD, SIMD, MISD, and MIMD. 注意:费林分类是划分计算机的,不是划分CPU的。 1.1 ...

继续 ›

分类: 博客征文专栏
标签:,

多核时代:并行程序设计探讨 (2) —— 并行实现技术

作者: yah99_wolf (2 篇文章) 日期: 八月 13, 2009 在 11:50 上午
评论 (0)

通过“并行程序设计探讨(1)”的介绍,相信大家都已经对并行系统相关的概念有了初步的了解。不过看起来挺吓人的,一堆的术语和概念,想起来头就有点大!! 幸运的是真正需要进行并行程序设计的系统其实不多,我们来看看: SISD:本质上决定了不可能是并行的; SIMD:专有系统,相信绝大部分人都没有接触过; MISD:没有这样的系统; MIMD:本质上就是为了支持并行的。 因此,在处理并行程序设计的时候,我们其实只要考虑MIMD这类系统就OK了!谢天谢地Orz!!:) 不过别高兴的太早,MIMD也有很多啊,怎么办呢?MIMD分为共享内存和消息驱动(其实就是分布式内存)两种,我们还是从分类上来稍加分析,看看如何处理。 共享内存:所有CPU共内存,所有CPU由一个操作系统控制的,例如Windows和Linux/UNIX,目前流行的多核、多CPU机器都是属于这种; 消息驱动:其实就是分布式内存,CPU由不同的操作系统控制,不同的CPU之间通过网络通信。例如网格Grid是通过因特网通信、集群Cluster是通过局域网通信、MPP是通过专有的高速网络通信。 通过上面的对比,聪明的读者估计很快就想到了这两种系统并行程序实现方式的差异: 共享内存:通过操作系统的多进程多线程来完成并行任务,通过进程间通信来完成协作; 消息驱动:通过多台机器来完成并行任务,通过消息来完成协作。(MPP物理上看是一台机器,逻辑上是多台机器)。 当然,由于消息驱动系统中每个处理单元都是一台独立的机器,对这台独立的机器本身当然也可以通过共享内存来实现并行处理。 嗯,非常不错,经过我们的层层分析和筛选,原来各种各样的看起来很吓人的并行系统,最终被我们归纳总结出两种并行实现技术:多进程多线程、多机协作。 套用侯捷大师的一句话给自己贴点金,正所谓:深入浅出!!

继续 ›

分类: 博客征文专栏
标签:,