首页> 中国专利> 基于CPU‑GPU异构复合式并行计算框架的密码子偏差系数模型方法

基于CPU‑GPU异构复合式并行计算框架的密码子偏差系数模型方法

摘要

本发明提供了一种基于CPU‑GPU异构复合式并行计算框架的密码子偏差系数实现方法,包括:在刀片机上建立集群,每台刀片机作为一个节点;并将主节点同时设置为主节点和从节点;搭建CUDA框架环境,并进行网络配置;对提交的批量作业目录进行预处理,拟合输出包含各个待处理任务文件实际HDFS存储位置的任务清单到指定的目录;定义对任务清单的划分规则,并发送到节点中进行处理;获取到单个任务文件的HDFS路径,将其下载到本地节点后,整理为命令请求;并将文件内容和命令请求发送到GPU服务器上;在监控到GPU服务器端计算完成后,将输出文件下载到本地,并上传至HDFS。本发明在批量作业提交情况下实现作业划分、并行处理以及内存计算,提高了密码子偏性算法的效率。

著录项

  • 公开/公告号CN107168795A

    专利类型发明专利

  • 公开/公告日2017-09-15

    原文格式PDF

  • 申请/专利权人 西南大学;

    申请/专利号CN201710332575.7

  • 申请日2017-05-12

  • 分类号

  • 代理机构北京市广友专利事务所有限责任公司;

  • 代理人张仲波

  • 地址 400715 重庆市北碚区天生路2号

  • 入库时间 2023-06-19 03:21:52

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-05-03

    授权

    授权

  • 2017-10-17

    实质审查的生效 IPC(主分类):G06F9/50 申请日:20170512

    实质审查的生效

  • 2017-09-15

    公开

    公开

说明书

技术领域

本发明涉及一种通过建立CPU-GPU异构复合式并行计算框架,优化密码子偏差系数模型效率的方法,属于生物大数据领域。

背景技术

随着生物信息学的发展,人们通过大量研究生物分子信息结构和组织来深度学习基因组遗传信息规律。而随着测序技术的发展创新,如今的第三代测序技术达到了更加准确、快速、低成本的水准。以HISEQ X TEN测序仪为例,其推动了人类在分析遗传信息规律的领域快速进步,但同时也形成了大量基因数据的存储和分析效率问题。

其中有通过数学以及统计学,以改进算法为手段实现提升基因数据分析效率的方法,也有利用GPU图形卡的物理特性,以其强大的高速并行能力来实现计算加速的途径。其中CUDA-C就这两者在一定程度上缓解了大规模生物数据计算的压力,通过支持CUDA的GPU实现针对密码子使用偏性算法(CAT)的单机并行计算,充分利用图形处理的高计算性能,实现200倍加速比。但就目前而言,NCBI、EBI、DDBJ等生物数据库依旧不断地丰富着各个类型的基因数据,数据量的增长似乎并没有停下脚步的趋势。故而在数据分析处理以及数据存储的问题上,我们急需找到新的突破点。

近年来随着网格计算概念的提出以及云计算的实现,该方法在一定程度上可以理解为将分布式集群中软、硬件资源的网络共享。Hadoop作为现如今主流的云计算框架之一,具备高可靠性(按位存储和强大的数据处理能力)、高扩展性(在可用的计算机集簇间分配数据并完成计算任务,这些集簇能够方便的扩展到数以千计的计算节点中,并且针对于集群而言,能够轻易的实现节点数量的扩展)、高效性(能够在集群中动态的移动数据,并且能够有效的保证各个节点的动态平衡)、高容错性(自动保存数据的多个副本以保证数据的安全性和完整性)等优秀的特点。同时Hadoop支持Java、C、C++以及Python等语言进行开发,有着很高的易用性。而对于节点硬件要求的并不高,这使得Hadoop集群的搭建和使用成本也相对较低,在一定程度上提高了性价比。

现有技术中,目前采用的主要方案包括以下几种:

就生物信息学本身而言,研究人员通过数学模型优化了传统算法的适用性问题,并通过其研发的密码子组分分析工具箱CAT对密码子偏差系数模型CDC进行了实现。而后GPU并行加速的研究人员通过NVIDIA公司的CUDA编程模型对上述CAT软件中CDC算法的部分不具备数据依赖关系的模块实现了GPU的并行加速,发布了CDC算法的CUDA优化软件CUDA-CDC。在现有技术中,例如公开号为CN102708088A、CN104536937A、CN104731569A、CN105335135A等中记载的技术方案中,其均是通过设定固定的master和slave节点,搭建结群框架。

现有技术主要存在的缺陷有以下几点:

(1)无法解决当前多任务的串行处理问题。

(2)当前采用的刀片式服务器由于无法安插GPU设备而无法采用CPU、GPU同构模式。

发明内容

有鉴于此,为解决现有技术中存在的上述问题,本发明具体提供了如下技术方案:

本发明提供了一种基于CPU-GPU异构复合式并行计算框架的密码子偏差系数实现方法,其特征在于,所述方法包括如下步骤:

步骤一、在刀片机上建立Hadoop集群,每台刀片机作为一个节点;并将主节点同时设置为主节点和从节点;

步骤二、在塔式服务器上搭建CUDA框架环境,并设置能够与Hadoop集群各个节点实现通信的网络配置;

步骤三、实现预处理模块,对提交的批量作业目录进行预处理,拟合输出包含各个待处理任务文件实际HDFS存储位置的任务清单到指定的目录下;

步骤四、通过MapReduce框架定义对任务清单的划分规则,在主节点启动Map任务,将任务清单中的各个任务获取分片实例,并发送到节点中进行处理;

步骤五、通过Reduce模块的输入获取到单个任务文件的HDFS路径,将其下载到本地节点后,整理为需要在GPU服务器上进行处理的命令请求;并将文件内容和命令请求发送到GPU服务器上后,远程控制命令执行;

步骤六、在监控到GPU服务器端CUDA-CDC程序计算完成后,将指定输出目录下的输出文件下载到本地节点,并上传至HDFS。

优选地,所述步骤二中,所述塔式服务器安装的图形计算卡数量与刀片服务器数量相同。

优选地,所述步骤三中,对批量作业目录进行预处理具体包括:对用户提交至HDFS中的作业文档目录进行遍历,搜寻符合CUDA-CDC输入文件要求的fasta文件,按照文件名每遍历得到一个结果则将文件在HDFS的目录字符串与文件名进行拼接,得到该文件在HDFS存储的完整路径,并将表示完整路径的字符串作为一行记录写入HDFS中的任务清单中。

优选地,该预处理可以详细通过如下方式进行:通过递归算法对用户提交至HDFS中的/input目录下的作业文档目录进行遍历搜寻符合CUDA-CDC输入文件要求的fasta文件,按照文件名每遍历得到一个结果则将文件在HDFS的目录字符串与文件名进行拼接,得到该文件在HDFS存储的完整路径,并将表示完整路径的字符串作为一行记录写入HDFS中的/input目录下的task.txt文件中。以task.txt文件作为TextInputFormat类中的getSplits函数以及createRecordReader函数的输入。

优选地,所述步骤四中,所述划分规则具体为:采用按行划分规则,对所述任务清单中的N行内容创建一个记录,获得所有待处理的HDFS存储位置;所述N为自然数。

优选地,该划分规则可以详细通过如下方式进行:由于task.txt文件中的写入规则是一行记录一个待处理fasta文件的完整HDFS存储路径,因此在划分任务清单文件时,采用TextInputFormat默认的按行划分规则,对每一行内容创建一个RecordReader记录。得到所有的记录即所有待处理fasta文件的HDFS存储位置,以此作为Reduce函数的输入。其他可选的划分规则可以按照不同的系统和集群环境进行设定,如将N行文件内容作为一组记录,采用类似打包的形式将其进行划分,这意味着当Reduce函数在接收到RecordReader时需要串行处理N个文件。

优选地,所述步骤五中,整理为需要在GPU服务器上进行处理的命令请求,具体包括如下步骤:在远程执行命令过程中,定义远程命令执行主机的IP、用户名、密码及完整的命令字符串;对于fasta文件分析命令,通过绝对路径定义软件的名称、输入参数。

优选地,所述步骤五还包括:通过定义相同的输出路径,统计输出文件的位置,以便于分级结果的回收;通过字符串拼接,得到包含绝对路径描述的包含软件信息、输入信息、输出信息的命令行字符串。

优选地,该集群系统结构具体为:包含主节点、从节点以及计算服务节点三个子集群,不同于以往的集群系统,Map端与GPU端不建立通信。而Reduce端与GPU端之间采用JSCH进行通信,将Map端与Reduce端以及GPU端的计算环境彻底分开,进行协同处理。

与现有技术相比,本发明技术方案通过对密码子偏性算法(CAT)以及CUDA环境下实现的密码子偏性算法(CUDA-C)的研究分析,针对多种情况的Hadoop并行任务划分的可行性分析,结合分布式集群环境以及CUDA服务器远程SSH服务,实现对批量作业提交情况下实现作业划分、并行处理以及内存计算,将集群上各个节点的计算和存储资源进行整合,进一步提高了密码子偏性算法的效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1为本发明实施例的集群网络结构图;

图2为本发明实施例的集群框架设计图;

图3为本发明实施例的软件概要设计图;

图4为本发明实施例的数据预处理阶段图;

图5为本发明实施例的CAT框架UML详细设计图;

图6为本发明实施例的第一组数据运行时间折线图;

图7为本发明实施例的第一组数据运行时间比例图;

图8为本发明实施例的第二组数据运行时间折线图;

图9为本发明实施例的第二组数据运行时间比例图。

具体实施方式

下面结合附图对本发明实施例进行详细描述。应当明确,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

本领域技术人员应当知晓,下述具体实施例或具体实施方式,是本发明为进一步解释具体的发明内容而列举的一系列优化的设置方式,而该些设置方式之间均是可以相互结合或者相互关联使用的,除非在本发明明确提出了其中某些或某一具体实施例或实施方式无法与其他的实施例或实施方式进行关联设置或共同使用。同时,下述的具体实施例或实施方式仅作为最优化的设置方式,而不作为限定本发明的保护范围的理解。

实施例1

在一个具体的实施例中,本发明对应的系统可以按照图1图2多系统进行搭建,采用四台Dell M820刀片机独立安装CentOs7操作系统,采用一台AMAX塔式服务器安装4块NVIDIA图形计算卡并配置CUDA环境。后将以上五台刀片机网络配置为相同网段IP以保证其通信正常。随后将4台刀片机分别设置为master、slave1、slave2、slave3。与其余的Hadoop集群相同,将三台slave机器设置为集群从节点,不同的地方在于为了匹配GPU卡的数量,保证多任务并发的过程中,每个GPU资源都被利用起来,将master也写入集群配置的slaves文件中同时作为master和slave使用。

实施例2

本发明设计实现了真实的GPU-CPU异构复合并行计算框架在密码子使用偏性研究领域对密码子偏差系数模型的优化。将需要用到GPU的分布式集群模型扩展到无法在集群节点上直接挂载GPU的设备上,增加了复合集群的适用性。

具体而言,本发明提供了一种新的复合式并行计算框架。通过分布式计算任务划分机制,对用户提交的多个作业进行分布式处理,并在实现分布到各个节点后采用高速网络将任务发送到指定的GPU服务器上,采用CUDA-CDC软件进行单一作业的高效处理。在处理结束之后将数据回收至节点并上传至HDFS。

在一个具体的实施例中,本发明的方法可以具体通过如下的优选方式之一实现,结合图3,示出了本发明实施例1提供的基于GPU-CPU异构复合式并行计算框架的密码子使用偏性算法的实现流程,该方法过程详述如下:

步骤一、在刀片机上建立Hadoop集群,每台刀片机作为一个节点。与常规配置不同的是,将Master同时设置为主节点和从节点,保证在需要的情况下,也能进行分布式任务的处理,将集群的使用率最大化。

在一个具体的实施方式中,在步骤一中,搭建一个计算机集群,包含一个由刀片式服务器组成的Hadoop服务器集群以及一个由塔式服务器组成的GPU服务器集群,GPU服务器数量只有一台,但其中搭载了与刀片式服务器数量相当的GPU图形计算卡。

对于Hadoop服务器集群,其中包含了四台刀片机节点,将其中一台刀片机配置为Master节点,在此同时,将该节点与其余三个节点均配置为Slave节点。各个节点之间都有独立的内存和存储空间。

步骤二、在塔式服务器上搭建CUDA框架环境,并设置能够与Hadoop集群各个节点实现通信的网络配置。

在一个具体的实施方式中,在步骤二中,对各个节点均与GPU服务器建立网络通信通道。示例性的,各节点通过JSCH对GPU服务器实现网络通信以及远程命令控制调用。

需要说明的是,该算法CUDA优化所需的GPU计算资源并不在Hadoop集群中,而是通过远程命令执行的方式,由专有的GPU服务器提供计算。这样设计的好处在于针对Hadoop集群本身,不需要强制性要求硬件环境。将各个阶段模块化后,该程序能通过对远程命令简单修改就能适用于其他计算情况。

步骤三、通过预处理模块,对用户提交的批量作业目录进行预处理,拟合输出包含各个待处理任务文件实际HDFS存储位置的任务清单到指定的目录下。

在一个具体的实施方式中,在步骤三中,选择有筛选的目录遍历算法对用户提交的目录进行遍历,寻找出所有的待处理fasta文件,统一记录到指定的任务清单文件中。示例性的,选用HDFS上的/input/task.txt文件。

具体的预处理,在一个具体实施方式中,通过递归算法对用户提交至HDFS中的/input目录下的作业文档目录进行遍历搜寻符合CUDA-CDC输入文件要求的fasta文件,按照文件名每遍历得到一个结果则将文件在HDFS的目录字符串与文件名进行拼接,得到该文件在HDFS存储的完整路径,并将表示完整路径的字符串作为一行记录写入HDFS中的/input目录下的task.txt文件中。以task.txt文件作为TextInputFormat类中的getSplits函数以及createRecordReader函数的输入。

步骤四、通过MapReduce框架,定义对任务清单的划分规则,在主节点启动Map任务,将任务清单中的各个任务获取分片实例,并发送到节点中进行处理。

在一个具体的实施方式中,在步骤四中,将任务清单文件中的内容进行划分。示例性的,选用TextInputFormat类的按行划分规则,匹配文件中按行记录文件路径及名称的规则。

由于task.txt文件中的写入规则是一行记录一个待处理fasta文件的完整HDFS存储路径,因此在划分任务清单文件时,采用TextInputFormat默认的按行划分规则,对每一行内容创建一个RecordReader记录。得到所有的记录即所有待处理fasta文件的HDFS存储位置,以此作为Reduce函数的输入。其他可选的划分规则可以按照不同的系统和集群环境进行设定,如将N行文件内容作为一组记录,采用类似打包的形式将其进行划分,这意味着当Reduce函数在接收到RecordReader时需要串行处理N个文件。

步骤五、定义Reduce模块。通过该模块的输入获取到单个任务文件的HDFS路径,将其下载到本地节点后,整理为需要在GPU服务器上进行处理的命令请求。并将文件内容和命令请求通过JSCH通信框架发送到GPU服务器上后,远程控制命令执行。

在一个具体的实施方式中,在步骤五中,将划分好的子任务分片输入到Reduce端进行处理。需要说明的是,这里Reduce端接收到的只是需要处理文件的HDFS存储信息,并不是文件本身。这样做的好处是避免了Map端与Reduce端之间过多的大数据传输过程。

Reduce端在接受到分片后,按照文件信息从HDFS上下载至本地节点。需要说明的是:GPU服务器并不与HDFS存在通信,而实际的计算确是在GPU服务器上,因此计算过程中所需的数据内容则需要Slave节点在发送请求的时候自行上传。示例性的,这里采用了JSCH中的SFTP模式上传到GPU服务器上的/home/ezio/Documents/fromNode/input目录下。在数据传输完成后,通过远程命令对数据进行处理。示例性的,选用JSCH中的exe模式进行处理,并等待将执行结果输出到指定目录中。示例性的,选用GPU服务器的本地存储目录/home/ezio/Documents/fromNode/output中。

在调用GPU服务器时采用的是JSCH框架,作为SSH框架的Java实现,JSCH保留了SSH的运行方式。在远程执行命令的过程中,需要定义远程命令执行主机的IP、用户名、密码以及完整的命令字符串。基于CUDA-CDC的fasta文件分析命令按照软件用法,需要通过绝对路径定义软件的名称、输入参数。出上述两项必要内容外,为了方便分析结果的回收,通过定义相同的输出路径统计输出文件的位置。最终按照上述描述,通过字符串拼接得到包含绝对路径描述的包含软件信息、输入信息、输出信息的命令行字符串。

步骤六、在监控到GPU服务器端CUDA-CDC程序计算完成后,将指定输出目录下的输出文件下载到本地节点,并上传至HDFS。

在一个具体的实施方式中,在步骤六中,在输出过程完成之后,slave节点再将结果通过JSCH的SFTP下载至本地存储。下载完成后,通过HDFS的API将结果上传至HDFS存储。

总体而言,如图3所示,整个运算流程划分为了三个阶段,其中预处理阶段的主要任务是将用户上传至HDFS的待处理文件目录进行遍历处理,记录并整理出能够作为Mapper函数输入的任务清单文件。

其次在数据处理阶段,Map端对清单文件进行划分,并将得到的子任务传递给Reduce端。Reduce端在接收到任务文件描述后,按照指示从HDFS上下载文件,并将其发送到GPU服务器上。再根据发送到GPU服务器上的目录位置以及所需的命令执行信息,整理出完整的任务CUDA任务命令,并通过JSCH的EXE模块发送并执行命令。

在数据回收阶段,从指定的GPU服务器路径下载CUDA计算结果,并上传至HDFS。

在又一个具体的实施方式中,图4中描述了整个过程的数据流向。其中待处理的fasta文件从上传至HDFS开始,直到被各个Slave节点分别进行下载,再被传输到GPU服务器为止。

而任务清单文件作为一个中间结果,从主函数被调用开始被建立,之后作为Map端的输入,被分片后流向Slave端为止。

而最后的计算结果文件建立于GPU服务器上,被各个Slave下载后,汇集到HDFS为止。

图5中设计了整个方法框架所需的各个模块。其中最核心的是CAT_Mapper与CAT_Reducer。这两个模块分别实现了任务的划分以及GPU集群调用过程。JSCH模块是通过JschTools类进行实现的,包含了所需要用到的SFTP以及EXE模块的封装实现。ArrangeTaskRequest类主要实现了任务目录的判断和预处理功能。需要说明的是,CAT_Mapper与CAT_Reducer类均被设计成为了CAT的静态内部类。

图6-9分别是两组数据通过两种程序进行计算后的时间记录。其中第一组数据是单个文件大小为11KB左右的十个fasta文件,第二组数据是单个文件大小为3.5KB的fasta文件。四幅图中橙色的记录为经过CUDA优化的密码子使用偏性算法实现程序CUDA-CDC的计算时间结果,蓝色的记录为经过Hadoop和CUDA双重优化后的程序Hadoop-CUDA-CDC。图中的很坐标表示模拟当前用户提交的任务文件数量。

优选地,该集群系统结构具体为:包含主节点、从节点以及计算服务节点三个子集群,不同于以往的集群系统,Map端与GPU端不建立通信。而Reduce端与GPU端之间采用JSCH进行通信,将Map端与Reduce端以及GPU端的计算环境彻底分开,进行协同处理。

由数据可以看出:1、任务文件的大小不影响稳定的加速比;2、当总时间较小时,预处理时间占比较大,复合式程序通过节点并行处理所节约的时间小于了任务划分所占用的预处理时间,导致了加速的负增长。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号