如何设置 C/C++ 编译器选项以对使用中的 CPU 进行最佳优化? [关闭]

Posted

技术标签:

【中文标题】如何设置 C/C++ 编译器选项以对使用中的 CPU 进行最佳优化? [关闭]【英文标题】:How to set C/C++ compiler options for best optimizations for the CPU in use? [closed] 【发布时间】:2021-07-11 03:11:12 【问题描述】:

要为特定 CPU 构建具有最佳优化的二进制文件,如何设置 C/C++ 编译器选项?例如,在 MMX/3DNow!/SSE/SSE2/SSE3 等 CPU 功能可用时尝试使用该功能。

【问题讨论】:

您能否详细说明“正在使用的 CPU 的特性?”。很难理解这个 imo 的确切含义 最好的方法是使用配置文件引导优化。只需坚持使用单个编译器并启用 PGO 即可 另外,在 gcc/clang 中,您可以将 -march=<arch> 设置为目标芯片组(本地 CPU 使用 native)。 如果你问五个程序员编译器选项的最佳组合是什么,你会得到 8 或 10 个不同的答案。 就像弗兰克说的,自动方式是-march=native 【参考方案1】:

GCC 和 Clang 支持 -march=native 选择 CPU 以从编译器正在执行的处理器类型中生成代码,并支持 -mtune=native 为其优化代码。请注意,这些开关列在特定的体系结构部分中,例如 X86 或 ARM 体系结构,因此它们可能不适用于编译器支持的所有体系结构。

如果您想生成不需要在其他处理器型号上执行的代码,请使用-march=native-march=native 暗示 mtune=native

如果您想生成针对当前处理器调整但仍可以在其他处理器型号上执行的代码,请使用不带-march=native-mtune=native

【讨论】:

以上是关于如何设置 C/C++ 编译器选项以对使用中的 CPU 进行最佳优化? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

keil 中的一些设置

如何设置 cpp_cp 检查选项?

如何设置 cedar 以对 ios 应用程序进行 bdd 测试?

在vs2012中,如何创建c语言程序?

vs2010写头文件#include<>每次刚写完<>时就会自动变成#include<_dbdao.h>,请问该如何让解决

vs设置多线程编译的数量