基于神經(jīng)網(wǎng)絡(luò)動(dòng)態(tài)特征的片上網(wǎng)絡(luò)資源映射方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)視覺(jué)技術(shù)領(lǐng)域,特別涉及一種基于神經(jīng)網(wǎng)絡(luò)動(dòng)態(tài)特征的片上網(wǎng) 絡(luò)資源映射方法。
【背景技術(shù)】
[0002] 大腦與傳統(tǒng)的馮?諾伊曼計(jì)算機(jī)相比,具有超低功耗、高容錯(cuò)性的特點(diǎn),在處理非 結(jié)構(gòu)化信息和智能方面,大腦具有顯著優(yōu)勢(shì)。隨著腦科學(xué)的發(fā)展,借鑒大腦的計(jì)算模式構(gòu)建 基于神經(jīng)形態(tài)工程的新型計(jì)算系統(tǒng)已經(jīng)成為一個(gè)新興的發(fā)展方向。
[0003] 大腦的基本組成單元是神經(jīng)元,神經(jīng)元之間通過(guò)突觸相互連接,通過(guò)收發(fā)動(dòng)作電 位進(jìn)行通信。每個(gè)神經(jīng)元通常連接著100到10000個(gè)突觸,大量神經(jīng)元通過(guò)突觸相互連接形 成復(fù)雜的神經(jīng)網(wǎng)絡(luò)。
[0004] 模擬神經(jīng)形態(tài)網(wǎng)絡(luò)是一種非常重要、有效的研究和實(shí)現(xiàn)方法,雖然軟件模擬具有 非常高的靈活性,但模擬效率非常低,功耗非常高。為了加速神經(jīng)形態(tài)網(wǎng)絡(luò)的模擬,利用大 規(guī)模集成電路實(shí)現(xiàn)神經(jīng)形態(tài)網(wǎng)絡(luò)的模擬和仿真是神經(jīng)形態(tài)工程常用的實(shí)現(xiàn)方法,其計(jì)算特 點(diǎn)是具有高度的并行性和密集的通信,因此用對(duì)稱(chēng)多核處理器結(jié)合片上網(wǎng)絡(luò)來(lái)構(gòu)建神經(jīng)形 態(tài)網(wǎng)絡(luò)計(jì)算平臺(tái)是一種較為通行的做法。
[0005] 片上網(wǎng)絡(luò)(NoC,Network on Chip)借鑒了分布式計(jì)算系統(tǒng)的通信方式,采用路由 和分組交換技術(shù)替代傳統(tǒng)的總線,具有更加高效的核間通信能力。具體地,神經(jīng)形態(tài)芯片通 常由多個(gè)計(jì)算核心組成,每個(gè)核心可以模擬一定數(shù)量的神經(jīng)元,核心之間通過(guò)片上網(wǎng)絡(luò)連 接起來(lái),通過(guò)片上網(wǎng)絡(luò)的虛擬連接來(lái)模擬神經(jīng)元之間的突觸連接。神經(jīng)形態(tài)網(wǎng)絡(luò)和片上網(wǎng) 絡(luò)差異非常大,前者拓?fù)鋸?fù)雜,運(yùn)行頻率低,后者拓?fù)浜?jiǎn)單,運(yùn)行頻率高。將神經(jīng)形態(tài)網(wǎng)絡(luò)配 置到神經(jīng)形態(tài)芯片上后,原來(lái)神經(jīng)形態(tài)網(wǎng)絡(luò)中的大量連接會(huì)共用片上網(wǎng)絡(luò)的路徑。因此,將 神經(jīng)形態(tài)網(wǎng)絡(luò)映射到片上網(wǎng)絡(luò)的策略將很大程度上影響系統(tǒng)的性能。
[0006] SpiNNaker項(xiàng)目的映射技術(shù)中,在神經(jīng)形態(tài)構(gòu)建軟件時(shí),通常以神經(jīng)元群為基本的 構(gòu)建單元,群內(nèi)部的神經(jīng)元類(lèi)型、功能均相同,同一個(gè)群內(nèi)的神經(jīng)元之間無(wú)相互連接,但群 與群之間會(huì)有大量的突觸連接,并且通常是兩個(gè)群的神經(jīng)元之間全相聯(lián)的形式。
[0007] 基于上述特點(diǎn),該技術(shù)盡可能將同一個(gè)神經(jīng)元群的神經(jīng)元放置到同一個(gè)核或相鄰 的核上。具體做法如下:
[0008] 1)根據(jù)每個(gè)核可以放置的神經(jīng)元數(shù)量,將每個(gè)神經(jīng)元群分成若干個(gè)子群,子種群 的大小與每個(gè)核可以放置的神經(jīng)元數(shù)量相同;
[0009] 2)當(dāng)子群中神經(jīng)元數(shù)量較少,未達(dá)到每個(gè)核可以放置的神經(jīng)元數(shù)量時(shí),則對(duì)該子 群進(jìn)行組合,使其能夠盡量放滿(mǎn)一個(gè)核;
[0010] 3)將各個(gè)子群放置到各個(gè)核上,并考慮神經(jīng)元群之間的局部性。
[0011]神經(jīng)元的發(fā)放以多播的形式在片上網(wǎng)絡(luò)上傳播。由于每個(gè)神經(jīng)元發(fā)放神經(jīng)脈沖 時(shí),其目標(biāo)節(jié)點(diǎn)通常是若干神經(jīng)元群中的全部神經(jīng)元,將這些目標(biāo)節(jié)點(diǎn)盡可能放置在同一 個(gè)節(jié)點(diǎn)或者多個(gè)相鄰的節(jié)點(diǎn)上,以使多播數(shù)據(jù)包的目標(biāo)節(jié)點(diǎn)數(shù)量最小,且分布盡量集中,進(jìn) 而可以減少傳輸多播數(shù)據(jù)包所占用的網(wǎng)絡(luò)資源。
[0012] 然而,由于同一個(gè)神經(jīng)元群的神經(jīng)元在發(fā)放神經(jīng)脈沖時(shí),通常具有相同目標(biāo)節(jié)點(diǎn), 所以將這些神經(jīng)元放置到同一個(gè)核或相鄰的核上。又由于這些神經(jīng)元產(chǎn)生的多播數(shù)據(jù)包具 有相同的源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn),因此這些多播數(shù)據(jù)包所走的路徑將完全相同,這就導(dǎo)致了這 些多播數(shù)據(jù)包之間會(huì)產(chǎn)生激烈的競(jìng)爭(zhēng)和擁堵,尤其是較為活躍的神經(jīng)元群。其中,在活躍的 神經(jīng)元群所在的計(jì)算節(jié)點(diǎn)上,由于從計(jì)算節(jié)點(diǎn)進(jìn)入網(wǎng)絡(luò)的通道資源有限,會(huì)導(dǎo)致大量的多 播數(shù)據(jù)包擁堵在節(jié)點(diǎn)內(nèi)部,節(jié)點(diǎn)的出口帶寬將成為系統(tǒng)的瓶頸。
[0013] 另外,神經(jīng)元的分配也可以利用傳統(tǒng)的片上網(wǎng)絡(luò)應(yīng)用的映射算法來(lái)解決。該算法 通常是根據(jù)IP核(Intellectual Property core,知識(shí)產(chǎn)權(quán)核)的熱度、通信量等信息,將通 信密集的IP核分配到臨近的節(jié)點(diǎn)上,但由于搜索空間過(guò)大,找到全局最優(yōu)解非常困難。因 此,該算法主要致力于減少搜索空間,提高搜索效率,找到一個(gè)相對(duì)較好的局部最優(yōu)解。
[0014] 其中,較為經(jīng)典的有KL(即Kernighan-Lin)算法。KL算法是一個(gè)0(n2logn)時(shí)間復(fù) 雜度的圖分割算法,設(shè)G(V,E)是一個(gè)圖,其中,V是頂點(diǎn)的集合,E是邊的集合,KL算法將V分 為大小相同兩個(gè)部分A和B,使得A和B中所有頂點(diǎn)之間邊的權(quán)重之和T最小。設(shè)a為A中的頂 點(diǎn),lAa與A中其它頂點(diǎn)之間邊的權(quán)重之和,EAa與B中其它頂點(diǎn)之間邊的權(quán)重之和,損失 權(quán)重定義為Da = Ea-Ia。
[0015] 該算法主要分為以下三個(gè)步驟:
[0016] 1)隨機(jī)產(chǎn)生大小相同的兩個(gè)集合A和B;
[0017] 2)計(jì)算A和B中每個(gè)頂點(diǎn)的內(nèi)權(quán)重和外權(quán)重;
[0018] 3)將A和B中的頂點(diǎn)a和b進(jìn)行交換,每輪迭代選取交換之后損失權(quán)重降低最多的兩 個(gè)點(diǎn)進(jìn)行交換,直至損失權(quán)重不再降低。
[0019] 通過(guò)KL算法,逐步將一個(gè)網(wǎng)絡(luò)的通信盡可能的集中到局部,可以有效降低網(wǎng)絡(luò)中 的通信量。
[0020] 神經(jīng)形態(tài)網(wǎng)絡(luò)相比傳統(tǒng)的并行計(jì)算任務(wù)有很多不同,傳統(tǒng)的并行計(jì)算任務(wù)對(duì)少量 節(jié)點(diǎn)的擁堵不敏感,而神經(jīng)形態(tài)網(wǎng)絡(luò)的多播數(shù)據(jù)包若在一定時(shí)間內(nèi)未送達(dá),會(huì)導(dǎo)致丟包,影 響網(wǎng)絡(luò)的功能。因此,為了確保網(wǎng)絡(luò)的功能可靠,神經(jīng)形態(tài)網(wǎng)絡(luò)的運(yùn)行速度取決于延遲最長(zhǎng) 的多播數(shù)據(jù)包傳輸時(shí)間??梢钥闯觯粲?jì)算任務(wù)過(guò)于集中,則會(huì)導(dǎo)致局部的擁堵嚴(yán)重,影響 神經(jīng)形態(tài)網(wǎng)絡(luò)的運(yùn)行性能。
【發(fā)明內(nèi)容】
[0021] 本發(fā)明旨在至少解決現(xiàn)有技術(shù)中存在的技術(shù)問(wèn)題之一。
[0022] 有鑒于此,本發(fā)明需要提供一種基于神經(jīng)網(wǎng)絡(luò)動(dòng)態(tài)特征的片上網(wǎng)絡(luò)資源映射方 法,該方法能夠有效均衡負(fù)載,減少網(wǎng)絡(luò)擁塞,降低最大傳輸延遲,并提高系統(tǒng)性能。
[0023] 為了實(shí)現(xiàn)上述目的,本發(fā)明的實(shí)施例提出了一種基于神經(jīng)網(wǎng)絡(luò)動(dòng)態(tài)特征的片上網(wǎng) 絡(luò)資源映射方法,包括以下步驟:獲取神經(jīng)網(wǎng)絡(luò)中的所有神經(jīng)元,其中,所述神經(jīng)網(wǎng)絡(luò)由神 經(jīng)元群組成,所述神經(jīng)元群由神經(jīng)元組成;將所述神經(jīng)元群中的神經(jīng)元放入片上網(wǎng)絡(luò)N個(gè)核 中,其中,同一個(gè)所述神經(jīng)元群中的神經(jīng)元放到同一個(gè)所述核和/或距離相近的兩個(gè)或多個(gè) 核中,其中,所述N為大于1的正整數(shù);運(yùn)行SNN網(wǎng)絡(luò),分別計(jì)算每個(gè)核的通信量S,并根據(jù)所述 S對(duì)所述N個(gè)核進(jìn)行排序:Si 2 S2> . . . 2 SN;判斷Si/Sj是否小于預(yù)設(shè)值,其中,i = l,2,. . .,N/ 2or(N-l)/2,j=N-i+l;如果否,則交換通信量分別為SdPSj的兩個(gè)核中一半的神經(jīng)元,得到 神經(jīng)元到片上網(wǎng)絡(luò)N個(gè)核的新的映射。
[0024] 本發(fā)明實(shí)施例的基于神經(jīng)網(wǎng)絡(luò)動(dòng)態(tài)特征的片上網(wǎng)絡(luò)資源映射方法,將多個(gè)神經(jīng)元 群中的神經(jīng)元放置到多個(gè)核中,并且將同一神經(jīng)元群中的神經(jīng)元盡可能放到同一個(gè)核或距 離相近的核中,每個(gè)核對(duì)應(yīng)片上網(wǎng)絡(luò)中的一個(gè)節(jié)點(diǎn),進(jìn)而通過(guò)交換不同核中的神經(jīng)元,將片 上網(wǎng)絡(luò)一個(gè)節(jié)點(diǎn)內(nèi)的任務(wù)進(jìn)行拆分,即交換活躍節(jié)點(diǎn)和不活躍節(jié)點(diǎn)中的神經(jīng)元。本發(fā)明實(shí) 施例的方法能夠有效均衡負(fù)載,減少片上網(wǎng)絡(luò)中的擁塞,降低最大傳輸延遲,進(jìn)而提高數(shù)據(jù) 傳輸性能。
[0025] 另外,本發(fā)明上述實(shí)施例的基于神經(jīng)網(wǎng)絡(luò)動(dòng)態(tài)特征的片上網(wǎng)絡(luò)資源映射方法還具 有如下附加特征:
[0026] 根據(jù)本發(fā)明的一個(gè)的實(shí)施例,所述每個(gè)核的通信量S為所述每個(gè)核運(yùn)行SNN (Spiking Neuron Networks,脈沖神經(jīng)網(wǎng)絡(luò))網(wǎng)絡(luò)中發(fā)送的數(shù)據(jù)包數(shù)量,其中,所述數(shù)據(jù)包 的字段包括神經(jīng)元群ID和神經(jīng)元ID,每個(gè)所述數(shù)據(jù)包只有一個(gè)數(shù)據(jù)分片。
[0027]根據(jù)本發(fā)明的一個(gè)實(shí)施例,所述片上網(wǎng)絡(luò)包括處理單元、網(wǎng)絡(luò)接口、路由器、節(jié)點(diǎn) 和互聯(lián)網(wǎng)絡(luò),其中,所述處理單元、所述網(wǎng)絡(luò)接口、所述路由器和所述節(jié)點(diǎn)之間存在一一對(duì) 應(yīng)關(guān)系,所述節(jié)點(diǎn)包括源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn),所述互聯(lián)網(wǎng)絡(luò)的拓?fù)錇樗龉?jié)點(diǎn)之間的連接方 式。
[0028] 根據(jù)本發(fā)明的一個(gè)實(shí)施例,所述N個(gè)核中神經(jīng)元的所述數(shù)據(jù)包發(fā)送采用兩層路由 結(jié)構(gòu)。
[0029] 根據(jù)本發(fā)明的一個(gè)實(shí)施例,所述源節(jié)點(diǎn)向所述目標(biāo)節(jié)點(diǎn)發(fā)送數(shù)據(jù)包,具體包括以 下步驟:所述核中的所述數(shù)據(jù)包傳到其對(duì)應(yīng)的路由器上;根據(jù)所述數(shù)據(jù)包的所述神經(jīng)元群 ID進(jìn)行路由;所述數(shù)據(jù)包到達(dá)所述目標(biāo)節(jié)點(diǎn)后,根據(jù)所述神經(jīng)元ID將所述數(shù)據(jù)包發(fā)送至對(duì) 應(yīng)神經(jīng)元;所述對(duì)應(yīng)神經(jīng)元根據(jù)連接信息確定是否接收所述數(shù)據(jù)包,其中,所述連接信息保 存在所述目標(biāo)節(jié)點(diǎn)中。
[0030] 根據(jù)本發(fā)明的一個(gè)實(shí)施例,所述數(shù)據(jù)包進(jìn)入所述對(duì)應(yīng)的路由器之后,所述對(duì)應(yīng)的 路由器通過(guò)查詢(xún)路由表獲取所述數(shù)據(jù)包的傳輸方向,所述路由表的表項(xiàng)包含鍵和值,其中, 所述鍵為所述神經(jīng)元群ID,所述值為出口方向。
[0031] 根據(jù)本發(fā)明的一個(gè)實(shí)施例,如果所述路由表中沒(méi)有找到某個(gè)神經(jīng)元群ID對(duì)應(yīng)的表 項(xiàng),則采用默認(rèn)的路由方式。
[0032] 根據(jù)本發(fā)明的一個(gè)實(shí)施例,所述預(yù)設(shè)值為2。
[0033] 根據(jù)本發(fā)明的一個(gè)實(shí)施例,所述默認(rèn)的路由方