BLAS 函数 Dgemm 但所有矩阵都乘以标量
BLAS Functions Dgemm but all matrices are multiplied by a Scalar
是否有类似矩阵调用的 Dgemm 缩放 a 和 b 矩阵?
(A、B、C 是标量)。
浏览器
c = C * c + (A*op(a)) * (B*op(b));
奖励积分是否有任何不支持的原因,或者它在线性代数中并不常见,因此通常没有根据?
是的,dgemm 通过使用简单的乘法 属性 来做到这一点。仅参考 here.
c = C*c + (A*op(a))*(B*op(b))
c = C*c + A*(op(a))*B)*op(b)
c = C*c + A*(B*op(a))*op(b)
c = C*c + (A*B)*op(a)*op(b)
标准的 BLAS 接口不提供独立缩放 A
和 B
矩阵的直接方法(在这个行话中,他们通常将大写字母用于 matrices/vectors,将小写字母用于标量)。请参阅 MKL cblas documentation for cblas_?gemm(它在 BLAS 实现中是相同的)。
你可以做的是通过中间调用生成 B
的缩放版本,将 a
和 b
设置为零:
C = c.*C + (0.*A) * (0.*B)
但是,如果将矩阵乘法分解为单个运算(例如按行优先顺序):
for( i = 0; i < N; i++ ) {
for( j = 0; j < M; j++ ) {
for( ii = 0; ii < K; ii++ ) {
C[i][j] = C[i][j] + a*A[i][ii]*B[ii][j];
}
}
}
您会看到缩放会影响两个矩阵的元素。由于标量积具有交换性和结合性,因此使用等于两个标量积的 a
参数具有相同的效果。
是否有类似矩阵调用的 Dgemm 缩放 a 和 b 矩阵? (A、B、C 是标量)。
浏览器 c = C * c + (A*op(a)) * (B*op(b));
奖励积分是否有任何不支持的原因,或者它在线性代数中并不常见,因此通常没有根据?
是的,dgemm 通过使用简单的乘法 属性 来做到这一点。仅参考 here.
c = C*c + (A*op(a))*(B*op(b))
c = C*c + A*(op(a))*B)*op(b)
c = C*c + A*(B*op(a))*op(b)
c = C*c + (A*B)*op(a)*op(b)
标准的 BLAS 接口不提供独立缩放 A
和 B
矩阵的直接方法(在这个行话中,他们通常将大写字母用于 matrices/vectors,将小写字母用于标量)。请参阅 MKL cblas documentation for cblas_?gemm(它在 BLAS 实现中是相同的)。
你可以做的是通过中间调用生成 B
的缩放版本,将 a
和 b
设置为零:
C = c.*C + (0.*A) * (0.*B)
但是,如果将矩阵乘法分解为单个运算(例如按行优先顺序):
for( i = 0; i < N; i++ ) {
for( j = 0; j < M; j++ ) {
for( ii = 0; ii < K; ii++ ) {
C[i][j] = C[i][j] + a*A[i][ii]*B[ii][j];
}
}
}
您会看到缩放会影响两个矩阵的元素。由于标量积具有交换性和结合性,因此使用等于两个标量积的 a
参数具有相同的效果。