【发布时间】:2011-07-05 14:12:39
【问题描述】:
我必须使用 sse/sse2 实现矩阵向量乘法。 向量和矩阵很大。 矩阵是双精度,向量是浮点数。
关键是我必须对浮点数进行所有计算 - 当我从矩阵获取数据时,我将其提升为浮点数,进行计算并得到浮点向量(稍后在对浮点数进行一些额外计算后,我必须添加一些浮点数值(浮点矩阵)到双值(双矩阵)。
我的问题是如何使用 SSE/SSE2 来做到这一点 - 问题在于双精度 - 我有指向 double* 的指针,我必须以某种方式将 4 个双精度转换为 4 个浮点数以适应 __mm128... 是否有任何说明这样做?
【问题讨论】:
-
当然你应该反过来做,即将你的浮点向量值加倍并以双精度进行计算,否则为什么首先要在矩阵中使用双精度?
-
好吧,没人理解——我正在研究神经网络,双打矩阵是神经网络权重。当我学习我的神经网络时,我计算的权重变化非常小 - 如果权重是浮动的,那么将非常小的浮点值添加到另一个浮点数会导致精度下降 - 当我将非常小的浮点值添加到双倍时,我不会' t 松散的精度。当然,我可以在双打上做所有事情,但这不是必需的 - 浮点操作更快。
-
好吧,我的错 - 你是对的 - 双打会更快更好:)