1

嘿!

我需要在 c 中优化一些矩阵乘法代码,并且我正在使用 SSE 向量指令进行操作。我还发现存在 SSE4.1 已经有针对点积 dpps 的指令。

问题是在这个软件应该工作的机器上安装了一个旧版本的 gcc (4.1.2),它不支持 SSE4.1,但它有一个支持它的处理器(不要问我为什么gcc 版本比处理器旧...)。所以我不能使用 _mm_dp_ps 函数。

我正在尝试向 c 添加一些汇编代码。问题是我以前从未使用过汇编代码,所以真的很混乱。在汇编程序中编写所有处理向量指令的代码是否更有效?

所以我在这里问是否还有其他方法可以使用 dpps 指令,是否值得使用?

4

1 回答 1

2

坦率地说,我没有看到问题所在。根据您的描述,最终代码需要执行的机器似乎支持 SSE4.1 和DPPS. 因此,一旦你的源代码——包括内在(或程序集)——被编译,它就可以在这台机器上执行。您只需使用较新版本的编译器编译您的代码,方法是在您正在谈论的机器上安装较新版本,或者在另一台机器上编译,然后将可执行文件复制到它必须的机器上运行。

至于优化DPPS是否值得努力,这将取决于您的代码(即,有多少优化潜力 - 您应该彻底分析以找出瓶颈所在)以及在这种特定情况下性能实际上有多重要(即值得花时间吗?;时间就是金钱)

显然,如果您几乎没有组装经验,那么在 asm 中实现您的例程,或者甚至只是围绕 编写您自己的 asm 包装函数DPPS,就会变得不那么有吸引力。(但肯定可以做到。)

于 2010-10-16T07:50:48.960 回答