CNET中国旗舰网站

ZDNet China | CNET科技资讯网 | 政府采购 | 行业网站联盟





 
标题: [分享] 并行编程之API
chenxiaoming1
高级会员
Rank: 2



UID 255309
精华 4
积分 606
帖子 23
威望 282
ZD币 84 元
阅读权限 50
注册 2007-10-16
状态 离线
  楼主
发表于 2007-11-29 11:45  资料  个人空间  短消息  加为好友 
开发者在线

并行编程之API

我是 James Reinders,现在我们来谈谈一个接口——“消息传递接口”。这是一个 API,用于实现并行性。 消息传递接口通常和超级计算机联系在一起,因此在讨论多核处理器时,您不一定熟悉它,不过我认为这个接口值得研究和理解。 您未必会使用它,但最好知道它是可用的以及它是什么东西。

放眼现在的多核系统,比如 1 个 4 核处理器或 2 个双核处理器,在对其编程时都可以假设每个执行线程、每个处理器对内存都有同等的访问权。因此,处理器 1 能将某些数据写入内存,处理器 4 或线程 4 同样也能访问同一处内存。这就是一种非常简单的模式——共享内存模式。

在这个特定的例子中,我们假定程序运行在 4 个处理器上,所有处理器都将读写内存,各处理器之间都按此方式通信。假设我们以不同的方式构建了 1 台机器,或者我们假定这是 1 台不同的机器,而且我们将各处理器限制为只处理它独占控制的数据,各处理器之间的唯一的通信为消息传递。通常,1 个处理器能和其它任何 1 个处理器或任何处理器组合通信。例如,处理器 2 能传递 1 个消息到处理器 4 等等。

这样一来,可在每个处理器上都运行 1 个线程。这就好比是人们分别呆在相邻的房间中,但是不能像一起坐在同一间房间中的桌旁那样谈话,只能写下想交流的内容,再从门底下互相传递。这种方式限制了正在进行的通信量,但是有 1 个巨大优势。它强制实行问题分解规范,因此问题在各处理器上能很好地运行,并且主要使用本地数据,偶尔才在各处理器之间共享信息。按此方法写成的程序通常扩展性更好。倒不是 MPI(消息传递接口)增强了程序的扩展性,而是按此规范书写程序时,程序的自包含性更高——各处理器均使用本地内存。实际上,无论机器中是否采用和现代机器中四核处理器一样的共享内存型处理器,只要是只使用自有内存区段,就能获得性能提升。

以上是对 MPI 的简单介绍。MPI 有几种简单的调用,比如“MPI_Send”和“MPI_Recv”。当然,您可执行初始化以及其它一些调用操作,不过在调用时,您需要传递此调用、缓冲区、缓冲区长度及其它一些往返共享的参数。某个处理器执行发送操作后,数据就发送到另外一个执行相应接收操作的处理器上,由其接收数据。这在编程实现上并不是非常困难。需要按规范分解程序,而且要在相当低的层次上编程并考虑如何实现并行性,显然不是每个人都适合。不过我认为很重要的一点是要理解消息传递是什么,并知道它是可用的。当然,在我们见到机器变成 8 核及 16 核时,这显然已进入到超级计算机领域,而 MPI 作为传统早已在此领域中广泛使用,将来从 10 核到 1000 核都能很好地适应,事实证明,这是一种非常高效的编程方式。这种编程方式未必有趣,因为需要做大量工作,但是它确实非常高效。

您能从这里获得更多相关信息:www.mpi-forum.org。在这里可以找到有关 MPI 的文档和标准等等。另一个地方就是 Wikipedia。查看 message passing interface 词条或搜索 MPI 即可。您会找到大量信息以及简单的应用程序等。




顶部
热点频道推荐: C/S开发| 数据库| WEB开发| 嵌入式| 项目管理|
喜欢乒乓球
支柱会员
Rank: 10Rank: 10Rank: 10



UID 255435
精华 1
积分 16212
帖子 2488
威望 7476
ZD币 2824 元
阅读权限 210
注册 2007-10-17
状态 离线
  沙发
发表于 2007-12-5 07:05  资料  个人空间  短消息  加为好友 
很实用!支持下!




顶部
热点频道推荐: C/S开发| 数据库| WEB开发| 嵌入式| 项目管理|
东黄龙
支柱会员
Rank: 10Rank: 10Rank: 10



UID 256035
精华 0
积分 13706
帖子 2471
威望 6190
ZD币 2641 元
阅读权限 210
注册 2007-10-20
状态 离线
  板凳
发表于 2007-12-5 07:11  资料  个人空间  短消息  加为好友 
明白了,顶一下哈




顶部
热点频道推荐: C/S开发| 数据库| WEB开发| 嵌入式| 项目管理|
黄龙
支柱会员
Rank: 10Rank: 10Rank: 10



UID 256039
精华 0
积分 13740
帖子 2322
威望 6284
ZD币 2542 元
阅读权限 210
注册 2007-10-20
状态 离线
  地毯
发表于 2007-12-5 07:17  资料  个人空间  短消息  加为好友 
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
顶顶顶顶顶顶 顶顶顶顶顶顶顶顶顶顶 顶顶顶  顶顶顶顶顶
顶顶顶顶顶顶    顶顶顶顶顶顶顶 顶顶顶顶 顶顶顶顶顶
顶顶顶顶顶   顶顶顶顶顶顶顶顶顶 顶顶顶顶  顶顶顶顶
顶顶顶顶  顶顶顶顶顶顶顶顶顶顶顶顶 顶   顶顶 顶顶
顶顶  顶 顶顶顶顶顶顶顶顶顶顶  顶顶顶 顶顶   顶
顶顶顶顶顶 顶顶顶顶顶顶顶顶顶   顶顶顶   顶顶顶顶
顶顶顶顶   顶顶顶顶顶顶顶顶顶顶 顶  顶 顶顶顶顶顶
顶顶顶顶顶顶顶 顶顶顶顶顶顶顶顶顶  顶  顶   顶顶
顶顶   顶  顶顶顶顶顶顶顶顶顶 顶顶顶顶  顶顶顶顶
顶 顶顶   顶顶顶顶顶顶顶顶   顶   顶 顶顶顶顶
顶顶顶顶顶  顶顶顶顶顶顶顶顶 顶  顶顶 顶 顶顶顶顶
顶顶顶顶    顶顶顶顶顶顶 顶顶 顶顶顶顶顶 顶顶顶顶
顶顶顶  顶顶   顶顶顶顶 顶  顶顶 顶顶 顶顶顶顶
顶   顶顶顶顶    顶顶顶顶顶 顶顶顶   顶顶顶顶
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶




顶部
热点频道推荐: C/S开发| 数据库| WEB开发| 嵌入式| 项目管理|
 



当前时区 GMT+8, 现在时间是 2009-1-8 09:22

  Powered by Discuz! 5.5.0 © 2001-2007 Comsenz Inc.
Processed in 0.072242 second(s), 4/3 queries

清除 Cookies - 联系我们 - ZDNetChina中文社区 - 无图版