[0059] 在該實施例中,子線程對當前的稀疏矩陣數(shù)據(jù)重新進行排序和格式化轉(zhuǎn)換(例如從CSR切換到CSC或反之),并將調(diào)整后的數(shù)據(jù)再次通過cudaMemcpy傳輸?shù)紾PU,覆蓋原先的存儲數(shù)據(jù)。CPU會在更新過程中設(shè)置一個專用的標記的int型變量flag對矩陣進行標記(例如,0對應COO,1對應CSR,2對應CSC,3對應增量更新),若當矩陣的稀疏性發(fā)生微小變化例如,僅添加了一些新行或新列的非零元素時,標記類型為增量更新,此時的數(shù)據(jù)只將新增的非零元素傳輸?shù)紾PU。例如,如果一個行(或列)變得稠密,僅需要將這個行(或列)中的新非零元素傳輸?shù)紾PU,而不是重建整個矩陣,并更新索引rowIndices、columnIndices。
[0060] 通過本發(fā)明的實施例,一旦CPU中子線程確定需要更新矩陣的存儲格式,CPU中子線程會通過同步機制通知GPU暫停當前計算,等待數(shù)據(jù)的重新傳輸。這可以避免GPU在不適合的存儲格式下進行低效的運算。GPU接收到更新的數(shù)據(jù)后,將采用新的存儲格式繼續(xù)并行運算,確保計算效率更高、資源利用率更優(yōu)化。通過這種動態(tài)監(jiān)控與格式調(diào)整機制,CPU和GPU的資源都得到充分利用,CPU避免了空載等待,GPU則以合適的存儲格式執(zhí)行并行運算,提升了整個稀疏矩陣構(gòu)建流程的性能。
[0061] 基于上述仿真軟件的求解方法,本發(fā)明還提供了一種仿真軟件的求解裝置,裝置能夠用于實現(xiàn)上述仿真軟件的求解方法。以下將結(jié)合圖3對該裝置進行詳細描述。
[0062] 圖3示意性示出了根據(jù)本發(fā)明實施例的仿真軟件的求解裝置的結(jié)構(gòu)框圖。
[0063] 如圖3所示,該實施例的仿真軟件的求解裝置包括矩陣劃分模塊、格式確認模塊和仿真求解模塊。
[0064] 矩陣劃分模塊,用于調(diào)用中央處理器預處理仿真矩陣,得到坐標格式子矩陣;坐標格式子矩陣通過行索引數(shù)組、列索引數(shù)組和非零元素值數(shù)組表征。
[0065] 格式確認模塊,用于根據(jù)坐標格式子矩陣的分布特征,調(diào)用中央處理器重新確定坐標格式子矩陣的存儲格式,得到壓縮子矩陣的傳輸數(shù)據(jù);壓縮子矩陣至少包括坐標格式子矩陣、稀疏行格式子矩陣和稀疏列格式子矩陣的其中之一。
[0066] 仿真求解模塊,用于調(diào)用圖形處理器對壓縮子矩陣完成仿真求解。
[0067] 圖4示意性示出了根據(jù)本發(fā)明實施例的適于實現(xiàn)仿真軟件的求解方法的電子設(shè)備的方框圖。
[0068] 如圖4所示,根據(jù)本發(fā)明實施例的電子設(shè)備400包括處理器401,其可以根據(jù)存儲在只讀存儲器(ROM)402中的程序或者從存儲部分408加載到隨機訪問存儲器(RAM)403中的程序而執(zhí)行各種適當?shù)膭幼骱吞幚怼L幚砥?01例如可以包括通用微處理器(例如CPU)、指令集處理器和/或相關(guān)芯片組和/或?qū)S梦⑻幚砥鳎ɡ?,專用集成電路(ASIC))等等。處理器
401還可以包括用于緩存用途的板載存儲器。處理器401可以包括用于執(zhí)行根據(jù)本發(fā)明實施例的方法流程的不同動作的單一處理單元或者是多個處理單元。
[0069] 在RAM?403中,存儲有電子設(shè)備400操作所需的各種程序和數(shù)據(jù)。處理器?401、ROM?
402以及RAM?403通過總線404彼此相連。處理器401通過執(zhí)行ROM?402和/或RAM?403中的程序來執(zhí)行根據(jù)本發(fā)明實施例的方法流程的各種操作。需要注意,所述程序也可以存儲在除ROM?402和RAM?403以外的一個或多個存儲器中。處理器401也可以通過執(zhí)行存儲在所述一個或多個存儲器中的程序來執(zhí)行根據(jù)本發(fā)明實施例的方法流程的各種操作。
[0070] 根據(jù)本發(fā)明的實施例,電子設(shè)備400還可以包括輸入/輸出(I/O)接口405,輸入/輸出(I/O)接口405也連接至總線404。電子設(shè)備400還可以包括連接至I/O接口405的以下部件中的一項或多項:包括鍵盤、鼠標等的輸入部分406;包括諸如陰極射線管(CRT)、液晶顯示器(LCD)等以及揚聲器等的輸出部分407;包括硬盤等的存儲部分408;以及包括諸如LAN卡、調(diào)制解調(diào)器等的網(wǎng)絡接口卡的通信部分409。通信部分409經(jīng)由諸如因特網(wǎng)的網(wǎng)絡執(zhí)行通信處理。驅(qū)動器410也根據(jù)需要連接至I/O接口405??刹鹦督橘|(zhì)411,諸如磁盤、光盤、磁光盤、半導體存儲器等等,根據(jù)需要安裝在驅(qū)動器410上,以便于從其上讀出的計算機程序根據(jù)需要被安裝入存儲部分408。
[0071] 本發(fā)明還提供了一種計算機可讀存儲介質(zhì),該計算機可讀存儲介質(zhì)可以是上述實施例中描述的設(shè)備/裝置/系統(tǒng)中所包含的;也可以是單獨存在,而未裝配入該設(shè)備/裝置/系統(tǒng)中。上述計算機可讀存儲介質(zhì)承載有一個或者多個程序,當上述一個或者多個程序被執(zhí)行時,實現(xiàn)根據(jù)本發(fā)明實施例的方法。