[发明专利]一种支持多线程调用MPI函数的方法和装置有效
| 申请号: | 201210518573.4 | 申请日: | 2012-12-05 |
| 公开(公告)号: | CN103019844A | 公开(公告)日: | 2013-04-03 |
| 发明(设计)人: | 何锐邦;唐会军 | 申请(专利权)人: | 北京奇虎科技有限公司;奇智软件(北京)有限公司 |
| 主分类号: | G06F9/48 | 分类号: | G06F9/48 |
| 代理公司: | 北京润泽恒知识产权代理有限公司 11319 | 代理人: | 苏培华 |
| 地址: | 100088 北京市西城区新*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 支持 多线程 调用 mpi 函数 方法 装置 | ||
技术领域
本申请涉及测试技术领域,特别是涉及一种支持多线程调用MPI函数的方法和装置。
背景技术
云计算(云计算:一种通过计算机网络以服务的方式提供动态可伸缩的虚拟化的资源的计算模式)程序的种类可分为并行程序无通信类型,和并行程序有通信类型。对于并行程序无通信类型,该计算(通常称为作业)的每个进程(即每个子任务),可以在任何时候启动,不需要和其他子任务同时启动,因为子任务间不需通信,每个子任务处理完自己的计算就可以直接结束。因此云计算平台调度器可以在不同时间调度不同的子任务,处理这种调度需求的调度方式称为任务级调度。对于并行程序有通信类型,由于该计算(即作业)的每个子任务都需要互相通信,因此需要等全部子任务都启动以后,才能开始计算。也即需要云计算平台当前拥有能启动该作业的所有子任务的资源后,才能将这个作业启动,否则,需要等到其他作业计算完毕,释放出足够资源,才能启动该作业。处理这种调度需求的调度方式称为作业级调度。
MPI(Message Passing Interface,讯息传递接口;一种消息传递编程接口,同时提供了实现其一系列接口的多语言函数库)是云计算集群上常用的消息传递机制之一,云计算程序可以使用MPI来进行数据的发送与接收。MPI标准定义了一组函数,使应用程序可以将消息从一个MPI进程送到另一个MPI进程。
对于并行程序有通信类型,现有技术中基本上采用OpenMPI进行各计算节点的进程之间的通信。OpenMPI是一种高性能消息传递库,最初是作为融合的技术和资源从其他几个项目(FT-MPI,LA-MPI,LAM/MPI,以及PACX-MPI),它是MPI-2标准的一个开源实现,由一些科研机构和企业一起开发和维护。因此,OpenMPI能够从高性能社区中获得专业技术、工业技术和资源支持,来创建最好的MPI库。OpenMPI提供给系统和软件供应商、程序开发者和研究人员很多便利。易于使用,并运行本身在各种各样的操作系统,网络互连,以及一批/调度系统。
OpenMPI目前只支持单线程调用,因为在它设计的时候并没有考虑将其运用于多线程环境,一些关键数据结构没有添加多线程访问的保护。如果在不同的线程中调用OpenMPI的函数,会破坏这些关键数据结构,导致OpenMPI内部处理出错,使程序发生异常。
现有技术中,若使用OpenMPI时,每个计算节点只能使用单线程模式,或者使用严格分阶段的程序。其中,严格分阶段模式,会将程序生命周期分为几个阶段,每个阶段做不同的事情。例如分为计算和网络收发阶段,两个阶段不会重叠,即计算阶段时,不会有网络收发调用,集中把数据全部计算完毕(可用多线程来计算);而网络收发阶段时,所有计算线程全部处于阻塞等待状态,由单个网络收发线程来调用OpenMPI函数,将刚刚的计算结果发送到其他机器上,并从其他机器接收它们的计算结果。然后又再次进行计算和网络收发的交替。
而上述两种方式中,单线程模式没有充分利用计算节点可支持多线程进行处理的优点;
而严格分阶段模式,只适合传统的并行计算环境。而在云计算环境下,会有如下缺点:
1、在云计算环境中,往往需要使用多线程来对数据进行更细粒度的切分,并且将计算更充分地并行起来,使得计算和网络能够同时进行,提高程序性能。而严格分阶段程序中计算和网络不能同时进行,并不能完全发挥云计算细粒度、高并行的优势。
2、程序编写者需要时刻记住不能在多个线程使用OpenMPI函数,这对于云计算程序编写者来说,很容易出错,导致程序出现难以察觉的问题。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的多线程调用MPI函数的啧啧啧和相应的支持多线程调用MPI函数的方法。
依据本发明的一个方面,提供了一种支持多线程调用MPI函数的方法,包括:
针对云计算中的一个计算服务器,当所述计算服务器执行一任务时,若所述计算服务器中的线程发送各自的MPI调用请求调用OpenMPI库中的MPI函数,将所述各MPI调用请求进行统一的排序操作;
按所述排序操作后的顺序,逐个调用所述MPI调用请求对应的MPI函数进行操作。
可选的,还包括:
针对OpenMPI库构建一个队列;针对OpenMPI库中的每个MPI函数构建相应的封装函数;所述队列和所述封装函数用于当所述计算服务器执行一任务时,若所述计算服务器中的线程发送各自的MPI调用请求调用OpenMPI库中的MPI函数,将所述各MPI调用请求进行统一的排序操作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京奇虎科技有限公司;奇智软件(北京)有限公司,未经北京奇虎科技有限公司;奇智软件(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210518573.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种搅拌式工业物料加热除杂装置
- 下一篇:一种饲料混合机





