首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >适用于GNU C++的SSE SSE2和SSE3

适用于GNU C++的SSE SSE2和SSE3
EN

Stack Overflow用户
提问于 2009-03-19 15:32:23
回答 5查看 74.2K关注 0票数 56

有没有简单的教程可以让我在GNU C++中掌握SSE、SSE2和SSE3的速度?如何在SSE中进行代码优化?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-03-19 21:43:18

对不起,我不知道有什么教程。

您最好的选择(IMHO)是通过Intel提供的包装(通常)单个SSE指令的“内部”函数来使用SSE。这些是通过一组名为*mmintrin.h的包含文件提供的,例如xmmintrin.h是原始的SSE指令集。

开始熟悉英特尔优化Reference Manual的内容是一个好主意(请参阅第4.3.1.2节中的内部函数示例),并且SIMD节是基本的读物。指令集参考手册也非常有用,因为每个指令的文档都包含了它所对应的“内部”函数。

一定要花点时间检查编译器从内部生成的汇编器(您将学到很多东西),以及分析/性能度量(您将避免浪费时间对代码进行SSE,以获得很少的工作回报)。

更新2011-05-31:在Agner Fog的optimization PDFs (thanks)中有一些非常好的关于内部函数和矢量化的报道,尽管它有点散布(例如,first one的第12节和second one的第5节)。这些并不完全是教程材料(实际上有“这些手册不适合初学者”的警告),但它们确实正确地将SIMD (无论是通过asm、内部函数还是编译器向量化使用)视为更大的优化工具箱的一部分。

更新2012-10-04: A nice little Linux Journal article on vector在这里值得一提。比SSE更通用(还包括PPC和ARM扩展)。有很多关于last page的参考资料,这引起了我对英特尔的"intrinsics manual"的注意。

票数 60
EN

Stack Overflow用户

发布于 2009-03-24 23:00:54

使用的最简单的优化是允许gcc发出SSE代码。

标志:-msse、-msse2、-msse3、-march=、-mfpmath=sse

有关386选项的更简明的列表,请参阅http://gcc.gnu.org/onlinedocs/gcc-4.3.3/gcc/i386-and-x86_002d64-Options.html#i386-and-x86_002d64-Options,您的特定编译器版本的更准确的文档在那里:http://gcc.gnu.org/onlinedocs/

要进行优化,请始终查看Agner Fog的:http://agner.org/optimize/。我认为他没有关于内部函数的SSE教程,但他有一些非常巧妙的std-c++技巧,并且还提供了大量关于编写SSE程序集的信息(通常可以转录为内部函数)。

票数 23
EN

Stack Overflow用户

发布于 2009-03-19 15:37:08

查看-mtune和-march选项,当然还有-msse*和-mfpmath。所有这些都使GCC能够进行特定于SSE的优化。

除此之外,我恐怕都是汇编器的领域。

GCC Online Manual - i386 and x86_64 Options

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

https://stackoverflow.com/questions/661338

复制
相关文章

相似问题

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