BLAS中是否有可以执行偏对称矩阵向量积的函数?



我正在考虑用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中。

最新更新