文章目录
前言
接上篇,增加线程池后解决了线程数瓶颈,可以继续提升warehouse数来调优提分。编译优化也是个很重要且有效的性能优化方法,通用的编译时优化O3基本都做了,所以我主要使用了链接时优化和运行时优化这两种“比较少见”的编译优化方法,其实我之前也没有接触过,也是在参赛过程中现学现做的。
一、LTO链接时优化
关于编译优化,首先我们使用英特尔 oneAPI编译器来编译,icx比gcc性能要好,常用的是编译时优化,比如O3,在解题过程中我们发现还有链接时优化和运行时优化技术。
LTO 链接时优化是指链接阶段对程序进行全局优化,特别是跨模块的优化,例如内联、死代码消除等,优化整个程序的调用关系和数据访问模式。
在本地使用icx编译器结合LTO优化过程中遇到了一些问题:
1、

编译器报错:使用模板时未提供所有模板参数,增加编译选项-Wno-missing-template-arg-list-after-template-kw忽略该错误。这个报错在线上没有出现。
2、

然后又报错:不兼容的指令集,查询intel官网,用-xCORE-AVX512代替-march=emeraldrapids,可能跟本地CPU型号有关,这个报错线上也没有出现。
3、

.a文件没有执行ranlib命

--编译优化&spm=1001.2101.3001.5002&articleId=145719461&d=1&t=3&u=c47117bf97e64bb8a8cf6af89d4ac86f)
1683

被折叠的 条评论
为什么被折叠?



