專利名稱:一種基于龍芯3a的單精度矩陣乘法優(yōu)化方法
技術(shù)領(lǐng)域:
本發(fā)明屬于電數(shù)字?jǐn)?shù)據(jù)處理技術(shù)領(lǐng)域,具體涉及基于龍芯3A的單精度矩陣乘法的優(yōu)化方法。
背景技術(shù):
龍芯3A是中國第一個具有完全自主知識產(chǎn)權(quán)的四核中央處理器(CPU)。在高性能計算領(lǐng)域,龍芯3A需要基礎(chǔ)線性代數(shù)子程序庫的支持。龍芯3A上能夠使用的較優(yōu)的基礎(chǔ)線性代數(shù)子程序庫是美國德克薩斯大學(xué)奧斯汀分校超級計算中心高性能計算組開發(fā)的基礎(chǔ)線性代數(shù)子程序庫(GotoBLAQ。德克薩斯大學(xué)奧斯汀分校超級計算中心高性能計算組開發(fā)的基礎(chǔ)線性代數(shù)子程序庫(GotoBLAQ通過使用矩陣分塊、數(shù)據(jù)拷貝、循環(huán)展開和指令調(diào)度等優(yōu)化技術(shù),實現(xiàn)了高效的單精度矩陣乘法。龍芯3A擁有1 位訪存、并行單精度浮點等特有指令,但由于德克薩斯大學(xué)奧斯汀分校超級計算中心高性能計算組開發(fā)的基礎(chǔ)線性代數(shù)子程序庫(GotoBLAQ并不是針對龍芯3A的特點所做的專門優(yōu)化,因此它所采用的單精度矩陣乘法在龍芯3A平臺上執(zhí)行的性能并不高。
發(fā)明內(nèi)容
本發(fā)明提出一種基于龍芯3A的單精度矩陣乘法優(yōu)化方法,以克服現(xiàn)有技術(shù)的上述缺陷,達(dá)到在龍芯3A平臺上單精度矩陣乘法的高效實現(xiàn)。本發(fā)明基于龍芯3A的單精度矩陣乘法優(yōu)化方法,先將龍芯3A的兩個單精度源矩陣按分塊大小分別不大于二級緩存的原則劃分成為兩個子矩陣,然后將分塊形成的子矩陣塊拷貝到一個連續(xù)的地址空間中,再通過使用龍芯3A的32位訪存指令、單精度浮點乘加指令和預(yù)取指令的矩陣乘法核心計算代碼來完成子矩陣與子矩陣的乘法;其特征在于所述將龍芯3A的兩個單精度源矩陣按分塊大小分別不大于二級緩存的原則劃分采取分別不大于一級緩存一半和不大于二級緩存一半的原則劃分成為兩個子矩陣;在所述龍芯3A的32 位訪存指令、單精度浮點乘加指令和預(yù)取指令的矩陣乘法核心計算代碼中采用龍芯3A的 128位訪存指令和并行單精度浮點指令,并采用兩倍的運算數(shù)據(jù)集大小減去運算數(shù)據(jù)單元大小預(yù)取地址計算方式來對數(shù)據(jù)進(jìn)行預(yù)取;具體操作步驟如下第一步、數(shù)據(jù)分塊并拷貝步驟先將龍芯3A的兩個單精度源矩陣分塊,使第一個源矩陣的子塊大小不大于龍芯 3A 一級緩存容量的一半,第二個源矩陣的子塊大小為不大于龍芯3A 二級緩存容量的一半, 然后將兩個子塊分別拷貝到互相連續(xù)的兩個地址空間中;第二步、核心計算代碼編寫步驟通過使用1 位訪存指令,每次將4個單精度浮點數(shù)取到2個64位的浮點寄存器中;使用低高位合并指令plu. PS將存于寄存器高32位的單精度浮點數(shù)提取出來,使用并行單精度浮點乘加指令madd. ps實現(xiàn)并行單精度浮點乘加運算;循環(huán)展開度設(shè)為4*4,即每次從兩個子塊中各取4個單精度浮點數(shù),兩兩分別相乘后得到16個結(jié)果累加到目標(biāo)矩陣中;指令調(diào)度中,由4條指令組成一個小組,每個小組包含浮點操作指令2條,取數(shù)指令和空操作指令各一條或空操作指令2條,由5個小組組成一個大組,浮點計算需要用的操作數(shù)全部提前2個大組通過1 位訪存指令和低高位合并指令放到指定寄存器中;在核心計算代碼的最開頭,對結(jié)果矩陣和第二個源矩陣子塊進(jìn)行預(yù)取,其中結(jié)果矩陣的預(yù)取地址設(shè)為兩倍的運算數(shù)據(jù)集大小減去運算數(shù)據(jù)單元大小,第二個源矩陣子塊的預(yù)取地址設(shè)為運算數(shù)據(jù)集大小,預(yù)取指令的頻率等于高速緩沖存儲器(Cache)行的大小除以計算數(shù)據(jù)集的大小。本發(fā)明基于龍芯3A的單精度矩陣乘法優(yōu)化方法還可以將所述數(shù)據(jù)分塊并拷貝步驟中子塊拷貝到連續(xù)空間的方法進(jìn)一步改進(jìn)為將兩個源矩陣數(shù)據(jù)分別以龍芯3A —級緩存容量的1/4為間隔拷貝到目標(biāo)地址空間中,使兩個子塊的拷貝目標(biāo)地址所對應(yīng)的一級緩存地址不在同一組。與現(xiàn)有技術(shù)相比較,本發(fā)明提出的這種基于龍芯3A的單精度矩陣乘法優(yōu)化方法, 通過使用1 位訪存和并行單精度浮點等龍芯3A的特有指令,使取數(shù)和浮點部件運算效率有所提高;由于本發(fā)明根據(jù)龍芯3A指令流水特點,在核心計算代碼中巧妙地排列指令順序,使浮點運算部件基本上能夠滿負(fù)荷運轉(zhuǎn);由于本發(fā)明改進(jìn)了預(yù)取地址計算方式,克服了地址非對齊數(shù)據(jù)預(yù)取無效的問題,從而使地址非對齊的單精度矩陣乘法執(zhí)行效率達(dá)到接近于地址對齊的單精度矩陣乘法。采用本發(fā)明方法優(yōu)化后的單精度矩陣乘法的運算速度比德克薩斯大學(xué)奧斯汀分校超級計算中心高性能計算組開發(fā)的基礎(chǔ)線性代數(shù)子程序庫 (GotoBLAS)版本2-1. 07中的實現(xiàn)平均提高了 90%以上。
具體實施例方式實施例1 本發(fā)明基于龍芯3A的單精度矩陣乘法優(yōu)化方法,先將龍芯3A的兩個單精度源矩陣按分塊大小分別不大于二級緩存的原則劃分成為兩個子矩陣采取分別不大于一級緩存一半和不大于二級緩存一半的原則劃分成為兩個子矩陣;在龍芯3A的32位訪存指令、單精度浮點乘加指令和預(yù)取指令的矩陣乘法核心計算代碼中采用龍芯3A的1 位訪存指令和并行單精度浮點指令,并采用兩倍的運算數(shù)據(jù)集大小減去運算數(shù)據(jù)單元大小預(yù)取地址計算方式來對數(shù)據(jù)進(jìn)行預(yù)取。本實施例中采取了先將龍芯3A的兩個單精度源矩陣劃分成分塊大小分別為 64*128和128*10M的兩個子矩陣,然后將劃分得到的子矩陣塊拷貝到一個連續(xù)的地址空間中,再通過針對龍芯3A平臺特性編寫的核心計算代碼來完成子矩陣與子矩陣的乘法。具體步驟列舉如下第一步、數(shù)據(jù)分塊并拷貝步驟先將龍芯3A的兩個單精度源矩陣分塊使第一個源矩陣的子塊大小不大于龍芯 3A—級緩存容量的一半,本實施例中第一個源矩陣的子塊大小取64*1觀;第二個源矩陣的子塊大小不大于二級緩存一半,本實施例中第二個源矩陣的子塊大小取128*10M ;然后將兩個子塊拷貝到連續(xù)的空間中。為減少緩存沖突,還可以采取將兩個源矩陣數(shù)據(jù)分別以龍芯3A—級緩存容量的 1/4為間隔拷貝到目標(biāo)地址空間中,使兩個子塊的拷貝目標(biāo)地址所對應(yīng)的一級緩存地址不
在同一組。為了平衡處理器運算速度和主存儲器訪問速度之間的差異,基于程序的局部性原理,現(xiàn)有的處理器與存儲器之間都有高速緩沖存儲器(Cache)。當(dāng)中央處理器(CPU)訪問存儲器時,如果需要的數(shù)據(jù)高速緩沖存儲器(Cache)命中,此時訪存能很快完成;如果需要的數(shù)據(jù)在高速緩沖存儲器(Cache)不命中,中央處理器(CPU)需要從下一級存儲器讀取數(shù)據(jù), 這會帶來很大的延時,嚴(yán)重影響程序性能。數(shù)據(jù)分塊技術(shù)就是通過重新組織數(shù)據(jù)的訪問順序,減小高速緩沖存儲器(Cache)的失效率來提高程序性能的方法。龍芯3A的高速緩沖存儲器(Cache)分為兩級,一級高速緩沖存儲器(Cache)的延遲為4拍,二級高速緩沖存儲器(Cache)的延遲為15 25拍。由于受到寄存器數(shù)量的限制,要想減少流水線的中斷和停頓,單精度矩陣乘法的核心計算部分的數(shù)據(jù)采取從一級高速緩沖存儲器(Cache)中獲得的方法。為了使核心計算部分的數(shù)據(jù)駐留在一級高速緩沖存儲器(Cache),子數(shù)據(jù)塊大小不能超過一級高速緩沖存儲器(Cache)的大小。單精度矩陣乘法擁有局部性原理的是矩陣A和矩陣B的數(shù)據(jù),矩陣C的數(shù)據(jù)是流式的,因此矩陣C的數(shù)據(jù)沒有必要駐留在一級高速緩沖存儲器(Cache)中。龍芯3A的一級高速緩沖存儲器(Cache) 總共大小為64KB,第一個源矩陣的子塊應(yīng)盡量大但不超過一級高速緩沖存儲器(Cache) — 半,剩下的用于第二個源矩陣子塊的部分?jǐn)?shù)據(jù)存儲,這樣可以減少數(shù)據(jù)拷貝的代價,同時可以避過兩個源矩陣子塊過多的沖突失效。龍芯3A平均每個處理器核分到一塊二級高速緩沖存儲器(Cache),大小為1MB,因此將一塊二級高速緩沖存儲器(Cache)的5 12KB用于B 矩陣子塊的存儲。龍芯3A的高速緩沖存儲器(Cache)替換策略是隨機(jī)替換,為了減少A矩陣子塊和B矩陣子塊的沖突失效,本發(fā)明中還提出了可采取地址交錯的方式存儲矩陣A和矩陣B,即將A矩陣子塊和B矩陣子塊交替存儲,從而可保證A矩陣子塊和B矩陣子塊不在一級高速緩沖存儲器(Cache)的同一組當(dāng)中。第二步、核心計算代碼編寫步驟通過使用1 位訪存指令,每次將4個單精度浮點數(shù)取到2個64位的浮點寄存器中。一般取數(shù)指令一次只能取64位的數(shù)據(jù),然而龍芯3A擁有1 位訪存指令,因此一次可以取到1 位的數(shù)據(jù),即4個單精度浮點數(shù)。這樣不但可以減少指令數(shù)量,還可以加快訪存速度。使用低高位合并指令plu. ps將存于寄存器高32位的單精度浮點數(shù)提取出來,使用并行單精度浮點乘加指令madd. ps實現(xiàn)并行單精度浮點乘加運算。一個單精度浮點數(shù)為4個字節(jié),即32位,而龍芯3A的浮點寄存器大小為64位,因此普通的單精度矩陣乘法實現(xiàn)中,每次運算只用到了 64位寄存器的一半。龍芯3A浮點協(xié)處理器支持并行單精度(PQ浮點運算,因此本發(fā)明使用這些并行單精度浮點運算指令來充分使用64位的寄存器,把單精度矩陣乘法的理論峰值提高一倍。本實施例中實現(xiàn)并行單精度(PQ浮點加速的方法是第一步使用普通取數(shù)指令將結(jié)果矩陣的數(shù)據(jù)取到寄存器中,并使用低位合并指令pll. ps將兩個32位單精度數(shù)據(jù)合并到一個64位的寄存器中;第二步使用1 位訪存指令將矩陣A和B的數(shù)據(jù)取到寄存器中,并使用低高位合并指令plu. ps將存于寄存器高32位的單精度浮點數(shù)提取出來;第三步是使用并行單精度浮點乘加指令madd. ps實現(xiàn)并行單精度浮點乘加運算,同時將下一組要使用的矩陣A和B的數(shù)據(jù)取到寄存器中,并使用低高位合并指令plu. ps將存于寄存器高32 位的單精度浮點數(shù)提取出來;第四步是使用低高位合并指令Plu. ps將存于寄存器高32位的單精度浮點數(shù),即計算結(jié)果提取出來,使用普通存數(shù)指令寫回結(jié)果。其中第三步是反復(fù)進(jìn)行的,根據(jù)被計算矩陣的大小來確定循環(huán)的次數(shù)。循環(huán)展開中,因浮點寄存器數(shù)量有限,故選擇循環(huán)展開度為4*4,即每次從兩個子塊中各取4個單精度浮點數(shù),兩兩分別相乘后得到16個結(jié)果累加到目標(biāo)矩陣中,這樣的展開粒度不僅滿足了浮點寄存器數(shù)量的限制、減少了訪存次數(shù),還提高了指令調(diào)度的靈活性。指令調(diào)度中,由4條指令組成一個小組,每個小組包含浮點操作指令2條,取數(shù)指令和空操作指令各一條或空操作指令2條;再由每5個小組組成一個大組,為了保證浮點計算單元需要的數(shù)據(jù)能夠及時供應(yīng)上,浮點計算需要用的操作數(shù)要提前通過1 位訪存指令和低高位合并指令放到指定寄存器中,本實施例中采用了提前2個大組進(jìn)行取數(shù)的方式。這里的浮點操作指令即為并行單精度浮點乘加指令madd. ps或低高位合并指令 plu.ps,取數(shù)指令即為1 位訪存指令gslqcl。1 位訪存指令取的數(shù)據(jù)為本大組后第2 個大組需要使用的數(shù)據(jù),并行單精度浮點乘加指令使用的數(shù)據(jù)為本大組之前第2個大組取得的數(shù)據(jù)。當(dāng)每個小組不滿4條指令時就用空操作來補(bǔ)充,其目的是保證每拍發(fā)射的四條指令不會發(fā)生功能部件的競爭。第1、2、4和5小組都是包括1條1 位訪存指令、1條空操作指令和2條并行單精度浮點乘加指令;第3個組包括2條空操作指令和2條低高位合并指令,用于將取到的數(shù)據(jù)組合成計算所需的形式,就是將源寄存器的高32位復(fù)制到目標(biāo)寄存器的高32位和低32位中。各小組代碼具體列舉如下gslqcl X2, X0,4 (a_offset)nopmadd. ρs COO, COO, NXO, NYOmadd. ρs C20, C20, NX2, NYOgslqcl Y2, Y0,4 (b_offset)nopmadd. ps C02,C02,NXO,NY2madd. ps C22, C22, NX2, NY2nopnopplu. ps NB1, NBO, NBOplu. ps NB3, NB2, NB2nopnopmadd. ps COl,COl,NXO,NYlmadd. ps C21,C21,NX2,NY1nop
nopmadd. ps C03, C03, NXO, NY3madd. ps C23, C23, NX2, NY3在核心計算代碼的最開頭,對結(jié)果矩陣和第二個源矩陣子塊進(jìn)行預(yù)取,其中結(jié)果矩陣的預(yù)取地址設(shè)為兩倍的運算數(shù)據(jù)集大小減去運算數(shù)據(jù)單元大小,第二個源矩陣子塊的預(yù)取地址設(shè)為運算數(shù)據(jù)集大小。預(yù)取是一種有效的隱藏訪存延遲的技術(shù),它利用內(nèi)存的空閑帶寬,通過顯式的預(yù)取指令,使數(shù)據(jù)在實際使用之前從內(nèi)存移到高速緩沖存儲器(Cache)中,將訪存的失效開銷與計算時間重疊,以減小高速緩沖存儲器(Cache)失效所帶來的性能損失。數(shù)據(jù)預(yù)取的一個關(guān)鍵問題是預(yù)取地址的計算,錯誤的預(yù)取地址不但不能隱藏訪存開銷,還會因為指令數(shù)量和無效訪存的增加而降低程序性能。矩陣乘法屬于比較規(guī)整的運算,預(yù)取地址很容易計算,常用預(yù)取地址計算方法是用運算數(shù)據(jù)集首地址加上運算數(shù)據(jù)集大小,第二個源矩陣子塊的預(yù)取就可以采用這種方式。這里所說的運算數(shù)據(jù)集指的是一個將被取到寄存器進(jìn)行運算的不超過高速緩沖存儲器(Cache)行大小的連續(xù)數(shù)據(jù)集,但由于這些數(shù)據(jù)并不一定處于同一個高速緩沖存儲器(Cache)行中一旦被預(yù)取的數(shù)據(jù)集不在一個高速緩沖存儲器(Cache)行中,就有可能出現(xiàn)無效預(yù)取。設(shè)運算數(shù)據(jù)集的首地址距離前一個高速緩沖存儲器(Cache)行邊界12字節(jié),預(yù)取數(shù)據(jù)集的首地址距離運算數(shù)據(jù)集的首地址A有16字節(jié),每個數(shù)據(jù)集有4個數(shù)據(jù),每個數(shù)據(jù)單元4個字節(jié)。運算數(shù)據(jù)集在做運算的過程中,會發(fā)送預(yù)取指令來預(yù)取預(yù)取數(shù)據(jù)集首地址所在高速緩沖存儲器(Cache)行的所有數(shù)據(jù)。預(yù)取數(shù)據(jù)集首地址在運算數(shù)據(jù)集所在的高速緩沖存儲器(Cache)行中,也就是說在運算數(shù)據(jù)集取數(shù)的過程將會把預(yù)取數(shù)據(jù)集首地址所在的高速緩沖存儲器(Cache)行取到高速緩沖存儲器(Cache)中,即預(yù)取數(shù)據(jù)集首地址的數(shù)據(jù)預(yù)取將是無效預(yù)取,對程序性能的提升沒有任何幫助。為了避免非高速緩沖存儲器(Cache)行對齊數(shù)據(jù)的無效預(yù)取,本發(fā)明中提出了新的預(yù)取地址計算方法公式PA = CACDS+2*sizeof(CDS)-sizeof(DU) (1)即預(yù)取地址PA等于運算數(shù)據(jù)集的首地址CA⑶S加上兩倍的運算數(shù)據(jù)集⑶S大小, 再減去一個數(shù)據(jù)單元DU大小。一個單精度浮點數(shù)的大小為4字節(jié),單精度矩陣乘法的預(yù)取數(shù)據(jù)集和運算數(shù)據(jù)集的大小都是4個單精度浮點數(shù),因此預(yù)取地址為運算數(shù)據(jù)集的首地址加上28字節(jié)。當(dāng)運算數(shù)據(jù)集小于高速緩沖存儲器(Cache)大小時,即使使用如上的預(yù)取地址計算方式,還是會產(chǎn)生冗余的預(yù)取指令,因此可以調(diào)整預(yù)取指令的頻率,沒有必要每個運算數(shù)據(jù)集都對應(yīng)一個預(yù)取指令。由此,本發(fā)明給出一種預(yù)取指令頻率的計算方法公式PF = sizeof (CL)/sizeof (CDS) (2)即預(yù)取指令的頻率PF等于高速緩沖存儲器(Cache)行CL的大小除以計算數(shù)據(jù)集 CDS的大小。由于在龍芯3A體系結(jié)構(gòu)下一次可以預(yù)取32字節(jié),單精度矩陣乘法的運算數(shù)據(jù)集為16字節(jié),因此預(yù)取頻率為0. 5。性能及效果分析綜合使用本發(fā)明的上述優(yōu)化技術(shù)以后,在龍芯3A體系結(jié)構(gòu)下,中央處理器(CPU)主頻為825M,內(nèi)存主頻為200M,測試規(guī)模為100到2000之間,采用本發(fā)明方法優(yōu)化后的單精度矩陣乘法的運算速度比德克薩斯大學(xué)奧斯汀分校超級計算中心高性能計算組開發(fā)的基礎(chǔ)線性代數(shù)子程序庫(GotoBLAQ版本2-1. 07中的實現(xiàn)平均提高了 90%以上。
權(quán)利要求
1.一種基于龍芯3A的單精度矩陣乘法優(yōu)化方法,先將龍芯3A的兩個單精度源矩陣按分塊大小分別不大于二級緩存的原則劃分成為兩個子矩陣,然后將分塊形成的子矩陣塊拷貝到一個連續(xù)的地址空間中,再通過使用龍芯3A的32位訪存指令、單精度浮點乘加指令和預(yù)取指令的矩陣乘法核心計算代碼來完成子矩陣與子矩陣的乘法;其特征在于所述將龍芯3A的兩個單精度源矩陣按分塊大小分別不大于二級緩存的原則劃分采取分別不大于一級緩存一半和不大于二級緩存一半的原則劃分成為兩個子矩陣;在所述龍芯3A的32位訪存指令、單精度浮點乘加指令和預(yù)取指令的矩陣乘法核心計算代碼中采用龍芯3A的1 位訪存指令和并行單精度浮點指令,并采用兩倍的運算數(shù)據(jù)集大小減去運算數(shù)據(jù)單元大小預(yù)取地址計算方式來對數(shù)據(jù)進(jìn)行預(yù)取;具體操作步驟如下第一步、數(shù)據(jù)分塊并拷貝步驟先將龍芯3A的兩個單精度源矩陣分塊,使第一個源矩陣的子塊大小不大于龍芯3A — 級緩存容量的一半,第二個源矩陣的子塊大小為不大于龍芯3A 二級緩存容量的一半,然后將兩個子塊分別拷貝到連續(xù)的兩個地址空間中;第二步、核心計算代碼編寫步驟通過使用1 位訪存指令,每次將4個單精度浮點數(shù)取到2個64位的浮點寄存器中;使用低高位合并指令將存于寄存器高32位的單精度浮點數(shù)提取出來,使用并行單精度浮點乘加指令實現(xiàn)并行單精度浮點乘加運算;循環(huán)展開度設(shè)為4*4,即每次從兩個子塊中各取4個單精度浮點數(shù),兩兩分別相乘后得到16個結(jié)果累加到目標(biāo)矩陣中;指令調(diào)度中,由4條指令組成一個小組,每個小組包含浮點操作指令2條,取數(shù)指令和空操作指令各一條或空操作指令2條,由5個小組組成一個大組,浮點計算需要用的操作數(shù)全部提前2個大組通過1 位訪存指令和低高位合并指令放到指定寄存器中;在核心計算代碼的最開頭,對結(jié)果矩陣和第二個源矩陣子塊進(jìn)行預(yù)取,其中結(jié)果矩陣的預(yù)取地址設(shè)為兩倍的運算數(shù)據(jù)集大小減去運算數(shù)據(jù)單元大小,第二個源矩陣子塊的預(yù)取地址設(shè)為運算數(shù)據(jù)集大小,預(yù)取指令的頻率等于高速緩沖存儲器行的大小除以計算數(shù)據(jù)集的大小。
2.如權(quán)利要求1所述基于龍芯3A的單精度矩陣乘法優(yōu)化方法,特征在于所述數(shù)據(jù)分塊并拷貝步驟采取將龍芯3A的兩個單精度源矩陣數(shù)據(jù)分別以龍芯3A —級緩存容量的1/4 為間隔拷貝到目標(biāo)地址空間中,使兩個子塊的拷貝目標(biāo)地址所對應(yīng)的一級緩存地址不在同一組。
全文摘要
本發(fā)明公開了一種基于龍芯3A的單精度矩陣乘法優(yōu)化方法,特征是先將龍芯3A的兩個單精度源矩陣按分別不大于一級緩存一半和不大于二級緩存一半的原則劃分為兩個子矩陣;在龍芯3A的32位訪存指令、單精度浮點乘加指令和預(yù)取指令的矩陣乘法核心計算代碼中采用龍芯3A的128位訪存指令和并行單精度浮點指令,并采用兩倍的運算數(shù)據(jù)集大小減去運算數(shù)據(jù)單元大小預(yù)取地址計算方式來對數(shù)據(jù)進(jìn)行預(yù)取,從而使浮點運算部件基本上能夠滿負(fù)荷運轉(zhuǎn);克服了地址非對齊數(shù)據(jù)預(yù)取無效的問題,使地址非對齊的單精度矩陣乘法執(zhí)行效率接近地址對齊的單精度矩陣乘法;運算速度比基礎(chǔ)線性代數(shù)子程序庫(GotoBLAS)版本2-1.07平均提高了90%以上。
文檔編號G06F17/16GK102214160SQ20111019113
公開日2011年10月12日 申請日期2011年7月8日 優(yōu)先權(quán)日2011年7月8日
發(fā)明者何頌頌, 張斌, 許耿純, 顧乃杰 申請人:中國科學(xué)技術(shù)大學(xué)