cublas<>gemmBatched 带有别名 Carray 参数

cublas<>gemmBatched with aliased Carray parameter

我正在尝试使用 cublas<>gemmBatched 实现类似 scipy.sparse.bsr_matrix 的操作。不幸的是我不能用 cusparse 做到这一点,因为我的 BSR 矩阵不是正方形的。

我是 cublas 的新手,我想知道为 float * Carray[][=16= 使用别名指针(如 pointer aliasing)数组是否可以(正确性和性能方面) ]

例如

/* given float * out as the real output array */
float * Carray[] = {
  out + 1*stride, out + 2*stride, out + 3*stride,
  out + 1*stride, out + 2*stride, out + 3*stride,
  /* and repeat */
};

此外,虽然我很确定如果我使用别名 AarrayBarray 会是正确的,但对性能有任何影响吗?

谢谢!

一般来说,在CUBLAS中这种别名是没有问题的。事实上,这是处理子矩阵的正常方式,大多数 LAPACK 风格求解器广泛使用指针索引或别名来对矩阵执行子块操作。

我不认为以这种方式工作会导致性能下降,至少对于批处理求解器而言是这样,尽管唯一可以确定的方法是通过基准测试,这对您自己进行测试可能微不足道。