本發(fā)明涉及一種通過建立cpu-gpu異構(gòu)復(fù)合式并行計(jì)算框架,優(yōu)化密碼子偏差系數(shù)模型效率的方法,屬于生物大數(shù)據(jù)領(lǐng)域。
背景技術(shù):
隨著生物信息學(xué)的發(fā)展,人們通過大量研究生物分子信息結(jié)構(gòu)和組織來深度學(xué)習(xí)基因組遺傳信息規(guī)律。而隨著測序技術(shù)的發(fā)展創(chuàng)新,如今的第三代測序技術(shù)達(dá)到了更加準(zhǔn)確、快速、低成本的水準(zhǔn)。以hiseqxten測序儀為例,其推動了人類在分析遺傳信息規(guī)律的領(lǐng)域快速進(jìn)步,但同時也形成了大量基因數(shù)據(jù)的存儲和分析效率問題。
其中有通過數(shù)學(xué)以及統(tǒng)計(jì)學(xué),以改進(jìn)算法為手段實(shí)現(xiàn)提升基因數(shù)據(jù)分析效率的方法,也有利用gpu圖形卡的物理特性,以其強(qiáng)大的高速并行能力來實(shí)現(xiàn)計(jì)算加速的途徑。其中cuda-c就這兩者在一定程度上緩解了大規(guī)模生物數(shù)據(jù)計(jì)算的壓力,通過支持cuda的gpu實(shí)現(xiàn)針對密碼子使用偏性算法(cat)的單機(jī)并行計(jì)算,充分利用圖形處理的高計(jì)算性能,實(shí)現(xiàn)200倍加速比。但就目前而言,ncbi、ebi、ddbj等生物數(shù)據(jù)庫依舊不斷地豐富著各個類型的基因數(shù)據(jù),數(shù)據(jù)量的增長似乎并沒有停下腳步的趨勢。故而在數(shù)據(jù)分析處理以及數(shù)據(jù)存儲的問題上,我們急需找到新的突破點(diǎn)。
近年來隨著網(wǎng)格計(jì)算概念的提出以及云計(jì)算的實(shí)現(xiàn),該方法在一定程度上可以理解為將分布式集群中軟、硬件資源的網(wǎng)絡(luò)共享。hadoop作為現(xiàn)如今主流的云計(jì)算框架之一,具備高可靠性(按位存儲和強(qiáng)大的數(shù)據(jù)處理能力)、高擴(kuò)展性(在可用的計(jì)算機(jī)集簇間分配數(shù)據(jù)并完成計(jì)算任務(wù),這些集簇能夠方便的擴(kuò)展到數(shù)以千計(jì)的計(jì)算節(jié)點(diǎn)中,并且針對于集群而言,能夠輕易的實(shí)現(xiàn)節(jié)點(diǎn)數(shù)量的擴(kuò)展)、高效性(能夠在集群中動態(tài)的移動數(shù)據(jù),并且能夠有效的保證各個節(jié)點(diǎn)的動態(tài)平衡)、高容錯性(自動保存數(shù)據(jù)的多個副本以保證數(shù)據(jù)的安全性和完整性)等優(yōu)秀的特點(diǎn)。同時hadoop支持java、c、c++以及python等語言進(jìn)行開發(fā),有著很高的易用性。而對于節(jié)點(diǎn)硬件要求的并不高,這使得hadoop集群的搭建和使用成本也相對較低,在一定程度上提高了性價(jià)比。
現(xiàn)有技術(shù)中,目前采用的主要方案包括以下幾種:
就生物信息學(xué)本身而言,研究人員通過數(shù)學(xué)模型優(yōu)化了傳統(tǒng)算法的適用性問題,并通過其研發(fā)的密碼子組分分析工具箱cat對密碼子偏差系數(shù)模型cdc進(jìn)行了實(shí)現(xiàn)。而后gpu并行加速的研究人員通過nvidia公司的cuda編程模型對上述cat軟件中cdc算法的部分不具備數(shù)據(jù)依賴關(guān)系的模塊實(shí)現(xiàn)了gpu的并行加速,發(fā)布了cdc算法的cuda優(yōu)化軟件cuda-cdc。在現(xiàn)有技術(shù)中,例如公開號為cn102708088a、cn104536937a、cn104731569a、cn105335135a等中記載的技術(shù)方案中,其均是通過設(shè)定固定的master和slave節(jié)點(diǎn),搭建結(jié)群框架。
現(xiàn)有技術(shù)主要存在的缺陷有以下幾點(diǎn):
(1)無法解決當(dāng)前多任務(wù)的串行處理問題。
(2)當(dāng)前采用的刀片式服務(wù)器由于無法安插gpu設(shè)備而無法采用cpu、gpu同構(gòu)模式。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,為解決現(xiàn)有技術(shù)中存在的上述問題,本發(fā)明具體提供了如下技術(shù)方案:
本發(fā)明提供了一種基于cpu-gpu異構(gòu)復(fù)合式并行計(jì)算框架的密碼子偏差系數(shù)實(shí)現(xiàn)方法,其特征在于,所述方法包括如下步驟:
步驟一、在刀片機(jī)上建立hadoop集群,每臺刀片機(jī)作為一個節(jié)點(diǎn);并將主節(jié)點(diǎn)同時設(shè)置為主節(jié)點(diǎn)和從節(jié)點(diǎn);
步驟二、在塔式服務(wù)器上搭建cuda框架環(huán)境,并設(shè)置能夠與hadoop集群各個節(jié)點(diǎn)實(shí)現(xiàn)通信的網(wǎng)絡(luò)配置;
步驟三、實(shí)現(xiàn)預(yù)處理模塊,對提交的批量作業(yè)目錄進(jìn)行預(yù)處理,擬合輸出包含各個待處理任務(wù)文件實(shí)際hdfs存儲位置的任務(wù)清單到指定的目錄下;
步驟四、通過mapreduce框架定義對任務(wù)清單的劃分規(guī)則,在主節(jié)點(diǎn)啟動map任務(wù),將任務(wù)清單中的各個任務(wù)獲取分片實(shí)例,并發(fā)送到節(jié)點(diǎn)中進(jìn)行處理;
步驟五、通過reduce模塊的輸入獲取到單個任務(wù)文件的hdfs路徑,將其下載到本地節(jié)點(diǎn)后,整理為需要在gpu服務(wù)器上進(jìn)行處理的命令請求;并將文件內(nèi)容和命令請求發(fā)送到gpu服務(wù)器上后,遠(yuǎn)程控制命令執(zhí)行;
步驟六、在監(jiān)控到gpu服務(wù)器端cuda-cdc程序計(jì)算完成后,將指定輸出目錄下的輸出文件下載到本地節(jié)點(diǎn),并上傳至hdfs。
優(yōu)選地,所述步驟二中,所述塔式服務(wù)器安裝的圖形計(jì)算卡數(shù)量與刀片服務(wù)器數(shù)量相同。
優(yōu)選地,所述步驟三中,對批量作業(yè)目錄進(jìn)行預(yù)處理具體包括:對用戶提交至hdfs中的作業(yè)文檔目錄進(jìn)行遍歷,搜尋符合cuda-cdc輸入文件要求的fasta文件,按照文件名每遍歷得到一個結(jié)果則將文件在hdfs的目錄字符串與文件名進(jìn)行拼接,得到該文件在hdfs存儲的完整路徑,并將表示完整路徑的字符串作為一行記錄寫入hdfs中的任務(wù)清單中。
優(yōu)選地,該預(yù)處理可以詳細(xì)通過如下方式進(jìn)行:通過遞歸算法對用戶提交至hdfs中的/input目錄下的作業(yè)文檔目錄進(jìn)行遍歷搜尋符合cuda-cdc輸入文件要求的fasta文件,按照文件名每遍歷得到一個結(jié)果則將文件在hdfs的目錄字符串與文件名進(jìn)行拼接,得到該文件在hdfs存儲的完整路徑,并將表示完整路徑的字符串作為一行記錄寫入hdfs中的/input目錄下的task.txt文件中。以task.txt文件作為textinputformat類中的getsplits函數(shù)以及createrecordreader函數(shù)的輸入。
優(yōu)選地,所述步驟四中,所述劃分規(guī)則具體為:采用按行劃分規(guī)則,對所述任務(wù)清單中的n行內(nèi)容創(chuàng)建一個記錄,獲得所有待處理的hdfs存儲位置;所述n為自然數(shù)。
優(yōu)選地,該劃分規(guī)則可以詳細(xì)通過如下方式進(jìn)行:由于task.txt文件中的寫入規(guī)則是一行記錄一個待處理fasta文件的完整hdfs存儲路徑,因此在劃分任務(wù)清單文件時,采用textinputformat默認(rèn)的按行劃分規(guī)則,對每一行內(nèi)容創(chuàng)建一個recordreader記錄。得到所有的記錄即所有待處理fasta文件的hdfs存儲位置,以此作為reduce函數(shù)的輸入。其他可選的劃分規(guī)則可以按照不同的系統(tǒng)和集群環(huán)境進(jìn)行設(shè)定,如將n行文件內(nèi)容作為一組記錄,采用類似打包的形式將其進(jìn)行劃分,這意味著當(dāng)reduce函數(shù)在接收到recordreader時需要串行處理n個文件。
優(yōu)選地,所述步驟五中,整理為需要在gpu服務(wù)器上進(jìn)行處理的命令請求,具體包括如下步驟:在遠(yuǎn)程執(zhí)行命令過程中,定義遠(yuǎn)程命令執(zhí)行主機(jī)的ip、用戶名、密碼及完整的命令字符串;對于fasta文件分析命令,通過絕對路徑定義軟件的名稱、輸入?yún)?shù)。
優(yōu)選地,所述步驟五還包括:通過定義相同的輸出路徑,統(tǒng)計(jì)輸出文件的位置,以便于分級結(jié)果的回收;通過字符串拼接,得到包含絕對路徑描述的包含軟件信息、輸入信息、輸出信息的命令行字符串。
優(yōu)選地,該集群系統(tǒng)結(jié)構(gòu)具體為:包含主節(jié)點(diǎn)、從節(jié)點(diǎn)以及計(jì)算服務(wù)節(jié)點(diǎn)三個子集群,不同于以往的集群系統(tǒng),map端與gpu端不建立通信。而reduce端與gpu端之間采用jsch進(jìn)行通信,將map端與reduce端以及gpu端的計(jì)算環(huán)境徹底分開,進(jìn)行協(xié)同處理。
與現(xiàn)有技術(shù)相比,本發(fā)明技術(shù)方案通過對密碼子偏性算法(cat)以及cuda環(huán)境下實(shí)現(xiàn)的密碼子偏性算法(cuda-c)的研究分析,針對多種情況的hadoop并行任務(wù)劃分的可行性分析,結(jié)合分布式集群環(huán)境以及cuda服務(wù)器遠(yuǎn)程ssh服務(wù),實(shí)現(xiàn)對批量作業(yè)提交情況下實(shí)現(xiàn)作業(yè)劃分、并行處理以及內(nèi)存計(jì)算,將集群上各個節(jié)點(diǎn)的計(jì)算和存儲資源進(jìn)行整合,進(jìn)一步提高了密碼子偏性算法的效率。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其它的附圖。
圖1為本發(fā)明實(shí)施例的集群網(wǎng)絡(luò)結(jié)構(gòu)圖;
圖2為本發(fā)明實(shí)施例的集群框架設(shè)計(jì)圖;
圖3為本發(fā)明實(shí)施例的軟件概要設(shè)計(jì)圖;
圖4為本發(fā)明實(shí)施例的數(shù)據(jù)預(yù)處理階段圖;
圖5為本發(fā)明實(shí)施例的cat框架uml詳細(xì)設(shè)計(jì)圖;
圖6為本發(fā)明實(shí)施例的第一組數(shù)據(jù)運(yùn)行時間折線圖;
圖7為本發(fā)明實(shí)施例的第一組數(shù)據(jù)運(yùn)行時間比例圖;
圖8為本發(fā)明實(shí)施例的第二組數(shù)據(jù)運(yùn)行時間折線圖;
圖9為本發(fā)明實(shí)施例的第二組數(shù)據(jù)運(yùn)行時間比例圖。
具體實(shí)施方式
下面結(jié)合附圖對本發(fā)明實(shí)施例進(jìn)行詳細(xì)描述。應(yīng)當(dāng)明確,所描述的實(shí)施例僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其它實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本領(lǐng)域技術(shù)人員應(yīng)當(dāng)知曉,下述具體實(shí)施例或具體實(shí)施方式,是本發(fā)明為進(jìn)一步解釋具體的發(fā)明內(nèi)容而列舉的一系列優(yōu)化的設(shè)置方式,而該些設(shè)置方式之間均是可以相互結(jié)合或者相互關(guān)聯(lián)使用的,除非在本發(fā)明明確提出了其中某些或某一具體實(shí)施例或?qū)嵤┓绞綗o法與其他的實(shí)施例或?qū)嵤┓绞竭M(jìn)行關(guān)聯(lián)設(shè)置或共同使用。同時,下述的具體實(shí)施例或?qū)嵤┓绞絻H作為最優(yōu)化的設(shè)置方式,而不作為限定本發(fā)明的保護(hù)范圍的理解。
實(shí)施例1
在一個具體的實(shí)施例中,本發(fā)明對應(yīng)的系統(tǒng)可以按照圖1圖2多系統(tǒng)進(jìn)行搭建,采用四臺dellm820刀片機(jī)獨(dú)立安裝centos7操作系統(tǒng),采用一臺amax塔式服務(wù)器安裝4塊nvidia圖形計(jì)算卡并配置cuda環(huán)境。后將以上五臺刀片機(jī)網(wǎng)絡(luò)配置為相同網(wǎng)段ip以保證其通信正常。隨后將4臺刀片機(jī)分別設(shè)置為master、slave1、slave2、slave3。與其余的hadoop集群相同,將三臺slave機(jī)器設(shè)置為集群從節(jié)點(diǎn),不同的地方在于為了匹配gpu卡的數(shù)量,保證多任務(wù)并發(fā)的過程中,每個gpu資源都被利用起來,將master也寫入集群配置的slaves文件中同時作為master和slave使用。
實(shí)施例2
本發(fā)明設(shè)計(jì)實(shí)現(xiàn)了真實(shí)的gpu-cpu異構(gòu)復(fù)合并行計(jì)算框架在密碼子使用偏性研究領(lǐng)域?qū)γ艽a子偏差系數(shù)模型的優(yōu)化。將需要用到gpu的分布式集群模型擴(kuò)展到無法在集群節(jié)點(diǎn)上直接掛載gpu的設(shè)備上,增加了復(fù)合集群的適用性。
具體而言,本發(fā)明提供了一種新的復(fù)合式并行計(jì)算框架。通過分布式計(jì)算任務(wù)劃分機(jī)制,對用戶提交的多個作業(yè)進(jìn)行分布式處理,并在實(shí)現(xiàn)分布到各個節(jié)點(diǎn)后采用高速網(wǎng)絡(luò)將任務(wù)發(fā)送到指定的gpu服務(wù)器上,采用cuda-cdc軟件進(jìn)行單一作業(yè)的高效處理。在處理結(jié)束之后將數(shù)據(jù)回收至節(jié)點(diǎn)并上傳至hdfs。
在一個具體的實(shí)施例中,本發(fā)明的方法可以具體通過如下的優(yōu)選方式之一實(shí)現(xiàn),結(jié)合圖3,示出了本發(fā)明實(shí)施例1提供的基于gpu-cpu異構(gòu)復(fù)合式并行計(jì)算框架的密碼子使用偏性算法的實(shí)現(xiàn)流程,該方法過程詳述如下:
步驟一、在刀片機(jī)上建立hadoop集群,每臺刀片機(jī)作為一個節(jié)點(diǎn)。與常規(guī)配置不同的是,將master同時設(shè)置為主節(jié)點(diǎn)和從節(jié)點(diǎn),保證在需要的情況下,也能進(jìn)行分布式任務(wù)的處理,將集群的使用率最大化。
在一個具體的實(shí)施方式中,在步驟一中,搭建一個計(jì)算機(jī)集群,包含一個由刀片式服務(wù)器組成的hadoop服務(wù)器集群以及一個由塔式服務(wù)器組成的gpu服務(wù)器集群,gpu服務(wù)器數(shù)量只有一臺,但其中搭載了與刀片式服務(wù)器數(shù)量相當(dāng)?shù)膅pu圖形計(jì)算卡。
對于hadoop服務(wù)器集群,其中包含了四臺刀片機(jī)節(jié)點(diǎn),將其中一臺刀片機(jī)配置為master節(jié)點(diǎn),在此同時,將該節(jié)點(diǎn)與其余三個節(jié)點(diǎn)均配置為slave節(jié)點(diǎn)。各個節(jié)點(diǎn)之間都有獨(dú)立的內(nèi)存和存儲空間。
步驟二、在塔式服務(wù)器上搭建cuda框架環(huán)境,并設(shè)置能夠與hadoop集群各個節(jié)點(diǎn)實(shí)現(xiàn)通信的網(wǎng)絡(luò)配置。
在一個具體的實(shí)施方式中,在步驟二中,對各個節(jié)點(diǎn)均與gpu服務(wù)器建立網(wǎng)絡(luò)通信通道。示例性的,各節(jié)點(diǎn)通過jsch對gpu服務(wù)器實(shí)現(xiàn)網(wǎng)絡(luò)通信以及遠(yuǎn)程命令控制調(diào)用。
需要說明的是,該算法cuda優(yōu)化所需的gpu計(jì)算資源并不在hadoop集群中,而是通過遠(yuǎn)程命令執(zhí)行的方式,由專有的gpu服務(wù)器提供計(jì)算。這樣設(shè)計(jì)的好處在于針對hadoop集群本身,不需要強(qiáng)制性要求硬件環(huán)境。將各個階段模塊化后,該程序能通過對遠(yuǎn)程命令簡單修改就能適用于其他計(jì)算情況。
步驟三、通過預(yù)處理模塊,對用戶提交的批量作業(yè)目錄進(jìn)行預(yù)處理,擬合輸出包含各個待處理任務(wù)文件實(shí)際hdfs存儲位置的任務(wù)清單到指定的目錄下。
在一個具體的實(shí)施方式中,在步驟三中,選擇有篩選的目錄遍歷算法對用戶提交的目錄進(jìn)行遍歷,尋找出所有的待處理fasta文件,統(tǒng)一記錄到指定的任務(wù)清單文件中。示例性的,選用hdfs上的/input/task.txt文件。
具體的預(yù)處理,在一個具體實(shí)施方式中,通過遞歸算法對用戶提交至hdfs中的/input目錄下的作業(yè)文檔目錄進(jìn)行遍歷搜尋符合cuda-cdc輸入文件要求的fasta文件,按照文件名每遍歷得到一個結(jié)果則將文件在hdfs的目錄字符串與文件名進(jìn)行拼接,得到該文件在hdfs存儲的完整路徑,并將表示完整路徑的字符串作為一行記錄寫入hdfs中的/input目錄下的task.txt文件中。以task.txt文件作為textinputformat類中的getsplits函數(shù)以及createrecordreader函數(shù)的輸入。
步驟四、通過mapreduce框架,定義對任務(wù)清單的劃分規(guī)則,在主節(jié)點(diǎn)啟動map任務(wù),將任務(wù)清單中的各個任務(wù)獲取分片實(shí)例,并發(fā)送到節(jié)點(diǎn)中進(jìn)行處理。
在一個具體的實(shí)施方式中,在步驟四中,將任務(wù)清單文件中的內(nèi)容進(jìn)行劃分。示例性的,選用textinputformat類的按行劃分規(guī)則,匹配文件中按行記錄文件路徑及名稱的規(guī)則。
由于task.txt文件中的寫入規(guī)則是一行記錄一個待處理fasta文件的完整hdfs存儲路徑,因此在劃分任務(wù)清單文件時,采用textinputformat默認(rèn)的按行劃分規(guī)則,對每一行內(nèi)容創(chuàng)建一個recordreader記錄。得到所有的記錄即所有待處理fasta文件的hdfs存儲位置,以此作為reduce函數(shù)的輸入。其他可選的劃分規(guī)則可以按照不同的系統(tǒng)和集群環(huán)境進(jìn)行設(shè)定,如將n行文件內(nèi)容作為一組記錄,采用類似打包的形式將其進(jìn)行劃分,這意味著當(dāng)reduce函數(shù)在接收到recordreader時需要串行處理n個文件。
步驟五、定義reduce模塊。通過該模塊的輸入獲取到單個任務(wù)文件的hdfs路徑,將其下載到本地節(jié)點(diǎn)后,整理為需要在gpu服務(wù)器上進(jìn)行處理的命令請求。并將文件內(nèi)容和命令請求通過jsch通信框架發(fā)送到gpu服務(wù)器上后,遠(yuǎn)程控制命令執(zhí)行。
在一個具體的實(shí)施方式中,在步驟五中,將劃分好的子任務(wù)分片輸入到reduce端進(jìn)行處理。需要說明的是,這里reduce端接收到的只是需要處理文件的hdfs存儲信息,并不是文件本身。這樣做的好處是避免了map端與reduce端之間過多的大數(shù)據(jù)傳輸過程。
reduce端在接受到分片后,按照文件信息從hdfs上下載至本地節(jié)點(diǎn)。需要說明的是:gpu服務(wù)器并不與hdfs存在通信,而實(shí)際的計(jì)算確是在gpu服務(wù)器上,因此計(jì)算過程中所需的數(shù)據(jù)內(nèi)容則需要slave節(jié)點(diǎn)在發(fā)送請求的時候自行上傳。示例性的,這里采用了jsch中的sftp模式上傳到gpu服務(wù)器上的/home/ezio/documents/fromnode/input目錄下。在數(shù)據(jù)傳輸完成后,通過遠(yuǎn)程命令對數(shù)據(jù)進(jìn)行處理。示例性的,選用jsch中的exe模式進(jìn)行處理,并等待將執(zhí)行結(jié)果輸出到指定目錄中。示例性的,選用gpu服務(wù)器的本地存儲目錄/home/ezio/documents/fromnode/output中。
在調(diào)用gpu服務(wù)器時采用的是jsch框架,作為ssh框架的java實(shí)現(xiàn),jsch保留了ssh的運(yùn)行方式。在遠(yuǎn)程執(zhí)行命令的過程中,需要定義遠(yuǎn)程命令執(zhí)行主機(jī)的ip、用戶名、密碼以及完整的命令字符串。基于cuda-cdc的fasta文件分析命令按照軟件用法,需要通過絕對路徑定義軟件的名稱、輸入?yún)?shù)。出上述兩項(xiàng)必要內(nèi)容外,為了方便分析結(jié)果的回收,通過定義相同的輸出路徑統(tǒng)計(jì)輸出文件的位置。最終按照上述描述,通過字符串拼接得到包含絕對路徑描述的包含軟件信息、輸入信息、輸出信息的命令行字符串。
步驟六、在監(jiān)控到gpu服務(wù)器端cuda-cdc程序計(jì)算完成后,將指定輸出目錄下的輸出文件下載到本地節(jié)點(diǎn),并上傳至hdfs。
在一個具體的實(shí)施方式中,在步驟六中,在輸出過程完成之后,slave節(jié)點(diǎn)再將結(jié)果通過jsch的sftp下載至本地存儲。下載完成后,通過hdfs的api將結(jié)果上傳至hdfs存儲。
總體而言,如圖3所示,整個運(yùn)算流程劃分為了三個階段,其中預(yù)處理階段的主要任務(wù)是將用戶上傳至hdfs的待處理文件目錄進(jìn)行遍歷處理,記錄并整理出能夠作為mapper函數(shù)輸入的任務(wù)清單文件。
其次在數(shù)據(jù)處理階段,map端對清單文件進(jìn)行劃分,并將得到的子任務(wù)傳遞給reduce端。reduce端在接收到任務(wù)文件描述后,按照指示從hdfs上下載文件,并將其發(fā)送到gpu服務(wù)器上。再根據(jù)發(fā)送到gpu服務(wù)器上的目錄位置以及所需的命令執(zhí)行信息,整理出完整的任務(wù)cuda任務(wù)命令,并通過jsch的exe模塊發(fā)送并執(zhí)行命令。
在數(shù)據(jù)回收階段,從指定的gpu服務(wù)器路徑下載cuda計(jì)算結(jié)果,并上傳至hdfs。
在又一個具體的實(shí)施方式中,圖4中描述了整個過程的數(shù)據(jù)流向。其中待處理的fasta文件從上傳至hdfs開始,直到被各個slave節(jié)點(diǎn)分別進(jìn)行下載,再被傳輸?shù)絞pu服務(wù)器為止。
而任務(wù)清單文件作為一個中間結(jié)果,從主函數(shù)被調(diào)用開始被建立,之后作為map端的輸入,被分片后流向slave端為止。
而最后的計(jì)算結(jié)果文件建立于gpu服務(wù)器上,被各個slave下載后,匯集到hdfs為止。
圖5中設(shè)計(jì)了整個方法框架所需的各個模塊。其中最核心的是cat_mapper與cat_reducer。這兩個模塊分別實(shí)現(xiàn)了任務(wù)的劃分以及gpu集群調(diào)用過程。jsch模塊是通過jschtools類進(jìn)行實(shí)現(xiàn)的,包含了所需要用到的sftp以及exe模塊的封裝實(shí)現(xiàn)。arrangetaskrequest類主要實(shí)現(xiàn)了任務(wù)目錄的判斷和預(yù)處理功能。需要說明的是,cat_mapper與cat_reducer類均被設(shè)計(jì)成為了cat的靜態(tài)內(nèi)部類。
圖6-9分別是兩組數(shù)據(jù)通過兩種程序進(jìn)行計(jì)算后的時間記錄。其中第一組數(shù)據(jù)是單個文件大小為11kb左右的十個fasta文件,第二組數(shù)據(jù)是單個文件大小為3.5kb的fasta文件。四幅圖中橙色的記錄為經(jīng)過cuda優(yōu)化的密碼子使用偏性算法實(shí)現(xiàn)程序cuda-cdc的計(jì)算時間結(jié)果,藍(lán)色的記錄為經(jīng)過hadoop和cuda雙重優(yōu)化后的程序hadoop-cuda-cdc。圖中的很坐標(biāo)表示模擬當(dāng)前用戶提交的任務(wù)文件數(shù)量。
優(yōu)選地,該集群系統(tǒng)結(jié)構(gòu)具體為:包含主節(jié)點(diǎn)、從節(jié)點(diǎn)以及計(jì)算服務(wù)節(jié)點(diǎn)三個子集群,不同于以往的集群系統(tǒng),map端與gpu端不建立通信。而reduce端與gpu端之間采用jsch進(jìn)行通信,將map端與reduce端以及gpu端的計(jì)算環(huán)境徹底分開,進(jìn)行協(xié)同處理。
由數(shù)據(jù)可以看出:1、任務(wù)文件的大小不影響穩(wěn)定的加速比;2、當(dāng)總時間較小時,預(yù)處理時間占比較大,復(fù)合式程序通過節(jié)點(diǎn)并行處理所節(jié)約的時間小于了任務(wù)劃分所占用的預(yù)處理時間,導(dǎo)致了加速的負(fù)增長。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過計(jì)算機(jī)程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一計(jì)算機(jī)可讀取存儲介質(zhì)中,該程序在執(zhí)行時,可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(read-onlymemory,rom)或隨機(jī)存儲記憶體(randomaccessmemory,ram)等。
以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求的保護(hù)范圍為準(zhǔn)。