赤峰做企业网站公司黄页网址大全免费观看直播app

pingmian/2025/10/9 18:33:38/文章来源:
赤峰做企业网站公司,黄页网址大全免费观看直播app,石家庄做网站制作公司,网上培训机构最近做一个算法的GPU加速#xff0c;发现实际上使用gcc的-O3(最高级编译优化)选项#xff0c;可以获得很高的加速比#xff0c;我的程序里达到了3倍的样子#xff0c;有时效果甚至比GPU加速好。因此小小学习了下GNU的编译优化。 附言一句#xff0c;在进行调试的时候…最近做一个算法的GPU加速发现实际上使用gcc的-O3(最高级编译优化)选项可以获得很高的加速比我的程序里达到了3倍的样子有时效果甚至比GPU加速好。因此小小学习了下GNU的编译优化。 附言一句在进行调试的时候最好关闭编译优化不然程序自动优化执行的步骤可能稍有变化。 GNU编译器提供-O选项供程序优化使用: -O 提供基础级别的优化 -O2 提供更加高级的代码优化,会占用更长的编译时间 -O3 提供最高级的代码优化 不同的优化级别使用的优化技术也可以单独的应用于代码。 可以使用-f命令行选项引用每个 单独的优化技术。 1 编译器优化级别1 在优化的第一个级别执行基础代码的优化。 这个级别试图执行9种单独的优化功能 -fdefer-pop: 这种优化技术与汇编语言代码在函数完成时如何进行操作有关。 一般 情况下, 函数的输入值被保存在堆栈中并且被函数访问。 函数返回时, 输入值还在 堆栈中。 一般情况下, 函数返回之后, 输入值被立即弹出堆栈。这样做会使堆栈中 的内容有些杂乱。 -fmerge-constans: 使用这种优化技术, 编译器试图合并相同的常量. 这一特性有 时候会导致很长的编译时间, 因为编译器必须分析c或者c程序中用到的每个常量 并且相互比较他们. -fthread-jumps: 使用这种优化技术与编译器如果处理汇编代码中的条件和非条件 分支有关。 在某些情况下, 一条跳转指令可能转移到另一条分支语句。 通过一连串 跳转, 编译器确定多个跳转之间的最终目标并且把第一个跳转重新定向到最终目标。 -floop-optimize: 通过优化如何生成汇编语言中的循环 编译器可以在很大程序上 提高应用程序的性能。 通常, 程序由很多大型且复杂的循环构成。 通过删除在循环 内没有改变值的变量赋值操作, 可以减少循环内执行指令的数量, 在很大程度上提高 性能。 此外优化那些确定何时离开循环的条件分支 以便减少分支的影响。 -fif-conversion: if-then语句应该是应用程序中仅次于循环的最消耗时间的部分。 简单的if-then语句可能在最终的汇编语言代码中产生众多的条件分支。 通过减少 或者删除条件分支, 以及使用条件传送 设置标志和使用运算技巧来替换他们, 编译 器可以减少if-then语句中花费的时间量。 -fif-conversion2: 这种技术结合更加高级的数学特性 减少实现if-then语句所 需的条件分支。 -fdelayed-branch: 这种技术试图根据指令周期时间重新安排指令。 它还试图把 尽可能多的指令移动到条件分支前, 以便最充分的利用处理器的治理缓存。 -fguess-branch-probability: 就像其名称所暗示的, 这种技术试图确定条件分支最可 能的结果, 并且相应的移动指令, 这和延迟分支技术类似。 因为在编译时预测代码的安排 所以使用这一选项两次编译相同的c或者c代码很可能会产生不同的汇编语言代码 这取决 于编译时编译器认为会使用那些分支。 因为这个原因, 很多程序员不喜欢采用这个特性, 并且 专门地使用-fno-guess-branch-probability选项关闭这个特性 -fcprop-registers: 因为在函数中把寄存器分配给变量, 所以编译器执行第二次检查以便减少 调度依赖性(两个段要求使用相同的寄存器)并且删除不必要的寄存器复制操作。 2, 编译器优化级别2 结合了第一个级别的所有优化技术, 再加上一下一些优化 -fforce-mem: 这种优化再任何指令使用变量前, 强制把存放再内存位置中的所有变量都复制到寄存器 中。 对于只涉及单一指令的变量, 这样也许不会有很大的优化效果. 但是对于再很多指令(必须数学操作) 中都涉及到的变量来说, 这会时很显著的优化, 因为和访问内存中的值相比 ,处理器访问寄存器中的值要 快的多。 -foptimize-sibling-calls: 这种技术处理相关的和/或者递归的函数调用。 通常, 递归的函数调用 可以被展开为一系列一般的指令 而不是使用分支。 这样处理器的指令缓存能够加载展开的指令并且 处理他们, 和指令保持为需要分支操作的单独函数调用相比, 这样更快。 -fstrength-reduce: 这种优化技术对循环执行优化并且删除迭代变量。 迭代变量是捆绑到循环计数器 的变量, 比如使用变量, 然后使用循环计数器变量执行数学操作的for-next循环。 -fgcse 这种技术对生成的所有汇编语言代码执行全局通用表达式消除历程。 这些优化操作试图分析 生成的汇编语言代码并且结合通用片段 消除冗余的代码段。如果代码使用计算性的goto, gcc指令推荐 使用-fno-gcse选项。 -fcse-follow-jumps: 这种特别的通用子表达式消除技术扫描跳转指令, 查找程序中通过任何其他途径都不 会到达的目标代码。 这种情况最常见的例子就式if-then-else语句的else部分。 -frerun-cse-after-loop: 这种技术在对任何循环已经进行过优化之后重新运行通用子表达式消除例程。 这样确保在展开循环代码之后更进一步地优化还编代码。 -fdelete-null-pointer-checks: 这种优化技术扫描生成的汇编语言代码, 查找检查空指针的代码。编译 器假设间接引用空指针将停止程序。 如果在间接引用之后检查指针 它就不可能为空。 -fextensive-optimizations: 这种技术执行从编译时的角度来说代价高昂的各种优化技术但是它可能 对运行时的性能产生负面影响。 -fregmove: 编译器试图重新分配mov指令中使用的寄存器, 并且将其作为其他指令操作数, 以便最大化 捆绑的寄存器的数量。 -fschedule-insns: 编译器将试图重新安排指令, 以便消除等待数据的处理器。 对于在进行浮点运算时有 延迟的处理器来说 这使处理器在等待浮点结果时可以加载其他指令。 -fsched-interblock: 这种技术使编译器能够跨越指令块调度指令。 这可以非常灵活地移动指令以便等待 期间完成的工作最大化。 -fcaller-saves: 这个选项指示编译器对函数调用保存和恢复寄存器, 使函数能够访问寄存器值, 而且不必 保存和恢复他们。 如果调用多个函数, 这样能够节省时间, 因为只进行一次寄存器的保存和恢复操作, 而 不是在每个函数调用中都进行。 -fpeephole2: 这个选项允许进行任何计算机特定的观察孔优化。 -freorder-blocks: 这种优化技术允许重新安排指令块以便改进分支操作和代码局部性。 -fstrict-aliasing: 这种技术强制实行高级语言的严格变量规则。 对于c和c程序来说, 它确保不在数据 类型之间共享变量. 例如, 整数变量不和单精度浮点变量使用相同的内存位置。 -funit-at-a-time: 这种优化技术指示编译器在运行优化例程之前读取整个汇编语言代码。 这使编译器可以 重新安排不消耗大量时间的代码以便优化指令缓存。 但是, 这会在编译时花费相当多的内存, 对于小型计算机可能 是一个问题。 -falign-functions: 这个选项用于使函数对准内存中特定边界的开始位置。大多数处理器按照页面读取内存 并且确保全部函数代码位于单一内存页面内, 就不需要叫化代码所需的页面。 -fcrossjumping: 这是对跨越跳转的转换代码处理 以便组合分散在程序各处的相同代码。 这样可以减少 代码的长度 但是也许不会对程序性能有直接影响。 3, 编译器优化级别3 它整合了第一和第二级别中的左右优化技巧, 还包括一下优化: -finline-functions: 这种优化技术不为函数创建单独的汇编语言代码而是把函数代码包含在调度程序的 代码中。 对于多次被调用的函数来说, 为每次函数调用复制函数代码。 虽然这样对于减少代码长度不利, 但是 通过最充分的利用指令缓存代码, 而不是在每次函数调用时进行分支操作, 可以提高性能。 -fweb: 构建用于保存变量的伪寄存器网络。 伪寄存器包含数据, 就像他们是寄存器一样, 但是可以使用各种 其他优化技术进行优化, 比如cse和loop优化技术。 -fgcse-after-reload: 这中技术在完全重新加载生成的且优化后的汇编语言代码之后执行第二次gcse优化, 帮助消除不同优化方式创建的任何冗余段。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/88912.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

兖州网站制作定州市建设工程信息网

文章目录① 安装oracle服务端②安装plsql③配置监听④配置2个⑤重启plsql① 安装oracle服务端 ②安装plsql ③配置监听 ④配置2个 【打开客户端】-【取消】-【工具】-【首选项】-【连接】 配置截图2个配置 【Tools】-【Preferences】-【Connection】 根据自己的oracle安装路…

用wix做网站需要备案吗中国制造网平台

大模型正缓慢地渗透进入我们的生活,尽管目前还没有现象级的产品应用,但它已足以让我痴迷于它,我对它能够提升程序员的生产效率笃定无疑。 本次我用一个下午做了一次尝试,使用大模型帮助我开发一个谷歌插件。开发之前,…

diy网站建设源码ppt哪个网站质量高

在现代商业环境中,迅速而高效的沟通是企业成功的关键要素之一。而在传统的会议模式下,时间成本和地理限制往往给企业带来不小的困扰。针对这一问题,WorkPlus推出了一款创新的局域网会议软件——WorkPlus Meet,旨在为企业创造高效的…

网页无法打开seo到底是做什么的

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 C#在写一个实体类时,有属性的写法,省去了写getter和setter的麻烦。 在Java编程时,写完字段后&#x…

投放广告网站中国域名后缀

前些天发现了十分不错的人工智能学习网站,通俗易懂,风趣幽默,没有广告,分享给大家,大家可以自行看看。(点击跳转人工智能学习资料) 文章目录1. 触发器概述2. 触发器的创建3. 查看、删除触发器4.…

网站及微站建设合同验收网站开发word

在学习二叉树之前.必须先要掌握一些树的重要概念: 结点的度:一个结点含有的子树个数称为该结点的度.树的度:一棵树中,所有节点度的最大值称为树的度.叶子结点:度为0的结点称为叶子节点.(也叫终端结点)双亲结点:若一个结点含有子结点,则这个结点称为其子结点的双亲结点(也叫父节…

直播间网站开发设计wordpress 一键转微信

1、进入虚拟化vcenter中,用浏览器登录(客户端没找到地方设置),新建一个只读用户zabbix。2、 登录vcenter客户端,将新建用户授权为只读授权过后可以使用新账号登录测试一下。3、开启exsi主机Managed Object Browser (MOB)功能,没有就默认开着的…

网站cc攻击用什么来做莆田网站建设推广

简介 Sanic 是一个和类Flask 的基于Python3.5的web框架,它编写的代码速度特别快。 除了像Flask 以外,Sanic 还支持以异步请求的方式处理请求。这意味着你可以使用新的 async/await 语法,编写非阻塞的快速的代码。 关于 asyncio 包的介绍&…

WordPress上传后找不到可以做关键词优化的免费网站

第1章 绪论 当前的网络技术,软件技术等都具备成熟的理论基础,市场上也出现各种技术开发的软件,这些软件都被用于各个领域,包括生活和工作的领域。随着电脑和笔记本的广泛运用,以及各种计算机硬件的完善和升级&#xf…

东莞网站制作南城wordpress置顶排序

目录 一.OpenGL 图像单色 1.原始图片2.效果演示 二.OpenGL 图像单色源码下载三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 零基础 OpenGL ES 学习…

网站开发下载那个wordpress底部功能按钮

来源:生物360一篇论文报告称,小鼠下丘脑视前区相当于一个集成中心,汇集育儿行为相关的大量信息。具体而言,研究人员发现视前区表达甘丙肽的神经元会协调育儿行为的运动、动机、激素和社会因素。相关成果近日 发表 于《自然》。育儿…

赣州开发区网站建设建个网站费用大概多少钱一年

本文介绍qml页面嵌入到QWidget的两种方式,以及这两种方式的区别。 方式1 在 Qt 中,可以使用 QQuickWidget 将 QML 内容嵌入到基于 QWidget 的应用程序中。这是在旧的 QWidget-based 应用程序中逐渐引入 QML UI 的一种常见方式。 以下是如何使用 QQuickWidget 将 QML 内容嵌…

顺德网站制作公司wordpress 豆瓣fm

字面量: 就是一个一个的值,如1、2、3、‘hello’,就是它自己本身表达的字面值、字面意思,在程序中可以直接使用。 变量(variable): 可以用来保存字面量,变量本身没有任何意思&#x…

微站和网站数据同步高质量视频素材网站

方法一 Hierholzer’s Algorithm 相关概念: 1 欧拉路径:在无向图中,每个边只经过一次,形成的路径。在有向图中,是指每条有向边只使用一次,形成的路径。 2 欧拉回路:欧拉路径是一个环。 3 在…

自己做网站需要多少费用天眼查询个人 企业查询

文章目录 常见特征种类one-hot编码特征哈希(`Feature hashing`)基于统计的类别编码对循环特征的编码目标编码(Target encoding)K折目标编码(K-Fold Target encoding)用于数据分析的特征可能有多种形式,需要将其合理转化成模型能够处理的形式,特别是对非数值的特征,特征…

嘉兴网站建议wordpress修改主题代码

ChatGPT无限次数:点击直达 html 揭秘ChatGPT技巧:高效撰写学术论文的专家秘笈 揭秘ChatGPT技巧:高效撰写学术论文的专家秘籍 在当今信息爆炸的时代,如何高效撰写学术论文成为许多研究者和学生关注的焦点。ChatGPT是一款人工智能助手&…

泉州定制网站建设wordpress创意点赞

2023年云南省职业院校技能大赛 中职组“网络安全”赛项样题 一、竞赛时间 总计:180分钟 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 A、B模块 A-1 登录安全加固 180分钟 200分 A-2 数据库加固 A-3 服务加固SSH\VSFTPD A-4 防火墙策…

渝水区城乡建设局网站前端需要掌握哪些知识

架构原理 一、高吞吐机制:Batch打包、缓冲区、acks 1. Kafka Producer怎么把消息发送给Broker集群的? 需要指定把消息发送到哪个topic去 首先需要选择一个topic的分区,默认是轮询来负载均衡,但是如果指定了一个分区key&#x…

wordpress快速仿站网站添加ico

组件注册 定义好的组件需要注册才能被使用。 注册方式有两种 全局注册 局部注册 全局注册 .component() 方法,让组件在当前 Vue 应用中全局可用。 在 main.ts 中 import ./assets/main.cssimport { createApp } from vue import { createPinia } from pinia i…

李鸿星电子商务网站建设国外不织布网站做的教具

问题分析 在使用静态方法的时候,某些情况下,需要使用类似自动注入的Bean来实现某些业务逻辑。 一般的非静态方法,可以很容易的通过在方法所在的类中Autowired自动将依赖的Bean注入到本类中,并操作。 静态方法在使用同样的操作流…