我正在使用CUDA cuBLAS来执行矩阵运算.
我需要对矩阵的行(或列)求和.目前我是通过将矩阵与一个向量相乘来实现的,但这似乎并不那么有效.
有没有更好的方法?找不到任何东西cuBLAS.
谢谢.
实际上,使用矩阵与一个向量相乘cublas_gemv()是非常有效的方法,除非您考虑手动编写自己的内核.
您可以轻松地分析mem的带宽cublas_gemv().它非常接近于简单地读取整个矩阵数据一次,这可以看作矩阵行/列求和的理论峰值性能.
额外的操作"x1.0"不会导致性能下降,因为:
cublas_gemv() 基本上是一个mem带宽绑定操作,额外的算术指令不会成为瓶颈;cublas_gemv()还可以帮助您处理矩阵布局问题.它适用于row/col-major和任意填充.
我也问了一个类似的问题.我的实验表明,cublas_gemv()比分段减少使用更好Thrust::reduce_by_key,这是矩阵行求和的另一种方法.
| 归档时间: |
|
| 查看次数: |
4191 次 |
| 最近记录: |