学习SSE/SSE2和汇编优化

7

我熟悉C/C ++和汇编x86 / x64语言,但现在我需要学习图形优化(SSE / SSE2以及一般的汇编优化),有哪些资源/书籍/链接可以用来学习这些主题? 我已经在网上搜索了很久,但没有太多运气。


11
更一般地说:http://www.agner.org/optimize/ 上有许多关于如何优化的详细信息。如需稍微更完整的指令延迟表,请参见 http://instlatx64.atw.hu/。 - harold
5
上学期我讲授了一些有关CPU优化的课程,包括SIMD,也许您会发现这些讲义非常有用。http://www.cc.gatech.edu/grads/m/mdukhan3/ - Marat Dukhan
2
只是顺便提一下,玩弄汇编通常是一个坏主意(至少如果原因仅仅是优化),特别是对于SSE。使用内部函数,它们更容易使用,与平台无关(尽可能与SSE无关),而且更重要的是更有效率,因为编译器很可能比你更擅长优化。不要试图超越你的编译器(或者,如果你想的话,那就真的很努力)。 - Christian Rau
2
@ChristianRau,我认为SSE是最好的理由之一 - 编译器几乎不会优化内嵌代码(显而易见的事情除外),所以你必须写得恰到好处,然后希望和祈祷编译器不会在寄存器分配方面犯一些愚蠢的错误(虽然这方面近来有所改善)。你最终得到的代码仍然针对特定平台进行了优化,作为额外的奖励,它比汇编更难读,因为有那么多垃圾前缀。我唯一能看到的好处就是可以内联它。 - harold
1个回答

2

Marco,

以下是三点回答:

  1. 如果你想学习一组快速技巧,有一些书籍可以选择,这些书籍通常称为算法谜题。我使用过以下两本书,它们提供了极好的挑战,以磨练你的技能。Book1 是一些非常有趣的技巧的集合。我也喜欢这本Book2

Agner教授的帖子我认为是该主题的权威,必须阅读。

  1. 如果您正在寻找如何优化或使用64位指令集的具体信息-我的经验是要随时准备好英特尔手册第2卷。您可以在此论坛上提出具体问题并获得一些很好的解决方案。如果您希望从更基础的水平开始,有一个由WhatsACreel制作的优秀的YouTube教程系列-涵盖和解释都非常好。他会带您了解AVX / AVX2设置,共60多个基础课程。

  2. 我不是专业程序员-我是一名企业管理专业人士,但在业余时间为学术机构/博士生编写64位汇编语言代码,这些博士生可能被卡住或遭受困难/这样的人。我认为x64非常强大,结构紧凑,可以做到任何语言都无法尝试的事情。因此,如果有人试图阻止您使用x64,引用复杂性或其他任何理由,请向他们展示他们自己选择的任何编译器生成的代码的反汇编(应该足以吓唬他们),或者只是轻轻忽略他们。

祝一切顺利,


1
仅凭名字称呼大学教授是不寻常的。唐纳德教授会对此有何看法? - Pascal Cuoq
此外,除了对待德国人需要使用“Herr Professor Doktor”全名之外,没有必要过于正式。 - Z boson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接