首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用gcc的多版本控制功能而不改变代码是否可行?

使用gcc的多版本控制功能而不改变代码是否可行?
EN

Stack Overflow用户
提问于 2018-02-20 10:14:56
回答 1查看 1.5K关注 0票数 25

根据大多数基准的说法,英特尔的透明Linux比其他发行版要快得多,这主要归功于GCC的一个名为功能多版本化的特性。现在,他们使用的方法是编译代码,分析哪个函数包含向量化循环,然后用FMV属性修补代码,然后再编译它。

GCC自动做这件事的可行性有多大?例如,通过传递-mmultiarch=sandybridge,skylake (或类似的-m选项列出CPU扩展,如AVX和AVX2)。

现在,我对两种使用场景感兴趣:

  1. 将此选项用于我们的大型数学题程序,用于向客户提供版本。我不想用非标准属性污染代码,也不想修改我们使用的第三方库。
  2. 其他Linux发行版可以很容易地做到这一点,而无需像Intel那样修补代码。这将给所有Linux用户带来巨大的性能提升。
EN

回答 1

Stack Overflow用户

发布于 2020-11-30 21:36:05

不,但没关系。实际上,非常的小代码实际上将从中受益;在很大程度上,通过在全球范围内这样做,您将只是(无需特别努力将页面中的匹配版本排序在一起)使您的系统由于代码大小的大幅度增加而受到更大的内存限制和速度限制。大多数实际负载甚至都不是CPU绑定的;它们是syscall--开销绑定、GPU绑定、IO绑定,等等。而许多绑定CPU的现代负载并不运行预编译代码,而是JIT的代码(即在浏览器中运行的所有东西,无论是真正的浏览器,还是每个电子应用程序中过时的、未修改的Chrome分叉)。

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

https://stackoverflow.com/questions/48882796

复制
相关文章

相似问题

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