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 */
};
此外,虽然我很确定如果我使用别名 Aarray
或 Barray
会是正确的,但对性能有任何影响吗?
谢谢!
一般来说,在CUBLAS中这种别名是没有问题的。事实上,这是处理子矩阵的正常方式,大多数 LAPACK 风格求解器广泛使用指针索引或别名来对矩阵执行子块操作。
我不认为以这种方式工作会导致性能下降,至少对于批处理求解器而言是这样,尽管唯一可以确定的方法是通过基准测试,这对您自己进行测试可能微不足道。
我正在尝试使用 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 */
};
此外,虽然我很确定如果我使用别名 Aarray
或 Barray
会是正确的,但对性能有任何影响吗?
谢谢!
一般来说,在CUBLAS中这种别名是没有问题的。事实上,这是处理子矩阵的正常方式,大多数 LAPACK 风格求解器广泛使用指针索引或别名来对矩阵执行子块操作。
我不认为以这种方式工作会导致性能下降,至少对于批处理求解器而言是这样,尽管唯一可以确定的方法是通过基准测试,这对您自己进行测试可能微不足道。