Transpor a multiplicação de matrizes no howO do cuBLAS

O problema é simples: eu tenho duas matrizes, A e B, que são M por N, onde M >> N. Eu quero primeiro pegar a transposição de A, e depois multiplicar isso por B (A ^ T * B) para coloquei isso em C, que é N por N. Eu tenho tudo configurado para A e B, mas como eu chamo cublasSgemm corretamente sem retornar a resposta errada?

Eu entendo que cuBlas tem um enum de cublasOperation_t para transpor as coisas de antemão, mas de alguma forma eu não estou usando bem corretamente. Minhas matrizes A e B estão em ordem de linha maior, ou seja, [row1] [row2] [row3] ..... na memória do dispositivo. Isso significa que para A ser interpretado como transposto para A, o BLAS precisa saber que meu A está em ordem de coluna maior. Meu código atual se parece com abaixo:

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);

Minhas perguntas:

Estou configurando m, k, n corretamente?

E quanto a lda, ldb, ldc?

Obrigado!

questionAnswers(1)

yourAnswerToTheQuestion