本發(fā)明涉及數(shù)據(jù)存儲(chǔ)與處理,特別地涉及一種針對超節(jié)點(diǎn)的稀疏矩陣高效存儲(chǔ)與分解裝置及方法。
背景技術(shù):
1、目前在稀疏矩陣直接求解領(lǐng)域,現(xiàn)有技術(shù)中針對對稱稀疏矩陣的存儲(chǔ)格式和分解算法存在顯著的技術(shù)局限性。盡管coo、csr、csc、ell、bsr等格式在特定場景下被廣泛應(yīng)用,但普遍存在內(nèi)存效率低下、計(jì)算性能不足及對超節(jié)點(diǎn)結(jié)構(gòu)支持缺失的問題。例如,coo格式冗余存儲(chǔ)行/列索引,導(dǎo)致內(nèi)存占用過高;csr和csc雖支持稀疏blas庫,但其計(jì)算效率顯著低于稠密blas庫,且無法直接調(diào)用高效函數(shù)實(shí)現(xiàn)關(guān)鍵操作;ell和bsr格式因固定塊大小或填充值導(dǎo)致內(nèi)存浪費(fèi),尤其難以適應(yīng)不規(guī)則稀疏結(jié)構(gòu);而混合格式(如hyb)雖嘗試結(jié)合不同格式優(yōu)勢,但實(shí)現(xiàn)復(fù)雜且計(jì)算開銷增加。此外,現(xiàn)有技術(shù)未針對超節(jié)點(diǎn)的稠密塊結(jié)構(gòu)進(jìn)行優(yōu)化,無法通過預(yù)分配存儲(chǔ)空間或顯式記錄鄰接列表實(shí)現(xiàn)數(shù)據(jù)依賴的高效管理,導(dǎo)致分解過程中需頻繁切換稀疏與稠密算法,增加計(jì)算開銷?,F(xiàn)有專利如cn119337040a和cn119311221a雖提出稀疏矩陣存儲(chǔ)改進(jìn)方案,但其核心仍聚焦于通用稀疏模式,未能針對超節(jié)點(diǎn)的結(jié)構(gòu)化存儲(chǔ)及分解算法進(jìn)行設(shè)計(jì),無法直接調(diào)用稠密blas庫提升計(jì)算效率,且未解決動(dòng)態(tài)存儲(chǔ)調(diào)整導(dǎo)致的內(nèi)存浪費(fèi)或數(shù)據(jù)傳遞路徑不明確等問題。
技術(shù)實(shí)現(xiàn)思路
1、有鑒于此,本發(fā)明提出針對超節(jié)點(diǎn)的稀疏矩陣高效存儲(chǔ)與分解裝置及方法,實(shí)現(xiàn)了對超節(jié)點(diǎn)的稱稀疏矩陣分解的高效性與緊湊性。本發(fā)明提供如下技術(shù)方案:
2、一種針對超節(jié)點(diǎn)的稀疏矩陣高效存儲(chǔ)與分解裝置,所述裝置包括:
3、矩陣預(yù)處理模塊,用于接收原始矩陣,并對其執(zhí)行矩陣重排,以生成消除樹;
4、超節(jié)點(diǎn)構(gòu)建模塊,用于基于所述消除樹構(gòu)建超節(jié)點(diǎn),并確定每個(gè)超節(jié)點(diǎn)的l矩陣;
5、存儲(chǔ)格式定義模塊,用于定義超節(jié)點(diǎn)的對稱稀疏矩陣存儲(chǔ)格式;
6、數(shù)據(jù)加載模塊,用于將原始矩陣中的非零元素加載到對應(yīng)超節(jié)點(diǎn)的l矩陣中,以將l矩陣存儲(chǔ)為稠密格式;
7、矩陣分解模塊,用于對稠密格式的l矩陣執(zhí)行遍歷,并對其執(zhí)行矩陣分解。
8、可選地,所述矩陣預(yù)處理模塊具體包括:
9、重排單元,用于采用近似最小度法或嵌套剖分法對原始矩陣進(jìn)行重排,以將原始矩陣的稠密部分靠近對角線;
10、節(jié)點(diǎn)確定單元,用于對每個(gè)節(jié)點(diǎn)確定其在分解過程中第一個(gè)被消除的子節(jié)點(diǎn)作為父節(jié)點(diǎn);
11、消除樹生成單元,用于遍歷所有節(jié)點(diǎn)的父節(jié)點(diǎn)關(guān)系,生成以根節(jié)點(diǎn)為起始的消除樹,其中每個(gè)節(jié)點(diǎn)的子節(jié)點(diǎn)構(gòu)成其子樹。
12、可選地,所述超節(jié)點(diǎn)構(gòu)建模塊具體包括:
13、結(jié)構(gòu)分析單元,用于基于消除樹的父子關(guān)系,分析其子樹中非零元素的行和列分布,以確定該節(jié)點(diǎn)在l矩陣中的非零元素結(jié)構(gòu);
14、超節(jié)點(diǎn)合并單元,用于若相鄰節(jié)點(diǎn)的l結(jié)構(gòu)完全相同,則將這些節(jié)點(diǎn)合并為一個(gè)超節(jié)點(diǎn);
15、參數(shù)定義單元,用于定義超節(jié)點(diǎn)的起始節(jié)點(diǎn)號(hào)參數(shù)與長度參數(shù);
16、鄰接列表生成單元,用于根據(jù)所述消除樹中超節(jié)點(diǎn)下方所有非零行的索引,生成鄰接列表并記錄所述鄰接列表的長度;
17、存儲(chǔ)分配單元,用于根據(jù)超節(jié)點(diǎn)的長度參數(shù)和鄰接列表的長度為每個(gè)超節(jié)點(diǎn)分配存儲(chǔ)空間,以形成l矩陣。
18、可選地,所述數(shù)據(jù)加載模塊具體包括:
19、超節(jié)點(diǎn)歸屬確定單元,用于遍歷所述原始矩陣的每一列,以確定非零元素所屬的超節(jié)點(diǎn);
20、非零元素定位單元,用于確定非零元素在對應(yīng)超節(jié)點(diǎn)中的元素定位,以獲取非零元素的局部坐標(biāo);
21、數(shù)據(jù)寫入單元,用于根據(jù)所述局部坐標(biāo)將所述非零元素值寫入超節(jié)點(diǎn)的l矩陣的對應(yīng)位置。
22、可選地,所述矩陣分解模塊具體包括:
23、遍歷控制單元,用于根據(jù)所述消除樹的父子關(guān)系,從根節(jié)點(diǎn)開始,自左上至右下處理每個(gè)超節(jié)點(diǎn);
24、分解函數(shù)調(diào)用單元,用于調(diào)用分解函數(shù)potrf或sytrf將當(dāng)前超節(jié)點(diǎn)的對角塊分解為下三角矩陣l1;
25、矩陣更新單元,用于基于所述下三角矩陣l1,調(diào)用三角矩陣求解函數(shù)dtrsm更新非對角塊,以獲得l2矩陣;
26、貢獻(xiàn)矩陣計(jì)算單元,用于基于所述l2矩陣,調(diào)用矩陣乘法函數(shù)syrk計(jì)算貢獻(xiàn)矩陣;
27、數(shù)據(jù)傳遞單元,用于確定所述貢獻(xiàn)矩陣的傳遞路徑及傳遞目標(biāo),并將貢獻(xiàn)矩陣的每一列按鄰接列表的索引復(fù)制到所述傳遞目標(biāo)超節(jié)點(diǎn)的l矩陣的指定行中。
28、本發(fā)明進(jìn)一步公開了一種針對超節(jié)點(diǎn)的稀疏矩陣高效存儲(chǔ)與分解的方法,應(yīng)用于上述的針對超節(jié)點(diǎn)的稀疏矩陣高效存儲(chǔ)與分解裝置,方法包括:
29、矩陣預(yù)處理模塊接收原始矩陣,并對其執(zhí)行矩陣重排,以生成消除樹;
30、超節(jié)點(diǎn)構(gòu)建模塊基于所述消除樹構(gòu)建超節(jié)點(diǎn),并獲得每個(gè)超節(jié)點(diǎn)的l矩陣;
31、存儲(chǔ)格式定義模塊定義超節(jié)點(diǎn)的對稱稀疏矩陣存儲(chǔ)格式;
32、數(shù)據(jù)加載模塊將原始矩陣中的非零元素加載到對應(yīng)超節(jié)點(diǎn)的l矩陣中,以將l矩陣存儲(chǔ)為稠密格式;
33、矩陣分解模塊對稠密格式的l矩陣執(zhí)行遍歷,并對其執(zhí)行矩陣分解。
34、可選地,所述方法還包括:超節(jié)點(diǎn)歸屬確定單元遍歷所述原始矩陣的每一列,以確定非零元素所屬的超節(jié)點(diǎn);非零元素定位單元確定非零元素在對應(yīng)超節(jié)點(diǎn)中的元素定位,以獲取非零元素的局部坐標(biāo);數(shù)據(jù)寫入單元根據(jù)所述局部坐標(biāo)將所述非零元素值寫入超節(jié)點(diǎn)的l矩陣的對應(yīng)位置。
35、本發(fā)明進(jìn)一步公開了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述裝置的功能。
36、本發(fā)明進(jìn)一步公開了一種電子設(shè)備,包括存儲(chǔ)器、處理器及存儲(chǔ)在存儲(chǔ)器上并可在處理器上運(yùn)行的計(jì)算機(jī)程序,所述處理器執(zhí)行所述程序時(shí)實(shí)現(xiàn)上述裝置的功能。
37、本發(fā)明進(jìn)一步公開了一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序,所述計(jì)算機(jī)程序在被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述裝置的功能。
38、根據(jù)本發(fā)明的技術(shù)方案,通過結(jié)構(gòu)分析生成消除樹并合并具有相同l結(jié)構(gòu)的連續(xù)節(jié)點(diǎn)形成超節(jié)點(diǎn),僅存儲(chǔ)有效稠密塊及鄰接列表,通過預(yù)分配l矩陣空間并顯式記錄鄰接列表,支持直接調(diào)用potrf/sytrf、trsm、syrk等稠密blas/lapack函數(shù),將原本離散的稀疏運(yùn)算轉(zhuǎn)化為高效稠密矩陣運(yùn)算,解決了csr/csc格式依賴低效稀疏blas庫的問題,計(jì)算性能較傳統(tǒng)方法大幅提升,進(jìn)一步的,超節(jié)點(diǎn)的連續(xù)存儲(chǔ)與鄰接列表驅(qū)動(dòng)的貢獻(xiàn)矩陣傳遞路徑,確保數(shù)據(jù)依賴關(guān)系明確且無需動(dòng)態(tài)調(diào)整存儲(chǔ),最終實(shí)現(xiàn)對稱稀疏矩陣分解的高效性、低內(nèi)存占用及算法通用性。
1.一種針對超節(jié)點(diǎn)的稀疏矩陣高效存儲(chǔ)與分解裝置,其特征在于,所述裝置包括:
2.根據(jù)權(quán)利要求1所述的針對超節(jié)點(diǎn)的稀疏矩陣高效存儲(chǔ)與分解裝置,其特征在于,所述矩陣預(yù)處理模塊具體包括:
3.根據(jù)權(quán)利要求1所述的針對超節(jié)點(diǎn)的稀疏矩陣高效存儲(chǔ)與分解裝置,其特征在于,所述超節(jié)點(diǎn)構(gòu)建模塊具體包括:
4.根據(jù)權(quán)利要求1所述的針對超節(jié)點(diǎn)的稀疏矩陣高效存儲(chǔ)與分解裝置,其特征在于,所述數(shù)據(jù)加載模塊具體包括:
5.根據(jù)權(quán)利要求3所述的針對超節(jié)點(diǎn)的稀疏矩陣高效存儲(chǔ)與分解裝置,其特征在于,所述矩陣分解模塊具體包括:
6.一種針對超節(jié)點(diǎn)的稀疏矩陣高效存儲(chǔ)與分解的方法,應(yīng)用于權(quán)利要求1-5中任一項(xiàng)所述的裝置,其特征在于,該方法包括:
7.根據(jù)權(quán)利要求6所述的針對超節(jié)點(diǎn)的稀疏矩陣高效存儲(chǔ)與分解的方法,其特征在于,還包括:
8.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,所述存儲(chǔ)介質(zhì)存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述權(quán)利要求1-5中任一項(xiàng)所述裝置的功能。
9.一種電子設(shè)備,包括存儲(chǔ)器、處理器及存儲(chǔ)在存儲(chǔ)器上并可在處理器上運(yùn)行的計(jì)算機(jī)程序,其特征在于,所述處理器執(zhí)行所述程序時(shí)實(shí)現(xiàn)上述權(quán)利要求1-5中任一項(xiàng)所述裝置的功能。
10.一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序,其特征在于,所述計(jì)算機(jī)程序在被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述權(quán)利要求1-5中任一項(xiàng)所述裝置的功能。