再再接上文,看到作者有一个关于向量乘矩阵的描述。
经过搜索发现,现在的pytorch已经修复了这一问题,提供了mv()和matmul()两种方式实现矩阵和一维向量的乘积,可以参看这篇文章。
经过查阅pytorch的文件,找到了cuda侧的实现,调用的是cuda的gemv操作。
at::cuda::blas::gemv<scalar_t>('n',mat.size(0), mat.size(1), alpha, mat.data_ptr<scalar_t>(), mat.stride(1), vec.data_ptr<scalar_t>(),vec_stride, beta, result.data_ptr<scalar_t>(), r_stride);