当前位置: 首页 > news >正文

有关使用AVX,EIGEN等加速方法过程中cmake选项的说明

"CMAKE_BUILD_TYPE"的作用

参考cmake_type的博客可以发现这个选项是用来调控最终执行文件的性能的,一般来说有下面的几个模式:

  • Release:发布版,开启最高优化,关闭调试信息的开销。
  • Debug:调试版,开启调试符号、较少优化,便于调试。
  • RelWithDebInfo:折中版,开启优化,同时保留调试信息。
  • MinSizeRel:最小化产物大小的构建类型,适合嵌入式/发布包大小敏感场景。

默认情况下 CMAKE_BUILD_TYPE 为空字符串,这时相当于 Debug。
本质上来说,开启release模式会使用-O3等优化手段对程序进行加速

为什么写这个博客

事实上是因为当使用AVX加速指令集,eigen或者GPU CUDA计算等加速方法的时候,"CMAKE_BUILD_TYPE"应当被设置为release模式,不仅仅在于速度方面的考虑,实际上由于计算过程中可能的精度损失,结果也有可能被影响,同一个代码TriH-ANNS在使用Debug和Release两种模式下得到的结果完全不同

$ ./trih/bin/trih_anns gist-960-euclidean-shuffle.hdf5 s gist_128 1000 500 100 128 4 256 16
# release模式
qps = 69802
recall@100: 0.971033
# debug模式
qps = 34496
recall@100: 0.466339

可以发现不仅仅时速度,recall都会受到严重影响(这个项目大量使用了量化方法,极大概率debug模式下出现了严重的精度损失)

使用方法

  • 直接写。一般写为下面的格式
cmake -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo
  • 使用presets(xxx.json)
{"version": 3,"defaultPreset": "default-release","presets": [{"name": "default-release","displayName": "Release (默认)","hidden": false,"generator": "Ninja","description": "使用 Ninja 生成器,默认 Release 构建类型","cacheVariables": {"CMAKE_BUILD_TYPE": "Release"}// 下面的两步可选:如果你使用的是两步构建流程,可在命令中显式调用// "environment": {//   "CXXFLAGS": "-O3",//   "CFLAGS": "-O3"// }},{"name": "default-debug","displayName": "Debug","hidden": false,"generator": "Ninja","cacheVariables": {"CMAKE_BUILD_TYPE": "Debug"}},{"name": "default-relwithdebinfo","displayName": "RelWithDebInfo","hidden": false,"generator": "Ninja","cacheVariables": {"CMAKE_BUILD_TYPE": "RelWithDebInfo"}}]
}

最后,不懂某个选项啥意思建议问ai

http://www.dtcms.com/a/471716.html

相关文章:

  • 二手书交易网站开发背景WordPress发邮件4.4.1
  • 【项目开发Trip第2站】casbin库与身份权限划分
  • POET 宣布投资7500万美元
  • wordpress底部插件郑州seo顾问热狗网
  • 韩国网站免费模板美丽定制 网站模板
  • 栾城网站制作产品推广策划案
  • 如何做网站联盟营销网站设计中的js
  • Wazuh vs. 安全洋葱:开源SOC核心平台用哪个呢?
  • 容桂网站制作价位晋江论坛手机版
  • 有做网站看病的吗用vs2010做网站应用程序脱机
  • 如何评价一个网站的网站建设林和西网站建设
  • 云服务器的应用场景
  • 网站开发需要什么工程师软装工作室
  • 怎么建立一个网站好文创产品设计方案模板
  • 提高网站排名怎么做小程序定制开发公司前十名
  • ins做甜品网站手车做网课网站
  • 【AI图片生成】图片生成,这里特别注意根据实际需要换成对应适合自己需求的图片大小和尺寸
  • 框架--Lombok
  • 要找人做公司网站应该怎么做开发工具控件属性怎么打开
  • Ubuntu 22.04 安装 AppImage
  • 电商网站开发流程图百度有刷排名软件
  • 昆明百度搜索排名优化如何做网站的优化
  • 业主验证超时问题解决方案
  • 新乡网站开发的公司电话亚马逊图书官网
  • 贵州省建设局八大员报名网站管理咨询行业
  • [GazeTracking] 摄像头交互与显示 | OpenCV
  • 车载互联系统网站建设佛山网站建设哪里有
  • 红酒营销 网站建设南京短视频制作公司
  • 同一域名可以做相同网站吗建设银行广安官方网站
  • 泽成seo网站排名只做二手奢侈品的网站