一種異構(gòu)系統(tǒng)的并行混合人工蜂群方法
【專利摘要】本發(fā)明公開一種異構(gòu)系統(tǒng)的并行混合人工蜂群方法,包括以下步驟:S1:處理器劃分初始數(shù)據(jù)集得到多個(gè)初始數(shù)據(jù)子集,多線程并行地向異構(gòu)系統(tǒng)中的計(jì)算設(shè)備分發(fā)不同的初始數(shù)據(jù)子集;S2:計(jì)算設(shè)備接收數(shù)據(jù)子集后,根據(jù)混合人工蜂群算法進(jìn)行一輪進(jìn)化,獲得該輪計(jì)算結(jié)果,并將該輪計(jì)算結(jié)果發(fā)送至處理器以更新數(shù)據(jù)集,其中,該輪計(jì)算結(jié)果包括該輪局部最優(yōu)解;S3:處理器判斷是否滿足停止條件,若是,處理器根據(jù)該輪局部最優(yōu)解得到全局最優(yōu)解,若否,將更新后的數(shù)據(jù)集重新劃分為多個(gè)更新的數(shù)據(jù)子集,多線程并行地分發(fā)給多個(gè)計(jì)算設(shè)備,之后返回S2。本發(fā)明公開的上述方法,通過(guò)將人工蜂群算法應(yīng)用至異構(gòu)系統(tǒng)以解決優(yōu)化過(guò)程中尋找最優(yōu)解時(shí)間比較長(zhǎng)的問(wèn)題。
【專利說(shuō)明】一種異構(gòu)系統(tǒng)的并行混合人工蜂群方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及機(jī)器學(xué)習(xí)領(lǐng)域、高性能計(jì)算領(lǐng)域,尤其涉及高性能計(jì)算中的異構(gòu)計(jì)算 領(lǐng)域,涉及一種異構(gòu)系統(tǒng)的并行混合人工蜂群方法。
【背景技術(shù)】
[0002] 優(yōu)化問(wèn)題是一個(gè)古老的話題,優(yōu)化問(wèn)題的探索也是人類一直的研究主題之一。隨 著經(jīng)濟(jì)的發(fā)展與社會(huì)進(jìn)歩,優(yōu)化問(wèn)題取得不斷發(fā)展的同時(shí),新的挑戰(zhàn)也隨之而來(lái)??偟膩?lái) 說(shuō),新型優(yōu)化問(wèn)題有以下幾個(gè)主要特征:高維、大量的限制條件、多峰值以及不連續(xù)。而傳統(tǒng) 優(yōu)化方法主要利用數(shù)學(xué)解析、迭代求解等方法來(lái)解決實(shí)際問(wèn)題。雖然這些方法具有完備的 理論分析和數(shù)學(xué)證明,在連續(xù)、低維優(yōu)化問(wèn)題上也取得了良好效果,但是對(duì)于多峰、高維以 及不連續(xù)的優(yōu)化問(wèn)題卻顯得無(wú)能為力。
[0003] 傳統(tǒng)優(yōu)化算法一般都有明確目標(biāo),這也是其在復(fù)雜高維問(wèn)題上沒(méi)有良好表現(xiàn)的主 要原因之一。于是,學(xué)者們開始探尋更好的方法來(lái)解決這些問(wèn)題。生物自然界中有許多群 體智能生物,如飛鳥、魚、昆蟲等。其中單個(gè)個(gè)體只有簡(jiǎn)單智能,但由個(gè)體組成的群體卻表現(xiàn) 出遠(yuǎn)遠(yuǎn)超出個(gè)體相加的智能,它們相互協(xié)調(diào)與合作的自組織能力能夠很好的完成復(fù)雜精細(xì) 的任務(wù)。特別是近幾十年,隨著人們對(duì)自然現(xiàn)象更深入的理解,提出了具有較強(qiáng)適用性的優(yōu) 化方法--智能優(yōu)化算法,這為解決復(fù)雜大系統(tǒng)問(wèn)題創(chuàng)造了條件。這類型的算法主要有蟻 群算法(Ant Colony Optimization, AC0)、模擬退火算法(Simulated Annealing, SA)、粒子 群優(yōu)化算法、人工蜂群算法等。
[0004] 其中,人工蜂群算法(Artificial Bee Colony, ABC)是一種基于群體智能的全局優(yōu) 化算法,同其它算法相比,該算法具有實(shí)現(xiàn)簡(jiǎn)單、參數(shù)少和尋優(yōu)速度快等特點(diǎn)。人工蜂群算 法最初由Karaboga提出,受啟發(fā)于人工生命、社會(huì)心理學(xué)和群體理論的一些知識(shí)。同時(shí),人 工蜂群算法也是一種進(jìn)化計(jì)算,同其他演化計(jì)算類似,人工蜂群算法隨機(jī)初始化一組種群 解,循環(huán)迭代進(jìn)化尋優(yōu)。作為典型的群體智能優(yōu)化算法之一,人工蜂群算法是一種基于種群 的啟發(fā)式搜索算法,它能充分利用群體中個(gè)體之間的相互協(xié)作與信息共享,在蜂巢周圍尋 找食物最豐富、路徑最短的食物源。
[0005] 在人工蜂群算法中,蜜蜂采蜜的過(guò)程(即尋找高質(zhì)量的蜜源)類似于進(jìn)化計(jì)算中 的尋找待優(yōu)化問(wèn)題中最優(yōu)解的過(guò)程。在采蜜模型中,蜜源表示可能的解,采蜜行為相當(dāng)于搜 索最優(yōu)解,蜜源質(zhì)量可視為適應(yīng)度函數(shù),此函數(shù)決定整個(gè)算法的進(jìn)化方向。
[0006] 人工蜂群算法的主要步驟描述如下:
[0007] Step 1 :設(shè)置初始參數(shù):種群數(shù)量、最大循環(huán)次數(shù)、維數(shù)等,其中采蜜蜂和觀察蜂各 一半;
[0008] St印2 :初始化,并計(jì)算蜜源適宜度值,進(jìn)入循環(huán);
[0009] Step 3 :采蜜蜂采蜜并共享蜜源信息階段;
[0010] Step 4 :觀察蜂獲得蜜源信息,并選擇蜜源采蜜階段;
[0011] St印5 :經(jīng)過(guò)有限次數(shù)后,蜜源適宜度仍不達(dá)標(biāo)則放棄,采蜜蜂變?yōu)閭刹旆淅^續(xù)搜 索,并按(公式I. 1)更新位置;
[0012] Step 6 :記錄最優(yōu)解并循環(huán)次數(shù)加1,判斷是否滿足停止條件(通常是最大迭代代 數(shù)),若是則結(jié)束,否則轉(zhuǎn)到Step 3。
[0013] xf = X^n + ^xliJ (1.1)
[0014] 人工蜂群算法廣泛應(yīng)用在現(xiàn)實(shí)生活中的各個(gè)方面,可以說(shuō),人工蜂群算法基本可 以解決凡是遺傳算法等進(jìn)化算法能解決的優(yōu)化問(wèn)題??梢岳萌斯し淙核惴▉?lái)訓(xùn)練神經(jīng)網(wǎng) 絡(luò),比如探尋最優(yōu)權(quán)重;或用人工蜂群算法來(lái)求解TSP(Traveling Salesman Problem, TSP) 和 JSP(Job-Shop Schedule Problem, JSP)。
[0015] 英特爾(Intel)公司推出的眾核(Many Integrated Core, MIC)處理器面向高性 能計(jì)算(High Performance Computing, HPC)領(lǐng)域,旨在引領(lǐng)行業(yè)進(jìn)入百億億次計(jì)算時(shí)代, 其在計(jì)算機(jī)體系中,并非欲取代CPU,而是作為協(xié)處理器存在。跟通用的多核至強(qiáng)處理器相 t匕,眾核處理器具有更小的內(nèi)核和硬件線程,眾核處理器計(jì)算資源密度更高,片上通信開銷 顯著降低,具有更多的晶體管和能量,能夠勝任更為復(fù)雜的并行應(yīng)用。
[0016] Intel MIC產(chǎn)品基于X86架構(gòu),MIC芯片通常有數(shù)十個(gè)精簡(jiǎn)的x86核心,提供高度 并行的計(jì)算能力。眾核處理器,包含50個(gè)以上的核心,以及512bit的向量位寬,雙精性能 超過(guò) lTFlops。
[0017] MIC擁有極其靈活的編程方式,MIC卡可以作為一個(gè)處理器存在,也可以被看作是 一個(gè)獨(dú)立的節(jié)點(diǎn)?;镜腗IC編程模型是將MIC看作一個(gè)處理器,中央處理單元(CPU)根 據(jù)程序的指令,將一部分代碼運(yùn)行在MIC端。此時(shí)存在兩類設(shè)備,即CPU端和眾核(MIC)處 理器端。原生的CPU程序通常也可以在MIC芯片上運(yùn)行,這也意味著對(duì)現(xiàn)有程序無(wú)需進(jìn)行 大的改動(dòng),即可利用MIC的計(jì)算資源,充分保護(hù)了軟件投資。隨著開發(fā)者們采用較高的并行 度(指令、數(shù)據(jù)、任務(wù)、矢量、線程和集群等),英特爾架構(gòu)處理器常用的重要且已普及化的 編程模型可擴(kuò)展至英特爾MIC架構(gòu),而無(wú)需改變編程工具。
[0018] 現(xiàn)有的不少超級(jí)計(jì)算機(jī),以及未來(lái)的HPC用處理器如NVIDIA Echelon等,均采用 以CPU為主體,主力運(yùn)算基于GPU的混合加速運(yùn)算架構(gòu)(Heterogeneous)。于此不同的是, Knights系列則屬于采用和主CPU架構(gòu)基本相同的多個(gè)x86核心集成來(lái)輔助主CPU運(yùn)算的 類型(Homogeneous)。
[0019] 異構(gòu)系統(tǒng)是目前主流的大規(guī)模并行計(jì)算系統(tǒng),它將CPU處理器與MIC處理器結(jié)合 起來(lái)一同處理大規(guī)模計(jì)算問(wèn)題,具備極強(qiáng)的計(jì)算能力。如果能夠利用這種異構(gòu)系統(tǒng)強(qiáng)大的 計(jì)算能力利用混合人工蜂群去解決實(shí)際問(wèn)題,將極大地加速得到最優(yōu)解決實(shí)際問(wèn)題過(guò)程。 然而,傳統(tǒng)的人工蜂群算法都是串行迭代過(guò)程,無(wú)法充分利用異構(gòu)系統(tǒng)的并行處理能力,難 以發(fā)揮該系統(tǒng)的性能優(yōu)勢(shì)。
【發(fā)明內(nèi)容】
[0020] 本發(fā)明提供一種異構(gòu)系統(tǒng)的并行混合人工蜂群方法,通過(guò)將人工蜂群算法應(yīng)用至 異構(gòu)系統(tǒng)以解決優(yōu)化過(guò)程中尋找最優(yōu)解時(shí)間比較長(zhǎng)的問(wèn)題。
[0021] 為解決上述技術(shù)問(wèn)題,本發(fā)明提供一種異構(gòu)系統(tǒng)的并行混合人工蜂群方法,包括 以下步驟:Sl :處理器劃分初始數(shù)據(jù)集得到多個(gè)初始數(shù)據(jù)子集,多線程并行地向異構(gòu)系統(tǒng) 中的多個(gè)計(jì)算設(shè)備分發(fā)不同的初始數(shù)據(jù)子集;S2 :所述多個(gè)計(jì)算設(shè)備分別接收各自的數(shù)據(jù) 子集后,分別根據(jù)混合人工蜂群算法進(jìn)行一輪進(jìn)化,獲得各自的該輪計(jì)算結(jié)果,并將各自的 該輪計(jì)算結(jié)果發(fā)送至所述處理器以更新數(shù)據(jù)集,其中,該輪計(jì)算結(jié)果包括該輪局部最優(yōu)解; S3 :所述處理器判斷是否滿足停止條件,若是,所述處理器根據(jù)所述該輪局部最優(yōu)解得到全 局最優(yōu)解,若否,將更新后的數(shù)據(jù)集重新劃分為多個(gè)更新的數(shù)據(jù)子集,多線程并行地分發(fā)給 所述多個(gè)計(jì)算設(shè)備,之后返回S2。
[0022] 進(jìn)一步地,所述步驟Sl的過(guò)程包括:處理器分發(fā)多個(gè)線程,為每個(gè)線程分配初始 數(shù)據(jù)子集,多線程并行地向異構(gòu)系統(tǒng)中的多個(gè)計(jì)算設(shè)備發(fā)送調(diào)用請(qǐng)求,所述計(jì)算設(shè)備在接 收到所述調(diào)用請(qǐng)求后,獲得各自的初始數(shù)據(jù)子集。
[0023] 進(jìn)一步地,所述初始數(shù)據(jù)集以配置文件的形式存儲(chǔ)在處理器的存儲(chǔ)系統(tǒng)中。
[0024] 進(jìn)一步地,所述處理器向計(jì)算設(shè)備分發(fā)的數(shù)據(jù)子集為經(jīng)過(guò)編碼的數(shù)據(jù)子集。
[0025] 進(jìn)一步地,所述計(jì)算設(shè)備為MIC協(xié)處理器。
[0026] 進(jìn)一步地,于步驟S2之后,還包括:所述處理器將迭代次數(shù)加一。
[0027] 進(jìn)一步地,所述停止條件為最大迭代次數(shù)。
[0028] 本發(fā)明提供的技術(shù)方案針對(duì)求解最優(yōu)解過(guò)程較慢的問(wèn)題,通過(guò)處理器和計(jì)算設(shè)備 (MIC處理器)的協(xié)同計(jì)算,并采用人工蜂群算法,能夠極大地加速求解最優(yōu)解的過(guò)程。
【具體實(shí)施方式】
[0029] 于本發(fā)明較佳實(shí)施例中,假定異構(gòu)系統(tǒng)包括N個(gè)處理器及M個(gè)計(jì)算設(shè)備(于此,例 如為協(xié)處理器),其中,N及M為大于或等于1的整數(shù)。其中,處理器為中央處理器(CPU), 協(xié)處理器例如為眾核(MIC)處理器。
[0030] 在初始化數(shù)據(jù)集合及參數(shù)時(shí),需要將初始數(shù)據(jù)集以配置文件的形式存儲(chǔ)在處理器 的存儲(chǔ)系統(tǒng)中。處理器初始數(shù)據(jù)集劃分得到多個(gè)初始數(shù)據(jù)子集,為了更好地發(fā)揮異構(gòu)系統(tǒng) 的并行處理能力,處理器會(huì)發(fā)起N個(gè)線程(N為大于或等于1的整數(shù)),把不同的初始數(shù)據(jù)子 集同時(shí)分發(fā)給異構(gòu)系統(tǒng)中的協(xié)處理器。具體而言,處理器發(fā)起N個(gè)線程,并為每個(gè)線程分配 各自的初始數(shù)據(jù)子集(例如包括數(shù)據(jù)集合及參數(shù)),多線程并行地向協(xié)處理器發(fā)送調(diào)用請(qǐng) 求,協(xié)處理器在接收調(diào)用請(qǐng)求后,獲得各自的初始數(shù)據(jù)子集。其中,不同協(xié)處理器各自的初 始數(shù)據(jù)子集是不同的。
[0031] 于此,為了能夠在數(shù)據(jù)子集分發(fā)過(guò)程中盡量減少處理器與協(xié)處理器之間的通信 量,在進(jìn)行數(shù)據(jù)分發(fā)前對(duì)不同的數(shù)據(jù)子集進(jìn)行編碼。由于這些數(shù)據(jù)子集的數(shù)據(jù)特點(diǎn)是一樣 的,只需一種符合這些數(shù)據(jù)特點(diǎn)的編碼方法即可。
[0032] 協(xié)處理器接收各自的數(shù)據(jù)子集后,根據(jù)混合人工蜂群算法進(jìn)行一輪進(jìn)化,獲得該 輪的計(jì)算結(jié)果,其中,計(jì)算結(jié)果包括該輪的局部最優(yōu)解及對(duì)應(yīng)的參數(shù)(包括計(jì)算得到的其 他解)。具體而言,對(duì)每個(gè)協(xié)處理器,啟動(dòng)N個(gè)線程,每個(gè)線程負(fù)責(zé)對(duì)數(shù)據(jù)子集所對(duì)應(yīng)的子區(qū) 間的數(shù)據(jù)子集,分別進(jìn)行該輪的進(jìn)化,并選出本輪進(jìn)化的最優(yōu)解。每個(gè)協(xié)處理器得到的計(jì)算 結(jié)果(包括局部最優(yōu)解及對(duì)應(yīng)的參數(shù))依次寫回到處理器的配置文件中。若不滿足停止條 件,處理器再重新將配置文件中的更新數(shù)據(jù)集重新劃分為M個(gè)新的數(shù)據(jù)子集,以隨機(jī)分發(fā) 的方式把新的數(shù)據(jù)子集分發(fā)給M個(gè)協(xié)處理器,進(jìn)行新一輪的進(jìn)化。其中,重新分發(fā)的每個(gè)新 的數(shù)據(jù)子集都包含從M個(gè)協(xié)處理器得到的局部最優(yōu)解,S卩,M個(gè)局部最優(yōu)解替換掉新的數(shù)據(jù) 子集的尾部的M個(gè)數(shù)據(jù)。
[0033] 于此,尋找數(shù)據(jù)子集的最優(yōu)特征的過(guò)程實(shí)際上是一個(gè)在這個(gè)異構(gòu)系統(tǒng)上求最小值 的過(guò)程。
[0034] 在每輪的進(jìn)化過(guò)程中,每個(gè)協(xié)處理器都啟動(dòng)相應(yīng)個(gè)數(shù)線程同時(shí)對(duì)數(shù)據(jù)子集中的樣 本進(jìn)行并行進(jìn)化更新,直到得到每個(gè)協(xié)處理器上的局部最優(yōu)解。由于這些數(shù)據(jù)之間沒(méi)有相 關(guān)性,并且每次迭代進(jìn)化過(guò)程屬于計(jì)算密集型,可以通過(guò)協(xié)處理器進(jìn)行并行加速計(jì)算。
[0035] 當(dāng)每輪進(jìn)化結(jié)束后,每個(gè)協(xié)處理器會(huì)將計(jì)算結(jié)果返回至處理器,同時(shí),迭代次數(shù)加 一。處理器判斷是否滿足停止條件。于此,停止條件為最大迭代次數(shù)。若滿足停止條件,則 處理器從各個(gè)協(xié)處理器返回的該輪局部最優(yōu)解中選出全局最優(yōu)解。若不滿足停止條件,則 處理器將根據(jù)協(xié)處理器返回的計(jì)算結(jié)果更新的數(shù)據(jù)集劃分成M個(gè)更新數(shù)據(jù)子集,多線程并 行地分發(fā)給M個(gè)協(xié)處理器,協(xié)處理器接收更新的數(shù)據(jù)子集后,繼續(xù)下一輪進(jìn)化。上述過(guò)程循 環(huán)至滿足停止條件,獲得全局最優(yōu)解即停止。
[0036] 以上顯示和描述了本發(fā)明的基本原理和主要特征和本發(fā)明的優(yōu)點(diǎn)。本發(fā)明不受上 述實(shí)施例的限制,上述實(shí)施例和說(shuō)明書中描述的只是說(shuō)明本發(fā)明的原理,在不脫離本發(fā)明 精神和范圍的前提下,本發(fā)明還會(huì)有各種變化和改進(jìn),這些變化和改進(jìn)都落入要求保護(hù)的 本發(fā)明范圍內(nèi)。
【權(quán)利要求】
1. 一種異構(gòu)系統(tǒng)的并行混合人工蜂群方法,其特征在于,包括w下步驟: 51 ;處理器劃分初始數(shù)據(jù)集得到多個(gè)初始數(shù)據(jù)子集,多線程并行地向異構(gòu)系統(tǒng)中的多 個(gè)計(jì)算設(shè)備分發(fā)不同的初始數(shù)據(jù)子集; 52 ;所述多個(gè)計(jì)算設(shè)備分別接收各自的數(shù)據(jù)子集后,分別根據(jù)混合人工蜂群算法進(jìn)行 一輪進(jìn)化,獲得各自的該輪計(jì)算結(jié)果,并將各自的該輪計(jì)算結(jié)果發(fā)送至所述處理器W更新 數(shù)據(jù)集,其中,該輪計(jì)算結(jié)果包括該輪局部最優(yōu)解; 53 ;所述處理器判斷是否滿足停止條件,若是,所述處理器根據(jù)所述該輪局部最優(yōu)解得 到全局最優(yōu)解,若否,將更新后的數(shù)據(jù)集重新劃分為多個(gè)更新的數(shù)據(jù)子集,多線程并行地分 發(fā)給所述多個(gè)計(jì)算設(shè)備,之后返回S2。
2. 如權(quán)利要求1所述的異構(gòu)系統(tǒng)的并行混合人工蜂群方法,其特征在于,所述步驟S1 的過(guò)程包括;處理器分發(fā)多個(gè)線程,為每個(gè)線程分配初始數(shù)據(jù)子集,多線程并行地向異構(gòu)系 統(tǒng)中的多個(gè)計(jì)算設(shè)備發(fā)送調(diào)用請(qǐng)求,所述計(jì)算設(shè)備在接收到所述調(diào)用請(qǐng)求后,獲得各自的 初始數(shù)據(jù)子集。
3. 如權(quán)利要求1所述的異構(gòu)系統(tǒng)的并行混合人工蜂群方法,其特征在于:所述初始數(shù) 據(jù)集W配置文件的形式存儲(chǔ)在處理器的存儲(chǔ)系統(tǒng)中。
4. 如權(quán)利要求1所述的異構(gòu)系統(tǒng)的并行混合人工蜂群方法,其特征在于:所述處理器 向計(jì)算設(shè)備分發(fā)的數(shù)據(jù)子集為經(jīng)過(guò)編碼的數(shù)據(jù)子集。
5. 如權(quán)利要求1所述的異構(gòu)系統(tǒng)的并行混合人工蜂群方法,其特征在于:所述計(jì)算設(shè) 備為眾核one)處理器。
6. 如權(quán)利要求1所述的異構(gòu)系統(tǒng)的并行混合人工蜂群方法,其特征在于,于步驟S2之 后,還包括:所述處理器將迭代次數(shù)加一。
7. 如權(quán)利要求6所述的異構(gòu)系統(tǒng)的并行混合人工蜂群方法,其特征在于:所述停止條 件為最大迭代次數(shù)。
【文檔編號(hào)】G06N3/00GK104463322SQ201410645481
【公開日】2015年3月25日 申請(qǐng)日期:2014年11月10日 優(yōu)先權(quán)日:2014年11月10日
【發(fā)明者】王婭娟, 張廣勇, 吳韶華, 沈鉑, 盧曉偉, 吳慶, 張清 申請(qǐng)人:浪潮(北京)電子信息產(chǎn)業(yè)有限公司