【发布时间】:2020-11-21 10:52:55
【问题描述】:
我有一个大的float 矩阵,A,列长约 100000,行长约 15。
然后我们有一个uint8_t 向量X,其行大小为100000。A 和X 具有静态大小,并且永远不会改变大小。
X 可以更改其值,但A 保持不变。
那么,在 C 中计算A*X 并生成一个 15 元素乘积向量的最绝对最快的方法是什么?
写这样的东西而不是使用for循环是一种好方法吗?
A(0,0)*X(0) + A(0,1)*X(1) + A(0,2)*X(2) + ... + A(0,n)*X(n)
A(1,0)*X(0) + A(1,1)*X(1) + A(1,2)*X(2) + ... + A(1,n)*X(n)
......
A(m,0)*X(0) + A(m,1)*X(1) + A(m,2)*X(2) + ... + A(m,n)*X(n)
【问题讨论】:
-
什么时候设置A值?
-
@Ôrel 是的。它们都是价值观。
-
我认为@Ôrel 的意思是询问是否有许多 A 值是
0.0,使其变得稀疏。 (或者如果有任何其他限制,例如 A 值为 0 或 1,因此行 x 列点积减少为掩码总和。) -
@PeterCordes No.
0,0是矩阵的索引。 -
@PeterCordes 我在问题中添加了
float
标签: c performance matrix optimization matrix-multiplication