Cuda 库布拉斯大学;t>;gbmv理解
我最近想用一个简单的CUDA矩阵向量乘法。我在cublas库中找到了一个合适的函数:cublasgbmv。这是 但是它实际上非常差,所以我没有理解Cuda 库布拉斯大学;t>;gbmv理解,cuda,cublas,Cuda,Cublas,我最近想用一个简单的CUDA矩阵向量乘法。我在cublas库中找到了一个合适的函数:cublasgbmv。这是 但是它实际上非常差,所以我没有理解kl和ku参数的含义。此外,我不知道什么是stride(也必须提供)。 这些参数有一个简短的解释(第37页),但看起来我需要知道一些其他的东西 互联网上的搜索并没有提供关于这个问题的大量有用信息,主要是参考不同版本的文档 因此,我有几个问题要问GPU/CUDA/cublas专家: 我如何找到更容易理解的关于使用cublas的文档或指南 如果你知道如何使
kl
和ku
参数的含义。此外,我不知道什么是stride
(也必须提供)。
这些参数有一个简短的解释(第37页),但看起来我需要知道一些其他的东西
互联网上的搜索并没有提供关于这个问题的大量有用信息,主要是参考不同版本的文档
因此,我有几个问题要问GPU/CUDA/cublas专家:
TMMOO..
,其中T
是矩阵/向量的数值类型(S
/D
表示单/双精度实数,C
/Z
表示单/双精度复数),MM
表示矩阵类型(GE
表示一般-例如,仅是一个密集矩阵,您不能对其说任何其他内容;GB
表示一般带状矩阵,SY
表示对称矩阵,等等),并且OO
是操作
这一切现在看起来有点可笑,但它工作得相当好——你很快就会学会扫描这些熟悉的操作,这样SGEMV就是一个单精度的通用矩阵乘以向量乘法(这可能是你想要的,而不是SGBMV),DGEMM是双精度矩阵乘法等,但它确实需要一些实践
因此,如果您查看cublas sgemv指令,或者在中,您可以逐步浏览参数列表
此函数执行矩阵向量乘法
y=a op(a)x+b y
其中A是以列主格式x和y存储的m x n矩阵
是向量,和是标量
式中,op(A)可以是A、AT或AH。因此,如果您只是想要y=Ax
,通常情况下,那么A=1
,b=0
。和transa==CUBLAS\u op\N
incx
是x
中不同元素之间的跨距;在很多情况下,这很方便,但是如果x
只是一个包含向量的简单1d数组,那么跨距将为1
这就是SGEMV所需的全部功能。CUBLAS函数只是以标准Fortran BLAS为模型,其中有大量的文档。因此,尝试搜索SBGMV,您可能会找到所需的功能(您的矩阵真的是带状的吗?)