【发布时间】:2018-01-04 12:49:31
【问题描述】:
有两个 int 矩阵 A 和 B,有超过 1000 行和 10K 列,我经常需要将它们转换为浮点矩阵以获得加速(4 倍或更多)。
我想知道为什么会这样?我意识到浮点矩阵乘法有很多优化和矢量化,例如 AVX 等。但是,对于整数(如果我没记错的话)有诸如 AVX2 之类的指令。而且,不能将 SSE 和 AVX 用于整数吗?
为什么在矩阵代数库(例如 Numpy 或 Eigen)下没有启发式算法来捕获这一点并像浮点数一样更快地执行整数矩阵乘法?
关于接受的答案:虽然@sascha 的答案非常翔实和相关,但@chatz 的答案是无论是否存在 BLAS 整数矩阵运算,int 乘法都很慢的实际原因。 p>
【问题讨论】:
-
这将有助于使问题更具体,但由于更多人需要它来实现浮动,因此需要付出更多努力来优化浮动(在软件和硬件方面)。
-
本题需要具体的示例代码来演示性能差异(见minimal reproducible example)。特别是考虑到代码被标记为 [c++] 和 [numpy] 完全不清楚你指的是什么。
标签: c++ numpy matrix eigen avx