LecNote-14-并行算法設(shè)計(jì)(二)_第1頁(yè)
LecNote-14-并行算法設(shè)計(jì)(二)_第2頁(yè)
LecNote-14-并行算法設(shè)計(jì)(二)_第3頁(yè)
LecNote-14-并行算法設(shè)計(jì)(二)_第4頁(yè)
LecNote-14-并行算法設(shè)計(jì)(二)_第5頁(yè)
已閱讀5頁(yè),還剩37頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第十四講并行算法設(shè)計(jì)(二)分治并行(partitioninganddivide-and-conquerstrategies)一維FFT問題多體問題N-Body的Barnes-Hut算法流水并行(pipelinedcomputation)Gauss-Seidel迭代法求解線性方程組一維FFT在前面的二維FFT算法中,我們沒有考慮矩陣的每一行(列)是如何實(shí)現(xiàn),只是假定已經(jīng)有了一個(gè)串行的一維FFT/DFT函數(shù),并沒有考慮每一行(列)內(nèi)部是否有并行性但是,如果計(jì)算任務(wù)是對(duì)一個(gè)一維的向量進(jìn)行DFT,且n非常大,比如n=1M/G并行性:每個(gè)bk都是可以并行計(jì)算的局部性:每個(gè)bk的計(jì)算都需要整個(gè)的向量(a0,a1,…,an-1)從上一講中,我們知道,為了提高并行的性能,必須對(duì)(a0,a1,…,an-1)進(jìn)行劃分提高程序?qū)栴}規(guī)模的scalability:最大可解問題的規(guī)??梢噪S處理器數(shù)量增加提高程序中的數(shù)據(jù)訪問效率:通常,涉及的數(shù)據(jù)規(guī)模越小,訪問的命中率就越高通信問題?bk=(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)(0,2,4,6,8,10,12,14)(0,4,8,12)(0,8)wk(4,12)wk(2,6,10,14)(2,10)wk(6,14)wk(1,3,5,7,9,11,13,15)(1,5,9,13)(1,9)wk(5,13)wk(3,7,11,15)(3,11)wk(7,15)a0a1a2a3a4a5a6a7a8a9a10a11a12a13a14a15b0b1b2b3b4b5b6b7b8b9b10b11b12b13b14b15a0a1a2a3a4a5a6a7a8a9a10a11a12a13a14a15b0b1b2b3b4b5b6b7b8b9b10b11b12b13b14b15bk=(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14)(0,2,4,6,8,10,12,14)(0,4,8,12)(0,8)wk(4,12)wk(2,6,10,14)(2,10)wk(6,14)wk(1,3,5,7,9,11,13)(1,5,9,13)(1,9)wk(5,13)wk(3,7,11)(3,11)wk(7)a0a1a2a3a4a5a6a7a8a9a10a11a12a13a14b0b1b2b3b4b5b6b7b8b9b10b11b12b13b14一維FFT并行特征如果在存在關(guān)系的兩個(gè)數(shù)據(jù)之間連接一條邊,所有數(shù)據(jù)之間形成一個(gè)全連同的圖每個(gè)處理器要執(zhí)行l(wèi)og(p)次通信,其中p是處理器的數(shù)量每次通信交換數(shù)據(jù)量為n/p每一次通信時(shí),都要對(duì)處理器進(jìn)行重新分組每個(gè)處理器上的循環(huán)空間nlog(n)p每個(gè)循環(huán)的計(jì)算量:一維并行FFT的scalability每個(gè)處理器上的負(fù)載n/p個(gè)bk計(jì)算每個(gè)處理器上的數(shù)據(jù)量于p成反比通信的次數(shù)log(p)消息大小n/p分治并行partitioninganddivide-and-conquerstrategies劃分策略(partitioning):把一個(gè)問題分解成若干個(gè)組成部分通常,需要對(duì)每個(gè)組成部分的結(jié)果進(jìn)行合成(combine)后,才能夠獲得整個(gè)問題的結(jié)果例如:理想并行采用的是一種劃分策略,這種策略下,在把各個(gè)部分的結(jié)果合成為整個(gè)問題的結(jié)果時(shí),幾乎不需要什么額外的運(yùn)算。劃分策略的分類數(shù)據(jù)劃分(datapartitioning)/域分解(domaindecomposition):把對(duì)計(jì)算的數(shù)據(jù)分解成一組數(shù)據(jù)子集,在不同的子集上并行的執(zhí)行處理。要求每個(gè)數(shù)據(jù)子集上執(zhí)行的運(yùn)算沒有依賴關(guān)系不同的數(shù)據(jù)子集可以采用數(shù)據(jù)復(fù)制(datareplication)的策略,使它們有數(shù)據(jù)“重疊”例如在二維的FFT計(jì)算中,每一個(gè)super-step上,都執(zhí)行的是數(shù)據(jù)分解,把整個(gè)二維陣列按照“行”/“列”劃分,在每一“行”/“列”上并發(fā)執(zhí)行一維FFT功能分解(functionaldecomposition):把計(jì)算任務(wù)劃分成一組獨(dú)立的功能模塊,并發(fā)執(zhí)行每一個(gè)功能模塊。不同的功能模塊所需要的初始數(shù)據(jù)可以有“重疊”例如Jacobi迭代(求解方程組AX=B),每個(gè)X[i](t)的計(jì)算作為一個(gè)功能模塊,每個(gè)功能模塊出了涉及A的第i行、B[i]為。,都需要X(t-1)(“重疊”的數(shù)據(jù)部分

)分治策略(divide-and-conquer):把一個(gè)復(fù)雜的問題分解成一組子問題,每個(gè)子問題與原問題的形式相同,但規(guī)模比原問題小,而且對(duì)子問題可以采用這一策略進(jìn)一步細(xì)分這是另一種特殊情形的partitioning策略:子問題與原問題除了問題規(guī)模外,完全相同例如:一維FFT(A),其中A是一個(gè)長(zhǎng)度為n的向量。我們采用的并行策略是令FFT(A)=FFT([FFT(A0dd),FFT(Aeven)])把FFT(A)劃分為三個(gè)一維FFT子問題:FFT(A0dd)、FFT(Aeven)和FFT([FFT(A0dd),FFT(Aeven)]FFT(A0dd)執(zhí)行對(duì)A的奇數(shù)位置的元素組成的向量的一維FFT,問題規(guī)模是原問題規(guī)模的一半FFT(Aeven)執(zhí)行對(duì)A的偶數(shù)位置的元素組成的向量的一維FFT,問題規(guī)模是原問題規(guī)模的一半FFT([FFT(A0dd),FFT(Aeven)])執(zhí)行對(duì)一個(gè)由兩個(gè)元素所組成向量的一維FFTM-ary的分治策略把一個(gè)復(fù)雜的問題分解成M個(gè)子問題,M2,每個(gè)子問題與原問題的形式相同當(dāng)子問題的規(guī)模還是太大時(shí),進(jìn)一步把每個(gè)子問題分解成M個(gè)粒度更細(xì)的子問題如此遞歸,直到每個(gè)子問題的規(guī)模合適為止一個(gè)4-ary分治的例子用分治策略解決N_Body問題有N個(gè)粒子(body)

在天體物理學(xué)里代表星體,例如地球、太陽(yáng)、火星等在分子動(dòng)力學(xué)里代表構(gòu)成一個(gè)分子的各個(gè)原子……每個(gè)粒子有一定的狀態(tài):位置、速度、加速度、能量、溫度等,這些狀態(tài)是隨時(shí)間變化的影響一個(gè)粒子狀態(tài)變化的因素是粒子的初始狀態(tài)其它粒子對(duì)它的作用力任意兩個(gè)粒子之間都有牛頓萬(wàn)有引力,與兩個(gè)粒子的距離有關(guān)對(duì)不同物理問題,粒子之間還存在其它與雙方狀態(tài)有關(guān)的作用力。例如在兩個(gè)原子間還存在勢(shì)能力(由原子的自轉(zhuǎn)速度、原子間的距離等有關(guān))。問題:對(duì)一個(gè)N_Body系統(tǒng),給定其中各個(gè)粒子的初始狀態(tài)最終狀態(tài)是什么樣的,即其中每個(gè)粒子的狀態(tài)不再變化時(shí),各個(gè)粒子的狀態(tài)是什么樣的?從初態(tài)到終態(tài)的變化過程中,變化的軌跡是什么樣的?即對(duì)于我們關(guān)心的某(幾)個(gè)狀態(tài)量(例如電磁場(chǎng)勢(shì)能的分布),隨時(shí)間變化的規(guī)律是什么樣的?參考《DesigningandBuildingParallelPrograms》第1.4.2節(jié)把N個(gè)粒子按照“block”方式,劃分成M組,M是處理器的數(shù)量每組作為一個(gè)粒子的子集,分配給一個(gè)處理器在每個(gè)處理器上,除了存儲(chǔ)本地粒子的子集local_body_set外,開辟一個(gè)buffer,其容量大小是能夠存儲(chǔ)一個(gè)粒子的子集。在每個(gè)處理器上,用它的local_body_set對(duì)buffer進(jìn)行初始化在每個(gè)時(shí)間步上,執(zhí)行下列循環(huán)從1到M,執(zhí)行循環(huán)對(duì)local_body_set中的每個(gè)粒子,計(jì)算buffer中各粒子對(duì)它的作用力把buffer中的內(nèi)容發(fā)送給“左”鄰居(0#處理器的“左”鄰居是M-1號(hào)處理器)從“右”鄰居接收消息,把消息數(shù)據(jù)存儲(chǔ)在buffer中(M-1#處理器的“右”鄰居是0#處理器)根據(jù)得到的作用力,更新local_body_set中的各個(gè)粒子的狀態(tài)以100各粒子、4個(gè)處理器為例每個(gè)時(shí)間步上粒子0~24粒子0~24粒子25~49粒子25~49粒子50~74粒子50~74粒子75~99粒子75~99粒子0~24粒子25~49粒子25~49粒子50~74粒子50~74粒子75~99粒子75~99粒子0~24粒子0~24粒子50~74粒子25~49粒子75~99粒子50~74粒子0~24粒子75~99粒子25~49粒子0~24粒子75~99粒子25~49粒子0~24粒子50~74粒子25~49粒子75~99粒子50~740#處理器0#處理器0#處理器0#處理器N_Body問題的一種并行算法:性能分析對(duì)問題規(guī)模的scalability數(shù)據(jù)的scalability:計(jì)算數(shù)據(jù)以“block”方式劃分在各個(gè)處理器上,數(shù)據(jù)存儲(chǔ)的能力與處理器數(shù)量成線性關(guān)系速度的scalability:每個(gè)處理器上的主要運(yùn)算開銷是計(jì)算local_body_set各個(gè)粒子所受作用力,每個(gè)時(shí)間步上的復(fù)雜度為O(N2M)=O(N2),其中N是粒子數(shù)量、M是處理器數(shù)量通信復(fù)雜度:在每個(gè)時(shí)間步上通信啟動(dòng)O(M)每次通信的數(shù)據(jù)傳遞開銷O(NM)總的數(shù)據(jù)傳遞開銷O(N)N是粒子數(shù)量、M是處理器數(shù)量因此,采用這種算法解決N_Body問題:隨著問題規(guī)模的上升,無論是否增加處理器的數(shù)量,計(jì)算的性能都按照O(N2)的比例下降在大的分子模擬或天體物理學(xué)計(jì)算中,N的數(shù)量會(huì)很大,104或者更多怎樣才能夠提高實(shí)際應(yīng)用問題的計(jì)算性能?N_Body問題一種優(yōu)化并行算法Barnes-Hut算法:采用分治策略、進(jìn)行近似計(jì)算基本思想:對(duì)任何一個(gè)粒子A,當(dāng)一群粒子與A的距離“足夠遠(yuǎn)”,這群粒子對(duì)A的影響可被一個(gè)“個(gè)體”來(近似)代替。在牛頓力學(xué)中,任何粒子B對(duì)A的作用與r2成反比,r是A與B間的距離對(duì)于一組粒子B1、B2、…、Bk,如果它們?cè)诳臻g位置上位于一個(gè)邊長(zhǎng)為d的立方體范圍內(nèi),該立方體中心與A的距離為r。只要r“足夠”大、d“足夠”小,那么在計(jì)算B1、B2、…、Bk對(duì)A的影響時(shí),可以把它們看作單個(gè)“個(gè)體”B來,用B對(duì)A的影響近似代替B1、B2、…、Bk對(duì)A的影響關(guān)鍵問題是:什么叫“足夠遠(yuǎn)”、如何確定“一群”、用哪“一個(gè)體”來取代?N_Body問題一種優(yōu)化并行算法:實(shí)現(xiàn)思路建樹:確定一個(gè)包含所涉及空間的立方體;用一棵8叉樹來表示對(duì)該空間的如下劃分,把空間中的粒子分布的區(qū)域性和層次性同時(shí)表現(xiàn)出來。該立方體為根,如果其中只有一個(gè)粒子,停止;否則按照自然的方式,將它劃分為8個(gè)相等的子立方體,如果其中有粒子,則用一個(gè)子節(jié)點(diǎn)代表。分別以子節(jié)點(diǎn)為根,重復(fù)上述過程。結(jié)果:每個(gè)葉節(jié)點(diǎn)代表一個(gè)粒子,每個(gè)粒子由唯一一個(gè)葉節(jié)點(diǎn)代表。內(nèi)節(jié)點(diǎn)代表一個(gè)空間單元。可以考慮為節(jié)點(diǎn)實(shí)現(xiàn)為一個(gè)數(shù)據(jù)結(jié)構(gòu)節(jié)點(diǎn)所代表立方體的質(zhì)心的屬性,包括空間位移、質(zhì)量、速度、加速度等節(jié)點(diǎn)所代表立方體的邊長(zhǎng)d如果粒子分布在三維空間中,得到一棵8叉樹如果粒子分布在平面空間中,得到一棵4叉樹N_Body問題一種優(yōu)化并行算法:實(shí)現(xiàn)思路計(jì)算一個(gè)粒子(葉節(jié)點(diǎn))所受的力:從根開始做樹的遍歷,如果一個(gè)空間單元的質(zhì)心距離本粒子足夠遠(yuǎn),則用在該質(zhì)心的一個(gè)等價(jià)體來計(jì)算,不再考察空間單元下面的子樹。足夠遠(yuǎn)的標(biāo)準(zhǔn):設(shè)一個(gè)立方體空間的邊長(zhǎng)為d,本粒子到它的質(zhì)心的距離為r若則可以用該立方體包含星體的總質(zhì)量和質(zhì)心來計(jì)算,不需要再考慮下面的個(gè)別星體。其中,選在0.5—1.2之間,它越小,意味著近似的精度越高。這個(gè)式子也表達(dá)了“距離越遠(yuǎn),能被近似的空間越大”的含義。

注意不同粒子的計(jì)算量不同對(duì)一個(gè)粒子而言,在遍歷樹的時(shí)候,“鄰近”的分枝會(huì)遍歷較深。由于樹的平均高度為logn,計(jì)算一個(gè)星體的受力平均也就是logn。于是整個(gè)一個(gè)時(shí)間步的計(jì)算就是大約nlogn。N_Body問題一種優(yōu)化并行算法:并行性分析采用Barnes-Hut算法解決N_Body問題時(shí),在每個(gè)時(shí)間步上,都要依次執(zhí)行下列四個(gè)super-step建樹計(jì)算數(shù)上各個(gè)內(nèi)節(jié)點(diǎn)的參數(shù)(質(zhì)心、質(zhì)量等)遍歷樹,計(jì)算各個(gè)粒子所受到的力更新粒子的屬性

實(shí)際上,每個(gè)super-step都是可以并行的建樹:不同的子空間可由不同的處理器負(fù)責(zé)向下分解,獨(dú)立的操作計(jì)算數(shù)上各個(gè)內(nèi)節(jié)點(diǎn)的參數(shù):每個(gè)內(nèi)節(jié)點(diǎn)的參數(shù)計(jì)算都完全獨(dú)立遍歷樹,計(jì)算各個(gè)粒子所受到的力:以粒子為單位,完全獨(dú)立的更新粒子的屬性:以粒子為單位,完全獨(dú)立的從各super-step的時(shí)間開銷比例來看,計(jì)算各個(gè)粒子所受到的力是主要的時(shí)間開銷N_Body問題一種優(yōu)化并行算法:實(shí)現(xiàn)的難點(diǎn)涉及兩個(gè)數(shù)據(jù)結(jié)構(gòu)粒子,包括每個(gè)粒子的空間位置、質(zhì)量、速度、加速度等屬性通過建樹過程得到的8(或4)叉樹:在每個(gè)時(shí)間步上,得到的樹不同如何劃分這兩個(gè)數(shù)據(jù)結(jié)構(gòu)、如何分配計(jì)算任務(wù)建樹過程中,自然的想法是:相鄰的粒子位于同一個(gè)處理器上。但粒子是運(yùn)動(dòng)的,每個(gè)時(shí)間步上,粒子間的鄰接關(guān)系會(huì)改變計(jì)算任何一個(gè)粒子所受的力時(shí),都需要從數(shù)的根開始遍歷,如何劃分樹?每個(gè)處理器上都保存一棵完整的樹嗎?計(jì)算各個(gè)粒子所受到的力時(shí),自然的想法是每個(gè)處理器負(fù)責(zé)一組粒子的作用力計(jì)算,但是每個(gè)粒子作用力的計(jì)算復(fù)雜性不同在不同的時(shí)間步上,同一個(gè)粒子作用力的計(jì)算復(fù)雜性不同更新粒子的屬性時(shí),最好的分配辦法是:把粒子以“block”方式均勻劃分給各個(gè)處理器請(qǐng)考慮考慮數(shù)據(jù)劃分的最簡(jiǎn)單辦法是:每個(gè)處理器都保留這兩個(gè)完整的數(shù)據(jù)結(jié)構(gòu)但是,粒子的數(shù)量越大,樹中節(jié)點(diǎn)的數(shù)量也越多,這樣損傷了對(duì)問題規(guī)模的scalability比較二維FFT、一維FFT和FOX算法三者都可以用BSP模型刻畫,而且super-step數(shù)量與被計(jì)算的數(shù)據(jù)值無關(guān)二維FFT可以表示成兩個(gè)super-step一維FFT可以劃分成log(p)個(gè)super-stepFOX算法中super-step取決于并行程序的進(jìn)程拓?fù)浣Y(jié)構(gòu)Gauss-Seidel迭代法一種線性方程組的數(shù)值解法,比Jacobi迭代法的收斂速度快什么是Gauss-Seidel迭代法:AX=B表示一個(gè)方程組A是mn的矩陣,且

A(i,i)0X是長(zhǎng)度n的未知向量B是長(zhǎng)度為m的已知向量令X(0)=(c0,c1,…,cm-1)當(dāng)max(|X[i](t)-X[i](t-1)|)<時(shí),X=X(t)Gauss-Seidel迭代法的特征Gauss-Seidel迭代法的并行性分析與Jacobi迭代法不同的是,在每個(gè)時(shí)間步上,X[0](t)、X[1](t)、…、X[m-1](t)的計(jì)算必須是順序執(zhí)行的下列計(jì)算可以并行執(zhí)行X[i](t)=(b[i]-left(i)(t)-right(i)(t-1))a[i,i]對(duì)于j>i,left(j)(t)=left(j)(t)+a[j,i-1]X[i-1](t)對(duì)于j<i,right(j)(t)=right(j)(t)+a[j,i-1]X[i-1](t)并行算法進(jìn)程的拓?fù)浣Y(jié)構(gòu)是一個(gè)線性序列A按照(block,*)方式劃分,left、right、B按照“block”方式劃分X(t)按照“block”方式劃分通信:每個(gè)時(shí)間步上,每個(gè)處理器執(zhí)行p次廣播MPI_Bcast其中一次是把局部的X(t)片段廣播給其他進(jìn)程p次用于接收其它處理器廣播的X(t)片段流水并行(pipelinedcomputation)什么是流水并行(pipelinedcomputation)把一個(gè)問題分解成一組功能相同的子任務(wù)task,每個(gè)子任務(wù)處理的數(shù)據(jù)不同,這些子任務(wù)需要依次執(zhí)行把每個(gè)子任務(wù)的執(zhí)行劃分成多個(gè)階段stage每個(gè)進(jìn)程負(fù)責(zé)實(shí)現(xiàn)一個(gè)stageP0stage0P1stage1P2stage2P3stage3P4stage4data0data1data2data3data4data5data6data0data1data2data3data4data5data0data1data2data3data4data0data1data2data3data0data1data2時(shí)間Gauss-Seidel迭代的流水并行什么是Gauss-Seidel迭代法:AX=B表示一個(gè)方程組A是mn的矩陣,且

A(i,i)0X是長(zhǎng)度n的未知向量B是長(zhǎng)度為m的已知向量令X(0)=(c0,c1,…,cm-1)當(dāng)max(|X[i](t)-X[i](t-1)|)<時(shí),X=X(t)X[0](t)、X[1](t)、…、X[m-1](t)的計(jì)算順序執(zhí)行下列計(jì)算并行執(zhí)行X[i](t)=(b[i]-left(i)(t)-right(i)(t-1))a[i,i]對(duì)于j>i,left(j)(t)=left(j)(t)+a[j,i-1]X[i-1](t)對(duì)于j<i,right(j)(t)=right(j)(t)+a[j,i-1]X[i-1](t)并行算法進(jìn)程的拓?fù)浣Y(jié)構(gòu)是一個(gè)線性序列A按照(block,*)方式劃分,left、right、B按照“block”方式劃分X(t)按照“block”方式劃分第一步第二步第三步第四步第五步第六步第七步第八步規(guī)則計(jì)算與非規(guī)則計(jì)算對(duì)并行計(jì)算而言,我們可以這樣理解(注意:我沒有試圖給一個(gè)精確的定義)規(guī)則計(jì)算:訪問異地?cái)?shù)據(jù)時(shí),不需要使用間接地址劃分子任務(wù)的數(shù)據(jù)時(shí),不需要使用數(shù)據(jù)劃分的索引非規(guī)則計(jì)算:不是規(guī)則計(jì)算的其他計(jì)算非規(guī)則計(jì)算的例子:線性稀疏方程求解一個(gè)大的稀疏方程,為了提高性能,常使用壓縮存儲(chǔ)的辦法避免“0”元素的乘法:減少Jacobi迭代法或Gauss-Seidel迭代法中乘法運(yùn)算量避免“0”元素占用的存儲(chǔ)空間:提高數(shù)據(jù)訪問效率例如用一個(gè)一維的數(shù)組A存儲(chǔ)系數(shù)矩陣中的非“0”值,用另一個(gè)與A相同長(zhǎng)度的數(shù)組B作為地址索引,B[i]記錄A[i]在系數(shù)矩陣中的行號(hào)和列號(hào)采用前面的Jacobi迭代法或Gauss-Seidel迭代法并行算法計(jì)算,在劃分方程組的系數(shù)矩陣時(shí),需要根據(jù)B的值劃分A的數(shù)據(jù),B的作用是訪問A的索引為什么會(huì)出現(xiàn)非規(guī)則計(jì)算的問題原因一:?jiǎn)栴}空間本身具有不規(guī)則性,通常表現(xiàn)為:有一組數(shù)據(jù)并行的子任務(wù)它們分別對(duì)不同的數(shù)據(jù)集合執(zhí)行相同的運(yùn)算但每個(gè)數(shù)據(jù)集合的規(guī)模不同例如:非連續(xù)彈簧體問題(multi-elasticbodysystem)每個(gè)彈簧體被離散化成一組節(jié)點(diǎn),由于彈簧體的大小不同,節(jié)點(diǎn)的數(shù)量不同根據(jù)各個(gè)彈簧體邊界上的受力,計(jì)算彈簧體的各個(gè)節(jié)點(diǎn)的移動(dòng)情況12345678原因二:為了性能優(yōu)化例如:稀疏線性方程的求解性能優(yōu)化時(shí)常需要用到領(lǐng)域知識(shí)例如:對(duì)于分塊矩陣形式的稀疏方程,我們可以把它劃分成若干個(gè)非稀疏矩陣的小方程對(duì)于一般的稀疏矩陣,則必須采用索引的方法非規(guī)則計(jì)算的表現(xiàn)用兩個(gè)不同的數(shù)組(數(shù)據(jù)文件)描述原始數(shù)據(jù)索引存儲(chǔ)原始數(shù)據(jù)的數(shù)組/文件:一組定長(zhǎng)的記錄稀疏矩陣的一個(gè)非零元素:同一行/列的非零元素連續(xù)存放多彈簧體中,彈簧體上一個(gè)“剛點(diǎn)”:同一彈簧體的“剛點(diǎn)”連續(xù)存放存儲(chǔ)索引的數(shù)組/文件:一組定長(zhǎng)的記錄稀疏矩陣:每一行/列用一個(gè)記錄,這一行在原始數(shù)據(jù)(的數(shù)組/文件)中起始記錄號(hào)有多少個(gè)記錄多彈簧體:每個(gè)彈簧體用一個(gè)記錄,這個(gè)彈簧體原始數(shù)據(jù)(的數(shù)組/文件)中起始記錄號(hào)有多少個(gè)記錄

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論