HLS 開發學習(五) 稀疏矩陣向量乘法

2021-10-08 06:12:02 字數 2336 閱讀 9640

優化

b即為a的crs表示,值(values)陣列儲存矩陣中非零元素的值。列索引(columnindex)陣列和行指標(rowptr)陣列對非零元素的位置資訊進行編碼。(我看了一下rowptr意思是在第幾個元素處換行是吧)

對稀疏性沒有要求。

#include

"spmv.h"

void

spmv

(int rowptr[num_rows+1]

,int columnindex[nnz]

, dtype values[nnz]

, dtype y[size]

, dtype x[size]

) y[i]

= y0;

}}

其標頭檔案為

#ifndef __spmv_h__

#define __spmv_h__

const

static

int size =4;

// size of square matrix

const

static

int nnz =9;

//number of non-zero elements

const

static

int num_rows =4;

// size;

typedef

float dtype;

void

spmv

(int rowptr[num_rows+1]

,int columnindex[nnz]

, dtype values[nnz]

, dtype y[size]

, dtype x[size]);

#endif

// __matrixmul_h__ not defined

函式spmv函式有5個引數,分別是rowptr、columnindex ,以及 values 對應矩陣 m 的 crs 格式中包含的3個引數。引數 y 用於儲存輸出的結果,引數x表示輸入的被乘向量x。變數num_rows表示矩陣m中行號。變數nnz表示矩陣中非0元素的個數。最後,變數size表示陣列x和陣列y中元素的個數。

外層for迴圈標籤為l1,對矩陣的行進行遍歷。將矩陣當前的行與向量x相乘,得到輸出的結果y。內層迴圈標籤為l2,實現對矩陣m中每列元素的遍歷。l2迴圈迭代計算rowptr[i + 1] − rowptr[i]計算每一行非0元素的個數。每次迴圈計算,能從value陣列中讀取矩陣m的非0元素然後對應的從x陣列中取得被乘向量x的值,對應相乘。cloumnindex[k] 中的值儲存了對應的列號k。

#include

"spmv.h"

#include

void

matrixvector

(dtype a[size]

[size]

, dtype *y, dtype *x)

}int

main()

,,,}

; dtype x[size]=;

dtype y_sw[size]

; dtype values=

;int columnindex=

;int rowptr=

; dtype y[size]

;spmv

(rowptr, columnindex, values, y, x)

;matrixvector

(m, y_sw, x)

;for

(int i =

0; i < size; i++)if

(y_sw[i]

!= y[i]

) fail =1;

if(fail ==1)

printf

("failed\n");

else

printf

("pass\n");

return fail;

}

連同之前的原始檔標頭檔案一同建立工程

稀疏矩陣向量乘法可優化的方式

廣告時間

fpga入門

fpga實戰訓練精粹

xilinx fpga權威設計指南:基於vivado 2018整合開發環境

xilinx zynq7020

fpga設計技巧與案例開發詳解(第2版)

稀疏矩陣 稠密矩陣 稀疏表示 字典學習概念

稀疏矩陣 矩陣中0元素的個數遠大於非零,且0元素分布無規律。稠密矩陣 稀疏矩陣反之。稀疏表示 尋找乙個係數矩陣a k n 以及乙個字典矩陣b m k 使得b a盡可能的還原x,且a盡可能的稀疏。a便是x的稀疏表示。書上原文為 將乙個大矩陣變成兩個小矩陣,而達到壓縮 字典學習 為普通稠密表達的樣本找到...

機器學習 稀疏矩陣的處理

一 稀疏矩陣的定義 對於那些零元素數目遠遠多於非零元素數目,並且非零元素的分布沒有規律的矩陣稱為稀疏矩陣 sparse 人們無法給出稀疏矩陣的確切定義,一般都只是憑個人的直覺來理解這個概念,即矩陣中非零元素的個數遠遠小於矩陣元素的總數,並且非零元素沒有分布規律。二 稀疏矩陣的壓縮儲存 由於稀疏矩陣中...

五 1 1 稀疏矩陣乘法的快速運算

有矩陣m和n,都是用三元組壓縮儲存,設計高效率演算法求矩陣m n得到的矩陣q 也用三元組壓縮儲存 假設矩陣m n q 如下 那麼得到的矩陣q有三行三列,第一行中的元素有這樣的關係 所以我們可以這樣,在遍歷到m11時,由於n11,n12,n13是在順序表中連續排列的,所以我們可以建立乙個3個累加器 i...