并行程序设计探讨(2)——并行实现技术
通过“并行程序设计探讨(1)”的介绍,相信大家都已经对并行系统相关的概念有了初步的了解。不过看起来挺吓人的,一堆的术语和概念,想起来头就有点大!!
幸运的是真正需要进行并行程序设计的系统其实不多,我们来看看:
SISD:本质上决定了不可能是并行的;
SIMD:专有系统,相信绝大部分人都没有接触过;
MISD:没有这样的系统;
MIMD:本质上就是为了支持并行的。
因此,在处理并行程序设计的时候,我们其实只要考虑MIMD这类系统就OK了!谢天谢地Orz!!:)
不过别高兴的太早,MIMD也有很多啊,怎么办呢?MIMD分为共享内存和消息驱动(其实就是分布式内存)两种,我们还是从分类上来稍加分析,看看如何处理。
共享内存:所有CPU共内存,所有CPU由一个操作系统控制的,例如Windows和Linux/UNIX,目前流行的多核、多CPU机器都是属于这种;
消息驱动:其实就是分布式内存,CPU由不同的操作系统控制,不同的CPU之间通过网络通信。例如网格Grid是通过因特网通信、集群Cluster是通过局域网通信、MPP是通过专有的高速网络通信。
通过上面的对比,聪明的读者估计很快就想到了这两种系统并行程序实现方式的差异:
共享内存:通过操作系统的多进程多线程来完成并行任务,通过进程间通信来完成协作;
消息驱动:通过多台机器来完成并行任务,通过消息来完成协作。(MPP物理上看是一台机器,逻辑上是多台机器)。
当然,由于消息驱动系统中每个处理单元都是一台独立的机器,对这台独立的机器本身当然也可以通过共享内存来实现并行处理。
嗯,非常不错,经过我们的层层分析和筛选,原来各种各样的看起来很吓人的并行系统,最终被我们归纳总结出两种并行实现技术:多进程多线程、多机协作。
套用侯捷大师的一句话给自己贴点金,正所谓:深入浅出!!
==========================未完待续,后面介绍Window和Linux的多进程多线程===============================
分享到:
相关推荐
2007年"教育部-英特尔精品课程建设项目" 2008年"教育部-IBM精品课程建设项目" CELL处理器、Intel Core 2处理器的并行计算基本原理 ...PCAM并行程序设计方法、程序性能分析与优化基本策略 BSP并行程序模型
多核处理器下并行程序设计探析.pdf
不论对从未接触过并行程序设计的开发人员,还是转型面向多核体系结构进行并行程序设计的开发人员来讲,《多核程序设计技术:通过软件多线程提升性能》都是一本难得的参考书。个人觉得此书比较易懂,适合刚入门的程序...
不论对从未接触过并行程序设计的开发人员,还是转型面向多核体系结构进行并行程序设计的开发人员来讲,《多核程序设计技术:通过软件多线程提升性能》都是一本难得的参考书。个人觉得此书比较易懂,适合刚入门的程序...
《基于多核的并行程序设计》大学课程课件。
一个初学者觉得有用的入门级文档。内容有多线程并行和趋势展望
多核时代下的并行编程(下)-NILabVIEW网络讲坛第三季flv,仅仅凭借自动多线程的特性,还无法充分地利用多核优势,本集中,工程师将详细讲解如何在LabVIEW中实现多核性能的充分利用,包括任务并行化、数据并行化以及...
此资源包含了多核程序设计实验的基本代码,包括课本习题的代码
《多核程序设计》电子教案 本书介绍了多核体系... 本书涵盖了多核软件设计各个方面,通过详细的例子引导读者迅速学习多核平台上的程序设计技术。本书适于计算机相关专业方向的学生与工程师了解多核基础原理与进展。
基于多核CPU的并行程序在指控系统中的应用.pdf
基于多核CPU的并行计算设计.pdf
多核(64核)系统的并行FFT运算程序
多核计算与程序设计
使用设计模式的益处 简化整个开发过程 –更容易理解程序代码 –代码可重用 可靠性 –被使用多年,被证明其“可用并可靠” –大量技术资源与例程
第一个分太高了要50,过分,通过阅读和学习,读者可以掌握基于多种平台(多核、多处理器、集群和GPU等),利用多项技术(Matlab并行计算工具箱、多线程MEX文件、OpenMP和GPU等),学习理解Matlab并行程序设计的原理、...
Intel多核程序设计竞赛第二题:零和(串行代码)Intel多核程序设计竞赛第二题:零和(串行代码)Intel多核程序设计竞赛第二题:零和(串行代码)Intel多核程序设计竞赛第二题:零和(串行代码)Intel多核程序设计...
并行构件技术的出现提高了并行软件的开发效率,但现有的并行构件技术缺乏对异构多核平台的支持。为了提高并行构件程序在异构平台上的执行性能,扩展CCA(通用构件体系结构)并行构件模型支持CCA异构并行构件,提出了...
多核计算与程序设计2
对多核编程和优化技术的现状进行全面的研究和分析,在论述如何将串行程序并行化的同时,分析现今主流的一些多核并行编程工具和模型。在此基础上,进一步讨论了在多核编程过程中影响程序性能的因素,并阐述了软硬件...