适于集群系统的并行程序集成开发系统及其应用实现方法 【技术领域】
本发明涉及一种适于集群系统的分布式并行程序集成开发系统及其应用实现方法。
背景技术
集成开发环境(Integrated Development Environment,IDE)是当前软件工程师进行软件研发的主要工具和手段,它通常集成了编辑器、编译器和调试器,允许软件工程师进行程序源代码的编写、修改、编译和调试。当前市场上有多个广泛使用的集成开发环境,其中有影响力的包括微软公司的Microsoft Visual Studio.Net和开源软件Eclipse。
各类软件可以依据执行方式分为串行程序和并行程序两类:串行程序是指软件或程序在执行过程中由单个进程或线程独自完成所有的计算工作;并行程序是指软件或程序在执行过程中由多个进程或线程协同工作完成计算工作。随着多核处理器和集群(Cluster,即多台计算机通过内部网络互联成一个整体进行计算)的广泛使用,当前并行程序在软件开发中所占比重正逐步增加。
现有的集成开发环境主要针对单台计算机进行工作,即程序的编写、编译和调试等工作均在一台计算机进行,对集群系统下的并行程序开发缺乏良好的支持。最新的Microsoft Visual Studio.Net 2008支持并行程序的开发,但仍然采用一份编译器系统,即实际程序的编译只能在一台计算机完成,编译生成的可执行程序只能在和编译器所在的计算机相同或相近的系统中运行,不具有多平台(如Linux、Unix)等环境的可移植性。
现有的并行程序开发方法有两种:第一种方法是在单机集成开发环境1’,如Microsoft Visual Studio中开发、调试、编译所述的并行程序,生成可执行文件(如图1所示)。但此时生成的可执行文件缺乏多平台环境下的可移植性,并行程序执行需要手工复制单机环境下生成的可执行文件到集群环境2’中,而后才可继续执行。第二种方法是在缺乏单机集成开发环境的情况下,直接在集群环境中开发并行程序,这将导致编译、调试存在一定的困难,虽然开发的程序满足一定的平台移植性,但开发过程和难度都很大。
另外,中国专利申请“三层架构下的集成编译环境的实现方法”(公开号CN101097525)提出了一种三层架构下的集成编译环境的实现方法,其使用XML作为主文件、中间件、主机信息环境变量,利用操作系统的编译器进行编译。但这种技术主要是为了实现对后台程序的集中管理,尤其是复杂应用版本管理等,缺乏对并行程序开发和分布式集群环境的支持。
整体而言,现有的技术和产品大多不支持面向集群环境的并行程序的开发;个别最新产品能够编译生成可运行于集群系统的并行程序,但编译工作仍在单机客户端进行,缺乏集群环境的验证,且生成的目标代码不具备跨操作系统的可移植性。
【发明内容】
本发明的目的在于提供一种适于集群系统的分布式并行程序集成开发系统及其应用实现方法,在所述的并行程序集成开发系统中,通过在个人开发单机端和程序运行的集群服务器端同时建立配置编译和运行环境,能够使得开发的并行程序具有良好的可移植性,并且使得并行程序的开发更为简洁方便。
为达上述目的,本发明提供一种适于集群系统的分布式并行程序集成开发系统,其包括通过以太网连接的单机端的集成开发系统和集群服务器端的集群系统;
所述的单机端的集成开发系统为远程开发,是整个系统的入口,响应各类请求;其包含:并行程序集成开发模块,并行程序开发的中间模块和单机端操作系统;
所述的并行程序集成开发模块进行并行程序代码的编写和调试,获得调试通过的并行程序源代码;
所述的并行程序开发的中间模块包含:分别和并行程序集成开发模块信号连接的通信服务模块、服务配置模块以及远程编译和调试运行模块;
所述的远程编译和调试运行模块将单机端集成开发产生地源代码程序自动传输到远程集群服务器端的集群系统中,在单机端的控制下,在远程集群系统中完成编译及运行;
所述的集群服务器端的集群系统为远程开发代理,包括若干节点和高速网络,所述的节点对并行程序进行远程控制和运行,该节点和节点之间的信息传递通过所述的高速网络完成;
所述的节点为高性能服务器,包含编译器和MPI消息通信库模块;
所述的编译器与单机端集成开发系统中的并行程序集成开发模块无缝集成,可方便地从该并行程序集成开发模块中对源代码进行调用、编译、调试和运行处理,该编译器具备并行集成开发系统的调试和分析功能;
所述的MPI消息通信库模块为并行程序源代码的开发、编译、调试及运行进行优化。
所述的单机端和集群服务器端之间通过标准ftp(File Transfer Protocol,文件传输协议)/sftp(Secure File Transfer Protocol,安全文件传输协议)、telnet(Internet的远程登录协议)以及远程开发协议实现协同工作,进行数据传输。
所述的通信服务模块实现在并行程序开发过程中单机端和集群服务器端之间的远程交互;如实现本地单机端和集群服务器端建立工程的开发模式、远端编译报错信息的本地单机端定位、在本地单机端和集群服务器端制定路径文件的查找和定位、单机端和集群服务器端之间的多重远程动态连接。
所述的服务配置模块中包括和集群服务器端建立连接的配置,以及在并行程序开发过程中支持各个单机端协作开发的配置。
进一步,所述的并行程序开发的中间模块还包括和并行程序集成开发模块信号连接的支持若干软件语言的编辑器,其包含程序模板调用模块、MPI(Message Passing Interface,消息传递接口)库函数调用模块、C库函数调用模块、Fortran库函数调用模块以及其他常用的库函数调用模块;提供简单、易用的代码编辑环境,完成基于C/C++及Fortran语言的并行程序开发。
所述的节点还包含数学函数库模块,包括C库函数调用模块、Fortran库函数调用模块以及其他常用的库函数调用模块,使得编译器支持C、C++、Fotran77和Fortran99的软件语言。
本发明还提供一种适于集群系统的分布式并行程序集成开发系统的实现方法,其包括以下步骤:
步骤1、在单机端的集成开发系统和集群服务器端的集群系统中均建立并配置并行程序编译和运行环境,使得源代码在单机端和集群服务器端具有可移植性;
步骤2、在单机端集成开发系统的并行程序集成开发模块中进行并行程序代码的编写和调试,获得调试通过的并行程序源代码;
步骤3、将步骤2中所得到的并行程序源代码自动传输到集群服务器端;
步骤4、在集群服务器端的集群系统中对所述的并行程序源代码完成编译,最终基于该集群系统生成可执行的并行程序文件。
所述的步骤1中,单机端的集成开发系统的程序编译和运行环境包含远程编译和调试运行模块;所述的集群服务器端的集群系统中的程序编译和运行环境包含编译器和MPI消息通信库模块。
所述的步骤3具体为:单机端的远程编译和调试运行模块将单机端集成开发产生的源代码程序传输到远程集群服务器端集群系统中的编译器中。
所述的步骤4具体包含以下步骤:
步骤4.1、在单机端的控制下,利用通信服务模块,在远程集群系统的编译器中,根据当前系统配置,对并行程序源代码完成编译及运行,并由MPI消息通信库模块进行程序优化,生成可执行的并行程序文件;
步骤4.2、集群服务器端将编译执行后生成的并行程序文件及时发送到单机端,呈现给用户;若编译出错,向单机端提供错误定位信息。
本发明提供的适于集群系统的分布式并行程序集成开发系统及其应用实现方法,具有以下特点:
1、同时在个人开发单机端和集群服务器端配置并行程序的编译环境;
2、个人开发单机端向集群服务器端传输的不是已经编译完成的可执行文件,而是经过调试通过的并行程序源代码;
3、在集群服务器端的集群系统中完成并行程序源代码的最终编译,基于该集群系统生成可执行的并行程序。
本发明提供的集群系统的分布式并行程序集成开发系统及其应用实现方法,具有以下有益效果:
1、由于并行程序源代码的编写和调试是在个人开发单机端完成的,开发者无需考虑集群系统的配置或环境,使得开发和调试更为简洁方便;
2、由于在单机端和集群服务器端传输的是并行程序源代码,而不是可执行程序,这使得整个开发系统具有良好的可移植性,针对使用不同版本操作系统的集群服务器,通过预先配置的编译环境,即可依据单机端开发生成的源代码生成适合当前集群服务器使用的操作系统的可执行文件;
3、通过单机端和集群服务器端之间的通信模块等的设置,可以实现源代码的自动传输和服务器端的自动编译,无需程序开发人员参与,有效提高并行程序开发的效率。
【附图说明】
图1为现有技术中的并行程序开发方法的原理示意图;
图2为本发明提供的适于集群系统的分布式并行程序集成开发系统的示意图;
图3为本发明中的集群服务器端的集群系统的硬件结构图;
图4为本发明提供的适于集群系统的分布式并行程序集成开发系统的应用实现方法的原理示意图。
【具体实施方式】
以下结合图2~图4,详细说明本发明的一种较佳实施方式。
如图2所示,为本发明提供的一种适于集群系统的分布式并行程序集成开发系统,其包括通过100M的以太网3连接的单机端(也称客户端)1的集成开发系统和集群服务器端2的集群系统;
所述的单机端1的集成开发系统为远程开发,是整个系统的入口,响应用户的各类请求;其包含:并行程序集成开发模块11,并行程序开发的中间模块和单机端操作系统13;
所述的并行程序集成开发模块11进行并行程序代码的编写和调试,获得调试通过的并行程序源代码;
所述的并行程序开发的中间模块包含:分别和并行程序集成开发模块11信号连接的通信服务模块121、服务配置模块122以及远程编译和调试运行模块123;
所述的远程编译和调试运行模块123将单机端1集成开发产生的源代码程序自动传输到远程集群服务器端2的集群系统中,在单机端1的控制下,在远程集群系统中完成编译及运行;
所述的单机端操作系统13支持Windows/Linux操作系统;
所述的集群服务器端2的集群系统为远程开发代理,如图3所示,其包括若干节点21和高速网络22,所述的节点21对并行程序进行远程控制和运行,各个节点21之间的信息传递通过所述的高速网络22完成,该高速网络22可以是千兆以太网(Gig-E),或者是Myrinet,或者是InfiniBand;
本实施例中,所述的节点21为超级计算机,支持Linux操作系统,包含编译器211和MPI消息通信库模块212;
所述的编译器211与单机端1集成开发系统中的并行程序集成开发模块11无缝集成,可方便地从该并行程序集成开发模块11中对源代码进行调用、编译、调试和运行处理,该编译器211具备并行集成开发系统的调试和分析功能;
所述的MPI消息通信库模块212为并行程序源代码的开发、编译、调试及运行进行优化,本实施例中,采用MPI库作为MPI消息通信库模块212,其为针对曙光4000A集群系统的通信和消息库测评分析之后,经过优化配置的。
所述的单机端1和集群服务器端2之间通过标准ftp/sftp、telnet以及远程开发协议实现协同工作,进行数据传输。
所述的通信服务模块121实现在并行程序开发过程中单机端1和集群服务器端2之间的远程交互;如实现本地单机端1和集群服务器端2建立工程的开发模式、远端编译报错信息的本地单机端1定位、在本地单机端1和集群服务器端2制定路径文件的查找和定位、单机端1和集群服务器端2之间的多重远程动态连接。
所述的服务配置模块122中包括和集群服务器端建立连接的配置,以及在并行程序开发过程中支持各个单机端1协作开发的配置。
进一步,所述的并行程序开发的中间模块还包括和并行程序集成开发模块11信号连接的支持若干软件语言的编辑器124,其包含程序模板调用模块1241、MPI库函数调用模块1242、C库函数调用模块1243、Fortran库函数调用模块1244以及其他常用的库函数调用模块1245;提供简单、易用的代码编辑环境,完成基于C/C++及Fortran语言的并行程序开发。
所述的节点21还包含数学函数库模块,包括C库函数调用模块、Fortran库函数调用模块以及其他常用的库函数调用模块,使得编译器支持C、C++、Fotran77和Fortran99的软件语言;本实施例中,该数学函数库模块包含Linux标准库213(Linux操作系统自带的编程函数库)和其他常用的库函数调用模块214。
如图4所示,本发明还提供一种适于集群系统的分布式并行程序集成开发系统的应用实现方法,其包括以下步骤:
步骤1、在单机端1的集成开发系统和集群服务器端2的集群系统中均建立并配置并行程序编译和运行环境,使得源代码在单机端1和集群服务器端2具有可移植性;
步骤2、在单机端1集成开发系统的并行程序集成开发模块11中进行并行程序代码的编写和调试,获得调试通过的并行程序源代码;
步骤3、将步骤2中所得到的并行程序源代码自动传输到集群服务器端2;
步骤4、在集群服务器端的集群系统中对所述的并行程序源代码完成编译,最终基于该集群系统生成可执行的并行程序文件。
所述的步骤1中,单机端1的集成开发系统的程序编译和运行环境包含远程编译和调试运行模块123;所述的集群服务器端2的集群系统中的程序编译和运行环境包含编译器211和MPI消息通信库模块212。
所述的步骤3具体为:单机端1的远程编译和调试运行模块123将单机端1集成开发产生的源代码程序传输到远程集群服务器端2集群系统中的编译器211中。
所述的步骤4具体包含以下步骤:
步骤4.1、在单机端1的控制下,利用通信服务模块121,在远程集群系统的编译器211中,根据当前系统配置,对并行程序源代码完成编译及运行,并由MPI消息通信库模块212进行程序优化,生成可执行的并行程序文件;
步骤4.2、集群服务器端2将编译执行后生成的并行程序文件及时发送到单机端2,呈现给用户;若编译出错,向单机端2提供错误定位信息。
本发明提供的适于集群系统的分布式并行程序集成开发系统及其应用实现方法,具有以下有益效果:
1、由于并行程序源代码的编写和调试是在个人开发单机端完成的,开发者无需考虑集群系统的配置或环境,使得开发和调试更为简洁方便;
2、由于在单机端和集群服务器端传输的是并行程序源代码,而不是可执行程序,这使得整个开发系统具有良好的可移植性,针对使用不同版本操作系统的集群服务器,通过预先配置的编译环境,即可依据单机端开发生成的源代码生成适合当前集群服务器使用的操作系统的可执行文件;
3、通过单机端和集群服务器端之间的通信模块等的设置,可以实现源代码的自动传输和服务器端的自动编译,无需程序开发人员参与,有效提高并行程序开发的效率。