多核时代:并行程序设计探讨(2)——并行实现技术
来源:互联网 发布:东华网络教育平台 编辑:程序博客网 时间:2024/05/20 16:44
并行程序设计探讨(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的多进程多线程===============================
- 多核时代:并行程序设计探讨(2)——并行实现技术
- 多核时代:并行程序设计探讨(1)——并行系统
- 多核时代:并行程序设计探讨(7)——并行编程模式概览
- 多核时代:并行程序设计探讨(3)——Windows和Linux对决(多进程多线程)
- 多核时代:并行程序设计探讨(4)——Windows和Linux对决(进程间通信)
- 多核时代:并行程序设计探讨(5)——Windows和Linux对决(进程间同步)
- 多核时代:并行程序设计探讨(6)——多机协作(又叫分布式处理)
- 多核时代:并行程序设计探讨(8)——任务分解模式Task Decomposition
- 多核时代:并行程序设计探讨(9)——数据分解模式Data Decomposition
- 多核时代:并行程序设计探讨(10)——任务分组模式Group Task Pattern
- 《多核程序设计》学习笔记:冒泡排序的并行实现
- 多核时代的移动开发(二)-水煮并行计算
- 并行多核编程技术 1
- 多核并行计算——并发与并行编程问题
- 多核并行计算时代的来临
- 多核并行计算时代的来临
- 多核并行计算——学习总结
- 多核并行
- another beginning
- HP中国新能源—热能(CPU和GPU热能)产品说明及宣传册!
- ACM第1989题C,C++,Java各程序
- Proteus深入研究(四): SPICE模型
- ubuntu/fedora+hw em660的连接对调日志
- 多核时代:并行程序设计探讨(2)——并行实现技术
- BPMN 2.0虚拟圆桌访谈
- 表达式语言的隐含对象
- 开放式基金和封闭式基金的关系及主要区别
- C和C++中字符数组和布尔型bool问题和Java输入
- 开放式基金和封闭式基金在回报上有什么区别
- 转:090630 欠揍短信加笑话
- 远程连接sql server 2000服务器的解决方案
- 迭代与增量的共性与区别