CN110428872B - 一种基因比对指令集的转换方法及装置 - Google Patents
一种基因比对指令集的转换方法及装置 Download PDFInfo
- Publication number
- CN110428872B CN110428872B CN201910919907.0A CN201910919907A CN110428872B CN 110428872 B CN110428872 B CN 110428872B CN 201910919907 A CN201910919907 A CN 201910919907A CN 110428872 B CN110428872 B CN 110428872B
- Authority
- CN
- China
- Prior art keywords
- instruction
- converted
- instruction set
- acceleration
- accelerated
- 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
- 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
- Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Chemical & Material Sciences (AREA)
- Analytical Chemistry (AREA)
- Biophysics (AREA)
- Proteomics, Peptides & Aminoacids (AREA)
- Health & Medical Sciences (AREA)
- Engineering & Computer Science (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)
- Theoretical Computer Science (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供一种基因比对指令集的转换方法及装置,该方法为:获取适用于计算机的第一基因比对指令集;确定第一基因比对指令集中所包括的指令集;根据预设的指令转换数据库,将第一基因比对指令集中的指令转换为用于加速执行基因比对算法的第二指令,利用第二指令构成第二基因比对指令集,将第二基因比对指令集下发至多核ARM芯片,使多核ARM芯片基于第二基因比对指令集加速运行基因比对算法。本方案中,利用预设的指令转换数据库,将适用于计算机中的第一基因比对指令集转换为第二基因比对指令集,将第二基因比对指令集下发至多核ARM芯片中。利用多核ARM芯片完成基因比对,提高基因比对的速度、便利度和降低能耗。
Description
技术领域
本发明涉及数据处理技术领域,具体涉及一种基因比对指令集的转换方法及装置。
背景技术
随着基因测序技术的不断发展,各种用于基因测序分析的软件被开发出来,并被广泛应用。
在进行基因测序分析的时候,首先使用测序仪进行基因测序,再使用相应的软件进行基因比对,得到相应的基因比对结果。目前,用于基因比对的软件都应用于个人计算机(personal computer,PC)上,而由于PC机体积庞大和耗能大,导致在很多应用场景中无法携带和使用PC机完成基因比对。例如:对于研究人员去往基础交通欠发达的地方或雨林深处进行科学研究,携带体积过大的PC机和电源负担较大,影响科学研究的进程。
发明内容
有鉴于此,本发明实施例提供一种基因比对指令集的转换方法及装置,以解决PC机携带不便和能耗大,导致在很多应用场景中无法携带和使用PC机完成基因比对的问题。
为实现上述目的,本发明实施例提供如下技术方案:
本发明实施例第一方面公开一种基因比对指令集的转换方法,所述方法包括:
获取第一基因比对指令集,所述第一基因比对指令集适用于计算机;
确定所述第一基因比对指令集中所包括的指令集,所述第一基因比对指令集中至少包括第一处理优先级的指令集和第二处理优先级的指令集中的一种指令集,所述第一处理优先级的指令集至少包括SSE指令集和AVX指令集中的一种指令集,所述第二处理优先级的指令集至少包括包含浮点计算程序和矩阵计算程序的待转换指令集,所述SSE指令集和AVX指令集的处理优先级高于所述待转换指令集的处理优先级;
若所述第一基因比对指令集中包括所述第一处理优先级的指令集和所述第二处理优先级的指令集,或者仅包括所述第一处理优先级的指令集时,确定预设指令转换数据库中与所述第一处理优先级的指令集中每一第一指令对应的第二指令,并基于查找到所述第二指令,将对应的所述第一指令转换成用于加速执行基因比对算法的第二指令,所述指令转换数据库中预先存储有可转换为所述第一指令的第二指令,所述第二指令适用于多核ARM芯片;
利用所述第二指令构成第二基因比对指令集;
若所述第一基因比对指令集中仅包括所述第二处理优先级的指令集时,计算所述第二处理优先级的指令集的第一运算量,以及所述第一基因比对指令集中的第一指令转换为所述第二指令后的第二运算量,并比较所述第一运算量和所述第二运算量的大小;
若所述第二运算量大于所述第一运算量,利用所述第二指令构成第二基因比对指令集;
将所述第二基因比对指令集下发至多核ARM芯片,使所述多核ARM芯片基于所述第二基因比对指令集加速运行基因比对算法。
优选的,所述获取第一基因比对指令集,包括:
获取未加速的基因比对算法指令集。
优选的,若所述第一处理优先级的指令集包括SSE指令集,所述确定预设指令转换数据库中与所述第一处理优先级的指令集中每一第一指令对应的第二指令,并基于查找到所述第二指令,将对应的所述第一指令转换成用于加速执行基因比对算法的第二指令,包括:
获取SSE指令集中当前待转换的未加速SSE指令;
确定第一指令转换数据库中是否存在与所述当前待转换的未加速SSE指令对应的第一NEON加速指令,所述第一指令转换数据库中包括:SSE指令与第一NEON加速指令的对应关系;
若存在,将所述当前待转换的未加速SSE指令转换成第一NEON加速指令,获取下一待转换的未加速SSE指令并返回确定所述第一指令转换数据库这一步骤;
若不存在,确定所述第一指令转换数据库中是否存在由多条第一NEON加速指令构成的第一加速函数,所述第一加速函数与所述当前待转换的未加速SSE指令的功能一致;
若存在所述第一加速函数,将所述当前待转换的未加速SSE指令转换成所述第一加速函数,获取下一待转换的未加速SSE指令并返回确定所述第一指令转换数据库这一步骤;
若不存在所述第一加速函数,从预设的经验数据库中获取与所述当前待转换的未加速SSE指令对应的第二NEON加速指令,或者,创建新的第二NEON加速指令;
将同一数据分别输入所述当前待转换的未加速SSE指令和第二NEON加速指令,得到第一执行结果和第二执行结果;
确定所述第一执行结果与第二执行结果之间的误差是否在预设范围内;
若在预设范围内,将所述当前待转换的未加速SSE指令转换成所述第二NEON加速指令,获取下一待转换的未加速SSE指令并返回确定所述第一指令转换数据库这一步骤;
若不在预设范围内,将所述当前待转换的未加速SSE指令转换成C语言指令,获取下一待转换的未加速SSE指令并返回确定所述第一指令转换数据库这一步骤。
优选的,若所述第一处理优先级的指令集包括AVX指令集,所述查找预设指令转换数据库中与所述第一处理优先级的指令集中每一第一指令对应的第二指令,并基于查找到所述第二指令,将对应的所述第一指令转换成用于加速执行基因比对算法的第二指令,包括:
获取AVX指令集中当前待转换的未加速AVX指令;
确定第二指令转换数据库中是否存在与所述当前待转换的未加速AVX指令对应的第三NEON加速指令,所述第二指令转换数据库中包括:AVX指令与第三NEON加速指令的对应关系;
若存在,将所述当前待转换的未加速AVX指令转换成所述第三NEON加速指令,获取下一待转换的未加速AVX指令并返回确定所述第二指令转换数据库这一步骤;
若不存在,确定所述第二指令转换数据库中是否存在由多条第三NEON加速指令构成的第二加速函数,所述第二加速函数与所述当前待转换的未加速AVX指令的功能一致;
若存在所述第二加速函数,将所述当前待转换的未加速AVX指令转换成所述第二加速函数,获取下一待转换的未加速AVX指令并返回确定所述第二指令转换数据库这一步骤;
若不存在所述第二加速函数,将所述当前待转换的未加速AVX指令转换成C语言指令,获取下一待转换的未加速AVX指令并返回确定所述第二指令转换数据库这一步骤。
优选的,所述计算所述第二处理优先级的指令集的第一运算量,以及所述第一基因比对指令集中的第一指令转换为所述第二指令后的第二运算量,并比较所述第一运算量和所述第二运算量的大小,包括:
获取所述待转换指令集的第一运算量和拥有NEON的ARM核心数;
基于第三指令转换数据库,将所述待转换指令集转换成NEON指令集,所述第三指令转换数据库中包括:所述待转换指令集的每一待转换指令与NEON指令的对应关系;
分别确定所述NEON指令集的矩阵运算量和浮点运算量;
基于所述ARM核心数、矩阵运算量和浮点运算量,确定所述NEON指令集的第二运算量;
比较所述第一运算量和所述第二运算量的大小。
本发明实施例第二方面公开一种基因比对指令集的转换装置,所述装置包括:
获取单元,用于获取第一基因比对指令集,所述第一基因比对指令集适用于计算机;
确定单元,用于确定所述第一基因比对指令集中所包括的指令集,所述第一基因比对指令集中至少包括第一处理优先级的指令集和第二处理优先级的指令集中的一种指令集,所述第一处理优先级的指令集至少包括SSE指令集和AVX指令集中的一种指令集,所述第二处理优先级的指令集至少包括包含浮点计算程序和矩阵计算程序的待转换指令集,所述SSE指令集和AVX指令集的处理优先级高于所述待转换指令集的处理优先级;
第一转换单元,用于若所述第一基因比对指令集中包括所述第一处理优先级的指令集和所述第二处理优先级的指令集,或者仅包括所述第一处理优先级的指令集时,确定预设指令转换数据库中与所述第一处理优先级的指令集中每一第一指令对应的第二指令,并基于查找到所述第二指令,将对应的所述第一指令转换成用于加速执行基因比对算法的第二指令,所述指令转换数据库中预先存储有可转换为所述第一指令的第二指令,所述第二指令适用于多核ARM芯片;
构建单元,用于利用所述第二指令构成第二基因比对指令集;
处理单元,用于若所述第一基因比对指令集中仅包括所述第二处理优先级的指令集时,计算所述第二处理优先级的指令集的第一运算量,以及所述第一基因比对指令集中的第一指令转换为所述第二指令后的第二运算量,并比较所述第一运算量和所述第二运算量的大小;
第二转换单元,用于若所述第二运算量大于所述第一运算量,利用所述第二指令构成第二基因比对指令集;
下发单元,用于将所述第二基因比对指令集下发至多核ARM芯片,使所述多核ARM芯片基于所述第二基因比对指令集加速运行基因比对算法。
优选的,所述获取单元具体用于获取未加速的基因比对算法指令集。
优选的,若所述第一处理优先级的指令集包括SSE指令集,所述第一转换单元包括:
第一获取模块,用于获取SSE指令集中当前待转换的未加速SSE指令;
第一确定模块,用于确定第一指令转换数据库中是否存在与所述当前待转换的未加速SSE指令对应的第一NEON加速指令,若存在,执行第一转换模块,若不存在,执行第二转换模块,所述第一指令转换数据库中包括:SSE指令与第一NEON加速指令的对应关系;
所述第一转换模块,用于将所述当前待转换的未加速SSE指令转换成第一NEON加速指令,获取下一待转换的未加速SSE指令并返回执行所述第一确定模块;
所述第二转换模块,用于确定所述第一指令转换数据库中是否存在由多条第一NEON加速指令构成的第一加速函数,所述第一加速函数与所述当前待转换的未加速SSE指令的功能一致;
第三转换模块,用于若存在所述第一加速函数,将所述当前待转换的未加速SSE指令转换成所述第一加速函数,获取下一待转换的未加速SSE指令并返回执行所述第一确定模块;
处理模块,用于若不存在所述第一加速函数,从预设的经验数据库中获取与所述当前待转换的未加速SSE指令对应的第二NEON加速指令,或者,创建新的第二NEON加速指令;
输入模块,用于将同一数据分别输入所述当前待转换的未加速SSE指令和第二NEON加速指令,得到第一执行结果和第二执行结果;
第二确定模块,用于确定所述第一执行结果与第二执行结果之间的误差是否在预设范围内;
第四转换模块,用于若在预设范围内,将所述当前待转换的未加速SSE指令转换成所述第二NEON加速指令,获取下一待转换的未加速SSE指令并返回执行所述第一确定模块;
第五转换模块,用于若不在预设范围内,将所述当前待转换的未加速SSE指令转换成C语言指令,获取下一待转换的未加速SSE指令并返回执行所述第一确定模块。
优选的,若所述第一处理优先级的指令集包括AVX指令集,所述第一转换单元包括:
第二获取模块,用于获取AVX指令集中当前待转换的未加速AVX指令;
第三确定模块,用于确定第二指令转换数据库中是否存在与所述当前待转换的未加速AVX指令对应的第三NEON加速指令,若存在,执行第六转换模块,若不存在,执行第四确定模块,所述第二指令转换数据库中包括:AVX指令与第三NEON加速指令的对应关系;
第六转换模块,用于将所述当前待转换的未加速AVX指令转换成所述第三NEON加速指令,获取下一待转换的未加速AVX指令并返回执行所述第三确定模块;
第四确定模块,用于确定所述第二指令转换数据库中是否存在由多条第三NEON加速指令构成的第二加速函数,所述第二加速函数与所述当前待转换的未加速AVX指令的功能一致;
第七确定模块,用于若存在所述第二加速函数,将所述当前待转换的未加速AVX指令转换成所述第二加速函数,获取下一待转换的未加速AVX指令并返回执行所述第三确定模块;
第八确定模块,用于若不存在所述第二加速函数,将所述当前待转换的未加速AVX指令转换成C语言指令,获取下一待转换的未加速AVX指令并返回执行所述第三确定模块。
优选的,所述处理单元包括:
获取模块,用于获取所述待转换指令集的第一运算量和拥有NEON的ARM核心数;
转换模块,用于基于第三指令转换数据库,将所述待转换指令集转换成NEON指令集,所述第三指令转换数据库中包括:所述待转换指令集的每一待转换指令与NEON指令的对应关系;
确定模块,用于分别确定所述NEON指令集的矩阵运算量和浮点运算量;
计算模块,用于基于所述ARM核心数、矩阵运算量和浮点运算量,确定所述NEON指令集的第二运算量;
比较模块,用于比较所述第一运算量和所述第二运算量的大小。
基于上述本发明实施例提供的一种基因比对指令集的转换方法及装置,该方法为:获取适用于计算机的第一基因比对指令集;确定第一基因比对指令集中所包括的指令集;根据预设的指令转换数据库,将第一基因比对指令集中的指令转换为用于加速执行基因比对算法的第二指令,利用第二指令构成第二基因比对指令集,将第二基因比对指令集下发至多核ARM芯片,使多核ARM芯片基于第二基因比对指令集加速运行基因比对算法。本方案中,利用预设的指令转换数据库,将适用于计算机中的第一基因比对指令集转换为第二基因比对指令集,将第二基因比对指令集下发至多核ARM芯片中。利用多核ARM芯片完成基因比对,提高基因比对的速度、便利度和降低能耗。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种基因比对指令集的转换方法流程图;
图2为本发明实施例提供的将SSE指令转换为第二指令的流程图;
图3为本发明实施例提供的将AVX指令转换为第二指令的流程图;
图4为本发明实施例提供的比较第一运算量和第二运算量的流程图;
图5为本发明实施例提供的一种基因比对指令集的转换装置的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
由背景技术可知,目前用于基因比对的软件都应用于PC机上,而由于PC机体积庞大和耗能大,导致在很多应用场景中无法携带和使用PC机完成基因比对。
因此,本发明实施例提供一种基因比对指令集的转换方法及装置,通过利用预设的指令转换数据库,将适用于计算机的第一基因比对指令集转换为第二基因比对指令集,将第二基因比对指令集下发至多核ARM芯片中。利用多核ARM芯片完成基因比对,以提高基因比对的速度、便利度和降低能耗。
参见图1,示出了本发明实施例提供的一种基因比对指令集的转换方法的流程图,所述方法包括以下步骤:
步骤S101:获取第一基因比对指令集。
需要说明的是,所述第一基因比对指令集适用于计算机,用于对由基因测序仪采集得到的基因测序片段进行基因比对。
在具体实现步骤S101的过程中,获取未加速的基因比对算法指令集,为加速的基因比对算法指令集包括但不仅限于:blast算法指令集、dotplot算法指令集、Smith-Waterman算法指令集、PairHMM算法指令集、Viterbi算法指令集和Baum-Welch算法指令集。
步骤S102:确定所述第一基因比对指令集中所包括的指令集。若所述第一基因比对指令集中包括所述第一处理优先级的指令集和所述第二处理优先级的指令集,或者仅包括所述第一处理优先级的指令集时,执行步骤S103。若所述第一基因比对指令集中仅包括所述第二处理优先级的指令集时,执行步骤S105。
需要说明的是,所述第一基因比对指令集中至少包括第一处理优先级的指令集和第二处理优先级的指令集中的一种指令集,所述第一处理优先级的指令集至少包括SSE指令集和AVX指令集中的一种指令集,所述第二处理优先级的指令集至少包括包含浮点计算程序和矩阵计算程序的待转换指令集,所述SSE指令集和AVX指令集的处理优先级高于所述待转换指令集的处理优先级。
进一步需要说明的是,所述SSE指令集中的指令类型包括但不仅限于:SSE指令、SSE2指令和SSE4指令。所述AVX指令集中的指令类型包括但不仅限于:AVX指令、AVX256指令和AVX512指令。
步骤S103:确定预设指令转换数据库中与所述第一处理优先级的指令集中每一第一指令对应的第二指令,并基于查找到所述第二指令,将对应的所述第一指令转换成用于加速执行基因比对算法的第二指令。
在具体实现步骤S103的过程中,将所述第一指令转换成第二指令的方式包括但不仅限于以下两种方式。
方式一:获取所述第一基因比对指令集中当前待转换的第一指令,确定所述指令转换数据库中与所述当前待转换的第一指令对应的第二指令,并将所述当前待转换的第一指令转换为用于加速执行基因比对算法的第二指令。获取下一待转换的第一指令,返回执行确定这一步骤直至所述第一基因比对指令集中的所有第一指令转换为第二指令,利用所有的第二指令构建第二基因比对指令集。
方式二:依次获取所述第一基因比对指令集中的第一指令,并确定所述指令转换数据中与所述第一指令对应的第二指令。直至确定所有的所述第一指令和与之对应的第二指令,将所有的所述第一指令转换成用于加速执行基因比对算法的第二指令,得到所述第二基因比对指令集。
步骤S104:利用所述第二指令构成第二基因比对指令集。
步骤S105:计算所述第二处理优先级的指令集的第一运算量,以及所述第一基因比对指令集中的第一指令转换为所述第二指令后的第二运算量,并比较所述第一运算量和所述第二运算量的大小。
在具体实现步骤S105的过程中,若所述第一基因比对指令集中仅包括所述第二处理优先级的指令集时,分别计算所述第一运算量和第二运算量,若所述第二运算量大于所述第一运算量,利用所述第二指令构成第二基因比对指令集。若所述第二运算量小于所述第一运算量,保留所述第二处理优先级的指令集。
步骤S106:若所述第二运算量大于所述第一运算量,利用所述第二指令构成第二基因比对指令集。
步骤S107:将所述第二基因比对指令集下发至多核ARM芯片,使所述多核ARM芯片基于所述第二基因比对指令集加速运行基因比对算法。
在本发明实施例中,利用预设的指令转换数据库,将适用于计算机的第一基因比对指令集转换为第二基因比对指令集,将第二基因比对指令集下发至多核ARM芯片中。利用多核ARM芯片加速完成基因比对,提供基因比对的比对速度、便利度和降低基因比对的能耗。
上述图1步骤S103中涉及的将第一处理优先级的指令集中的第一指令转换成第二指令,若所述第一处理优先级的指令集包括SSE指令集,参见图2,示出了本发明实施例提供的将SSE指令转换为NEON指令的流程图,包括以下步骤:
步骤S201:获取SSE指令集中当前待转换的未加速SSE指令。
在具体实现步骤S201的过程中,从所述SSE指令集中获取当前待转换的未加速SSE指令,并标记和记录所述待转换的未加速SSE指令。
步骤S202:确定第一指令转换数据库中是否存在与所述当前待转换的未加速SSE指令对应的第一NEON加速指令,若存在,执行步骤S203,若不存在,执行步骤S204。
需要说明的是,所述第一指令转换数据库中包括:SSE指令与第一NEON加速指令的对应关系。
在具体实现步骤S202的过程中,利用所述SSE指令与第一NEON加速指令的对应关系,确定所述第一指令转换数据库中是否存在与所述待转换的未加速SSE指令相对应的第一NEON加速指令,若存在,将所述当前待转换的未加速SSE指令转换成第一NEON加速指令。
步骤S203:将所述当前待转换的未加速SSE指令转换成第一NEON加速指令,获取下一待转换的未加速SSE指令并返回所述步骤S202。
步骤S204:确定所述第一指令转换数据库中是否存在由多条第一NEON加速指令构成的第一加速函数,若存在,执行步骤S205,若不存在,执行步骤S206。
在具体实现步骤S204的过程中,若所述第一指令转换数据库中不存在与所述当前待转换的未加速SSE指令对应的第一NEON加速指令,确定所述第一指令转换数据库中是否存在由多条第一NEON加速指令构成的第一加速函数。若存在所第一加速函数,将所述当前待转换的未加速SSE指令转换成所述第一加速函数。
需要说明的是,所述第一加速函数实现的功能与所述当前待转换的未加速SSE指令实现的功能相同。
步骤S205:将所述当前待转换的未加速SSE指令转换成所述第一加速函数,获取下一待转换的未加速SSE指令并返回执行所述步骤S202。
步骤S206:从预设的经验数据库中获取与所述当前待转换的未加速SSE指令对应的第二NEON加速指令,或者,创建新的第二NEON加速指令。
在具体实现步骤S206的过程中,若不存在与所述当前待转换的未加速SSE指令对应的第一NEON指令和第一加速函数,利用所述经验数据库,获取第二NEON加速指令,若所述经验数据库中不存在所述第二NEON加速指令,则创建新的第二NEON加速指令。
需要说明的是,所述第二NEON加速指令的数据类型与所述当前待转换的未加速SSE指令相同,所述第二NEON加速指令的语义与所述当前待转换的未加速SSE指令类似。
步骤S207:将同一数据分别输入所述当前待转换的未加速SSE指令和第二NEON加速指令,得到第一执行结果和第二执行结果。
在具体实现步骤S207的过程中,获取所述第二NEON加速指令后,需进一步确定所述第二NEON加速指令与所述当前待转换的未加速SSE指令的功能是否一致,确定方式为:将相同的数据分别输入所述第二NEON加速指令和所述当前待转换的未加速SSE指令,得到第一执行结果和第二执行结果。利用所述第一执行结果和第二执行结果之间的误差,确定所述第二NEON加速指令与所述当前待转换的未加速SSE指令的功能是否一致。
步骤S208:确定所述第一执行结果与第二执行结果之间的误差是否在预设范围内,若在预设范围内,执行步骤S209,若不在预设范围内,执行步骤S210。
在具体实现步骤S208的过程中,若所述第一执行结果与第二执行结果之间的误差小于第一阈值,将所述第二NEON加速指令在所述经验数据库中对应的权重增加第一预设值,将所述当前待转换的未加速SSE指令转换成所述第二NEON加速指令。若所述第一执行结果与第二执行结果之间的误差大于第一阈值小于第二阈值,将所述第二NEON加速指令在所述经验数据库中对应的权重减少第二预设值,并返回执行所述步骤S207,再次计算所述第一执行结果和第二执行结果。若所述第一执行结果与第二执行结果之间的误差大于第二阈值,将所述第二NEON加速指令从所述经验数据库中删除。
步骤S209:将所述当前待转换的未加速SSE指令转换成所述第二NEON加速指令,获取下一待转换的未加速SSE指令并返回执行所述步骤S202。
步骤S210:将所述当前待转换的未加速SSE指令转换成C语言指令,获取下一待转换的未加速SSE指令并返回执行所述步骤S202。
在具体实现步骤S210的过程中,若不存在与所述当前待转换的未加速SSE指令对应的所述第一NEON加速指令和第二NEON加速指令,将所述当前待转换的未加速SSE指令转换成C语言指令对应的函数。
需要说明的是,所述C语言指令对应的函数采用串行的方式执行。
在本发明实施例中,利用预设的第一指令转换数据库和经验数据库,将适用于计算机的未加速SSE指令转换为能加速运行基因比对算法的第二基因比对指令集,将第二基因比对指令集下发至多核ARM芯片中。利用多核ARM芯片加速完成基因比对,提供基因比对的比对速度、便利度和降低基因比对的能耗。
上述图1步骤S103中涉及的将第一处理优先级的指令集中的第一指令转换成第二指令,若所述第一处理优先级的指令集包括AVX指令集,参见图3,示出了本发明实施例提供的将AVX指令转换为NEON指令的流程图,包括以下步骤:
步骤S301:获取AVX指令集中当前待转换的未加速AVX指令。
在具体实现步骤S301的过程中,获取AVX指令集中当前待转换的未加速AVX指令,并标记和记录所述当前待转换的未加速AVX指令。
步骤S302:确定第二指令转换数据库中是否存在与所述当前待转换的未加速AVX指令对应的第三NEON加速指令。若存在,执行步骤S303,若不存在,执行步骤S304。
需要说明的是,所述第二指令转换数据库中包括:AVX指令与第三NEON加速指令的对应关系。
步骤S303:将所述当前待转换的未加速AVX指令转换成所述第三NEON加速指令,获取下一待转换的未加速AVX指令并返回执行所述步骤S302。
在具体实现步骤S303的过程中,若所述第二指令转换数据库中存在与所述当前待转换的未加速AVX指令对应的第三NEON加速指令,根据所述当前待转换的未加速AVX指令的类型,将所述当前待转换的未加速AVX指令转换成对应的第三NEON加速指令。例如:若所述当前待转换的未加速AVX指令的类型为AVX256,将所述当前待转换的未加速AVX指令扩展成两条第三NEON加速指令。若所述当前待转换的未加速AVX指令的类型为AVX512,将所述当前待转换的未加速AVX指令扩展成四条第三NEON加速指令。
步骤S304:确定所述第二指令转换数据库中是否存在由多条第三NEON加速指令构成的第二加速函数。若存在,执行步骤S305,若不存在,执行步骤S306。
在具体实现步骤S304的过程中,若所述第二指令转换数据库中不存在与所述当前待转换的未加速AVX指令对应的第三NEON加速指令,确定所述第二指令转换数据库中是否存在由多条第三NEON加速指令构成的第二加速函数。若存在所第二加速函数,将所述当前待转换的未加速AVX指令转换成所述第二加速函数。
需要说明的是,所述第二加速函数实现的功能与所述当前待转换的未加速AVX指令实现的功能相同。若所述当前待转换的未加速AVX指令的类型为AVX256,将多条第三NEON加速指令扩展成两倍的第二加速函数。若所述当前待转换的未加速AVX指令的类型为AVX512,将多条第三NEON加速指令扩展成四倍的第二加速函数。
步骤S305:将所述当前待转换的未加速AVX指令转换成所述第二加速函数,获取下一待转换的未加速AVX指令并返回执行所述步骤S302。
步骤S306:将所述当前待转换的未加速AVX指令转换成C语言指令,获取下一待转换的未加速AVX指令并返回执行所述步骤S302。
在具体实现步骤S306的过程中,若不存在与所述当前待转换的未加速AVX指令对应的第三NEON加速指令和第二加速函数,将所述当前待转换的未加速AVX指令转换成C语言指令对应的函数。
需要说明的是,所述C语言指令对应的函数采用串行的方式执行。
在本发明实施例中,利用预设的第一指令转换数据库和经验数据库,将适用于计算机的未加速AVX指令转换为能加速运行基因比对算法的第二基因比对指令集,将第二基因比对指令集下发至多核ARM芯片中。利用多核ARM芯片加速完成基因比对,提供基因比对的比对速度、便利度和降低基因比对的能耗。
上述本发明实施例图1步骤S105中涉及的比较所述第一运算量和所述第二运算量的大小的过程,参见图4,示出了本发明实施例提供的比较第一运算量和第二运算量的流程图,包括以下步骤:
步骤S401:获取所述待转换指令集的第一运算量和拥有NEON的ARM核心数。
需要说明的是,所述待转换指令集为不包含SSE指令和AVX指令,但包括浮点计算程序和矩阵计算程序的指令集。
步骤S402:基于第三指令转换数据库,将所述待转换指令集转换成NEON指令。
所述第三指令转换数据库中包括:所述待转换指令集的每一待转换指令与NEON指令的对应关系。
在具体实现步骤S402的过程中,对于所述矩阵计算程序,对所述矩阵计算程序进行数据填充,将所述矩阵计算程序扩展成NEON指令的向量数据形式,将所述矩阵计算程序替换成基于NEON矩阵计算的NEON指令。
对于所述浮点计算程序,将所述浮点计算程序转换成基于NEON浮点计算的NEON指令。
步骤S403:分别确定所述NEON指令集的矩阵运算量和浮点运算量。
在具体实现步骤S403的过程中,对于前述涉及的基于NEON矩阵计算的NEON指令,获取所述NEON矩阵的长度:Ni*Mi,所述基于NEON矩阵计算的NEON指令在所述第一运算量中共有I次矩阵计算。
对于前述涉及的基于NEON浮点计算的NEON指令,所述基于NEON浮点计算的NEON指令的复杂度为:Kj,所述基于NEON浮点计算的NEON指令在所述第一运算量中共有J次浮点计算。
步骤S404:基于所述ARM核心数、矩阵运算量和浮点运算量,确定所述NEON指令集的第二运算量。
在具体实现步骤S404的过程中,利用前述步骤S403中得到的NEON矩阵的长度Ni*Mi、矩阵计算次数I、浮点计算复杂度Kj和浮点计算次数J,结合公式(1)计算得到所述第二运算量,公式(1)中,A和B为预设数值,P为所述ARM核心数。其中, NEON矩阵的长度Ni*Mi可用于指示矩阵运算量,Kj可用于指示浮点运算量。
步骤S405:比较所述第一运算量和所述第二运算量的大小。若所述第二运算量大于所述第一运算量,执行步骤S406。若所述第二运算量小于所述第一运算量,保留所述待转换指令集。
在具体实现步骤S405的过程中,若所述第二运算量大于所述第一运算量,则所述NEON指令集为计算密集型,将NEON指令集中的第二指令构成第二基因比对指令集。若所述第二运算量小于所述第一运算量,保留所述待转换指令集中的待转换指令。
步骤S406:利用所述第二指令构成第二基因比对指令集。
在本发明实施例中,利用第三指令转换数据库,将待转换指令集转换成NEON指令集。分别待转换指令集的第一运算量和NEON指令集的第二运算量,若第二运算量大于第一运算量,将NEON指令集作为第二基因比对指令集并下发至多核ARM芯片中。利用多核ARM芯片完成基因比对,提高基因比对的速度、便利度和降低能耗。
与上述本发明实施例提供的一种基因比对指令集的转换方法相对应,参见图5,本发明实施例还提供一种基因比对指令集的转换装置的结构框图,所述转换装置包括:获取单元501、确定单元502、第一转换单元503、构建单元504、处理单元505、第二转换单元506和下发单元507;
获取单元501,用于获取第一基因比对指令集,所述第一基因比对指令集适用于计算机。
在具体实现中,所述获取单元501具体用于获取未加速的基因比对算法指令集。
确定单元502,用于确定所述第一基因比对指令集中所包括的指令集,所述第一基因比对指令集中至少包括第一处理优先级的指令集和第二处理优先级的指令集中的一种指令集,所述第一处理优先级的指令集至少包括SSE指令集和AVX指令集中的一种指令集,所述第二处理优先级的指令集至少包括包含浮点计算程序和矩阵计算程序的待转换指令集,所述SSE指令集和AVX指令集的处理优先级高于所述待转换指令集的处理优先级。
第一转换单元503,用于若所述第一基因比对指令集中包括所述第一处理优先级的指令集和所述第二处理优先级的指令集,或者仅包括所述第一处理优先级的指令集时,确定预设指令转换数据库中与所述第一处理优先级的指令集中每一第一指令对应的第二指令,并基于查找到所述第二指令,将对应的所述第一指令转换成用于加速执行基因比对算法的第二指令,所述指令转换数据库中预先存储有可转换为所述第一指令的第二指令,所述第二指令适用于多核ARM芯片。
构建单元504,用于利用所述第二指令构成第二基因比对指令集;
处理单元505,用于若所述第一基因比对指令集中仅包括所述第二处理优先级的指令集时,计算所述第二处理优先级的指令集的第一运算量,以及所述第一基因比对指令集中的第一指令转换为所述第二指令后的第二运算量,并比较所述第一运算量和所述第二运算量的大小。
第二转换单元506,用于若所述第二运算量大于所述第一运算量,利用所述第二指令构成第二基因比对指令集。
下发单元507,用于将所述第二基因比对指令集下发至多核ARM芯片,使所述多核ARM芯片基于所述第二基因比对指令集加速运行基因比对算法。
在本发明实施例中,利用预设的指令转换数据库,将适用于计算机的第一基因比对指令集转换为第二基因比对指令集,将第二基因比对指令集下发至多核ARM芯片中。利用多核ARM芯片加速完成基因比对,提供基因比对的比对速度、便利度和降低基因比对的能耗。
优选的,结合图5示出的内容,若所述第一处理优先级的指令集包括SSE指令集,所述第一转换单元503包括:第一获取模块、第一确定模块、第一转换模块、第二转换模块、第三转换模块、处理模块、输入模块、第二确定模块、第四转换模块和第五转换模块。各个模块的执行原理如下:
第一获取模块,用于获取SSE指令集中当前待转换的未加速SSE指令。
第一确定模块,用于确定第一指令转换数据库中是否存在与所述当前待转换的未加速SSE指令对应的第一NEON加速指令,若存在,执行第一转换模块,若不存在,执行第二转换模块,所述第一指令转换数据库中包括:SSE指令与第一NEON加速指令的对应关系。
第一转换模块,用于将所述当前待转换的未加速SSE指令转换成第一NEON加速指令,获取下一待转换的未加速SSE指令并返回执行所述第一确定模块。
第二转换模块,用于确定所述第一指令转换数据库中是否存在由多条第一NEON加速指令构成的第一加速函数,所述第一加速函数与所述当前待转换的未加速SSE指令的功能一致。
第三转换模块,用于若存在所述第一加速函数,将所述当前待转换的未加速SSE指令转换成所述第一加速函数,获取下一待转换的未加速SSE指令并返回执行所述第一确定模块。
处理模块,用于若不存在所述第一加速函数,从预设的经验数据库中获取与所述当前待转换的未加速SSE指令对应的第二NEON加速指令,或者,创建新的第二NEON加速指令。
输入模块,用于将同一数据分别输入所述当前待转换的未加速SSE指令和第二NEON加速指令,得到第一执行结果和第二执行结果。
第二确定模块,用于确定所述第一执行结果与第二执行结果之间的误差是否在预设范围内。
第四转换模块,用于若在预设范围内,将所述当前待转换的未加速SSE指令转换成所述第二NEON加速指令,获取下一待转换的未加速SSE指令并返回执行所述第一确定模块。
第五转换模块,用于若不在预设范围内,将所述当前待转换的未加速SSE指令转换成C语言指令,获取下一待转换的未加速SSE指令并返回执行所述第一确定模块。
在本发明实施例中,利用预设的第一指令转换数据库和经验数据库,将适用于计算机的未加速SSE指令转换为能加速运行基因比对算法的第二基因比对指令集,将第二基因比对指令集下发至多核ARM芯片中。利用多核ARM芯片加速完成基因比对,提供基因比对的比对速度、便利度和降低基因比对的能耗。
优选的,结合图5示出的内容,若所述第一处理优先级的指令集包括AVX指令集,所述第一转换单元503包括:第二获取模块、第三确定模块、第六转换模块、第四确定模块、第七确定模块和第八确定模块。各个模块的执行原理如下:
第二获取模块,用于获取AVX指令集中当前待转换的未加速AVX指令。
第三确定模块,用于确定第二指令转换数据库中是否存在与所述当前待转换的未加速AVX指令对应的第三NEON加速指令,若存在,执行第六转换模块,若不存在,执行第四确定模块,所述第二指令转换数据库中包括:AVX指令与第三NEON加速指令的对应关系。
第六转换模块,用于将所述当前待转换的未加速AVX指令转换成所述第三NEON加速指令,获取下一待转换的未加速AVX指令并返回执行所述第三确定模块。
第四确定模块,用于确定所述第二指令转换数据库中是否存在由多条第三NEON加速指令构成的第二加速函数,所述第二加速函数与所述当前待转换的未加速AVX指令的功能一致。
第七确定模块,用于若存在所述第二加速函数,将所述当前待转换的未加速AVX指令转换成所述第二加速函数,获取下一待转换的未加速AVX指令并返回执行所述第三确定模块。
第八确定模块,用于若不存在所述第二加速函数,将所述当前待转换的未加速AVX指令转换成C语言指令,获取下一待转换的未加速AVX指令并返回执行所述第三确定模块。
在本发明实施例中,利用预设的第一指令转换数据库和经验数据库,将适用于计算机的未加速AVX指令转换为能加速运行基因比对算法的第二基因比对指令集,将第二基因比对指令集下发至多核ARM芯片中。利用多核ARM芯片加速完成基因比对,提供基因比对的比对速度、便利度和降低基因比对的能耗。
优选的,结合图5示出的内容,所述处理单元505包括:获取模块、转换模块、确定模块、计算模块和比较模块。各个模块的执行原理如下:
获取模块,用于获取所述待转换指令集的第一运算量和拥有NEON的ARM核心数。
转换模块,用于基于第三指令转换数据库,将所述待转换指令集转换成NEON指令集,所述第三指令转换数据库中包括:所述待转换指令集的每一待转换指令与NEON指令的对应关系。
确定模块,用于分别确定所述NEON指令集的矩阵运算量和浮点运算量;
计算模块,用于基于所述ARM核心数、矩阵运算量和浮点运算量,确定所述NEON指令集的第二运算量。
比较模块,用于比较所述第一运算量和所述第二运算量的大小。
在本发明实施例中,利用第三指令转换数据库,将待转换指令集转换成NEON指令集。分别待转换指令集的第一运算量和NEON指令集的第二运算量,若第二运算量大于第一运算量,将NEON指令集作为第二基因比对指令集并下发至多核ARM芯片中。利用多核ARM芯片完成基因比对,提高基因比对的速度、便利度和降低能耗。
综上所述,本发明实施例提供一种基因比对指令集的转换方法及装置,该方法为:获取适用于计算机的第一基因比对指令集;确定第一基因比对指令集中所包括的指令集;根据预设的指令转换数据库,将第一基因比对指令集中的指令转换为用于加速执行基因比对算法的第二指令,利用第二指令构成第二基因比对指令集,将第二基因比对指令集下发至多核ARM芯片,使多核ARM芯片基于第二基因比对指令集加速运行基因比对算法。本方案中,利用预设的指令转换数据库,将适用于计算机中的第一基因比对指令集转换为第二基因比对指令集,将第二基因比对指令集下发至多核ARM芯片中。利用多核ARM芯片完成基因比对,提高基因比对的速度、便利度和降低能耗。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种基因比对指令集的转换方法,其特征在于,所述方法包括:
获取第一基因比对指令集,所述第一基因比对指令集适用于计算机;
确定所述第一基因比对指令集中所包括的指令集,所述第一基因比对指令集中至少包括第一处理优先级的指令集和第二处理优先级的指令集中的一种指令集,所述第一处理优先级的指令集至少包括SSE指令集和AVX指令集中的一种指令集,所述第二处理优先级的指令集至少包括包含浮点计算程序和矩阵计算程序的待转换指令集,所述SSE指令集和AVX指令集的处理优先级高于所述待转换指令集的处理优先级;
若所述第一基因比对指令集中包括所述第一处理优先级的指令集和所述第二处理优先级的指令集,或者仅包括所述第一处理优先级的指令集时,确定预设指令转换数据库中与所述第一处理优先级的指令集中每一第一指令对应的第二指令,并基于查找到的所述第二指令,将对应的所述第一指令转换成用于加速执行基因比对算法的第二指令,所述指令转换数据库中预先存储有可转换为所述第一指令的第二指令,所述第二指令适用于多核ARM芯片;
利用所述第二指令构成第二基因比对指令集;
若所述第一基因比对指令集中仅包括所述第二处理优先级的指令集时,计算所述第二处理优先级的指令集的第一运算量,以及所述第一基因比对指令集中的第一指令转换为所述第二指令后的第二运算量,并比较所述第一运算量和所述第二运算量的大小;
若所述第二运算量大于所述第一运算量,利用所述第二指令构成第二基因比对指令集;
将所述第二基因比对指令集下发至多核ARM芯片,使所述多核ARM芯片基于所述第二基因比对指令集加速运行基因比对算法。
2.根据权利要求1所述的方法,其特征在于,所述获取第一基因比对指令集,包括:
获取未加速的基因比对算法指令集。
3.根据权利要求1所述的方法,其特征在于,若所述第一处理优先级的指令集包括SSE指令集,所述确定预设指令转换数据库中与所述第一处理优先级的指令集中每一第一指令对应的第二指令,并基于查找到的所述第二指令,将对应的所述第一指令转换成用于加速执行基因比对算法的第二指令,包括:
获取SSE指令集中当前待转换的未加速SSE指令;
确定第一指令转换数据库中是否存在与所述当前待转换的未加速SSE指令对应的第一NEON加速指令,所述第一指令转换数据库中包括:SSE指令与第一NEON加速指令的对应关系;
若存在,将所述当前待转换的未加速SSE指令转换成第一NEON加速指令,获取下一待转换的未加速SSE指令并返回确定第一指令转换数据库中是否存在与所述当前待转换的未加速SSE指令对应的第一NEON加速指令这一步骤;
若不存在,确定所述第一指令转换数据库中是否存在由多条第一NEON加速指令构成的第一加速函数,所述第一加速函数与所述当前待转换的未加速SSE指令的功能一致;
若存在所述第一加速函数,将所述当前待转换的未加速SSE指令转换成所述第一加速函数,获取下一待转换的未加速SSE指令并返回确定第一指令转换数据库中是否存在与所述当前待转换的未加速SSE指令对应的第一NEON加速指令这一步骤;
若不存在所述第一加速函数,从预设的经验数据库中获取与所述当前待转换的未加速SSE指令对应的第二NEON加速指令,或者,创建新的第二NEON加速指令;
将同一数据分别输入所述当前待转换的未加速SSE指令和第二NEON加速指令,得到第一执行结果和第二执行结果;
确定所述第一执行结果与第二执行结果之间的误差是否在预设范围内;
若在预设范围内,将所述当前待转换的未加速SSE指令转换成所述第二NEON加速指令,获取下一待转换的未加速SSE指令并返回确定第一指令转换数据库中是否存在与所述当前待转换的未加速SSE指令对应的第一NEON加速指令这一步骤;
若不在预设范围内,将所述当前待转换的未加速SSE指令转换成C语言指令,获取下一待转换的未加速SSE指令并返回确定第一指令转换数据库中是否存在与所述当前待转换的未加速SSE指令对应的第一NEON加速指令这一步骤。
4.根据权利要求1所述的方法,其特征在于,若所述第一处理优先级的指令集包括AVX指令集,所述确定预设指令转换数据库中与所述第一处理优先级的指令集中每一第一指令对应的第二指令,并基于查找到的所述第二指令,将对应的所述第一指令转换成用于加速执行基因比对算法的第二指令,包括:
获取AVX指令集中当前待转换的未加速AVX指令;
确定第二指令转换数据库中是否存在与所述当前待转换的未加速AVX指令对应的第三NEON加速指令,所述第二指令转换数据库中包括:AVX指令与第三NEON加速指令的对应关系;
若存在,将所述当前待转换的未加速AVX指令转换成所述第三NEON加速指令,获取下一待转换的未加速AVX指令并返回确定第二指令转换数据库中是否存在与所述当前待转换的未加速AVX指令对应的第三NEON加速指令这一步骤;
若不存在,确定所述第二指令转换数据库中是否存在由多条第三NEON加速指令构成的第二加速函数,所述第二加速函数与所述当前待转换的未加速AVX指令的功能一致;
若存在所述第二加速函数,将所述当前待转换的未加速AVX指令转换成所述第二加速函数,获取下一待转换的未加速AVX指令并返回确定第二指令转换数据库中是否存在与所述当前待转换的未加速AVX指令对应的第三NEON加速指令这一步骤;
若不存在所述第二加速函数,将所述当前待转换的未加速AVX指令转换成C语言指令,获取下一待转换的未加速AVX指令并返回确定第二指令转换数据库中是否存在与所述当前待转换的未加速AVX指令对应的第三NEON加速指令这一步骤。
5.根据权利要求1所述的方法,其特征在于,所述计算所述第二处理优先级的指令集的第一运算量,以及所述第一基因比对指令集中的第一指令转换为所述第二指令后的第二运算量,并比较所述第一运算量和所述第二运算量的大小,包括:
获取所述待转换指令集的第一运算量和拥有NEON的ARM核心数;
基于第三指令转换数据库,将所述待转换指令集转换成NEON指令集,所述第三指令转换数据库中包括:所述待转换指令集的每一待转换指令与NEON指令的对应关系;
分别确定所述NEON指令集的矩阵运算量和浮点运算量;
基于所述ARM核心数、矩阵运算量和浮点运算量,确定所述NEON指令集的第二运算量;
比较所述第一运算量和所述第二运算量的大小。
6.一种基因比对指令集的转换装置,其特征在于,所述装置包括:
获取单元,用于获取第一基因比对指令集,所述第一基因比对指令集适用于计算机;
确定单元,用于确定所述第一基因比对指令集中所包括的指令集,所述第一基因比对指令集中至少包括第一处理优先级的指令集和第二处理优先级的指令集中的一种指令集,所述第一处理优先级的指令集至少包括SSE指令集和AVX指令集中的一种指令集,所述第二处理优先级的指令集至少包括包含浮点计算程序和矩阵计算程序的待转换指令集,所述SSE指令集和AVX指令集的处理优先级高于所述待转换指令集的处理优先级;
第一转换单元,用于若所述第一基因比对指令集中包括所述第一处理优先级的指令集和所述第二处理优先级的指令集,或者仅包括所述第一处理优先级的指令集时,确定预设指令转换数据库中与所述第一处理优先级的指令集中每一第一指令对应的第二指令,并基于查找到的所述第二指令,将对应的所述第一指令转换成用于加速执行基因比对算法的第二指令,所述指令转换数据库中预先存储有可转换为所述第一指令的第二指令,所述第二指令适用于多核ARM芯片;
构建单元,用于利用所述第二指令构成第二基因比对指令集;
处理单元,用于若所述第一基因比对指令集中仅包括所述第二处理优先级的指令集时,计算所述第二处理优先级的指令集的第一运算量,以及所述第一基因比对指令集中的第一指令转换为所述第二指令后的第二运算量,并比较所述第一运算量和所述第二运算量的大小;
第二转换单元,用于若所述第二运算量大于所述第一运算量,利用所述第二指令构成第二基因比对指令集;
下发单元,用于将所述第二基因比对指令集下发至多核ARM芯片,使所述多核ARM芯片基于所述第二基因比对指令集加速运行基因比对算法。
7.根据权利要求6所述的装置,其特征在于,所述获取单元具体用于获取未加速的基因比对算法指令集。
8.根据权利要求6所述的装置,其特征在于,若所述第一处理优先级的指令集包括SSE指令集,所述第一转换单元包括:
第一获取模块,用于获取SSE指令集中当前待转换的未加速SSE指令;
第一确定模块,用于确定第一指令转换数据库中是否存在与所述当前待转换的未加速SSE指令对应的第一NEON加速指令,若存在,执行第一转换模块,若不存在,执行第二转换模块,所述第一指令转换数据库中包括:SSE指令与第一NEON加速指令的对应关系;
所述第一转换模块,用于将所述当前待转换的未加速SSE指令转换成第一NEON加速指令,获取下一待转换的未加速SSE指令并返回执行所述第一确定模块;
所述第二转换模块,用于确定所述第一指令转换数据库中是否存在由多条第一NEON加速指令构成的第一加速函数,所述第一加速函数与所述当前待转换的未加速SSE指令的功能一致;
第三转换模块,用于若存在所述第一加速函数,将所述当前待转换的未加速SSE指令转换成所述第一加速函数,获取下一待转换的未加速SSE指令并返回执行所述第一确定模块;
处理模块,用于若不存在所述第一加速函数,从预设的经验数据库中获取与所述当前待转换的未加速SSE指令对应的第二NEON加速指令,或者,创建新的第二NEON加速指令;
输入模块,用于将同一数据分别输入所述当前待转换的未加速SSE指令和第二NEON加速指令,得到第一执行结果和第二执行结果;
第二确定模块,用于确定所述第一执行结果与第二执行结果之间的误差是否在预设范围内;
第四转换模块,用于若在预设范围内,将所述当前待转换的未加速SSE指令转换成所述第二NEON加速指令,获取下一待转换的未加速SSE指令并返回执行所述第一确定模块;
第五转换模块,用于若不在预设范围内,将所述当前待转换的未加速SSE指令转换成C语言指令,获取下一待转换的未加速SSE指令并返回执行所述第一确定模块。
9.根据权利要求6所述的装置,其特征在于,若所述第一处理优先级的指令集包括AVX指令集,所述第一转换单元包括:
第二获取模块,用于获取AVX指令集中当前待转换的未加速AVX指令;
第三确定模块,用于确定第二指令转换数据库中是否存在与所述当前待转换的未加速AVX指令对应的第三NEON加速指令,若存在,执行第六转换模块,若不存在,执行第四确定模块,所述第二指令转换数据库中包括:AVX指令与第三NEON加速指令的对应关系;
第六转换模块,用于将所述当前待转换的未加速AVX指令转换成所述第三NEON加速指令,获取下一待转换的未加速AVX指令并返回执行所述第三确定模块;
第四确定模块,用于确定所述第二指令转换数据库中是否存在由多条第三NEON加速指令构成的第二加速函数,所述第二加速函数与所述当前待转换的未加速AVX指令的功能一致;
第七确定模块,用于若存在所述第二加速函数,将所述当前待转换的未加速AVX指令转换成所述第二加速函数,获取下一待转换的未加速AVX指令并返回执行所述第三确定模块;
第八确定模块,用于若不存在所述第二加速函数,将所述当前待转换的未加速AVX指令转换成C语言指令,获取下一待转换的未加速AVX指令并返回执行所述第三确定模块。
10.根据权利要求6所述的装置,其特征在于,所述处理单元包括:
获取模块,用于获取所述待转换指令集的第一运算量和拥有NEON的ARM核心数;
转换模块,用于基于第三指令转换数据库,将所述待转换指令集转换成NEON指令集,所述第三指令转换数据库中包括:所述待转换指令集的每一待转换指令与NEON指令的对应关系;
确定模块,用于分别确定所述NEON指令集的矩阵运算量和浮点运算量;
计算模块,用于基于所述ARM核心数、矩阵运算量和浮点运算量,确定所述NEON指令集的第二运算量;
比较模块,用于比较所述第一运算量和所述第二运算量的大小。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910919907.0A CN110428872B (zh) | 2019-09-26 | 2019-09-26 | 一种基因比对指令集的转换方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910919907.0A CN110428872B (zh) | 2019-09-26 | 2019-09-26 | 一种基因比对指令集的转换方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110428872A CN110428872A (zh) | 2019-11-08 |
CN110428872B true CN110428872B (zh) | 2020-03-10 |
Family
ID=68419093
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910919907.0A Active CN110428872B (zh) | 2019-09-26 | 2019-09-26 | 一种基因比对指令集的转换方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110428872B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114255153A (zh) * | 2021-11-30 | 2022-03-29 | 北京新奥特图腾科技有限公司 | 一种超高清图像混合处理方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102799461A (zh) * | 2011-05-24 | 2012-11-28 | 联想(北京)有限公司 | 一种应用的执行方法、装置及电子设备 |
CN105631866A (zh) * | 2015-12-24 | 2016-06-01 | 武汉鸿瑞达信息技术有限公司 | 一种提取前景目标方法基于异构平台的计算优化方法 |
CN108764037A (zh) * | 2018-04-24 | 2018-11-06 | 石狮市森科智能科技有限公司 | 一种基于ARM Cotex-A系列平台的人脸检测实现方法 |
CN108985008A (zh) * | 2018-06-29 | 2018-12-11 | 郑州云海信息技术有限公司 | 一种快速比对基因数据的方法和比对系统 |
CN109150494A (zh) * | 2017-06-27 | 2019-01-04 | 武汉斗鱼网络科技有限公司 | 移动端中构造加解密算法的方法、存储介质、设备及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107451427A (zh) * | 2017-07-27 | 2017-12-08 | 江苏微锐超算科技有限公司 | 一种可重构基因比对的计算系统及加速平台 |
CN108920412B (zh) * | 2018-06-20 | 2020-12-29 | 中国科学院计算技术研究所 | 针对异构计算机体系结构的算法自动调优方法 |
-
2019
- 2019-09-26 CN CN201910919907.0A patent/CN110428872B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102799461A (zh) * | 2011-05-24 | 2012-11-28 | 联想(北京)有限公司 | 一种应用的执行方法、装置及电子设备 |
CN105631866A (zh) * | 2015-12-24 | 2016-06-01 | 武汉鸿瑞达信息技术有限公司 | 一种提取前景目标方法基于异构平台的计算优化方法 |
CN109150494A (zh) * | 2017-06-27 | 2019-01-04 | 武汉斗鱼网络科技有限公司 | 移动端中构造加解密算法的方法、存储介质、设备及系统 |
CN108764037A (zh) * | 2018-04-24 | 2018-11-06 | 石狮市森科智能科技有限公司 | 一种基于ARM Cotex-A系列平台的人脸检测实现方法 |
CN108985008A (zh) * | 2018-06-29 | 2018-12-11 | 郑州云海信息技术有限公司 | 一种快速比对基因数据的方法和比对系统 |
Non-Patent Citations (4)
Title |
---|
ARM和neon指令集;lizhaohu01;《https://blog.csdn.net/u010260681/article/details/51970870》;20160720;第1-6页 * |
Use of SIMD Vector Operations to Accelerate Application Code Performance on Low-Powered ARM and Intel Platforms;Gaurav Mitra et al;《2013 IEEE 27th International Symposium on Parallel & Distributed Processing Workshops and PhD Forum》;20131231;第1107-1116页 * |
发掘函数级单指令多数据向量化的方法;李颖颖 等;《计算机应用》;20170831;第37卷(第8期);第2200-2208页 * |
基于AVX指令集BWT算法在DNA序列比对中应用;孙红敏 等;《东北农业大学学报》;20161231;第47卷(第11期);第93-99页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110428872A (zh) | 2019-11-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115203126B (zh) | 一种算子融合处理方法、装置、设备及存储介质 | |
CN103345580A (zh) | 基于格子Boltzmann方法的并行CFD方法 | |
CN105229625A (zh) | 获取有效hmm的混合散列方案 | |
JP2022050622A (ja) | 分野フレーズマイニング方法、装置及び電子機器 | |
CN111931848B (zh) | 数据的特征提取方法、装置、计算机设备及存储介质 | |
CN110428872B (zh) | 一种基因比对指令集的转换方法及装置 | |
CN113407702B (zh) | 员工合作关系强度量化方法、系统、计算机和存储介质 | |
JP2011154439A (ja) | 最適化処理プログラム、方法及び装置 | |
WO2021147567A1 (zh) | 卷积运算方法及芯片 | |
CN103279328A (zh) | 基于Haloop的BlogRank算法并行化处理的构建方法 | |
CN115906987A (zh) | 深度学习模型的训练方法、虚拟形象驱动方法和装置 | |
Liu et al. | Integrating alternating direction method of multipliers and bush for solving the traffic assignment problem | |
CN113570067B (zh) | 分布式系统的同步方法、装置 | |
CN114974438A (zh) | 粒子运动模拟方法、装置、设备、存储介质和程序产品 | |
CN113157896A (zh) | 一种语音对话生成方法、装置、计算机设备及存储介质 | |
CN113010642A (zh) | 语义关系的识别方法、装置、电子设备及可读存储介质 | |
CN103309675B (zh) | 用于气象预报计算系统WRF的Web服务封装方法以及系统 | |
CN116992196B (zh) | 基于循环动态展开的数据处理方法、系统、设备和介质 | |
CN105550765B (zh) | 一种路网距离计算中的代表元选取方法 | |
CN112035987B (zh) | 多风机多级机站通风网络解算方法、装置及存储介质 | |
CN116185940B (zh) | 一种原子计数器的操作方法、装置、设备及存储介质 | |
AU2022235536B2 (en) | Quantum state processing method, computing device, computing apparatus and storage medium | |
Li et al. | ROPW: An online trajectory compression algorithm | |
CN109710314A (zh) | 一种基于图结构分布式并行模式构建图的方法 | |
CN108268697A (zh) | 一种高效率电推进羽流等离子体并行仿真方法 |
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 |