專利名稱:基于fpga的邊角塊稀疏矩陣并行lu分解器的制作方法
技術領域:
本發明屬于數據處理技術領域,涉及并行LU分解器,適用于邊角塊稀疏矩陣 (Bordered-Diagonal-Block)的并1」 LU分解。
背景技術:
邊角塊稀疏矩陣廣泛的應用于電子網絡設計、電力系統優化設計、圖論等科學 技術和工程領域中。而稀疏線性方程組求解是許多科學技術領域的核心問題,如果 需要在矩陣A不變的情況下,對不同的右端向量b多次求解,矩陣LU分解法將顯 著節省運算時間。并且矩陣LU分解法可以利用矩陣的稀疏性,大量地節省存儲空 間,因此這種方法適于解大型稀疏矩陣問題。
目前一些超級計算機和分布式計算機在該領域占據了主導地位,但它們高昂的 價格和較長的開發周期,以及復雜的編程環境和較高的維護成本, 一定程度上限制 了它們在該領域的應用。目前數字信號處理領域中,使用器件的趨勢是DSP(Digital Signal Processor)和FPGA(Field Programmable Gate Array),專用DSP和通用DSP并 舉。DSP和FPGA在功能上不僅資源豐富,而且具有很大的編程靈活性。DSP在速 度方面占有優勢,但在某一時刻只能完成有限的任務,要想搭建并行處理結構必須 使用多片DSP芯片,這樣將大大增加系統開發成本和復雜度;高等級的FPGA的芯 片雖然在速度上與DSP略有差距,但能實現并行結構,對同時可完成的任務幾乎沒 有限制。因此選擇可編程的邏輯器件進行數字信號處理是當今世界的發展趨勢。而 使用FPGA內部NIOS核編程的實現方式,其靈活性很大,但執行效率較低,執行 速度較慢且穩定性較差。
發明內容
本發明的目的在于克服上述已有技術的不足,提供一種基于FPGA的邊角塊稀 疏矩陣并行LU分解器,該分解器全部由硬件描述語言實現,以提升數據處理系統 的運行速度和穩定性,提高數據的計算效率,節省開發成本。
為實現上述目的,本發明的并行LU分解器包括模擬排庁'算法模塊,用丁-確 定邊伯塊稀疏矩阼的消去順序;符g分解模塊,用丁完成標記待修改元的位置;并 行數值LU分解模塊,用于^成對矩陣數據進行并行LU分解;所述的這三個模塊之間通過共用存儲單元相連接。
上述的并行LU分解器,其中符號分解模塊位^模擬排序算法模塊和并行數值 LU分解模塊之間,該二個模塊均由硬件描述語S實現。
上述的并行LU分解器,其中并行數但LU分解模塊由包括并行處理阼列和全jni
數據處理及通信控制單元組成,該并行處理阼列由n個并行的數據處理單元組成,n 》3:該全局數據處理及通信控制申.兒,分別與每個處理申-元雙向迮接,實現與各個 處理申.兒的數據通信和程序控制。
本發明具有如下優點
(1) 本發明由模擬排序算法模塊、符號分解模塊和并行數值LU分解模塊三個
模塊組成,各個模塊完成各自的任務,形成了一個通用的處理平臺,可以在不改變
各自模塊硬件結構的情況下,在此平臺上完成不同階數邊角塊稀疏矩陣的LU分解, 以及對稱稀疏矩陣的排序及符號分解。
(2) 本發明由于采用硬件描述語言的方式搭建并行處理結構,能夠實現完全并 行的高速信號處理,提高數據速度,并方便在其它公司的器件上進行移植。
(3) 本發明的硬件描述語言是針對邊角塊稀疏矩陣LU分解領域,以FPGA為 載體,開發出一套量身定做的算法處理結構,這種方式結合了分布式計算機體系結 構,DSP芯片的可編程特性和FPGA的算法針對性及運算高速性的優點,可以最大 限度的開發算法的并行性、運算單元的針對性和數據結構的特殊性,并具有系統參 數和功能靈活可變、設計復雜程度適當、設計重復利用性好的優點,特別是采用 FPGA可以相對容易地在單個芯片中集成多個處理單元,相比分布式計算機和并行 計算機能大大降低系統成本。
圖l為本發明的整體結構框圖2為本發明的并行數值LU分解模塊結構框圖3為本發明數值LU分解處理單元的結構框圖。
具體實施例方式
下面結合附圖和實例對本發明進行詳細說明。
參照圖1,本發明基于FPGA實現邊角塊稀疏矩陣并行LU分解器。該分解器 由模擬排序模塊、符號分解模塊和并行數值LU分解模塊構成通用處理平臺結構。其中
模擬排序模塊,作為整個系統數據的輸入模塊,為邊角塊稀疏矩陣的符號分解 確定消去順序并確定填入元的位置,位于整個器件的最前端;該模擬排序模塊把原 先按照自然順序排列的原始數據進行了重新的組合。比如 一個四階的邊角塊稀疏 矩陣,原先是按照從第一行第一列的順序依次向下的順序進行消去,直到第四行第 四列結束為止,經過模擬排序子模塊后消去順序可能會發生改變。比如先消去第 四行第四列,然后再按照自然順序從第一行第一列開始消去。模擬排序模塊還可以 確定在矩陣元素消去過程中填入元的位置。比如矩陣中一個零元在消去過程中變 為了非零元,這個元素的位置也可以由該模塊確定。
符號分解模塊,位于整個器件的中間層,并通過公用存儲單元與模擬排序模塊 和并行數值LU分解模塊相連接。該符號分解模塊用于確定稀疏矩陣中待修改元的 位置,使真正的數值LU分解沒有額外的査找,只進行必要的數值運算。比如原 先待修改的矩陣元素都是通過循環遍歷的方式進行査找,而有些元素在消去過程中 并不需要修改。經過符號分解模塊處理后的,并且凡是被記錄為待修改的元素都會
被統一存放到一個專用RAM中去。因此該模塊是為并行數值LU分解進行預處理工作。
并行數值LU分解模塊,如圖2所示,它作為整個分解器的核心處理模塊,由 全局數據處理及通信控制單元和n個并行的數據處理單元,n^3組成。全局數據處 理及通信控制單元分別與每個數據處理單元雙向連接,實現與各個處理單元的數據 交換和指令控制和狀態讀取。該并行數值LU分解模塊構成LU分解陣列,形成"多 通道處理"的并行算法結構,即將待處理的矩陣數據進行分塊處理。每一個數據處 理單元負責處理矩陣中的一個子塊。由于該數據處理單元相當于一個專用的CPU, 因此這些數據處理單元的內部電路結構完全一致,可以采用直接拷貝的方法生成。 各個數據處理單元根據矩陣分塊后的結構來選擇所要處理的數據,前n-l個數據處 理單元共同完成對矩陣的分解運算,最后一個數據處理單元待前n-l個數據處理單 元完成分解運算后再開始運算。采用并行處理的方式可以提高系統的數據處理能力 和數據吞吐率,提高系統的工作效率。
參照圖3,本法明并行數值LU分解模塊中的數據處理單元以FPGA為載體, 是一種針對稀疏矩陣LU分解的專用處理結構,每一個數據處理單元均由數組指針 RAM、原始數據RAM和浮點運算子單元組成。該數組指針RAM用來控制原始數據RAM的輸入和輸出地址,它包括矩陣元素的消去順序索引RAM、列非零元首地 址索引RAM、非零元行號索引RAM、非零元指針索引RAM。該原始數據RAM中 包括對角線元素RAM、上三角元素RAM、下三角元素RAM。在設計中采用FPGA 中的宏模塊單元來完成,其中RAM的位寬需要根據數據的位寬來選擇,RAM的存 儲深度根據輸入數據的多少來選擇。該浮點運算單元由浮點加法器、浮點乘法器、 浮點除法器構成。其中浮點除法器用于求對角線上主元導數及完成主行元除以主元 的運算;浮點乘法器和浮點加法器用于完成修改剩余矩陣元素的運算。在設計中采 用FPGA的浮點運算宏模塊,輸入輸出位寬與數據存儲器中的數據位寬相同。
數據處理單元工作時,需要使用狀態機對程序進行控制。按照LU分解處理算 法主要涉及運算、控制和傳輸類操作。運算操作包括加、乘加、除法操作;控制和 傳輸操作用來完成數據的存儲和搬移、讀取以及輸出數據;程序控制類操作主要是 控制狀態機的有條件、無條件跳轉、循環等操作。
本發明LU分解器件的工作原理如下
模擬排序模塊為符號分解模塊確定矩陣的消去順序和填入元的位置;符號分解 模塊為并行數值LU分解模塊記錄被修改元的位置,并將該修改元的位置信息分別 寫入到消去順序索引、列非零元首地址索引、非零元行號索引和非零元指針索引。 當寫入數據結束之后,全局數據處理及通信控制單元會向前n-l個處理單元發出系 統復位信號。前n-l個數據處理單元在接收到系統復位信號之后,在系統時鐘信號 的驅動下對輸入數據進行處理,其處理過程為首先將每個處理單元將要分解的矩 陣維數用一個專用的寄存器進行存儲,該寄存器內的數據也將作為狀態機的循環計 數器;然后根據鏈表指針RAM中的數據從對角元RAM中取出數據并送入除法運 算單元進行求倒數的運算,運算結果用一個專用寄存器單元進行存儲并將其送入浮 點乘法單元,同時根據鏈表指針RAM讀取上三角元RAM中的數據,并將該數據 依次送入浮點乘法單元,這樣就完成了主行元除以主元倒數的操作;接下來從鏈表 指針RAM讀取出主行非零元和主列非零元的個數并用專用寄存器進行存儲,同時 也作為修改剩余矩陣的循環計數器;最后依據鏈表指針從上三角矩陣元素和下三角 矩陣元素中找到被修改元的位置,并送入浮點乘法器和加法器中進行修改。此外, 在整個并行LU分解處理過程中,各個處理單元之間并不需要相互交換數據或者相 互通信,它們只需要在并行數值LU分解模塊中的全局數據處理及通信控制單元完 成相應的處理。本發明中的每個數據處理單元都設置了專用的通信1/0,這通信I/0
7和一個全局數據處理和通信控制單元相連接,在此單元內完成數據處理單元中的數 據交換和控制信號傳遞。這里的通信采用"握手"通信的方式,該方式由四步完成: 第一步,由全局數據處理和通信控制單元發出通信請求,數據處理單元做出響應, 全局數據處理和通信控制單元發出響應的控制信號,數據處理單元接收到該信號后 開始進行數據運算。第二步是當數據處理完成后,數據處理單元將數據存入輸出 RAM中,并且發送狀態信號給全局數據處理和通信控制單元,允許其讀取輸出結 果寄存器RAM中的數據。讀取過程中,全局數據處理和通信控制單元將輸出結果
存入它本身自帶的存儲單元中,并完成更新最后一個數據處理單元的工作。第三步, 控制單元向最后一個數據處理單元發送請求通信要求,并將更新之后的數據和控制 信號發送到最后一個數據處理單元。第四步與待最后一個數據處理單元處理結束之 后,向全局數據處理和通信控制單元發送結束指令,整個分解工作完成。
利用本發明可以完成邊角塊稀疏矩陣的并行LU分解。通過調整內部寄存器的 初始值設置,可以很方便的完成不同階數稀疏矩陣的分解工作。由于整個處理系統 的程序都是采用硬件描述語言方式實現,速度較NIOS核等高級語言實現的方式要 快,穩定性也較高,而且易于封裝成為專用的IP核,同時能大大降低系統的開發成本。
權利要求
1. 一種基于FPGA的邊角塊稀疏矩陣并行LU分解器,包括模擬排序算法模塊,用于確定邊角塊稀疏矩陣的消去順序;符號分解模塊,用于完成標記待修改元的位置;并行數值LU分解模塊,用于完成對矩陣數據進行并行LU分解;所述的這三個子模塊之間通過共用存儲單元相連接。
2. 如權利要求1所述的并行LU分解器,其特征在于,符號分解模塊位于模擬 排序算法模塊和并行數值LU分解模塊之間,該三個模塊均由硬件描述語言實現。
3. 如權利要求1所述的并行LU分解器,其特征在于并行數值LU分解模塊 由包括并行處理陣列和全局數據處理及通信控制單元組成,該并行處理陣列由n個 并行的數據處理單元組成,n》3;該全局數據處理及通信控制單元,分別與每個處 理單元雙向連接,實現與各個處理單元的數拋通信和程序控制。
4. 如權利要求3所述的并行LU分解器,其特征在于數據處理單元主要由用 于存儲矩陣數組元素及鏈表指針的雙端口 RAM,以及用于完成對RAM中的數據處 理浮點運算單元和用于完成程序流程控制的狀態機構成。
5. 如權利要求4所述的并行LU分解器,其特征在于雙端口RAM中包括 矩陣元素的消去順序索引,用于標記矩陣的消去順序; 列非零元首地址索引,用于標記每一列第一個非零元的在鏈表中的位置;非零元行號索引,用于標記非零元在稀疏矩陣中的行坐標; 非零元指針索引,用于連接每列中的非零元素; 對角線元素存儲單元,用于存儲稀疏矩陣的對角線上的元素; 上三角元素存儲單元,用于存儲稀疏矩陣的上三角中的非零元; 下三角元素存儲單元,用于存儲稀疏矩陣的下三角中的非零元。
6. 如權利要求4所述的并行LU分解器,其特征在于,浮點運算單元包括 用于求主元導數運算的浮點除法器,以及用于完成修改剩余矩陣元素運算的浮點加 法器和浮點乘法器。
7. 如權利要求3所述的并行LU分解器,其特征在于全局數據處理及通信控 制單元包括浮點加法器、專用數據寄存器組、復位及準備就緒信號、雙向數據傳輸 接口,該雙向數據傳輸接口用于接收前n-l個處理單元的數據并向最后 個處理單元發送數據;該復位及準備就緒信號用于向每個處理單元發送開始運算的指令并接 收處理結束的指令;該浮點加法器用于完成更新最后一個處理單元數據的運算;該 專用寄存器組用于存放待修改的最后-個處理單元的數據。
全文摘要
本發明針對邊角塊稀疏矩陣能夠進行并行計算的特點,提供了一種基于FPGA的邊角塊稀疏矩陣并行LU分解器。它主要由模擬排序模塊、符號分解模塊和并行數值LU分解模塊構成三層處理平臺結構,該并行數值LU分解模塊用于完成對矩陣數據進行并行LU分解,位于整個處理結構的末端;該符號分解模塊用于標記矩陣中待修改元的位置,位于整個處理結構的中間端;該模擬排序算法模塊用于確定矩陣的消去順序,位于整個處理結構的最前端,所述的三個模塊之間通過共用存儲單元相連接。本發明具有實時并行LU分解邊角塊稀疏矩陣的優點,與使用并行計算機和分布式計算機相比能極大的節省開發成本,可應用于實時電子網絡分析領域。
文檔編號G06F17/16GK101533387SQ20091002219
公開日2009年9月16日 申請日期2009年4月24日 優先權日2009年4月24日
發明者犁 張, 甫 李, 王亞南, 石光明 申請人:西安電子科技大學