我正在尝试使用 cublasSgemm 来乘以两个以行主序存储的非方阵。我知道这个函数有一个参数,您可以在其中指定是否要转置矩阵(CUBLAS_OP_T),但结果以列优先顺序存储,我也需要以行优先顺序存储。
另外,我的代码无法将非方阵与参数 CUBLAS_OP_T 相乘。仅具有 CUBLAS_OP_N 的方形或非方形。
此外,我知道可以选择按列顺序声明矩阵
define IDX2C(i,j,ld) (((j)*(ld))+(i))
Run Code Online (Sandbox Code Playgroud)
但这不是一个选项,因为我必须使用的矩阵将在其他程序中设置。
我想互联网上有很多信息,但我无法找到我的问题的任何答案。
我的代码如下:
int m = 2;
int k = 3;
int n = 4;
int print = 1;
cudaError_t cudaStat; // cudaMalloc status
cublasStatus_t stat; // CUBLAS functions status
cublasHandle_t handle; // CUBLAS context
int i,j;
float *a, *b,*c;
//malloc for a,b,c...
// define a mxk matrix a row by row
int ind =11;
for(j=0;j<m*k;j++){
a[j]=(float)ind++;
}
// define a kxn matrix b column by column
ind …Run Code Online (Sandbox Code Playgroud)