【发布时间】:2015-06-09 18:58:25
【问题描述】:
我正在尝试用各种指令集重新编译一些软件,具体来说,SSE、SSE2、SSE3、SSSE3、SSE4.1、SSE4.2 和 AVX,我想要看看代码是如何在没有这些指令集的情况下执行的,以确保我得到它们的全部效果。
例如,我想只用-O2 和gnu 编译器来编译它,看看它在限制为only SSE 时的执行情况,看看它调用了哪些标志默认。我还有一个正在使用的intel 编译器,我想隔离每个标志(或标志组合)对我的代码所做的事情,那么我如何确切地指定哪些标志是被调用?
如果这很重要,我正在与C、C++ 和Fortran 合作Linux。
【问题讨论】:
-
GCC 的哪个版本?他们从 4.8 -> 4.9 更改了很多标志。
-
正确的答案是“是”。我们有 gcc 4.2.1、4.4.7、4.5.2、4.8.1 和各种版本的 icc。我想比较每一个的运行时间、效率等。
-
this 会重复吗?
-
试试
-march=pentium3。在 x64 上,您将无法低于 SSE2,因为所有 x64 都具有 SSE2。您还可以使用-mno-avx等有选择地禁用它们。
标签: gcc intel gnu compiler-optimization