当前位置: 首页 > 专利查询>中山大学专利>正文

一种利用MPI的NumPy优化方法及系统技术方案

技术编号:30403939 阅读:21 留言:0更新日期:2021-10-20 10:58
本发明专利技术为克服现有技术中NumPy在集群和多核计算环境下的性能不理想、兼容性差的缺陷,提出一种利用MPI的NumPy优化方法及系统,其根据集群和/或主机中CPU的使用情况,对集群和/或主机中的CPU资源进行分配;采用MPI进行数据交换通信,根据当前两个进程所绑定的CPU核心的物理位置,或根据主机间连接的网络方式,选择当前两个进程之间的通信方式;确定当前计算节点需要并行实现的NumPy方法,选择当前计算节点中NumPy方法的具体实现方式,包括使用线性代数计算库IntelMKL连接NumPy进行并行计算、使用OpenBLAS连接NumPy进行并行计算,或使用Cython进行并行计算。用Cython进行并行计算。用Cython进行并行计算。

【技术实现步骤摘要】
一种利用MPI的NumPy优化方法及系统


[0001]本专利技术涉及计算机并行计算
,更具体地,涉及一种利用MPI的NumPy优化方法及系统。

技术介绍

[0002]NumPy(Numerical Python)是Python语言的一个矩阵及多维数组计算库。它使用C实现各算法中的核心计算部分,使得它的运行效率可以达到编译语言的水平。它还可以通过连接BLAS(Basic Linear Algebra Subprograms,基础线性代数子程序库)与LAPACK(Linear Algebra PACKage,线性数学库)以进一步提升线性代数运算的性能。NumPy的常用领域包括科学计算、机器学习、数据分析、数据可视化等,而这些领域对性能的需求日渐提高,NumPy是一个串行计算的计算库,并行计算是提升NumPy性能的一种有效思路。
[0003]目前应用于提升NumPy性能的方法有CuPy框架、GAiN框架和Dask框架。其中,CuPy是利用Nvidia公司的CUDA(Compute Unified Device Architecture)架构实现利用GPU对NumPy加速的框架,这个框架利用了GPU在矩阵计算时的性能优势,在高吞吐量的场景下获得了良好的性能。不过此框架并未对多核心CPU进行针对性优化,在沒有Nvidia的GPU的情况下并不能获得良好的加速,使用的硬件受到较大的限制。
[0004]GAiN是一个基于以C实现的分布式数组计算框架Global Arrays。由于Global Arrays是针对通用的C数组进行设计的,额外的多层抽象为GAiN带来了大量的额外开销,使得其性能并不理想。
[0005]Dask是一个使用Master/Worker架构对数据进行并行处理的计算框架,其中提供了一组与NumPy基本一致的API(Application Programming Interface,应用程序接口),它主要针对的是数据量比內存空间还要大的应用场景。它在计算节点间只能通过TCP协议(Transmission Control Protocol,传输控制协议)进行数据交换,使得跨节点的数据访问延迟较高。它使用的Master/Worker架构虽然为应用带来了更好的可用性,但也会带来不少的额外开销,而且它并沒有对NumPy实现完整的兼容。

技术实现思路

[0006]本专利技术为克服上述现有技术中NumPy在集群和多核计算环境下的性能不理想、兼容性差的缺陷,提供一种利用MPI的NumPy优化方法,以及一种利用MPI的NumPy优化系统。
[0007]为解决上述技术问题,本专利技术的技术方案如下:
[0008]一种利用MPI的NumPy优化方法,包括以下步骤:
[0009]S1:根据集群和/或主机中CPU的使用情况,对集群和/或主机中的CPU资源进行分配;
[0010]S2:采用MPI进行数据交换通信,根据当前两个进程所绑定的CPU核心的物理位置,或根据主机间连接的网络方式,选择当前两个进程之间的通信方式;
[0011]S3:确定当前计算节点需要并行实现的NumPy方法,选择当前计算节点中NumPy方
法的具体实现方式,包括使用线性代数计算库IntelMKL连接NumPy进行并行计算、使用OpenBLAS连接NumPy进行并行计算,或使用Cython进行并行计算。
[0012]作为优选方案,所述S1步骤中,对集群和/或主机中的CPU资源进行分配的具体步骤包括:
[0013]获取集群和/或主机中CPU的使用情况,在保持使用的NUMA节点数最少的条件下优先选择相对空闲的CPU核心,并将待运行计算的进程绑定在所述相对空闲的CPU核心上。
[0014]作为优选方案,所述进程间的通信方式包括共享内存、RDMA、Socket中的一种。
[0015]作为优选方案,所述S2步骤中,选择当前两个进程之间的通信方式的具体步骤包括:
[0016]获取当前两个进程所绑定的CPU核心的物理位置,判断当前两个进程所绑定的CPU核心是否在同一计算节点:
[0017]若是,则使用共享内存作为通信方式;
[0018]否则进一步判断当前两个进程所绑定的CPU核心所在的两个计算节点间是否使用InfiniBand连接:若是,则使用RDMA作为通信方式,否则使用Socket利用TCP协议作为通信方式。
[0019]作为优选方案,所述S3步骤中,其具体步骤包括:
[0020]S3.1:确定当前计算节点需要并行实现的NumPy方法;
[0021]S3.2:判断所述NumPy方法是否能基于原生NumPy方法利用划分数据进行有效并行,若是,则执行S3.3步骤;否则使用Cython进行并行计算;
[0022]S3.3:判断当前集群和/或主机使用的处理器是否支持线性代数计算库IntelMKL,若是,则选择使用线性代数计算库IntelMKL连接NumPy进行并行计算;否则使用OpenBLAS连接NumPy进行并行计算。
[0023]作为优选方案,所述S3步骤中,还包括以下步骤:判断当前集群和/或主机使用的处理器所使用的指令集是否为ARM架构,若是,则使用ARM架构中的Neon指令集对代码的编译进行优化。
[0024]作为优选方案,采用MPI进行数据交换通信时,采用数据结构形式将多维矩阵数据存储在集群和/或主机的内存中。
[0025]作为优选方案,所述数据结构形式包括分布式多维数组数据结构。
[0026]作为优选方案,采用MPI进行数据交换通信时,使用mpi4py库进行数据交换时的数据序列化。
[0027]本专利技术还提出了一种利用MPI的NumPy优化系统,应用于上述任一技术方案提出的利用MPI的NumPy优化方法,其具体包括:
[0028]CPU核心分配模块,用于根据集群和/或主机中CPU的使用情况,对集群和/或主机中的CPU资源进行分配;
[0029]进程通信方式判定模块,用于选择当前两个进程之间的通信方式;
[0030]底层计算实现选择模块,用于选择程序中函数的具体实现方式,包括使用线性代数计算库IntelMKL连接NumPy进行并行计算、使用OpenBLAS连接NumPy进行并行计算,或使用Cython进行并行计算。
[0031]与现有技术相比,本专利技术技术方案的有益效果是:本专利技术对集群、主机中的CPU资
源进行分配,有效提升NumPy性能;以MPI作为数据通信的实现,提供了一个对现有NumPy程序良好兼容,高性能的NumPy并行版本的实现方式;对进程通信方式、底层计算方式进行选择,能够进一步提高NumPy在集群和多核计算环境下的性能,同时能够实现有效且完整的兼容。
附图说明
[0032]图1为利用MPI的NumPy优化方法的流程图。
[0033]图2为进程间通信方式选择流程示意图。
[0034]图3为底层计算实现选择流程示意图。
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种利用MPI的NumPy优化方法,其特征在于,包括以下步骤:S1:根据集群和/或主机中CPU的使用情况,对集群和/或主机中的CPU资源进行分配;S2:采用MPI进行数据交换通信,根据当前两个进程所绑定的CPU核心的物理位置,或根据主机间连接的网络方式,选择当前两个进程之间的通信方式;S3:确定当前计算节点需要并行实现的NumPy方法,选择当前计算节点中NumPy方法的具体实现方式,包括使用线性代数计算库IntelMKL连接NumPy进行并行计算、使用OpenBLAS连接NumPy进行并行计算,或使用Cython进行并行计算。2.根据权利要求1所述的利用MPI的NumPy优化方法,其特征在于,所述S1步骤中,对集群和/或主机中的CPU资源进行分配的具体步骤包括:获取集群和/或主机中CPU的使用情况,在保持使用的NUMA节点数最少的条件下优先选择相对空闲的CPU核心,并将待运行计算的进程绑定在所述相对空闲的CPU核心上。3.根据权利要求1所述的利用MPI的NumPy优化方法,其特征在于,所述进程间的通信方式包括共享内存、RDMA、Socket中的一种。4.根据权利要求3所述的利用MPI的NumPy优化方法,其特征在于,所述S2步骤中,选择当前两个进程之间的通信方式的具体步骤包括:获取当前两个进程所绑定的CPU核心的物理位置,判断当前两个进程所绑定的CPU核心是否在同一计算节点:若是,则使用共享内存作为通信方式;否则进一步判断当前两个进程所绑定的CPU核心所在的两个计算节点间是否使用InfiniBand连接:若是,则使用RDMA作为通信方式,否则使用Socket利用TCP协议作为通信方式。5.根据权利要求1所述的利用MPI的NumPy优化方法,其特征在于,所述S3步骤中,其具体步骤包括:S3.1:确定当前计算节点需...

【专利技术属性】
技术研发人员:梁嘉迪杜云飞卢宇彤肖侬
申请(专利权)人:中山大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1