问题很简单:我有两个矩阵A和B,都是M乘N的,其中M远大于N。我想先对A进行转置,然后将其乘以B(A^T * B)得到C,C是N乘N的。我已经为A和B设置好了一切,但如何正确调用cublasSgemm而不返回错误答案呢?
我知道cuBlas有一个cublasOperation_t枚举类型,用于事先转置,但不知怎么使用它。我的矩阵A和B按行主序存储在设备内存中,即[ row1 ][ row2 ][ row3 ]...。这意味着要将A解释为A-transposed,BLAS需要知道我的A是按列主序排列的。我的当前代码如下:
我知道cuBlas有一个cublasOperation_t枚举类型,用于事先转置,但不知怎么使用它。我的矩阵A和B按行主序存储在设备内存中,即[ row1 ][ row2 ][ row3 ]...。这意味着要将A解释为A-transposed,BLAS需要知道我的A是按列主序排列的。我的当前代码如下:
float *A, *B, *C;
// initialize A, B, C as device arrays, fill them with values
// initialize m = num_row_A, n = num_row_B, and k = num_col_A;
// set lda = m, ldb = k, ldc = m;
// alpha = 1, beta = 0;
// set up cuBlas handle ...
cublasSgemm(handle, CUBLAS_OP_T, CUBLAS_OP_N, m, n, k, &alpha, A, lda, B, ldb, &beta, C, ldc);
我的问题:
我是否正确设置了m、k、n?
lda、ldb、ldc怎么样?
谢谢!