介紹
The compressed row and column storage formats are the most general: they make absolutely no assumptions about the sparsity structure of the matrix, and they don't store any unnecessary elements. On the other hand, they are not very efficient, needing an indirect addressing step for every single scalar operation in a matrix-vector product or preconditioner solve.
文字描述
假設(shè)有一非對(duì)稱(chēng)矩陣A,用CSR表示需要三個(gè)向量:
val
, col_ind
, row_ptr
坪它。表示的意義為:
-
val
向量存儲(chǔ)矩陣A中的非零值咆疗; -
col_ind
存儲(chǔ)val
中的非零值在A中的列標(biāo)萎攒; -
row_ptr
指示A中每行的非零值個(gè)數(shù)。
數(shù)學(xué)表示
, then
, then
并約定:柱嫌,其中,
為A中非零值的個(gè)數(shù)
舉例
它的CSR表示為:
特別說(shuō)明一下row_ptr
的表示含義:
如row_ptr[2]=3
,表明矩陣A中第二行(從左至右)的第一個(gè)非零值是A中所有非零值的第3個(gè)沥潭;row_ptr[5]=13
,表明矩陣A中第五行(從左至右)的第一個(gè)非零值是A中所有非零值的第13個(gè)嬉挡;row_ptr[7]=20
指示A中非零值nnz的個(gè)數(shù):nnz=20-1=19钝鸽。
CSC舉例介紹
更新CSC的介紹:它的基本思想和CSR完全相同,可以看作CSR的轉(zhuǎn)置庞钢,因此這里僅對(duì)CSC進(jìn)行簡(jiǎn)單的舉例介紹拔恰。以Song Han的EIE論文為例,PE應(yīng)存儲(chǔ)的weight矩陣為(相同顏色的對(duì)應(yīng)一個(gè)PE):
單獨(dú)分析一個(gè)PE基括,以
PE0
為例颜懊,它所存儲(chǔ)的weight矩陣如下所示:
這一矩陣的采用CSC表示為:
解釋”:和上面的CSR表示不同,這里的索引從0開(kāi)始(上面的CSR舉例從1開(kāi)始阱穗,當(dāng)然也可以從0開(kāi)始)饭冬。index對(duì)應(yīng)的是非零值所在行的index,而pointer指示原始矩陣中每列非零值的數(shù)量揪阶,pointer的最后一位指示矩陣中非零值的個(gè)數(shù)昌抠。
如pointer[1]=3
,表明第二列之前(第一列)含三個(gè)非零值鲁僚,第二列(由上至下)第一個(gè)非零值應(yīng)是所有非零值中的第四個(gè)炊苫;pointer[2]=4
,表明第三列之前有四個(gè)非零值冰沙,第三列(由上至下)第一個(gè)非零值應(yīng)是所有非零值中的第五個(gè)侨艾;pointer[3]
和pointer[4]
相等,表明第四列沒(méi)有非零值拓挥;最后唠梨,pointer[8]=13
,表示weight矩陣中共有13個(gè)非零值侥啤。
需要注意的是当叭,這里的Row index是相對(duì)的茬故,即相對(duì)前一個(gè)非零值或第一行的index,上面的CSR中的Column index是絕對(duì)的蚁鳖。可根據(jù)實(shí)際要求選擇絕對(duì)或相對(duì)表示磺芭。