首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于矩阵向量计算的clang优化标志

用于矩阵向量计算的clang优化标志
EN

Stack Overflow用户
提问于 2015-01-20 21:22:56
回答 1查看 191关注 0票数 0

我研究了由clang从glm (一个用于3d计算的矩阵向量库)操作生成的反汇编代码。

我注意到clang正在做一些双精度操作的“向量化”,例如。在一条SIMD指令中强制执行两次乘法。

然而,对于单精度计算,代码对我来说似乎各不相同。所使用的指令来自SSE指令集和寄存器MMX指令集,但每次乘法都是针对单个浮点数完成的,甚至是赋值组(例如,矩阵赋值)是由一大堆movss语句执行的。这些糟糕的赋值甚至适用于双精度代码。

为什么会这样呢?有没有什么命令行参数可以激励clang做得更好?我知道编译器没有什么神奇之处,但我猜16个内存相邻的线性赋值列表应该在很多方面都是优化的?

EN

回答 1

Stack Overflow用户

发布于 2015-01-29 23:42:35

在您的程序集中读取xmm寄存器并不是矢量化的证明,因为现在每个双精度操作都在SIMD寄存器中执行(即使是单精度)。

向量化对于编译器来说并不是微不足道的,clang提供了如下选项

代码语言:javascript
复制
clang -fslp-vectorize-aggressive file.c

它可能会有帮助,否则你可能会寻找替代方案,它有许多用于矩阵乘法,MKL,boost-numeric,等离子等的库。在我的纪念品中,GLM是古老的,有很好的选择。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28046446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档