CN112764922B - 基于负载均衡的并行序列比对方法、装置和计算机设备 - Google Patents
基于负载均衡的并行序列比对方法、装置和计算机设备 Download PDFInfo
- Publication number
- CN112764922B CN112764922B CN202110037593.9A CN202110037593A CN112764922B CN 112764922 B CN112764922 B CN 112764922B CN 202110037593 A CN202110037593 A CN 202110037593A CN 112764922 B CN112764922 B CN 112764922B
- Authority
- CN
- China
- Prior art keywords
- pointer
- file
- sequence
- cluster
- read
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16B—BIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
- G16B30/00—ICT specially adapted for sequence analysis involving nucleotides or amino acids
- G16B30/10—Sequence alignment; Homology search
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Proteomics, Peptides & Aminoacids (AREA)
- Analytical Chemistry (AREA)
- Biophysics (AREA)
- Chemical & Material Sciences (AREA)
- Health & Medical Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Biotechnology (AREA)
- Evolutionary Biology (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Spectroscopy & Molecular Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种基于负载均衡的并行序列比对方法、装置、计算机设备和存储介质。所述方法包括:通过在集群的每个节点上启动进程,将待比对文件按照文件数据量进行均分,在每个进程上执行等数据量的序列比对,根据集群中进程的编号获取进程对应的读段文件的指针起始位置以及指针结束位置,同时在进程内启动多个线程,对读段文件中的序列进行并行比对,最后将每一个进程输出的序列比对结果进行合并,得到集群上实现的负载均衡的并行序列比对结果。通过本发明的方法可以充分利用计算资源,一方面在多个节点间实现了负载均衡,另一方面通过多进程以及多线程实现并行序列比对,提高了算法的运行效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种基于负载均衡的并行序列比对方法、装置、计算机设备和存储介质。
背景技术
序列比对是生物信息学中最基本也是最重要的操作之一,其根本任务是通过比较生物分子的序列,发现各生物间的相似性以及差异性。通过序列比对,可以发现生物序列中在结构和功能上类似之处,以及生物的遗传和进化信息。
基于哈希索引的序列比对算法通过过滤去除明显不对的位置以减少比对时间,同时通过对参考基因组构建哈希索引来加速子序列比对的过程。
在rHAT、minimap2等算法中已经使用了多线程的方式进行并行加速,其使用Pthread进行多线程操作,但参考基因序列数量级可达十几甚至几十GB,应对突发情况,如新型病毒引发的疫情等,需要在短时间内完成序列的比对,多线程操作进行序列比对仍然需要较长时间。现有技术存在算法运行耗时长,计算资源利用率低的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高计算资源利用率,提高算法效率的基于负载均衡的并行序列比对方法、装置、计算机设备和存储介质。
一种基于负载均衡的并行序列比对方法,所述方法包括:
初始化MPI环境,在集群的每个节点上启动进程并设置进程编号;
通过所述集群中的主节点进程获取参考基因序列以及哈希索引表并广播至集群中的所有从节点,以使从节点进程接收所述参考基因序列和所述哈希索引表;
通过所述主节点进程获取待比对文件的文件大小信息并广播至所有所述从节点,以使所述从节点进程接收所述文件大小信息;
通过所述文件大小信息、所述进程编号以及集群中包含的节点个数,对所述待比对文件按照数据量进行均分,使每个进程确定所处理文件的指针起始位置;根据后一进程的所述指针起始位置或所述待比对文件的文件结束位置确定当前进程的指针结束位置;
对所述指针起始位置和所述指针结束位置进行校正,根据校正后的所述指针起始位置和所述指针结束位置确定每个进程的读段文件,将所述读段文件中的序列进行多线程并行序列比对,得到所述读段文件中包含的序列在所述参考序列中的位置,并将比对结果写入单独文件;
将每个进程输出的所述单独文件合并,得到负载均衡的多进程并行序列比对结果。
在其中一个实施例中,还包括:通过所述文件大小信息、所述进程编号以及集群中包含的节点个数,对所述待比对文件按照数据量进行均分,使每个进程确定所处理文件的指针起始位置为:
startPos=rank×(filesize/N)
其中,startPos表示所述指针起始位置;filesize表示所述文件大小信息;N表示所述集群中包含的节点个数;rank表示所述进程编号,rank=0,1..N-1。
在其中一个实施例中,还包括:当所述进程的所述进程编号为0~N-2时,通过后一进程发送的startPos值,确定所述进程所处理文件的指针结束位置为:
endPos[rank]=startPos[rank+1]
其中,endPos[rank]表示所述进程的指针结束位置;startPos[rank+1]表示所述后一进程发送的startPos值;
当所述进程的所述进程编号为N-1时,确定所述进程所处理文件的指针结束位置为:
endPos[rank]=file_endPos
其中,file_endPos表示所述待比对文件的文件结束位置。
在其中一个实施例中,还包括:将所述进程指针指向所述指针起始位置;
读取所述进程指针指向的位置的一行数据,判断所述数据行首的第一个字符是否为字符@:
当所述第一个字符不是字符@时,将所述进程指针加1,再进行第一个字符的判断,直到所述第一个字符为字符@时,根据字符@的位置校正所述指针起始位置;
当所述第一个字符为字符@时,不需要校正所述指针起始位置;
根据后一进程的所述指针起始位置或所述待比对文件的文件结束位置校正当前进程的指针结束位置;
根据校正后的所述指针起始位置和所述指针结束位置确定每个进程的读段文件,进行序列读取;
将所述读段文件中的序列进行多线程并行序列比对,得到所述读段文件中包含的序列在所述参考序列中的位置,并将比对结果写入单独文件。
在其中一个实施例中,还包括:对所述指针起始位置和所述指针结束位置进行校正,根据校正后的所述指针起始位置和所述指针结束位置确定每个进程的读段文件;
在所述进程中启动多个线程;
多轮读取所述读段文件中的序列,将每一轮读取的序列根据所述进程中启动的线程的数量进行并行比对,得到所述读段文件中包含的序列在所述参考序列中的位置,并将比对结果写入单独文件。
在其中一个实施例中,在通过所述集群中的主节点进程获取参考基因序列以及哈希索引表并广播至集群中的所有从节点,以使从节点进程接收所述参考基因序列和所述哈希索引表之前,还包括:
根据所述参考基因序列得到所述哈希索引表。
在其中一个实施例中,还包括:初始化MPI环境,在集群的每个节点上启动进程;
在所述进程上新建读段信息结构体,包括指针起始位置成员变量和指针结束位置成员变量;
从0开始为所述进程设置进程编号。
一种基于负载均衡的并行序列比对装置,所述装置包括:
MPI环境初始化模块,用于初始化MPI环境,在集群的每个节点上启动进程并设置进程编号;
参考基因序列和哈希索引表广播模块,用于通过所述集群中的主节点进程获取参考基因序列以及哈希索引表并广播至集群中的所有从节点,以使从节点进程接收所述参考基因序列和所述哈希索引表;
文件大小信息广播模块,用于通过所述主节点进程获取待比对文件的文件大小信息并广播至所有所述从节点,以使所述从节点进程接收所述文件大小信息;
指针起始位置和指针结束位置获取模块,用于通过所述文件大小信息、所述进程编号以及集群中包含的节点个数,对所述待比对文件按照数据量进行均分,使每个进程确定所处理文件的指针起始位置;根据后一进程的所述指针起始位置或所述待比对文件的文件结束位置确定当前进程的指针结束位置;
比对结果获取模块,用于对所述指针起始位置和所述指针结束位置进行校正,根据校正后的所述指针起始位置和所述指针结束位置确定每个进程的读段文件,将所述读段文件中的序列进行多线程并行序列比对,得到所述读段文件中包含的序列在所述参考序列中的位置,并将比对结果写入单独文件;
结果合并模块,用于将每个进程输出的所述单独文件合并,得到负载均衡的多进程并行序列比对结果。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
初始化MPI环境,在集群的每个节点上启动进程并设置进程编号;
通过所述集群中的主节点进程获取参考基因序列以及哈希索引表并广播至集群中的所有从节点,以使从节点进程接收所述参考基因序列和所述哈希索引表;
通过所述主节点进程获取待比对文件的文件大小信息并广播至所有所述从节点,以使所述从节点进程接收所述文件大小信息;
通过所述文件大小信息、所述进程编号以及集群中包含的节点个数,对所述待比对文件按照数据量进行均分,使每个进程确定所处理文件的指针起始位置;根据后一进程的所述指针起始位置或所述待比对文件的文件结束位置确定当前进程的指针结束位置;
对所述指针起始位置和所述指针结束位置进行校正,根据校正后的所述指针起始位置和所述指针结束位置确定每个进程的读段文件,将所述读段文件中的序列进行多线程并行序列比对,得到所述读段文件中包含的序列在所述参考序列中的位置,并将比对结果写入单独文件;
将每个进程输出的所述单独文件合并,得到负载均衡的多进程并行序列比对结果。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
初始化MPI环境,在集群的每个节点上启动进程并设置进程编号;
通过所述集群中的主节点进程获取参考基因序列以及哈希索引表并广播至集群中的所有从节点,以使从节点进程接收所述参考基因序列和所述哈希索引表;
通过所述主节点进程获取待比对文件的文件大小信息并广播至所有所述从节点,以使所述从节点进程接收所述文件大小信息;
通过所述文件大小信息、所述进程编号以及集群中包含的节点个数,对所述待比对文件按照数据量进行均分,使每个进程确定所处理文件的指针起始位置;根据后一进程的所述指针起始位置或所述待比对文件的文件结束位置确定当前进程的指针结束位置;
对所述指针起始位置和所述指针结束位置进行校正,根据校正后的所述指针起始位置和所述指针结束位置确定每个进程的读段文件,将所述读段文件中的序列进行多线程并行序列比对,得到所述读段文件中包含的序列在所述参考序列中的位置,并将比对结果写入单独文件;
将每个进程输出的所述单独文件合并,得到负载均衡的多进程并行序列比对结果。
上述基于负载均衡的并行序列比对方法、装置、计算机设备和存储介质,通过在集群的每个节点上启动进程,将待比对文件按照文件数据量进行均分,在每个进程上执行等数据量的序列比对,根据集群中进程的编号获取进程对应的读段文件的指针起始位置以及指针结束位置,同时在进程内启动多个线程,对读段文件中的序列进行并行比对,最后将每一个进程输出的序列比对结果进行合并,得到集群上实现的负载均衡的并行序列比对结果。通过本发明的方法可以充分利用计算资源,一方面在多个节点间实现了负载均衡,另一方面通过多进程以及多线程实现并行序列比对,提高了算法的运行效率。
附图说明
图1为一个实施例中基于负载均衡的并行序列比对方法的流程示意图;
图2为一个实施例中基于负载均衡的并行序列比对装置的结构框图;
图3为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的基于负载均衡的并行序列比对方法,可以应用于如下应用环境中。通过在集群的每个节点上启动进程,将待比对文件按照文件数据量进行均分,在每个进程上执行等数据量的序列比对,根据集群中进程的编号获取进程对应的读段文件的指针起始位置以及指针结束位置,同时在进程内启动多个线程,对读段文件中的序列进行并行比对,最后将每一个进程输出的序列比对结果进行合并,得到集群上实现的负载均衡的并行序列比对结果。
在一个实施例中,如图1所示,提供了一种基于负载均衡的并行序列比对方法,包括以下步骤:
步骤102,初始化MPI环境,在集群的每个节点上启动进程并设置进程编号。
MPI是一个跨语言的通讯协议,用于编写并行计算机,支持点对点和广播。MPI是一个信息传递应用程序接口,包括协议和和语义说明,简而言之,MPI标准定义了一组具有可移植性的编程接口。MPI初始化操作主要就是通过MPI接口函数在集群的每个节点上启动进程并设置进程编号。
本实施例通过集群中的多个节点进行并行序列比对,在各个计算节点内部采用共享内存,在节点间采用分布式内存,可以突破单个计算机处理序列比对的速度上限,充分利用集群中高性能核心的处理能力,实现算法运行速度的提升。
步骤104,通过集群中的主节点进程获取参考基因序列以及哈希索引表并广播至集群中的所有从节点,以使从节点进程接收参考基因序列和哈希索引表。
人类基因组计划1990年正式启动,2003年完成测序工作,解开了人类基因的密码:共有30亿碱基对,25,000个基因。这样就有了参考基因序列。基因组序列在形式上是一个长字符串,必须将其分解成单词,使用k-mers窗口将长字符串框成小的子字符串,不断滑动窗口,记录每个窗口的偏移值,每一个子字符串就是索引。哈希索引基于哈希表实现,只有精确匹配索引所有列的查询才有效。本实施例中,通过参考基因序列得到哈希索引表。
步骤106,通过主节点进程获取待比对文件的文件大小信息并广播至所有从节点,以使从节点进程接收文件大小信息。
本实施例通过文件大小信息将待比对文件按数据量均分,因此通过主节点进程获取待比对文件的文件大小信息并广播至所有从节点,以使从节点进程接收文件大小信息。
步骤108,通过文件大小信息、进程编号以及集群中包含的节点个数,对待比对文件按照数据量进行均分,使每个进程确定所处理文件的指针起始位置;根据后一进程的指针起始位置或待比对文件的文件结束位置确定当前进程的指针结束位置。
进程按照进程编号与拆分的文件对应,即相邻进程所读取文件是连续的。对待比对文件按照数据量进行均分,可以实现各个进程的负载均衡,即处理的读段文件的数据量相当,充分利用各个节点的计算机资源。在现有的多线程并行序列比对技术中,序列的分割是按照序列的条数进行的,但实际运行中,由于序列的长度差异较大,有的序列长度很长,有的很短,把序列的并行比对从多线程扩展到多进程时,如果依然按照序列条数进行工作分割,可能出现由于序列长度不一导致的各个节点负载不均衡的情况。
步骤110,对指针起始位置和指针结束位置进行校正,根据校正后的指针起始位置和指针结束位置确定每个进程的读段文件,将读段文件中的序列进行多线程并行序列比对,得到读段文件中包含的序列在参考序列中的位置,并将比对结果写入单独文件。
由于每个进程中的读段文件依然包含很多条序列,一次性读取对内存造成较大负担,因此可以对读段文件进行多轮读取,在本实施例中,一次读取5000条序列,由进程下启动的多个线程进行并行比对,每个线程一次处理m条序列,m条序列处理完成,线程再继续读取m条序列在线程中进行比对。当5000条序列处理完成,进程再读取5000条序列进行多线程序列比对,直到读段文件中的序列全部比对完成。
步骤112,将每个进程输出的单独文件合并,得到负载均衡的多进程并行序列比对结果。
将每个进程比对的结果输出到对应的单独文件,再对各个单独文件进行合并,由于进程处理的读段文件是连续的,因此按顺序将单独文件合并也是对应序列顺序的,通过这种方式而不是各个进程直接输出到同一个文件,可以避免各个进程输出相互干扰,导致顺序错乱的问题。
上述基于负载均衡的并行序列比对方法中,通过在集群的每个节点上启动进程,将待比对文件按照文件数据量进行均分,在每个进程上执行等数据量的序列比对,根据集群中进程的编号获取进程对应的读段文件的指针起始位置以及指针结束位置,同时在进程内启动多个线程,对读段文件中的序列进行并行比对,最后将每一个进程输出的序列比对结果进行合并,得到集群上实现的负载均衡的并行序列比对结果。通过本发明的方法可以充分利用计算资源,一方面在多个节点间实现了负载均衡,另一方面通过多进程以及多线程实现并行序列比对,提高了算法的运行效率。
在其中一个实施例中,还包括:通过文件大小信息、进程编号以及集群中包含的节点个数,对待比对文件按照数据量进行均分,使每个进程确定所处理文件的指针起始位置为:
startPos=rank×(filesize/N)
其中,startPos表示指针起始位置;filesize表示文件大小信息;N表示集群中包含的节点个数;rank表示进程编号,rank=0,1..N-1。
通过指针的方式可以精准得到每个进程处理文件的起始位置,简单高效。
在其中一个实施例中,还包括:当进程的进程编号为0~N-2时,通过后一进程发送的startPos值,确定进程所处理文件的指针结束位置为:
endPos[rank]=startPos[rank+1]
其中,endPos[rank]表示进程的指针结束位置;startPos[rank+1]表示后一进程发送的startPos值;
当进程的进程编号为N-1时,确定进程所处理文件的指针结束位置为:
endPos[rank]=file_endPos
其中,file_endPos表示待比对文件的文件结束位置。
在其中一个实施例中,还包括:将进程指针指向指针起始位置;读取进程指针指向的位置的一行数据,判断数据行首的第一个字符是否为字符@:当第一个字符不是字符@时,将进程指针加1,再进行第一个字符的判断,直到第一个字符为字符@时,根据字符@的位置校正指针起始位置;当第一个字符为字符@时,不需要校正指针起始位置;根据后一进程的指针起始位置或待比对文件的文件结束位置校正当前进程的指针结束位置;根据校正后的指针起始位置和指针结束位置确定每个进程的读段文件,进行序列读取;将读段文件中的序列进行多线程并行序列比对,得到读段文件中包含的序列在参考序列中的位置,并将比对结果写入单独文件。
均分待比对文件是对待比对文件的粗分割,得到每个节点所处理的读段文件的大致范围,但均分待比对文件得到的指针起始位置不一定是序列的起始位置,需要对指针起始位置进一步校正,进而对指针结束位置进行校正,指针结束位置依然根据后一个节点进程中的指针起始位置得到。通过指针位置的校正确保指针起始位置在序列的起始位置,以及一条序列不会被截断到两个进程。
通过字符的判断,确保指针起始位置为基因序列信息的起始位置。本实施例所处理的是FASTQ文件,字符@是FASTQ文件第一行的第一个字符,字符@后为序列的描述信息,第二行是序列主要内容,第三行开头为“+”,后面一般与第一行序列的描述信息内容相同,可省略,第四行为第二行序列的质量,与第二行序列的数量一致。
在其中一个实施例中,还包括:对指针起始位置和指针结束位置进行校正,根据校正后的指针起始位置和指针结束位置确定每个进程的读段文件;在进程中启动多个线程;多轮读取读段文件中的序列,将每一轮读取的序列根据进程中启动的线程的数量进行并行比对,得到读段文件中包含的序列在参考序列中的位置,并将比对结果写入单独文件。
FASTQ文件中,一条序列占用四行,与序列长度无关。
在具体实施中,设置每轮读取5000条序列,在进程中判断startPos+5000*4是否大于endPos:
当startPos+5000*4<=endPos,进程读入5000条序列,通过进程下的多个线程进行并行比对,并将startPos值加20000;
当startPos+5000*4>endPos,进程读入(endPos-startPos)/4条序列,通过进程下的多个线程进行并行比对。
在其中一个实施例中,在通过集群中的主节点进程获取参考基因序列以及哈希索引表并广播至集群中的所有从节点,以使从节点进程接收参考基因序列和哈希索引表之前,还包括:根据参考基因序列得到哈希索引表。
在其中一个实施例中,还包括:初始化MPI环境,在集群的每个节点上启动进程;在进程上新建读段信息结构体,包括指针起始位置成员变量和指针结束位置成员变量;从0开始为进程设置进程编号。
通过读段信息结构体中的指针起始位置成员变量和指针结束位置成员变量来标记每个进程所处理读段文件的范围。
应该理解的是,虽然图1的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图2所示,提供了一种基于负载均衡的并行序列比对装置,包括:MPI环境初始化模块202、参考基因序列和哈希索引表广播模块204、文件大小信息广播模块206、指针起始位置和指针结束位置获取模块208、比对结果获取模块210和结果合并模块212,其中:
MPI环境初始化模块202,用于初始化MPI环境,在集群的每个节点上启动进程并设置进程编号;
参考基因序列和哈希索引表广播模块204,用于通过集群中的主节点进程获取参考基因序列以及哈希索引表并广播至集群中的所有从节点,以使从节点进程接收参考基因序列和哈希索引表;
文件大小信息广播模块206,用于通过主节点进程获取待比对文件的文件大小信息并广播至所有从节点,以使从节点进程接收文件大小信息;
指针起始位置和指针结束位置获取模块208,用于通过文件大小信息、进程编号以及集群中包含的节点个数,对待比对文件按照数据量进行均分,使每个进程确定所处理文件的指针起始位置;根据后一进程的指针起始位置或待比对文件的文件结束位置确定当前进程的指针结束位置;
比对结果获取模块210,用于对指针起始位置和指针结束位置进行校正,根据校正后的指针起始位置和指针结束位置确定每个进程的读段文件,将读段文件中的序列进行多线程并行序列比对,得到读段文件中包含的序列在参考序列中的位置,并将比对结果写入单独文件;
结果合并模块212,用于将每个进程输出的单独文件合并,得到负载均衡的多进程并行序列比对结果。
指针起始位置和指针结束位置获取模块208还用于通过文件大小信息、进程编号以及集群中包含的节点个数,对待比对文件按照数据量进行均分,使每个进程确定所处理文件的指针起始位置为:
startPos=rank×(filesize/N)
其中,startPos表示指针起始位置;filesize表示文件大小信息;N表示集群中包含的节点个数;rank表示进程编号,rank=0,1..N-1。
指针起始位置和指针结束位置获取模块208还用于根据后一进程的指针起始位置或待比对文件的文件结束位置确定当前进程的指针结束位置:当进程的进程编号为0~N-2时,通过后一进程发送的startPos值,确定进程所处理文件的指针结束位置为:
endPos[rank]=startPos[rank+1]
其中,endPos[rank]表示进程的指针结束位置;startPos[rank+1]表示后一进程发送的startPos值;
当进程的进程编号为N-1时,确定进程所处理文件的指针结束位置为:
endPos[rank]=file_endPos
其中,file_endPos表示待比对文件的文件结束位置。
比对结果获取模块210还用于将进程指针指向指针起始位置;读取进程指针指向的位置的一行数据,判断数据行首的第一个字符是否为字符@:当第一个字符不是字符@时,将进程指针加1,再进行第一个字符的判断,直到第一个字符为字符@时,根据字符@的位置校正指针起始位置;当第一个字符为字符@时,不需要校正指针起始位置;根据后一进程的指针起始位置或待比对文件的文件结束位置校正当前进程的指针结束位置;根据校正后的指针起始位置和指针结束位置确定每个进程的读段文件,进行序列读取;将读段文件中的序列进行多线程并行序列比对,得到读段文件中包含的序列在参考序列中的位置,并将比对结果写入单独文件。
比对结果获取模块210还用于对指针起始位置和指针结束位置进行校正,根据校正后的指针起始位置和指针结束位置确定每个进程的读段文件;在进程中启动多个线程;多轮读取读段文件中的序列,将每一轮读取的序列根据进程中启动的线程的数量进行并行比对,得到读段文件中包含的序列在参考序列中的位置,并将比对结果写入单独文件。
MPI环境初始化模块202还用于在通过集群中的主节点进程获取参考基因序列以及哈希索引表并广播至集群中的所有从节点,以使从节点进程接收参考基因序列和哈希索引表之前,根据参考基因序列得到哈希索引表。
MPI环境初始化模块202还用于初始化MPI环境,在集群的每个节点上启动进程;在进程上新建读段信息结构体,包括指针起始位置成员变量和指针结束位置成员变量;从0开始为进程设置进程编号。
关于基于负载均衡的并行序列比对装置的具体限定可以参见上文中对于基于负载均衡的并行序列比对方法的限定,在此不再赘述。上述基于负载均衡的并行序列比对装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于负载均衡的并行序列比对方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图3中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行计算机程序时实现上述方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种基于负载均衡的并行序列比对方法,其特征在于,所述方法包括:
初始化MPI环境,在集群的每个节点上启动进程并设置进程编号;
通过所述集群中的主节点进程获取参考基因序列以及哈希索引表并广播至集群中的所有从节点,以使从节点进程接收所述参考基因序列和所述哈希索引表;
通过所述主节点进程获取待比对文件的文件大小信息并广播至所有所述从节点,以使所述从节点进程接收所述文件大小信息;
通过所述文件大小信息、所述进程编号以及集群中包含的节点个数,对所述待比对文件按照数据量进行均分,使每个进程确定所处理文件的指针起始位置;根据后一进程的所述指针起始位置或所述待比对文件的文件结束位置确定当前进程的指针结束位置;
对所述指针起始位置和所述指针结束位置进行校正,根据校正后的所述指针起始位置和所述指针结束位置确定每个进程的读段文件,将所述读段文件中的序列进行多线程并行序列比对,得到所述读段文件中包含的序列在所述参考序列中的位置,并将比对结果写入单独文件;
将每个进程输出的所述单独文件合并,得到负载均衡的多进程并行序列比对结果。
2.根据权利要求1所述的方法,其特征在于,通过所述文件大小信息、所述进程编号以及集群中包含的节点个数,对所述待比对文件按照数据量进行均分,使每个进程确定所处理文件的指针起始位置,包括:
通过所述文件大小信息、所述进程编号以及集群中包含的节点个数,对所述待比对文件按照数据量进行均分,使每个进程确定所处理文件的指针起始位置为:
startPos=rank×(filesize/N)
其中,startPos表示所述指针起始位置;filesize表示所述文件大小信息;N表示所述集群中包含的节点个数;rank表示所述进程编号,rank=0,1..N-1。
3.根据权利要求2所述的方法,其特征在于,所述根据后一进程的所述指针起始位置或所述待比对文件的文件结束位置确定当前进程的指针结束位置,包括:
当所述进程的所述进程编号为0~N-2时,通过后一进程发送的startPos值,确定所述进程所处理文件的指针结束位置为:
endPos[rank]=startPos[rank+1]
其中,endPos[rank]表示所述进程的指针结束位置;startPos[rank+1]表示所述后一进程发送的startPos值;
当所述进程的所述进程编号为N-1时,确定所述进程所处理文件的指针结束位置为:
endPos[rank]=file_endPos
其中,file_endPos表示所述待比对文件的文件结束位置。
4.根据权利要求3所述的方法,其特征在于,对所述指针起始位置和所述指针结束位置进行校正,根据校正后的所述指针起始位置和所述指针结束位置确定每个进程的读段文件,将所述读段文件中的序列进行多线程并行序列比对,得到所述读段文件中包含的序列在所述参考序列中的位置,并将比对结果写入单独文件,包括:
将所述进程指针指向所述指针起始位置;
读取所述进程指针指向的位置的一行数据,判断所述数据行首的第一个字符是否为字符@:
当所述第一个字符不是字符@时,将所述进程指针加1,再进行第一个字符的判断,直到所述第一个字符为字符@时,根据字符@的位置校正所述指针起始位置;
当所述第一个字符为字符@时,不需要校正所述指针起始位置;
根据后一进程的所述指针起始位置或所述待比对文件的文件结束位置校正当前进程的指针结束位置;
根据校正后的所述指针起始位置和所述指针结束位置确定每个进程的读段文件,进行序列读取;
将所述读段文件中的序列进行多线程并行序列比对,得到所述读段文件中包含的序列在所述参考序列中的位置,并将比对结果写入单独文件。
5.根据权利要求4所述的方法,其特征在于,对所述指针起始位置和所述指针结束位置进行校正,根据校正后的所述指针起始位置和所述指针结束位置确定每个进程的读段文件,将所述读段文件中的序列进行多线程并行序列比对,得到所述读段文件中包含的序列在所述参考序列中的位置,并将比对结果写入单独文件,包括:
对所述指针起始位置和所述指针结束位置进行校正,根据校正后的所述指针起始位置和所述指针结束位置确定每个进程的读段文件;
在所述进程中启动多个线程;
多轮读取所述读段文件中的序列,将每一轮读取的序列根据所述进程中启动的线程的数量进行并行比对,得到所述读段文件中包含的序列在所述参考序列中的位置,并将比对结果写入单独文件。
6.根据权利要求1所述的方法,其特征在于,在通过所述集群中的主节点进程获取参考基因序列以及哈希索引表并广播至集群中的所有从节点,以使从节点进程接收所述参考基因序列和所述哈希索引表之前,还包括:
根据所述参考基因序列得到所述哈希索引表。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述初始化MPI环境,在集群的每个节点上启动进程并设置进程编号,还包括:
初始化MPI环境,在集群的每个节点上启动进程;
在所述进程上新建读段信息结构体,包括指针起始位置成员变量和指针结束位置成员变量;
从0开始为所述进程设置进程编号。
8.一种基于负载均衡的并行序列比对装置,其特征在于,所述装置包括:
MPI环境初始化模块,用于初始化MPI环境,在集群的每个节点上启动进程并设置进程编号;
参考基因序列和哈希索引表广播模块,用于通过所述集群中的主节点进程获取参考基因序列以及哈希索引表并广播至集群中的所有从节点,以使从节点进程接收所述参考基因序列和所述哈希索引表;
文件大小信息广播模块,用于通过所述主节点进程获取待比对文件的文件大小信息并广播至所有所述从节点,以使所述从节点进程接收所述文件大小信息;
指针起始位置和指针结束位置获取模块,用于通过所述文件大小信息、所述进程编号以及集群中包含的节点个数,对所述待比对文件按照数据量进行均分,使每个进程确定所处理文件的指针起始位置;根据后一进程的所述指针起始位置或所述待比对文件的文件结束位置确定当前进程的指针结束位置;
比对结果获取模块,用于对所述指针起始位置和所述指针结束位置进行校正,根据校正后的所述指针起始位置和所述指针结束位置确定每个进程的读段文件,将所述读段文件中的序列进行多线程并行序列比对,得到所述读段文件中包含的序列在所述参考序列中的位置,并将比对结果写入单独文件;
结果合并模块,用于将每个进程输出的所述单独文件合并,得到负载均衡的多进程并行序列比对结果。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110037593.9A CN112764922B (zh) | 2021-01-12 | 2021-01-12 | 基于负载均衡的并行序列比对方法、装置和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110037593.9A CN112764922B (zh) | 2021-01-12 | 2021-01-12 | 基于负载均衡的并行序列比对方法、装置和计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112764922A CN112764922A (zh) | 2021-05-07 |
CN112764922B true CN112764922B (zh) | 2022-09-16 |
Family
ID=75699759
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110037593.9A Active CN112764922B (zh) | 2021-01-12 | 2021-01-12 | 基于负载均衡的并行序列比对方法、装置和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112764922B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113254241B (zh) * | 2021-06-25 | 2021-09-21 | 中国空气动力研究与发展中心计算空气动力研究所 | 一种应用于cfd高性能计算的数据跨进程传输方法 |
CN113687948B (zh) * | 2021-08-25 | 2023-08-08 | 中国人民解放军国防科技大学 | 面向多核cpu集群系统的水声传播模型混合并行方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8713067B1 (en) * | 2010-07-09 | 2014-04-29 | Open Invention Network, Llc | Stable file system |
CN104239732A (zh) * | 2014-09-24 | 2014-12-24 | 湖南大学 | 一种运行于多核计算机平台的并行通用序列的比对方法 |
CN110070911A (zh) * | 2019-04-12 | 2019-07-30 | 内蒙古农业大学 | 一种基于Hadoop的基因序列并行比对方法 |
CN110299187A (zh) * | 2019-07-04 | 2019-10-01 | 南京邮电大学 | 一种基于Hadoop的并行化基因数据压缩方法 |
-
2021
- 2021-01-12 CN CN202110037593.9A patent/CN112764922B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8713067B1 (en) * | 2010-07-09 | 2014-04-29 | Open Invention Network, Llc | Stable file system |
CN104239732A (zh) * | 2014-09-24 | 2014-12-24 | 湖南大学 | 一种运行于多核计算机平台的并行通用序列的比对方法 |
CN110070911A (zh) * | 2019-04-12 | 2019-07-30 | 内蒙古农业大学 | 一种基于Hadoop的基因序列并行比对方法 |
CN110299187A (zh) * | 2019-07-04 | 2019-10-01 | 南京邮电大学 | 一种基于Hadoop的并行化基因数据压缩方法 |
Non-Patent Citations (1)
Title |
---|
基于集群的MPI主从式并行文件传输系统的研究与实现;龚梅等;《电子技术应用》;20071106(第11期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112764922A (zh) | 2021-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108961052B (zh) | 区块链数据的验证方法、存储方法、装置、设备和介质 | |
CN112764922B (zh) | 基于负载均衡的并行序列比对方法、装置和计算机设备 | |
EP2724278B1 (en) | Methods and systems for data analysis | |
US9929746B2 (en) | Methods and systems for data analysis and compression | |
US20220261384A1 (en) | Biological graph or sequence serialization | |
US20160019339A1 (en) | Bioinformatics tools, systems and methods for sequence assembly | |
WO2015061099A1 (en) | Systems and methods for transcriptome analysis | |
US20160292198A1 (en) | A method of generating a reference index data structure and method for finding a position of a data pattern in a reference data structure | |
CN109712674B (zh) | 注释数据库索引结构、快速注释遗传变异的方法及系统 | |
Frousios et al. | REAL: an efficient REad ALigner for next generation sequencing reads | |
US20100293167A1 (en) | Biological database index and query searching | |
CN111192630A (zh) | 一种宏基因组数据挖掘方法 | |
CN111243666B (zh) | 一种基于Nextflow的环状核糖核酸自动化分析方法及系统 | |
US8340917B2 (en) | Sequence matching allowing for errors | |
Al Junid et al. | Optimization of DNA sequences data to accelerate DNA sequence alignment on FPGA | |
Firtina et al. | BLEND: A fast, memory-efficient, and accurate mechanism to find fuzzy seed matches | |
US20080243840A1 (en) | Comparing data sets through identification of matching blocks | |
US20190205394A1 (en) | Method for generating text string dictionary, method for searching text string dictionary, and system for processing text string dictionary | |
Chen et al. | An FPGA aligner for short read mapping | |
Comin et al. | Comparing, Ranking, and Filtering Motifs with Character Classes: Application to Biological Sequences Analysis | |
Quedenfeld et al. | Variant tolerant read mapping using min-hashing | |
Leung et al. | Algorithms for challenging motif problems | |
CN112783866A (zh) | 数据读取方法、装置、计算机设备和存储介质 | |
Cao et al. | Mining large-scale repetitive sequences in a mapreduce setting | |
Loh et al. | A fast divide-and-conquer algorithm for indexing human genome sequences |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |