我试图擦洗GCC手册页,但仍然没有得到它,真的。
-march
和 -mtune
有什么区别?
什么时候只用< code>-march,而不是两个都用?有没有可能只是< code>-mtune?
这是我用谷歌搜索的内容:
-mar=X
选项采用CPU名称X
并允许GCC生成使用X
所有功能的代码。GCC手册准确解释了哪些CPU名称意味着哪些CPU系列和功能。
由于功能通常是添加的,而不是删除的,因此使用<code>构建的二进制文件将在CPU<code>X<code>上运行,有很好的机会在比<code>X<code>更新的CPU上运行,但几乎肯定不会在早于<code>的任何CPU上运行。某些指令集(我猜是3DNow!)可能特定于特定的CPU供应商,使用这些可能会得到不在竞争CPU上运行的二进制文件,无论是更新的还是其他的。
-mtune=Y
选项可调整生成的代码,使其在Y
上运行的速度比在其他CPU上运行的更快。-三月=X
,意味着-mtune=X
-mtune=Y
不会覆盖-march=X
,因此,例如,使用-march=core2
和-mtune=i686
-您的代码不会在任何早于的core2
上运行,因为-march=core2
,所以您到底为什么要优化比core2更老(功能更少)的东西-march=core2-mtune=haswell
更有意义:不要使用任何超出<code>core2-march=i686提供的功能多得多!),但是要为更新得多的<code>haswell<code>CPU优化代码,而不是为<code>core2<code>优化代码。
还有-mtune=通用
。通用
使GCC生成在当前CPU上运行最佳的代码(意思是通用
从一个版本的GCC更改为另一个版本)。Gentoo论坛上有传言称,-mar=X-mtune=通用
生成的代码在X
上运行速度快于-mar=X
生成的代码(或者只是-mar=X
,因为-mtune=X
是隐含的)。不知道这是真是假。
一般来说,除非你确切地知道你需要什么,否则最好的方法似乎是指定-march=
如果您使用-march
,那么GCC将可以自由生成在指定CPU上工作的指令,但(通常)不会在体系结构系列中的早期CPU上工作。
如果您只使用< code>-mtune,那么编译器将生成适用于其中任何一个的代码,但会优先选择在您指定的特定CPU上运行最快的指令序列。例如为该CPU适当地设置循环展开试探法。
-march=foo
意味着 -mtune=foo
,除非您还指定了不同的 -mtune
。这就是为什么使用 -march
比仅仅启用 -mavx
等选项而不做任何调整更好的原因之一。
警告:在 GCC 无法明确识别的 CPU 上 -march=native
仍将启用 GCC 可以检测到的新指令集,但会保留 -mtune=generic
。使用一个足够新的GCC,如果你希望它成为好的代码,它知道你的CPU。
问题内容: 我只知道一个js库,那就是jQuery。 但是我小组中的其他编码人员正在将AngularJS更改为新项目中的默认库。 我对此一无所知。与jQuery有何不同? 我已经为jQuery中的类似任务完成了一组功能。我还能在AngularJS中使用jQuery吗? 问题答案: Angular 1是一个框架,而Angular 2是一个 平台 。(参考) 对于开发人员,Angular2提供了一
我正在阅读GRPC的解释,这张图很有趣: 传输层是如何工作的?如果是通过网络...为什么叫RPC?更重要的是,这与为服务层实现API的REST(客户机中具有发出http请求的方法的类)有何不同?
一篇关于设置幽灵博客的文章说,使用从本地计算机复制到远程服务器:
我在获取引用光标时遇到问题。 假设我有引用游标的变量,“c_cursor SYS_REFCURSOR”,并且参考游标将具有具有以下列的行 列A|列B|列C 我有这个行类型变量“r_table TestTable%rowtype” 这个行类型有列A,列B和列C,其中包含额外的列。所以它就像这个 列A|列B|列C|列D|列E|列F 因此,我要做的是创建一行,其中列a、B和C从游标值中提取,其余列给出一
问题内容: 我发现docker swarm,kubernetes非常相似,然后有docker这是一家公司,上面两个是docker集群工具。那么,这些工具到底是什么,它们之间的区别呢? 问题答案: 有很多文章可以解释这些差异。简而言之: 两者都试图解决相同的问题-在大量主机上进行容器编排。本质上,这些问题可以按如下方式分解: 在多个主机之间调度容器(考虑资源利用率等) 将容器分组为逻辑单元 缩放容器
问题内容: JavaEE 7下的Servlet 3.1吗? 哪个版本的eclipse支持servlet 3.1开发? 问题答案: JavaEE 7下的Servlet 3.1吗? Servlet 3.1是JavaEE 7引入的。 Servlet 3.1与Servlet 3.0有何不同? 关于Servlet 3.1的新变化,请阅读Arun Gupta的博客文章:Servlet 3.1的新增功能?-Ja