Умножая три матрица в BLAS со средним, чем диагональ
-
30-09-2019 - |
Вопрос
A
является MxK
матрица, B
это вектор размера K
, а также C
это KxN
матрица Какой набор операторов BLAS должен использовать для вычисления матрицы ниже?
M = A*diag(B)*C
Один из способов реализации этого будет использовать три для петель, как ниже
for (int i=0; i<M; ++i)
for (int j=0; j<N; ++j)
for (int k=0; k<K; ++k)
M(i,j) = A(i,k)*B(k)*C(k,j);
Это на самом деле стоит реализовать это в BLAS, чтобы получить лучшую эффективность скорости?
Решение
Первый вычислитель D = diag(B)*C
, Затем используйте соответствующие матрицы BLAS-MATRIX, чтобы вычислить A*D
.
Вы можете реализовать diag(B)*C
используя петлю над элементами B
и призывая к соответствующему скалярно-умножению BLAS.
Не связан с StackOverflow