Sparse BLAS Level 1函數庫
本章描述 Sparse BLAS Level 1, 從Intel®MKL版本2.1開始,包含在Intel®Math內核庫中的BLAS Level 1擴展。Sparse BLAS Level 1是一組例程和函數,它們對以壓縮形式存儲的稀疏向量執行許多常見的向量操作.
稀疏向量是指那些大部分元素爲零的向量。爲了充分利用矢量的稀疏性,專門實現了Sparse BLAS例程和函數。這使您可以在計算機時間和內存上獲得巨大的節省。若nz爲非零向量元個數,則稀疏BLAS操作所花費的計算機時間爲O(nz).
向量參數
壓縮稀疏向量. 設a爲存儲在數組中的向量,假設a的非零元素僅爲:
a[k1], a[k2], a[k3] . . . a[knz],
其中nz是a中非零元素的總數.
在Sparse BLAS, 這個向量可以用兩個數組(x(值)和indx)以壓縮形式表示
(指數)。每個數組都有nz元素:
x[0]=a[k1], x[1]=a[k2], . . . x[nz-1]= a[knz],
indx[0]=k1, indx[1]=k2, . . . indx[nz-1]= knz.
因此,稀疏向量完全由三元組(nz, x, indx)確定。如果向Sparse BLAS傳遞一個負的或零的nz值,子例程不會修改任何數組或變量.
全儲存向量. Sparse BLAS 例程還可以使用完全存儲在單個數組(全存儲向量)中的向量參數。如果y是一個全存儲向量,那麼它的元素必須連續存儲:y[0]中的第一個元素,y[1]中的第二個元素,以此類推。這對應於BLAS級別1中的incy = 1增量。沒有增加價值爲全儲存向量作爲參數傳遞給稀疏巴拉斯的例程或功能.
Sparse BLAS Routines命名約定
BLAS類似,Sparse BLAS子程序的名稱有前綴,確定涉及的數據類型:s和d爲單精度和雙精度實數;c、z分別爲單、雙精度複數.
如果一個Sparse BLAS例程是一個“密集”例程的擴展,子程序名是通過附加後綴i(表示索引)到相應的“密集”子程序的名字形成的。例如Sparse BLAS常規saxpyi對應BLAS常規saxpy,和Sparse BLAS功能cdotci對應BLAS cdotc函數.
例程及數據類型
Routine/ Function |
數據類型 |
描述 |
s, d, c, z |
標量向量積加向量 |
|
s, d |
點積 |
|
c, z |
共軛的復點積 |
|
c, z |
復點積無共軛 |
|
s, d, c, z |
收集全存儲稀疏向量到壓縮形式nz, x, indx |
|
s, d, c, z |
將全存儲稀疏向量收集成壓縮形式,並將零分配給在全存儲向量中收集到的元素 |
|
s, d |
Givens 旋轉 |
|
s, d, c, z |
將矢量從壓縮形式分散到全存儲形式 |