首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

用MCAPI减轻MPI负载

用MCAPI减轻MPI负载

关键字:HPC   MCAPI   MPI  
HPC(高性能计算)要依赖大量计算机去完成繁重的工作。通常是一台计算机作为主控制机,将要处理的数据打碎成一些过程,这些过程可能位于世界任何地方。MPI(消息传送接口)提供一种将数据从某地移至另一地的方式。通常情况下,每台服务器上只要实现一次MPI,就可处理消息的传送。不过,当使用多核服务器时,采用完整的MPI实现可能很昂贵,原因是对一台异步多处理配置的计算机,其每个核都必须运行MPI。另一方面,对计算机上的MPI消息传送,MCAPI(多核通信API)要更有效率,这是一种专门为嵌入式系统设计的协议。
重量级冠军

广为人知的MPI HPC协议有足够的健壮性,能处理动态计算机网络可能遇到的问题。例如,这些网络很少是静止不变的。MPI必须能够处理网络中数量可变的结点,如由于升级、维护以及采购更多台计算机,甚至用户误拔了一根物理网线。即使在服务器数量恒定的情况下,这些服务器运行的处理过程也会在任何时间起动或停止。MPI因此包括了发现网络上成员的能力。

在编程水平上,MPI不表达出计算机或核,它只知道过程(process)。过程在初始化时起动,这个发现机制建立了一个有关过程安排的图像。MPI允许在创建拓扑结构时的灵活性。但当一切都已起动运行时,就可以用一个过程图来交换数据。某个给定的程序可以与一个组内外的某个过程,或一个组中的所有过程交换消息。程序本身并不知道所交流的计算机就在附近,亦或是在另一个大陆。程序并不关心这台运行着与其通信过程的计算机是单核还是多核、同质还是异质、对称还是非对称。它只知道自己想要向某个过程发送一条即时消息,而计算机上的MPI实现必须保证消息能够到达目的过程。



图1


由于对称多核实现架构的同质性,要实现这个目标很简单。一个OS实例可运行在一组核上,将它们作为一组独立资源来管理,一般是将一个过程分布到各个核。一个多线程过程可以充分利用这些核来提高计算性能,而无需做其它工作。

不过,对称多处理开始因多核而陷于停滞,因为增加核会影响对总线与存储器的访问。对于那些设计目标就是尽可能快地解决大问题的计算机,有理由在一个机箱内放入更多的核,但前提是计算机可以有效地使用它们。为避免对称多处理的局限性,可以对多核系统使用非对称多处理方式。

采用非对称多处理时,每个核或每个子核组都运行着自己独立的OS实例,有些甚至根本没有OS,而运行在“裸金属”上。因为一个过程不能分布到一个以上的OS实例,每个OS实例(并且可能每个核)都运行自己的过程。这样,一个对称多处理结构仍然看似一个过程,而非对称多处理则看似很多过程,即使它们有相同过程的多个实例。

采用这种结构时,每个OS都必须运行自己的MPI实例,才能确保网络能表达出其过程,使任何消息都有归属。这种在一个封闭盒子中(甚至在一只芯片中)连接多核的环境要小于MPI必须运行的网络环境。其拥有的资源通常也少于网络。因此,MPI有太多的功能可以实现服务器内的通信。

不同的角色

尽管看起来很相似,但MPI和MCAPI实际上扮演着不同的角色。MPI来自于HPC世界;而MCAPI则来自于嵌入式系统世界。因此它们有不同的特性,包括拓扑结构、耦合与位置、资源及时序等,它们是互补的(表1)。



MPI和MCAPI的比较
返回列表