基于OpenMP 的多机集群并行计算系统架构设计

2022-03-02 12:42李晓琳高献伟韩妍妍
北京电子科技学院学报 2022年4期
关键词:报文服务中心客户端

李晓琳 高献伟 韩妍妍

北京电子科技学院,北京市 100070

引言

进入21 世纪以来,物联网、大数据等信息技术得到迅猛发展,引发重大的技术革新。 同时,信息资源等也变得十分复杂,导致信息化系统不断变得庞大、复杂,随之而来的是海量、巨大的信息量和计算量。 截至当前,数据量已经从TB 跃升到PB、EB 甚至ZB 的级别,数据的爆炸式增长以及其蕴含的巨大价值将对企业未来的发展产生深远的影响,在此背景下,系统对数据的处理规模越来越大,传统的软件计算已经无法满足如此庞大数据处理规模,如何对数据进行快速、高效的处理是未来信息技术发展道路上关注的重点。

随着现代科技和经济的发展,基于多核处理器的高性能计算机出现在许多大型工程、科学实验的研究中,通过网络将大量的服务器连接起来,具有超强的计算能力,能够满足大量计算的需求。 虽然如此,传统的单机串行软件编程方式无法充分利用多核处理器资源,计算机的性能无法得到充分地利用。 应用程序要想充分发挥多核处理器的性能,必须采用并行计算的方式,提高软件系统的运行效率[1]。

近几年来,国外许多高校和科研机构对并行算法进行设计、分析和实现,并在并行优化编译、高性能I/O、通信技术等方面开展研究。 国内一些高校和研究院投入了一些力量开展并行计算软件应用理论和方法的研究,并取得了一定的成果,到目前为止,并行计算技术已经广泛地应用于计算数学、数字模拟、机械制造等领域。

本文基于《天地一体化网络密码按需服务关键技术及系统》,它是《天地一体化网络信息安全保障技术的研究》中的一个子课题,它对天地一体化信息网络中密码资源跨域管理、海量密码数据存储等关键技术进行研究[2]。 由于天地一体化网络具有复杂、多样、异构的特点,并包含多种多样的密码设备和资源,因此产生了海量的数据,如何高效地处理海量的数据成为天地一体化信息网络建设中研究的关键课题之一。

本文根据天地一体化跨域分层密码按需服务的总体技术要求,基于OpenMP 技术开展多核并行程序设计方法的研究,并在此基础上设计了一种多机集群并行计算系统,旨在充分利用计算机性能,提高数据处理和计算的效率,解决天地一体化信息网络对海量数据处理的需求。

1 关键技术研究

1.1 并行计算技术研究现状

目前主流的并行计算技术主要有OpenMP、MPI(信息传递接口)和Spark(计算引擎)技术,针对这几种技术进行了调研分析对比。

(1)OpenMP

OpenMP 是一种基于共享内存多处理器体系结构的多线程并行编程模型,也是在共享存储下编写并行程序的一组API。 OpenMP 的规范由SGI 提出,获得了微软、Sun、Intel、IBM、HP 等软硬件行业巨头的认可和支持,目前支持的语言是C/C++和Fortran。

OpenMP1.0 标准诞生于1997 年。 2005 年,OpenMP 的结构审议会(Architecture Review Board,ARB),推出了OpenMP2.5 标准。 2008年,OpenMP3.0 标准被退出,但目前使用最广泛的还是2.5 标准。

OpenMP 中,CPU 中的多个处理单元(核)共享同一个内存设备,所有的CPU 处理单元访问相同的内存空间地址,这些处理单元通过共享的内存变量进行通信。 OpenMP 编程方式十分方便,现已成为一个工业标准,支持多种平台,包括大多数的类UNIX 系统和几乎所有的Windows NT 系统等。 OpenMP 具有开发简单、抽象度高、通用性好、可扩充性和可移植性强、支持并行的增量开发和数据并行等优点,广泛应用于多核PC 环境下的并行程序设计。

(2)MPI

MPI 是一个库,一种标准或规范的代表,一种消息传递编程模型。 MPI 是目前分布式内存体系结构中开发高性能计算应用的标准。 它支持C,C++和Fortran 语言。 它采用将同一程序运行在众多进程上的方式,这些进程不仅可以处于同一个共享内存架构的计算机中,也可以运行在众多进程上的方式来实现。 每个进程都拥有各自的数据,在不需要通讯时,各个进程异步地运行相同的代码,对不同的数据进行相似的处理,在需要访问其他进程上的数据时,通过MPI 标准中定义的数据通讯函数对数据进行迁移和处理,也可以对操作进行同步[3]。

MPI 是利用集群实现多节点并行计算,通过划分任务进程,达到数据并行处理的目的。 MPI是在网格计算中使用的较为传统并行方法,主要应用在对于通讯效率要求低,通讯数据的数量较小,利用MPI 来进行集群并行计算。 相比于MPI 来说,OpenMP 是运行在进程上的并行处理模式,它将一个进程划分为多个线程并实现线程同步执行,实现可视化的并行处理。

MPI 提供了可移植性、标准化包括点对点消息传递和集体的操作,所有的范围用户指定的组的过程。 MPI 提供了一个实体集编写、调试、测试和性能分步程序库。 MPI 库通常用于并行编程中集群系统,因为它是一个消息传递编程语言。

(3)Spark

美国加州大学伯克利分校AMP 实验室研发了Spark。 Spark 的性能可以超过Hadoop10 倍以上。 Spark 是基于Hadoop 的,并且构建在HDFS之上,同时保留了MapReduce 的可扩展性和容错性,但是,Spark MapReduce 不完全等同于Hadoop MapReduce。 Spark 主要由两部分组成:第一部分是有很多执行器的调度器,它可以进行任务调度、任务监控以及故障处理。 第二部分是执行器,执行实际的计算和数据处理任务[4]。

Hadoop MapReduce 是一种大规模数据处理的并行计算模型。 Hadoop 是一个Master--Slave架构模式,由一台主节点和若干台Slave 节点组成。 其中主节点负责管理和监控各个Slave 节点的任务执行情况,包含一个Master 服务Job-Tracker(作业服务器)用于接收Job,它的任务是将作业分配给等待的节点。 Slave 节点负责具体的任务执行,包含一个Slave 服务TaskTrack(任务服务器),它负责与JaoTracker 通信并接收作业,再根据每个节点的拆分数据,进行Map 和Reduce。 每个Slave 节点是并行执行,提高了计算效率。 简单而言可以将MapReduce 编程模型抽象成“Map(映射)”和“Reduce(化简)”两个过程,Hadoop MapReduce 计算模式的流程图见图1[5-6]。

图1 Hadoop MapReduce 计算模式的流程图

具体过程为:程序从分布式文件系统读入大数据集,并切分为Split(分片),Map 函数处理Split 并输出中间结果,通过Shuffle 把中间结果分区排序整理后发送给Reduce 函数,Reduce 完成具体计算任务并将最终结果写入文件系统。

1.2 技术可行性分析

OpenMP 集成在C++中,与系统适配性好,开发简单,对软件系统改造十分方便,可移植性强,但是OpenMP 只支持单机并行计算,而且通过线程实现通信,多线程间资源共享;MPI 支持多机并行计算,通过进程实现并行计算,具备资源隔离特点;但是通讯效率要求低,通迅数据量较小;Spark 支持多机并行计算,可抗展性和容错能力强,但是计算性能有待提高。

通过综合分析,OpenMP、MPI、Spark 都能够实现并行计算,但是均不满足海量数据的处理和计算的需求。 在天地一体化网络中,网络之间的数据通信量在百兆以上,而且数据的种类多,MPI 和Spark 技术均无法实现,因此,在单机OpenMP 并行计算的基础上开展多机集群并行计算架构设计,既能够满足大数据通信,又能够保证计算性能。

2 平台架构设计

2.1 总体架构设计

并行集群计算系统可部署在普通计算机或服务器上,支持在多种架构CPU、多种操作系统上运行,并行计算系统由并行计算服务中心、计算节点和客户端模块组成[7-8]。 本文中,在传统单机OpenMP 并行计算的基础上,扩展了多个计算节点,通过统一的计算服务中心控制,开展多机集群计算。 并行计算系统中只有一个计算服务中心,可以有多个计算节点,每个计算节点中包含计算程序,负责具体的计算任务,在计算程序中增加OpenMP 指令设置,运行中支持多核多线程并行计算。 计算服务中心负责接收客户端发起的计算请求,通过监控各计算节点的工作状态向计算节点分配计算任务,各节点完成计算任务后,将计算结果发送到计算服务中心,所有的计算结果数据整理后,发送给客户端。 客户端、并行计算服务中心、计算节点间采用TCP 和UDP 通信。 并行计算系统总体架构见图2。

图2 并行计算系统总体架构图

计算服务中心可以为多个计算用户服务,计算用户通过配置集群服务地址获取计算服务心跳报文,从中得到TCP 通信网址和端口号,使用TCP 通信方式加入计算服务中心,通过已经建立的TCP 通信链路向并行计算服务中心发送计算请求报文,计算服务中心完成计算后,通过TCP 通信链路向计算用户发送计算结果报文。计算服务中心可以控制多个计算节点进行计算,每个计算节点以UDP 组播的方式向指定组播地址发送计算节点状态报文,计算服务中心通过该报文掌握各个计算节点的工作状态,同时计算节点与计算服务中心建立TCP 通信链路,计算服务中心通过该TCP 通信链路向计算节点发送计算命令报文,计算节点接收到计算命令报文后,开始进行计算,完成计算后,通过TCP 通信链路向计算服务中心发送计算结果报文。

2.2 计算服务中心设计

计算服务中心由计算服务分配处理模块、显示控制模块、计算服务状态发布模块、计算节点状态监控模块、计算用户通信服务、计算节点通信服务6 部分组成。 计算服务中心组成关系如图3 所示。

图3 计算服务中心组成关系图

计算服务分配处理模块实现计算服务计算量评估、计算服务管理、计算节点计算结果管理、计享节点异常监控及处理等功能。 计算服务分配处理模块接收到计算用户的请求后,进行计算服务计算量评估,再根据当前计算节点状态,向计算节点发送计算命令,等待收集到完整的计算节点数据后,整理计算结果,通过计算用户通信服务将计算结果发送给计算用户。

显示控制模块实现并行计算服务中心启动/停上控制、实时显示计算节点工作状态,实时显示计算服务状态等功能。

计算服务状态发布模块实现计算服务通信参数发布、计算节点通信参数发布等功能。

计算节点状态监控模块实现UDP 组播通信初始化、计算节点状态监控处理等功能。

计算用户通信服务实现TCP 通信初化、TCP通信服务管理、TCP 数据接收处理、TCP 数据发送处理等功能。

计算节点通信服务实现TCP 通信初始化、TCP 通信服务管理、TCP 数据接收处理、TCP 数据发送处理等功能。

2.3 计算节点设计

计算节点有计算节点通信参数处理模块、通信处理模块、计算处理模块、显示控制模块、计算节点状态处理模块5 部分组成。 计算节点组成关系图见图4。

图4 计算节点组成关系图

计算节点通信参数处理模块在程序初始化的时候,加入指定UDP 组播地址,接收计算服务中心心跳报文,获取计算节点TCP 通信参数供通信处理模块使用。

通信处理模块根据结算节点通信参数处理模块提供的TCP 通信参数初始化TCP 通信链路,在整个程序运行过程中,负责TCP 通信数据接收、数据发送的处理。

计算处理模块实现计算机多核状态监控、单机并行计算处理等功能。

显示控制模块实现计算机多核状态监控显示、计算状态显示等功能。

计算节点状态处理模块实现计算节点状态UDP 组播发送功能。

2.4 客户端模块设计

客户端模块由计算服务通信参数处理模块、通信处理模块、计算服务处理模块组成。 客户端模块组成关系图见图5。

图5 客户端模块组成关系图

计算服务通信参数处理模块在程序初始化的时候,加入指定UDP 组播地址,接收计算服务心跳报文,获取计算用户的TCP 通信参数供通信处理模块使用。

通信处理模块根据计算服务通信参数处理模块提供的TCP 通信参数初始化TCP 通信链路,在整个程序运行过程中,负责TCP 通信数据接收、数据发送的处理。

计算服务模块为应用程序提供计算输入、输出接口。

3 系统验证

(1)测试环境

本文中使用单台高性能计算机进行测试,计算机性能指标如下:

CPU:Inter Xeon E5-2640 @2.4GHz(双处理器40 核)

内存:64G

操作系统:Windows7 64 位

(2)测试方法

编写测试程序对10000 个随机整数进行冒泡排序,分别计算1 次、2 次、4 次、8 次、24 次、40次,计算过程中分别设置1 核、2 核、4 核、8 核、24 核、40 核并行计算,每组测试进行3 次,取运行结果的平均值。

(3)测试结果

测试结果如表1 所示。

表1 单机计算时间测试结果

由测试数据可以看出,通过应用并行计算技术,用40 核同时对测试程序计算40 次,平均用时2.859s,相比于非并行的49.26:速率提高了17.23 倍。 通过使用不同核数对同一测试程序进行测试,发现随着使用核数的增加,与提升运算效率的倍数并不是线性关系,由于存在多核并行分配处理、数据回收处理,使用核数越多,多核并行分配处理、数据回收处理占用的时间比重就越多,因此,在并行计算设计过程中,应根据具体的数据处理需求分配计算核数,以达到最优的效率。

目前OpenMP 并行计算大多使用单机运行,从理论上分析如果能够使用多台计算机同时进行计算,将多计算任务进行分发处理,能够使计算效率得到进一步提升。 本次测试验证仅使用单台计算机进行测试,后续将针对多台计算机进行补充研究测试。

4 结束语

本文针对天地一体化信息网络对大数据计算处理的需求,开展多机集群并行计算架构设计,对OpenMp、MPI 和Spark 技术进行调研分析,设计了一种基于OpenMP 的多机集群并行计算系统,并通过试验验证对并行计算的性能进行测试,试验表明该应用了并行计算系统,使计算速度提升了十几倍,有效提高了数据计算和处理效率,可广泛应用于天地一体化信息网络中大数据的处理和计算。

猜你喜欢
报文服务中心客户端
基于J1939 协议多包报文的时序研究及应用
队旗在党群服务中心飘扬
中证法律服务中心调解程序知多少
CTCS-2级报文数据管理需求分析和实现
股东大会知多少
如何看待传统媒体新闻客户端的“断舍离”?
浅析反驳类报文要点
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路