BLAS庫中level3的GEMM簡單計算優化

2021-08-21 11:33:26 字數 1557 閱讀 5600

blas的兩個矩陣相乘的標準介面是

dgemm

( transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)

這個介面的主要功能為計算c:=

αab+

βc, c:=α

ab+β

c,而transa和transb可以分別指定矩陣a a

和矩陣b

' role="presentation" style="position: relative;">b

b是否進行轉置;a a

的計算維度為m×

k' role="presentation" style="position: relative;">m×k

m×k,矩陣b b

的計算維度為k×

n' role="presentation" style="position: relative;">k×n

k×n,矩陣c c

的計算維度為m×

n' role="presentation" style="position: relative;">m×n

m×n;ldx表示矩陣x x

的行數(這個的引數,可能有的同學會說,不是跟

m' role="presentation" style="position: relative;">mm或者

n n或者k

' role="presentation" style="position: relative;">k

k一樣嗎?其實不然,這個引數的功能是讓這個介面能夠使得a a

本身比計算維度大,只使用子矩陣來進行計算,m≤

lda' role="presentation" style="position: relative;">m≤l

dam≤

lda)。接下來開始對這個介面進行優化。

首先,分別記

則根據矩陣相乘的定義,可得c=

ab+c

c =a

b+c的計算公式為ci

,j=∑

p=0k

−1ai

,pbp

,j+c

i,j,

c i,

j=∑p

=0k−

1ai,

pbp,

j+ci

,j,從而可將其實現為

for

i=0:m-1

forj=0:n-1

for p=0:k-1

c(i,j):=a(i,p)*b(p,j)+c(i,j)

endfor

endfor

endfor

可以看出,根據定義實現的演算法計算複雜度為o(

mnk)

o (m

nk)。我們就是在這樣的基礎上,來進行優化。

Level 3在亞太地區提供基於SDN的乙太網服務

level 3 communications上週宣布已經開始向亞太地區提供其metro 2.0全球乙太網平台和軟體定義網路 sdn 解決方案。該服務提供商表示,使用者可以通過亞太地區的六個接入點訪問服務,這六個接入點分別是在香港 東京和新加坡各有兩個接入點。該公司表示,現有使其乙太網服務可以在全球2...

python3中numpy庫中陣列屬性的檢視

import numpy as np a1 np.array 1,2,3,4 dtype np.complex128 print a1 print 資料型別 type a1 列印陣列資料型別 print 陣列元素資料型別 a1.dtype 列印陣列元素資料型別 print 陣列元素總數 a1.siz...

中3d庫後接負載 3D列印中幾種常用的纖維材料

復合纖維增強了傳統3d列印零件的特殊效能 通常具有強度,剛度,耐熱性和耐用性。與3d列印中使用的更傳統的熱塑性塑料 如abs或pla 相比,這給他們帶來了強度優勢,因此3d列印的應用可以通過這些附加的材料及其帶來的效能來擴充套件。熱塑性塑料是可以改變狀態而不會改變化學性質的塑料。這使它們成為流行的3...