我正在考虑用Intel-MKL执行一些计算,特别是Fortran程序的矩阵向量稀疏BLAS函数。
我可以用矩阵来表达我的计算恰好是稀疏的偏对称的
从我所看到的,稀疏BLAS具有一般和对称矩阵的稀疏函数,所以我想知道是否有一种方法可以使用稀疏偏对称矩阵,因为我认为它会减少内存占用。
;MKL稀疏布拉斯特区可以用稀疏矩阵表示为矩阵向量乘法的上/下三角形mkl_scsrmv
子程序子例程和供应'A'
矩阵描述符数组中的第一个元素。
Ok,当我开始测试CSR格式(mkl_?csrmv
)的一般MKL稀疏BLAS矩阵向量乘法时,我设法找到了我问题的答案
我了解到有一个字符数组用于描述输入矩阵(matdescra
)。该数组中的第一个字符可以设置为'A'
,这将导致子例程将输入矩阵解释为偏对称。例如(不一定是好的)
给定一个矩阵a和向量x:
A = [ 0 1 2 x = [ 1
-1 0 3 2
-2 -3 0 ] 3 ]
A
的上三角可以表示为
val = [1, 2, 3]
col = [2, 3, 3]
rowstart = [1, 3, 3]
rowend = [3 3 4]
和字符数组matdescra = ['A', 'U', 'N', 'F']
,矩阵-向量积由
call mkl_scsrmv('n', 3, 3, 1., matdescra, val, rowstart, rowend, x, 1., y
将输出(一个矢量)添加到矢量数组y
中。