亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種基于循環(huán)雅克比的實(shí)對稱陣特征分解裝置的制作方法

文檔序號:6602626閱讀:237來源:國知局
專利名稱:一種基于循環(huán)雅克比的實(shí)對稱陣特征分解裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及矩陣計(jì)算與集成電路技術(shù)領(lǐng)域,特別是涉及一種基于循環(huán)雅克比的實(shí)對稱陣特征分解裝置。
背景技術(shù)
實(shí)對稱陣的特征分解是線性代數(shù)中一種重要的矩陣分解,在信號處理、統(tǒng)計(jì)學(xué)等 領(lǐng)域有著重要的應(yīng)用。循環(huán)雅克比(Cyclic Jacobi)算法是用來計(jì)算實(shí)對稱矩陣全部特征 值及其對應(yīng)特征向量的一種變換方法,其基本思想是通過一組平面旋轉(zhuǎn)變換(正交相似變 換)將對稱矩陣A轉(zhuǎn)換為對角陣,從而求得全部特征值和特征向量,該方法能在求特征值同 時(shí)求得相當(dāng)精確的近似正交規(guī)范特征向量。采用循環(huán)雅克比(Cyclic Jacobi)算法來實(shí)現(xiàn)特征分解,通常包括兩類實(shí)現(xiàn)方法 一類是基于脈動陣列結(jié)構(gòu)的處理系統(tǒng),另一類是基于單一運(yùn)算模塊的處理系統(tǒng)。其中,對于基于脈動陣列結(jié)構(gòu)的處理系統(tǒng),由于脈動陣列擁有很高的計(jì)算并行度, 并且陣列的結(jié)構(gòu)與循環(huán)雅克比算法相互吻合,因此具有非常強(qiáng)大的計(jì)算性能。但是它的缺 點(diǎn)也非常明顯,對于維度為N的矩陣,其需要N2/4個(gè)運(yùn)算模塊,故在實(shí)現(xiàn)上需要消耗大量的 硬件資源。在現(xiàn)有的FPGA芯片中,很難實(shí)現(xiàn)大規(guī)模矩陣的特征分解。基于單一運(yùn)算模塊的處理系統(tǒng),現(xiàn)有技術(shù)通常采用一個(gè)求角模塊和一個(gè)旋轉(zhuǎn)模塊 實(shí)現(xiàn)了特征分解處理系統(tǒng),這種實(shí)現(xiàn)方法的缺點(diǎn)是計(jì)算性能相對較差,計(jì)算效率不高。還有 一種方法是采用兩個(gè)CORDIC模塊實(shí)現(xiàn)特征分解處理系統(tǒng),其中一個(gè)CORDIC模塊用于求角 和旋轉(zhuǎn),另一個(gè)只用于旋轉(zhuǎn),以提高求角計(jì)算模塊的使用效率,該方法可采用了一定程度的 流水線技術(shù),使得系統(tǒng)的計(jì)算性能有所提高,但盡管如此,該系統(tǒng)的并行度并沒有變化,計(jì) 算性能相對還是不高??傊枰绢I(lǐng)域技術(shù)人員迫切解決的一個(gè)技術(shù)問題就是如何能夠一種基于循 環(huán)雅克比的實(shí)對稱陣特征分解實(shí)現(xiàn)方案,可以在合理的硬件資源條件下實(shí)現(xiàn)較高的運(yùn)算性 能,解決運(yùn)算性能和資源消耗之間的矛盾。

發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種基于循環(huán)雅克比的實(shí)對稱陣特征分解裝 置,可以在合理的硬件資源條件下實(shí)現(xiàn)較高的運(yùn)算性能,解決運(yùn)算性能和資源消耗之間的矛盾。為了解決上述問題,本發(fā)明公開了一種基于循環(huán)雅克比的實(shí)對稱陣特征分解裝 置,包括存儲模塊,用于分別保存并更新N階實(shí)對稱陣A和正交陣Q的各個(gè)元素;以及按照 預(yù)置循環(huán)遍歷順序,讀取A的元素ap,p,%,,,、,,(? = 1,2,. . .,N ;q = 1,2,. . .,N ;p乒q) 傳送到求角模塊,并相應(yīng)的依次讀取A的左乘元素、A的右乘元素和Q的右乘元素,傳送到K 個(gè)旋轉(zhuǎn)模塊;
求角模塊,用于針對元素ap,p, …, …組成的復(fù)數(shù)進(jìn)行求角計(jì)算,得到旋轉(zhuǎn)角度并 傳送到K個(gè)旋轉(zhuǎn)模塊;K個(gè)旋轉(zhuǎn)模塊,用于根據(jù)所述旋轉(zhuǎn)角度,分別針對A的左乘元素、A的右乘元素或者 Q的右乘元素進(jìn)行旋轉(zhuǎn)計(jì)算,并將旋轉(zhuǎn)后得到的數(shù)據(jù)元素輸出至存儲模塊進(jìn)行更新;其中, K為并行度;控制模塊,用于通過存儲控制信號控制存儲模塊的數(shù)據(jù)讀取和更新,以及通過運(yùn) 算使能信號控制求角模塊的求角計(jì)算和旋轉(zhuǎn)模塊的旋轉(zhuǎn)計(jì)算。進(jìn)一步,所述旋轉(zhuǎn)單元的旋轉(zhuǎn)計(jì)算依次包括:A左乘、A右乘和Q右乘操作;針對元素ap,p,aq, q, ap, q, A的左乘元素為A的第ρ行和第q行的對應(yīng)元素,A的右 乘元素為A的第ρ列和第q列的對應(yīng)元素,Q的右乘元素為Q的第ρ列和第q列的對應(yīng)元優(yōu)選的,所述裝置完成一次循環(huán)遍歷包括N-I組元素的遍歷,每組元素的遍歷包 括N/2次操作,一次操作通過旋轉(zhuǎn)模塊完成3N次旋轉(zhuǎn)計(jì)算;則每組元素的遍歷進(jìn)行3次可 并行的N2/2個(gè)旋轉(zhuǎn)計(jì)算。優(yōu)選的,所述并行度K的最大值為N2/2。優(yōu)選的,在N-I組元素的遍歷中,針對第一組各個(gè)元素中的、,,ρ取值為1,3, 5,...,N-I, q = p+1 ;則進(jìn)行一次循環(huán)遍歷,各組元素之間的變換順序依次為第一個(gè)元素的行坐標(biāo)不變,列坐標(biāo)傳到后一個(gè)元素的列坐標(biāo);中間元素的行坐標(biāo)傳到前一個(gè)元素的行坐標(biāo),列坐標(biāo)傳到后一個(gè)元素的列坐標(biāo); 其中,第二個(gè)元素的行坐標(biāo)傳到前一個(gè)元素的列坐標(biāo);最后一個(gè)元素的行坐標(biāo)傳到前一個(gè)元素的行坐標(biāo),列坐標(biāo)傳到自身的行坐標(biāo)。優(yōu)選的,針對一組元素,旋轉(zhuǎn)模塊完成A右乘操作后,由求角模塊進(jìn)行下一組元素 的求角計(jì)算。進(jìn)一步,控制模塊的運(yùn)算使能信號對A左乘、A右乘和Q右乘的使能周期均為N2/ (2K)。進(jìn)一步,一組元素的遍歷操作周期為N2/ (2K) +N2/ (2K) +求角計(jì)算延遲+旋轉(zhuǎn)計(jì)算 延遲。優(yōu)選的,所述各個(gè)模塊通過總線進(jìn)行數(shù)據(jù)傳送;其中,存儲模塊通過求角輸入總線將相應(yīng)的數(shù)據(jù)元素傳送至求角模塊;存儲模塊通過旋 轉(zhuǎn)輸入總線將相應(yīng)的數(shù)據(jù)元素傳送至旋轉(zhuǎn)模塊;求角模塊通過角度總線將旋轉(zhuǎn)角度分別傳 送到K個(gè)旋轉(zhuǎn)模塊;K個(gè)旋轉(zhuǎn)模塊通過輸出總線將旋轉(zhuǎn)后得到的數(shù)據(jù)元素傳送回存儲模塊。優(yōu)選的,所述控制模塊還用于通過總線選擇信號控制存儲模塊將讀取的數(shù)據(jù)元素 傳送到求角輸入總線或旋轉(zhuǎn)輸入總線;以及通過總線控制信號控制求角輸入總線、角度總 線和旋轉(zhuǎn)輸入總線、輸出總線將相應(yīng)的數(shù)據(jù)元素輸入至對應(yīng)的求角模塊、旋轉(zhuǎn)模塊、存儲模 塊中。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)(1)、并行度可配置。本發(fā)明在循環(huán)雅克比算法的基礎(chǔ)上,采用了可配置并行化技 術(shù)。不同于現(xiàn)有技術(shù)中的資源節(jié)省但運(yùn)算性能不高的運(yùn)算模塊結(jié)構(gòu),和運(yùn)算性能高但資源消耗嚴(yán)重的脈動陣列結(jié)構(gòu),本發(fā)明提出的可配置結(jié)構(gòu)的特征分解裝置,非常好的解決了運(yùn) 算性能與資源消耗之間的矛盾,使得對于不同規(guī)模的特征分解問題,在現(xiàn)有FPGA硬件資源 的條件下,達(dá)到了最佳的運(yùn)算性能。(2)、優(yōu)化的遍歷順序。本發(fā)明優(yōu)化了循環(huán)雅克比算法在遍歷矩陣元素時(shí)的順序, 使得在整個(gè)計(jì)算過程中,可以同時(shí)進(jìn)行的旋轉(zhuǎn)計(jì)算數(shù)始終保持最高的N2/2。也就是說,當(dāng)硬 件資源滿足時(shí),本發(fā)明可以配置系統(tǒng)的并行度為N2/2,即系統(tǒng)包含N2/2個(gè)旋轉(zhuǎn)模塊,相比脈 動陣列結(jié)構(gòu)的并行度還要高出一倍。(3)、深度流水處理。本發(fā)明在實(shí)現(xiàn)過程中采用了深度流水處理,使得運(yùn)算模塊在 進(jìn)行大量計(jì)算的時(shí)候達(dá)到了很高的數(shù)據(jù)吞吐率。即在每一組操作時(shí),當(dāng)完成矩陣A的右乘 操作之后即進(jìn)行下一組元素的求角計(jì)算,而不是等到所有旋轉(zhuǎn)操作完成再開始,很大程度 的節(jié)省了一組操作所需時(shí)間,提高了系統(tǒng)的整體性能。


圖1是本發(fā)明一種基于循環(huán)雅克比的實(shí)對稱陣特征分解裝置實(shí)施例的結(jié)構(gòu)圖; 圖2是本發(fā)明實(shí)施例所述的存儲模塊的結(jié)構(gòu)圖;圖3是針對8階實(shí)對稱矩陣的各組元素之間的變化過程示意圖;圖4是本發(fā)明實(shí)施例所述求角模塊和旋轉(zhuǎn)模塊的時(shí)序關(guān)系圖。
具體實(shí)施例方式為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí) 施方式對本發(fā)明作進(jìn)一步詳細(xì)的說明。在介紹本發(fā)明的具體實(shí)施方式
之前,首先對循環(huán)雅克比算法進(jìn)行說明。對于一個(gè) 實(shí)對稱陣A,若存在正交陣Q,可以將其相似變換為一個(gè)對角陣Σ,如下式所示QtAQ = Σ ;其中,上標(biāo)T表示對向量或矩陣的轉(zhuǎn)置。則Σ對角線上的元素即為A的特征值,而 Q中各列即為相應(yīng)的特征向量。記旋轉(zhuǎn)矩陣為W(p,q,θ ),其中ρ >q,旋轉(zhuǎn)矩陣中的元素 定義如下wpp = cos θ ,Wpq = sin θ ,Wqp = -sin θ ,Wqq = cos θ,而其余對角線元素都為1, 非對角線元素都為0,
'1 λ O
cos θ L sin ^W{p,q,e)=M 1 M
-sin^ L cos0將旋轉(zhuǎn)矩陣對稱的作用于對稱陣A,得到A' =W(p,q,e)TAff(p,q, Θ),要使得旋 轉(zhuǎn)后矩陣中(P,q),(q,P)位置的元素為零,則可以確定θ的值
這樣,矩陣A中(p,q),(q, ρ)位置的能量就被轉(zhuǎn)移到對角線上了。循環(huán)雅克比算 法就是通過一系列這樣的旋轉(zhuǎn)操作,將矩陣A中非對角元素的能量逐步轉(zhuǎn)移到對角線上, 當(dāng)非對角元素能量之和小于某個(gè)值時(shí),我們即可認(rèn)為A已經(jīng)相似成一個(gè)對角陣了,即完成 了特征分解操作。循環(huán)雅克比算法如表1所示。表1循環(huán)雅克比算法 旋轉(zhuǎn)模塊的個(gè)數(shù)即為系統(tǒng)的并行度,這在本發(fā)明中是可以配置的。步驟二使用坐標(biāo)旋轉(zhuǎn)數(shù)字計(jì)算(CORDIC,Coordinate Rotation DigitalComputer)單元生成兩類運(yùn)算模塊,分別為求角模塊和旋轉(zhuǎn)模塊。其中求角模塊根 據(jù)輸入的ap,p,aq,q, ap,q, ρ Φ q,計(jì)算旋轉(zhuǎn)操作所需角度θ p,,,而旋轉(zhuǎn)模塊則將輸入的Xin和 Yin所組成的復(fù)數(shù)XIN+jYIN旋轉(zhuǎn)θ μ角度。步驟三用兩個(gè)雙端口 RAM(隨機(jī)存取儲存器)組成存儲模塊,分別用于保存算法 中的N階方陣A和Q。由于系統(tǒng)對數(shù)據(jù)讀取的頻率較高,存儲模塊的地址采用矩陣坐標(biāo)的比 特位合并方式生成。而控制兩個(gè)RAM的信號和選擇總線的信號由另外的控制信號生成。步驟四確定循環(huán)雅克比算法中遍歷矩陣元素的順序,使得系統(tǒng)能夠同時(shí)進(jìn)行 N2/2個(gè)旋轉(zhuǎn)計(jì)算而不會有相互之間的干擾。本發(fā)明將一次遍歷分為N-I組操作,每組操作 要進(jìn)行3次可并行的N2/2個(gè)旋轉(zhuǎn)計(jì)算,分別對應(yīng)對矩陣A的左乘,對矩陣A的右乘和對矩 陣Q的右乘。步驟五根據(jù)所確定的遍歷順序?qū)崿F(xiàn)控制模塊,產(chǎn)生控制其他模塊工作的信號。其 中主要包括RAM控制信號,總線選擇信號,總線控制信號和運(yùn)算模塊使能信號這四類控制信號。這四類控制信號以一組操作為周期,控制其他模塊協(xié)同工作,最終實(shí)現(xiàn)完整的特征分 解的功能 。參照圖1,示出了本發(fā)明一種基于循環(huán)雅克比的實(shí)對稱陣特征分解裝置實(shí)施例的 結(jié)構(gòu)圖,包括存儲模塊101,用于分別保存并更新N階實(shí)對稱陣A和正交陣Q的各個(gè)元素;以 及按照預(yù)置循環(huán)遍歷順序,讀取A的元素Ip, ,,,、,,(? = 1,2,. . .,N ;q = 1,2,. . .,N ; P Φ q)傳送到求角模塊,并相應(yīng)的依次讀取A的左乘元素、A的右乘元素和Q的右乘元素, 傳送到K個(gè)旋轉(zhuǎn)模塊;求角模塊102,用于針對元素ap,p,aq,q, 組成的復(fù)數(shù)進(jìn)行求角計(jì)算,得到旋轉(zhuǎn)角 度并傳送到K個(gè)旋轉(zhuǎn)模塊;K個(gè)旋轉(zhuǎn)模塊103,用于根據(jù)所述旋轉(zhuǎn)角度,分別針對A的左乘元素、A的右乘元素 或者Q的右乘元素進(jìn)行旋轉(zhuǎn)計(jì)算,并將旋轉(zhuǎn)后得到的數(shù)據(jù)元素輸出至存儲模塊進(jìn)行更新; 其中,K為并行度;控制模塊104,用于通過存儲控制信號控制存儲模塊的數(shù)據(jù)讀取和更新,以及通過 運(yùn)算使能信號控制求角模塊的求角計(jì)算和旋轉(zhuǎn)模塊的旋轉(zhuǎn)計(jì)算。其中,所述旋轉(zhuǎn)單元的旋轉(zhuǎn)計(jì)算依次包括:A左乘、A右乘和Q右乘操作;針對元素 aP,P,aqjq,aPjq,A的左乘元素為A的第ρ行和第q行的對應(yīng)元素,A的右乘元素為A的第ρ列 和第q列的對應(yīng)元素,Q的右乘元素為Q的第P列和第q列的對應(yīng)元素。在本發(fā)明的優(yōu)選實(shí)施例中,所述各個(gè)模塊通過總線進(jìn)行數(shù)據(jù)傳送;所述總線包括 求角輸入總線105、旋轉(zhuǎn)輸入總線106、角度總線107和輸出總線108 ;其中,存儲模塊通過 求角輸入總線將相應(yīng)的數(shù)據(jù)元素傳送至求角模塊;存儲模塊通過旋轉(zhuǎn)輸入總線將相應(yīng)的數(shù) 據(jù)元素傳送至旋轉(zhuǎn)模塊;求角模塊通過角度總線將旋轉(zhuǎn)角度分別傳送到K個(gè)旋轉(zhuǎn)模塊;K個(gè) 旋轉(zhuǎn)模塊通過輸出總線將旋轉(zhuǎn)后得到的數(shù)據(jù)元素傳送回存儲模塊。所述控制模塊還用于通過總線選擇信號控制存儲模塊將讀取的數(shù)據(jù)元素傳送到 求角輸入總線或旋轉(zhuǎn)輸入總線;以及通過總線控制信號控制求角輸入總線、角度總線和旋 轉(zhuǎn)輸入總線、輸出總線將相應(yīng)的數(shù)據(jù)元素輸入至對應(yīng)的求角模塊、旋轉(zhuǎn)模塊、存儲模塊中。下面對所述裝置進(jìn)行具體說明。一、各個(gè)模塊的運(yùn)行實(shí)現(xiàn)對于每一次操作,首先,存儲模塊根據(jù)預(yù)置遍歷順序讀取矩陣A的元素ap, p,aq, q, ap,q并傳送到求角輸入總線;然后上述元素輸入至求角模塊,在求角模塊中計(jì)算得到旋轉(zhuǎn)角 度并傳送到角度總線;同時(shí),存儲模塊還將讀取旋轉(zhuǎn)操作中對應(yīng)的行列的元素,并傳送到旋 轉(zhuǎn)輸入總線;之后,角度總線和旋轉(zhuǎn)輸入總線并行的向K個(gè)旋轉(zhuǎn)模塊輸入旋轉(zhuǎn)的數(shù)據(jù)元素 與旋轉(zhuǎn)角度,旋轉(zhuǎn)模塊計(jì)算得到旋轉(zhuǎn)后的數(shù)據(jù)將傳送到輸出總線;最后輸出總線將數(shù)據(jù)傳 送回存儲模塊。這樣就完成了一次操作。而在每次操作中,控制模塊將輸出控制信號來控 制存儲模塊和總線的數(shù)據(jù)讀寫和傳輸。對照表1中(2.2)和(2. 3),一次操作即將矩陣A(p,q)位置的元素旋轉(zhuǎn)為零,這 樣的一次操作總共需要完成3N次旋轉(zhuǎn)計(jì)算。二、求角模塊和旋轉(zhuǎn)模塊的實(shí)現(xiàn)本發(fā)明是由兩類運(yùn)算模塊構(gòu)成,分別為求角模塊和旋轉(zhuǎn)模塊。求角模塊對于輸入的ap,p,aqq,apq,,ρ≠q,進(jìn)行求角計(jì)算并輸出旋轉(zhuǎn)角度Θμ。實(shí)際上,求角模塊是先將輸入 的數(shù)據(jù)構(gòu)成復(fù)數(shù)ap,(2ap, ,然后再將該復(fù)數(shù)旋轉(zhuǎn)至實(shí)數(shù)軸,其旋轉(zhuǎn)的角度的一半就
是θ。旋轉(zhuǎn)模塊對于輸入的ΧΙΝ,ΥΙΝ和θ ρ,,,通過旋轉(zhuǎn)計(jì)算輸出Xtm = XinCos θ -Yinsin θ和 Yqut = XINsin θ +YINcos θ。實(shí)際上,旋轉(zhuǎn)模塊是將復(fù)數(shù)XIN+jYINm轉(zhuǎn)角度θ,旋轉(zhuǎn)后的復(fù)數(shù), 其實(shí)部即為輸出的XOT,虛部則為輸出的Y·。例如,對于A的左乘,可以分別將A的第ρ行
的第η(η = 1,2,......N)個(gè)元素Α(ρ,η)作為Xin,將A的第q行的第η個(gè)元素A(q,η)作
為Yin,進(jìn)行旋轉(zhuǎn)操作;對于A的右乘,可以分別將A的第ρ列的第η (η = 1,2,......N)個(gè)
元素Α(η,ρ)作為Xin,將A的第q列的第η個(gè)元素A(n,q)作為Yin,進(jìn)行旋轉(zhuǎn)操作;對于Q
的右乘,可以分別將Q的第P列的第η (η = 1,2,......N)個(gè)元素Q(n,ρ)作為Xin,將Q的 第q行的第η個(gè)元素Q(n,q)作為Yin,進(jìn)行旋轉(zhuǎn)操作。因此,求角模塊和旋轉(zhuǎn)模塊的計(jì)算主體都是幅旋轉(zhuǎn),前者為旋轉(zhuǎn)求角,后者為已知 角度做旋轉(zhuǎn)。在具體實(shí)施例,這兩個(gè)模塊都可以用坐標(biāo)旋轉(zhuǎn)數(shù)字計(jì)算(CORDIC,Coordinate Rotation Digital Computer)單元來實(shí)現(xiàn)。例如,在Xilinx公司出品的開發(fā)軟件ISE中集 成了具有CORDIC功能的IPcore,可以直接用于實(shí)現(xiàn)上述兩個(gè)基本模塊。三、存儲模塊的實(shí)現(xiàn)在本發(fā)明的具體實(shí)施例中,所述的存儲模塊的結(jié)構(gòu)圖如圖2所示。該存儲模塊由 兩個(gè)雙端口隨機(jī)存取儲存器(RAM)組成,RAM A和RAM B分別保存算法中的N階方陣A和 Q0由于RAM是線性存儲,一個(gè)地址對應(yīng)矩陣的一個(gè)元素。為了方便地址信號的生成,將矩 陣中(i,j)位置的元素保存在地址(i-l)2n+(j-l)的空間中,其中2"為不小于N的最小的 2的冪,這樣生成地址信號就無需乘加運(yùn)算,而僅需比特位合并即可。這兩個(gè)RAM的四個(gè)數(shù)據(jù)端口都是雙向輸入輸出端口,由于數(shù)據(jù)輸入與輸出的時(shí)間 不同,因此不會造成沖突。輸出的數(shù)據(jù)將總線選擇信號被選擇傳送到求角輸入總線或者旋 轉(zhuǎn)輸出總線上,并在所述總線上封裝成特定的數(shù)據(jù)形式,輸入到求角模塊和旋轉(zhuǎn)模塊相應(yīng) 的輸入端,例如,將a^-a"作為求角模塊的實(shí)部進(jìn)行輸入,將2、,,作為求角模塊的實(shí)部進(jìn) 行輸入;旋轉(zhuǎn)模塊的數(shù)據(jù)封裝可參見上述XIN、YIN的輸入。而輸出總線上的數(shù)據(jù)將傳回到RAM 中對應(yīng)的地址中。在存儲模塊數(shù)據(jù)元素輸入輸出的過程中,由控制模塊產(chǎn)生這兩個(gè)RAM的 存儲控制信號(包括地址信號和讀寫控制信號),而總線選擇信號也由控制信號產(chǎn)生。四、預(yù)置循環(huán)遍歷順序在實(shí)現(xiàn)控制模塊之前,需要先確定在表1中遍歷矩陣的順序。在每一次遍歷中,我 們需要針對所有的非對角元素做一次對稱旋轉(zhuǎn)操作。這些操作的結(jié)果是使得該元素及其對 稱元素被旋轉(zhuǎn)至零。由于這樣的操作只涉及矩陣中的兩行與兩列,因此可以同時(shí)進(jìn)行N/2 個(gè)對稱旋轉(zhuǎn)操作。在本發(fā)明的優(yōu)選實(shí)施例中,所述裝置完成一次循環(huán)遍歷包括N-I組元素的遍歷, 每組元素的遍歷包括N/2次操作,一次操作通過旋轉(zhuǎn)模塊完成3N次旋轉(zhuǎn)計(jì)算;則每組元素 的遍歷進(jìn)行3次可并行的N2/2個(gè)旋轉(zhuǎn)計(jì)算。
下面,以一個(gè)8階實(shí)對稱矩陣為例,選擇第一組操作針對的元素為(1,2),(3,4), (5,6)和(7,8),即A' = W (7,8) tW (5,6) tW (3,4) tW (1,2) tAW (1,2) W (3,4) W (5,6) W (7,8)Q' = Qff(l,2)ff(3,4)ff(5,6)ff(7,8)
根據(jù)表1中的步驟(2.1),可以知道上述四個(gè)旋轉(zhuǎn)操作中的角度θ1>2,θ3,4,θ5,6, θ 7,8可以同時(shí)計(jì)算出來,而不會有相互之間的干擾。而對于矩陣A來說,左乘W(1,2)T,W(3, 4)T,W (5,6)τ和W (7,8)τ是分別對它的第1、2兩行,3、4兩行,5、6兩行和7、8兩行做操作,因 此這四個(gè)左乘矩陣可以同時(shí)作用在矩陣A上,而不會有相互之間的干擾。同理,A的四個(gè)右 乘矩陣和Q的四個(gè)右乘矩陣也可以同時(shí)作用。由于一個(gè)旋轉(zhuǎn)矩陣對應(yīng)Ν(在本實(shí)施例中N為8)個(gè)旋轉(zhuǎn)計(jì)算,因此,可以同時(shí)進(jìn)行 Ν/2ΧΝ =Ν2/2個(gè)旋轉(zhuǎn)計(jì)算,這也是本發(fā)明中最大的并行度,即并行度K的最大值max {K}= N2/2。而在實(shí)際情況中,K往往根據(jù)硬件資源的多少取N2/2的一個(gè)因子。在本發(fā)明的實(shí)施 例中,并行度也即旋轉(zhuǎn)模塊的個(gè)數(shù)K是可以調(diào)整的。在資源允許的條件下,增加并行度將有 效的提高系統(tǒng)的運(yùn)算性能。對于這樣一組元素操作,先做對A左乘的N2/2個(gè)旋轉(zhuǎn)計(jì)算,再做對A右乘的旋轉(zhuǎn) 計(jì)算,最后做對Q右乘的旋轉(zhuǎn)計(jì)算,總共需要做3XN2/2 = 3N2/2個(gè)旋轉(zhuǎn)計(jì)算。為了能夠使每一組操作都能達(dá)到上述的效果,必須要設(shè)定合適的遍歷順序。在本 發(fā)明的優(yōu)選實(shí)施例中,在N-I組元素的遍歷中,針對第一組各個(gè)元素中的a^p取值為1,3, 5,...,N-I, q = p+1 ;則進(jìn)行一次循環(huán)遍歷,各組元素之間的變換順序依次為第一個(gè)元素的行坐標(biāo)不變,列坐標(biāo)傳到后一個(gè)元素的列坐標(biāo);中間元素的行坐標(biāo)傳到前一個(gè)元素的行坐標(biāo),列坐標(biāo)傳到后一個(gè)元素的列坐標(biāo); 其中,第二個(gè)元素的行坐標(biāo)傳到前一個(gè)元素的列坐標(biāo);最后一個(gè)元素的行坐標(biāo)傳到前一個(gè)元素的行坐標(biāo),列坐標(biāo)傳到自身的行坐標(biāo)。如圖3所示,為針對8階實(shí)對稱矩陣各組元素之間的變化過程示意圖,其示意了從 當(dāng)前組的4個(gè)元素到下一組的4個(gè)元素的變換。其中每個(gè)小矩形表示一個(gè)元素的坐標(biāo),左邊方格表示行坐標(biāo),右邊表示列坐標(biāo)。如 表2所示,為一次遍歷循環(huán)中,按照上述變換規(guī)則得到的各組元素順序。需要注意的是,由 于A為實(shí)對稱陣,而每個(gè)元素對應(yīng)的是對稱旋轉(zhuǎn)操作,因此遍歷到元素(i,j)即相當(dāng)于對元 素(j,i)進(jìn)行操作??梢园l(fā)現(xiàn),這七組元素遍歷了矩陣所有的下三角元素,即表1中的步驟 (2)。而且當(dāng)?shù)谄呓M再按照圖3規(guī)律向下變換時(shí),得到的第八組元素與第一組元素是完全相 同的。表2針對8階實(shí)對稱矩陣,一次循環(huán)中各組元素順序 根據(jù)上述順序,例如,由第一組元素向第二組元素進(jìn)行變換,第1個(gè)元素的行坐標(biāo)⑴不變,列坐標(biāo)⑵傳到第2個(gè)元素的列坐標(biāo);第2個(gè)元素的行坐標(biāo)(3)傳到第1個(gè)元素的列坐標(biāo),列坐標(biāo)⑷傳到第3個(gè)元素 的列坐標(biāo);第3個(gè)元素的行坐標(biāo)(5)傳到第2個(gè)元素的行坐標(biāo),列坐標(biāo)(6)傳到第4個(gè)元素 的列坐標(biāo);第4個(gè)元素的行坐標(biāo)(7)傳到第3個(gè)元素的行坐標(biāo),列坐標(biāo)⑶傳到自身的行坐 標(biāo)。五、控制模塊的實(shí)現(xiàn)根據(jù)上述預(yù)置循環(huán)遍歷順序,就可以實(shí)現(xiàn)本發(fā)明實(shí)施例中的控制模塊。所述控制 模塊主要產(chǎn)生四類控制信號,分別為存儲控制信號、總線選擇信號、總線控制信號和運(yùn)算模 塊使能信號。這些信號協(xié)同工作,保證了系統(tǒng)中的運(yùn)算模塊能夠正常的運(yùn)行,從而使得整個(gè) 系統(tǒng)能夠?qū)崿F(xiàn)特征分解的功能。如圖4所示,為本發(fā)明實(shí)施例所述求角模塊和旋轉(zhuǎn)模塊的時(shí)序關(guān)系圖。由于系統(tǒng) 運(yùn)行以一組操作為周期,所以這里只給出第一組操作的時(shí)序。下面將結(jié)合這個(gè)時(shí)序圖對上 述控制信號進(jìn)行說明。在第一組操作的求角輸入之前,RAM控制信號從保存實(shí)對稱陣A的RAMA中依次讀
ΝΑ 已11、知、知、已33、a44、a34、a55、a66、a56...... 且到 -Ι,ν-Ι、aN, Νλ aN-i,N, 例如對于8階實(shí)對稱
矩陣,直到a88,a78a77, a88, a78??偩€選擇信號將這些數(shù)據(jù)選擇傳送到求角輸入總線,然后總 線控制信號控制求角輸入總線將接收到的數(shù)據(jù)封裝成求角模塊可以接受的形式,例如對于 元素an、a22、ai2,將an-a22作為求角模塊的實(shí)部進(jìn)行輸入,將2a12作為求角模塊的虛部進(jìn)行 輸入;求角模塊輸入并使能N/2個(gè)周期,經(jīng)過一定延遲之后輸出旋轉(zhuǎn)角度到角度總線;在角 度總線接收數(shù)據(jù)時(shí),存儲控制信號開始從RAM A中依次讀取矩陣A第1、2行,第3、4行,第
5、6行......直到第N-1、N行的數(shù)據(jù)元素,總線選擇信號將這些數(shù)據(jù)選擇傳送到旋轉(zhuǎn)輸入
總線,然后總線控制信號控制旋轉(zhuǎn)輸入總線將接收到的數(shù)據(jù)封裝成K個(gè)旋轉(zhuǎn)模塊可以同時(shí) 接受的形式,例如對于A的左乘,數(shù)據(jù)封裝的形式為第一對輸入到旋轉(zhuǎn)模塊Xin和Yin的數(shù)
據(jù)分別是A (p,1)和A(q,l),......第η對輸入到旋轉(zhuǎn)模塊Xin和Yin的數(shù)據(jù)分別是A (ρ,η)
和A(q,n)等等。旋轉(zhuǎn)模塊同時(shí)從旋轉(zhuǎn)輸入總線和角度總線輸入數(shù)據(jù)并開始使能,由于總共 需要N2/2次旋轉(zhuǎn)計(jì)算,存在K個(gè)旋轉(zhuǎn)模塊,故需要使能N2/ (2K)個(gè)周期,經(jīng)過一定延遲之后 輸出旋轉(zhuǎn)結(jié)果到輸出總線,然后總線選擇信號選擇接收輸出總線的數(shù)據(jù)并保存到RAM A中, 此時(shí)完成的是行變換操作,即對矩陣A左乘操作。在輸入完對A矩陣左乘操作的數(shù)據(jù)后,依次再輸入對A矩陣右乘的數(shù)據(jù)和對Q矩 陣右乘的數(shù)據(jù)進(jìn)行旋轉(zhuǎn)操作,此時(shí)RAM控制信號先從RAM A中讀取矩陣A的第1、2列,3、4列,5、6列......直到第N-I、N列的數(shù)據(jù)元素,再從RAM B中讀取矩陣Q的第1、2列,3、4
列,5、6列......直到第N-I、N列的數(shù)據(jù)元素,其他控制信號同左乘操作。在本發(fā)明的優(yōu)選實(shí)施例中,旋轉(zhuǎn)模塊可采用了深度流水處理,即針對一組元素,完 成對A右乘操作后,進(jìn)行下一組元素的求角操作,而不是等到所有旋轉(zhuǎn)操作完成再開始下 一組的操作。所述A左乘、A右乘和Q右乘的使能周期均為N2/(2K)。由此可以計(jì)算一組元 素的遍歷操作周期組操作周期=N2/ (2K) +N2/ (2K) +求角計(jì)算延遲+旋轉(zhuǎn)計(jì)算延遲在進(jìn)行第二組操作的時(shí)候,所有的控制信號與第一組時(shí)相同,以下各組均類似。例 如,對于8階是對稱矩陣,只是取數(shù)據(jù)的順序由原先的(1,2),(3,4), (5,6), (7,8)變換為 (1,3), (5,2), (7,4), (8,6),如表 2 所示。本發(fā)明實(shí)施例基于循環(huán)雅克比算法,通過優(yōu)化遍歷矩陣元素的順序,使得算法在 理論上可以達(dá)到最大的并行化。而在具體實(shí)現(xiàn)中,本發(fā)明可以根據(jù)對稱陣的規(guī)模和硬件資 源動態(tài)的選擇并行度,從而在計(jì)算性能與硬件消耗上達(dá)到最佳的平衡。以上對本發(fā)明所提供的一種基于循環(huán)雅克比的實(shí)對稱陣特征分解裝置,進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說 明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對于本領(lǐng)域的一般技術(shù)人員,依據(jù) 本發(fā)明的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不 應(yīng)理解為對本發(fā)明的限制。
權(quán)利要求
一種基于循環(huán)雅克比的實(shí)對稱陣特征分解裝置,其特征在于,包括存儲模塊,用于分別保存并更新N階實(shí)對稱陣A和正交陣Q的各個(gè)元素;以及按照預(yù)置循環(huán)遍歷順序,讀取A的元素ap,p,aq,q,ap,q(p=1,2,...,N;q=1,2,...,N;p≠q)傳送到求角模塊,并相應(yīng)的依次讀取A的左乘元素、A的右乘元素和Q的右乘元素,傳送到K個(gè)旋轉(zhuǎn)模塊;求角模塊,用于針對元素ap,p,aq,q,ap,q組成的復(fù)數(shù)進(jìn)行求角計(jì)算,得到旋轉(zhuǎn)角度并傳送到K個(gè)旋轉(zhuǎn)模塊;K個(gè)旋轉(zhuǎn)模塊,用于根據(jù)所述旋轉(zhuǎn)角度,分別針對A的左乘元素、A的右乘元素或者Q的右乘元素進(jìn)行旋轉(zhuǎn)計(jì)算,并將旋轉(zhuǎn)后得到的數(shù)據(jù)元素輸出至存儲模塊進(jìn)行更新;其中,K為并行度;控制模塊,用于通過存儲控制信號控制存儲模塊的數(shù)據(jù)讀取和更新,以及通過運(yùn)算使能信號控制求角模塊的求角計(jì)算和旋轉(zhuǎn)模塊的旋轉(zhuǎn)計(jì)算。
2.如權(quán)利要求1所述的裝置,其特征在于,所述旋轉(zhuǎn)單元的旋轉(zhuǎn)計(jì)算依次包括A左乘、 A右乘和Q右乘操作;針對元素ap,p,aq>q, ap>q, A的左乘元素為A的第ρ行和第q行的對應(yīng)元素,A的右乘元 素為A的第ρ列和第q列的對應(yīng)元素,Q的右乘元素為Q的第ρ列和第q列的對應(yīng)元素。
3.如權(quán)利要求1所述的裝置,其特征在于,所述裝置完成一次循環(huán)遍歷包括N-I組元素 的遍歷,每組元素的遍歷包括N/2次操作,一次操作通過旋轉(zhuǎn)模塊完成3N次旋轉(zhuǎn)計(jì)算;則每 組元素的遍歷進(jìn)行3次可并行的N2/2個(gè)旋轉(zhuǎn)計(jì)算。
4.如權(quán)利要求3所述的裝置,其特征在于, 所述并行度K的最大值為N2/2。
5.如權(quán)利要求4所述的裝置,其特征在于,在N-I組元素的遍歷中,針對第一組各個(gè)元 素中的 aM,ρ 取值為 1,3,5,. . .,N-I, q = p+1 ;則進(jìn)行一次循環(huán)遍歷,各組元素之間的變換順序依次為 第一個(gè)元素的行坐標(biāo)不變,列坐標(biāo)傳到后一個(gè)元素的列坐標(biāo); 中間元素的行坐標(biāo)傳到前一個(gè)元素的行坐標(biāo),列坐標(biāo)傳到后一個(gè)元素的列坐標(biāo);其中, 第二個(gè)元素的行坐標(biāo)傳到前一個(gè)元素的列坐標(biāo);最后一個(gè)元素的行坐標(biāo)傳到前一個(gè)元素的行坐標(biāo),列坐標(biāo)傳到自身的行坐標(biāo)。
6.如權(quán)利要求1所述的裝置,其特征在于,針對一組元素,旋轉(zhuǎn)模塊完成A右乘操作后,由求角模塊進(jìn)行下一組元素的求角計(jì)算。
7.如權(quán)利要求6所述的裝置,其特征在于,控制模塊的運(yùn)算使能信號對A左乘、A右乘和Q右乘的使能周期均為N2/ (2K)。
8.如權(quán)利要求7所述的方法,其特征在于,一組元素的遍歷操作周期為 N2/ (2K) +N2/ (2K) +求角計(jì)算延遲+旋轉(zhuǎn)計(jì)算延遲。
9.如權(quán)利要求1所述的裝置,其特征在于,所述各個(gè)模塊通過總線進(jìn)行數(shù)據(jù)傳送;其中,存儲模塊通過求角輸入總線將相應(yīng)的數(shù)據(jù)元素傳送至求角模塊; 存儲模塊通過旋轉(zhuǎn)輸入總線將相應(yīng)的數(shù)據(jù)元素傳送至旋轉(zhuǎn)模塊; 求角模塊通過角度總線將旋轉(zhuǎn)角度分別傳送到K個(gè)旋轉(zhuǎn)模塊;K個(gè)旋轉(zhuǎn)模塊通過輸出總線將旋轉(zhuǎn)后得到的數(shù)據(jù)元素傳送回存儲模塊。
10.如權(quán)利要求9所述的裝置,其特征在于,所述控制模塊還用于通過總線選擇信號控制存儲模塊將讀取的數(shù)據(jù)元素傳送到求角輸入總線或旋轉(zhuǎn)輸入總線;以及通過總線控制信號控制求角輸入總線、角度總線和旋轉(zhuǎn)輸 入總線、輸出總線將相應(yīng)的數(shù)據(jù)元素輸入至對應(yīng)的求角模塊、旋轉(zhuǎn)模塊、存儲模塊中。
全文摘要
本發(fā)明提供了一種基于循環(huán)雅克比的實(shí)對稱陣特征分解裝置,包括存儲模塊,用于保存并更新N階實(shí)對稱陣A和正交陣Q的元素;并按照預(yù)置循環(huán)遍歷順序讀取A的ap,p,aq,q,ap,q傳送到求角模塊,讀取A的左乘、右乘元素和Q的右乘元素傳送到旋轉(zhuǎn)模塊;求角模塊,用于對ap,p,aq,q,ap,q組成的復(fù)數(shù)做求角計(jì)算,將旋轉(zhuǎn)角度傳送到旋轉(zhuǎn)模塊;K個(gè)旋轉(zhuǎn)模塊,用于根據(jù)旋轉(zhuǎn)角度對A的左乘、右乘元素或Q的右乘元素進(jìn)行旋轉(zhuǎn)計(jì)算,將旋轉(zhuǎn)得到的數(shù)據(jù)輸出至存儲模塊進(jìn)行更新;其中K為并行度;控制模塊,用于控制存儲模塊的數(shù)據(jù)讀取和更新,以及求角模塊的求角計(jì)算和旋轉(zhuǎn)模塊的旋轉(zhuǎn)計(jì)算。通過本發(fā)明,在合理的硬件資源下實(shí)現(xiàn)了較高的運(yùn)算性能,解決運(yùn)算性能和資源消耗之間的矛盾。
文檔編號G06F7/48GK101847086SQ20101017743
公開日2010年9月29日 申請日期2010年5月14日 優(yōu)先權(quán)日2010年5月14日
發(fā)明者孟華東, 張顥, 王希勤, 陸繼承 申請人:清華大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1