Транспонировать умножение матриц в cuBLAS howto

Проблема проста: у меня есть две матрицы, A и B, которые M на N, где M >> N. Я хочу сначала взять транспонирование A, а затем умножить это на B (A ^ T * B), чтобы поместить это в C, то есть N на N. У меня все настроено для A и B, но как Я правильно называю cublasSgemm, не возвращая неправильный ответ?

Я понимаю, что cuBlas имеет перечисление cublasOperation_t для транспонирования вещей заранее, но как-тоЯ не совсем правильно его использую. Мои матрицы A и B расположены в главном порядке строк, т.е. [row1] [row2] [row3] ..... в памяти устройства. Это означает, что для интерпретации A как A-транспонированного, 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?

Спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос