水木社区手机版
首页
|版面-Linux开发与高级讨论(LinuxDev)|
新版wap站已上线
返回
1/1
|
转到
主题:GCC的-mcpu/-mtune/-march, 永远都没人能搞明白
楼主
|
snnn
|
2021-11-03 13:58:26
|
只看此ID
推荐阅读:
https://community.arm.com/arm-community-blogs/b/tools-software-ides-blog/posts/compiler-flags-across-architectures-march-mtune-and-mcpu
结论:
1. ARM上应该用-mcpu,不要用另外两个。GCC一定要比CPU新。比如你的CPU是2019年发布的,那么你的GCC就应该用GCC-9及以后版本,它才有可能能识别你的CPU。
2. x86上应该用-mtune/-march。(是这样吗?)
--
FROM 107.139.34.*
1楼
|
ArchLinux
|
2021-11-03 19:56:15
|
只看此ID
我觉得用哪个应该先看一下GCC的man page里Machine-Dependent Options一节或者看manual.
之前GCC的IRC里面有人提到过这个,我才发现PowerPC的GCC没有-march.
【 在 snnn (cm) 的大作中提到: 】
: 推荐阅读:
https://community.arm.com/arm-community-blogs/b/tools-software-ides-blog/posts/compiler-flags-across-architectures-march-mtune-and-mcpu
: 结论:
: 1. ARM上应该用-mcpu,不要用另外两个。GCC一定要比CPU新。比如你的CPU是2019年发布的,那么你的GCC就应该用GCC-9及以后版本,它才有可能能识别你的CPU。
: ...................
--
FROM 59.109.217.*
2楼
|
BigCarrot
|
2021-11-08 14:42:22
|
只看此ID
你的结论不对阿,根据这篇文章
在arm上
-mcpu=xxx 就等于 -march=xxx_isa -mtune=xxx
另外一旦出现-march -mtune, -mcpu就会被代替掉
在x86上
-mcpu 就是 -mtune
【 在 snnn (cm) 的大作中提到: 】
: 标 题: GCC的-mcpu/-mtune/-march, 永远都没人能搞明白
: 发信站: 水木社区 (Wed Nov 3 13:58:26 2021), 站内
:
: 推荐阅读:
https://community.arm.com/arm-community-blogs/b/tools-software-ides-blog/posts/compiler-flags-across-architectures-march-mtune-and-mcpu
:
: 结论:
: 1. ARM上应该用-mcpu,不要用另外两个。GCC一定要比CPU新。比如你的CPU是2019年发布的,那么你的GCC就应该用GCC-9及以后版本,它才有可能能识别你的CPU。
: 2. x86上应该用-mtune/-march。(是这样吗?)
:
:
:
:
:
: --
:
: ※ 来源:·水木社区
http://www.mysmth.net
·[FROM: 107.139.34.*]
--
FROM 104.133.8.*
3楼
|
snnn
|
2021-11-11 10:17:37
|
只看此ID
mtune后面一般跟的不是CPU的名字。如果你都知道cpu的名字了,为什么不直接用-mcpu呢?
GCC也没说-mcpu=xxx 就完全等价于 -march=xxx_isa -mtune=xxx啊。
【 在 BigCarrot 的大作中提到: 】
: 你的结论不对阿,根据这篇文章
: 在arm上
: -mcpu=xxx 就等于 -march=xxx_isa -mtune=xxx
: ...................
--
FROM 107.139.34.*
4楼
|
BigCarrot
|
2021-11-11 13:25:34
|
只看此ID
【 在 snnn (cm) 的大作中提到: 】
: mtune后面一般跟的不是CPU的名字。如果你都知道cpu的名字了,为什么不直接用-mcpu呢?
1. -mcpu在x86/arm下意义不一致
2. 对于做产品来说-march -mtune更常见更有用,比如说你开发了一个游戏,你希望绝大多数pc都能运行它,经过市场调研发现90%的用户在使用sandybridge或更新的cpu, 你就可以使用-march来指定sandybridge对应的指令集,但是这些cpu里面还有ivybridge, haswell, broadwell, skylake, icelake, tigerlake ..., 你希望编译器能对用户最多的一个平台来进行优化,如果用户中最多的是skylake, 你就可以用-mtune=skylake来指定优化目标.
: GCC也没说-mcpu=xxx 就完全等价于 -march=xxx_isa -mtune=xxx啊。
你这篇文章说在arm是这样的
--
FROM 104.133.8.*
5楼
|
cavendish
|
2021-11-20 06:32:55
|
只看此ID
gcc要比cpu发布时间新
就是追上游呀,很容易理解吧...
也许可以看看qt里都咋用的,哈哈
【 在 snnn 的大作中提到: 】
: 推荐阅读:
https://community.arm.com/arm-community-blogs/b/tools-software-ides-blog/posts/compiler-flags-across-architectures-march-mtune-and-mcpu
: 结论:
: 1. ARM上应该用-mcpu,不要用另外两个。GCC一定要比CPU新。比如你的CPU是2019年发布的,那么你的GCC就应该用GCC-9及以后版本,它才有可能能识别你的CPU。
: ...................
--
FROM 85.165.238.*
1/1
|
转到
选择讨论区
首页
|
分区
|
热推
BYR-Team
©
2010.
KBS Dev-Team
©
2011
登录完整版