简介:
本文介绍cublasSgemm()函数的使用。在c/c++中,通常我们将2维矩阵按行存储为一维数组。但是在显存中,矩阵是按列存储的。因此,我们在实际使用时,对cublasSgemm()中的各个参数的赋值可能会搞不清楚。
本文,以一个具体的矩阵乘法案例为例子,介绍cublasSgemm()函数的使用。
正文:
我们以下图所示的矩阵运算为例进行讲解。
因为gpu显存中,矩阵是按列进行存储的。如果我们在gpu中直接计算F=D×E的话,那么将结果矩阵从显存中取出
放回内存中时,内存中实际存储的则是FT。
因此,如果我们能够计算FT=ET× DT,那么我们将结果取回内存时,内存中保存的刚好就是矩阵F。
基于上述的解释,我们在gpu中实际计算的是FT=ET× DT,取回内存后,刚好是我们需要的结果F。
好的,下面我们说一下,怎么使用cublasSgemm()函数计算FT=ET× DT 。
cublasSgemm()函数的输入参数如下所示
cublasStatus_t cublasSgemm (
cublasHandle_t handle,
cublasOperation_t transa,
cublas