C++高性能并行编程与优化 - 课件 - 11 现代 CMake 进阶指南
中一个特殊的变量,用于控制构建类型,他的值可以 是: • Debug 调试模式,完全不优化,生成调试信息,方便调试程序 • Release 发布模式,优化程度最高,性能最佳,但是编译比 Debug 慢 • MinSizeRel 最小体积发布,生成的文件比 Release 更小,不完全优化,减少二进制体积 • RelWithDebInfo 带调试信息发布,生成的文件比 Release 更大,因为带有调试的符号信 息 • • 在 Release 模式下,追求的是程序的最佳性能表现,在此情况下,编译器会对程序做最大 的代码优化以达到最快运行速度。另一方面,由于代码优化后不与源代码一致,此模式下 一般会丢失大量的调试信息。 1. Debug: `-O0 -g` 2. Release: `-O3 -DNDEBUG` 3. MinSizeRel: `-Os -DNDEBUG` 4. RelWithDebInfo: 化)。 我们稍后会详细捋一遍类似于 CMAKE_BUILD_TYPE 这样的东西。绝 大多数 CMakeLists.txt 开头都会有的部分,可以说是“标准模板”了。 project :初始化项目信息,并把当前 CMakeLists.txt 所在位置作为根 目录 这里初始化了一个名称为 hellocmake 的项目,为什么需要项目名? 对于 MSVC ,他会在 build 里生成 hellocmake0 码力 | 166 页 | 6.54 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 16 现代 CMake 模块化项目管理指南
的包,找不到不报错,事后可以通过 ${OpenCV_FOUND} 查询是否找到。 • find_package(OpenCV QUIET) • 查找名为 OpenCV 的包,找不到不报错,也不打印任何信息。 • find_package(OpenCV REQUIRED) # 最常见用法 • 查找名为 OpenCV 的包,找不到就报错(并终止 cmake 进程,不再继续往下执行)。 • find_package(OpenCV ),这个配置文件里包含了包的具体信息, 包括动态库文件的位置,头文件的目录,链接时需要开启的编译选项等等。而且某些库都 具有多个子动态库,例如 Qt 就有 libQt5Core.so 、 libQt5Widgets.so 、 libQt5Network.so 。因此 CMake 要求所有第三方 库作者统一包装成一个 Qt5Config.cmake 文件包含所有相关信息(类似于 nodejs 的 package 的安装程序 或 apt install 等)会自动放到 /usr/lib/cmake/XXX/XXXConfig.cmake 这个路径(其中 XXX 是包名),供 CMake 用户找到并了解该包的具体信息。 • /usr/lib/cmake 这个位置是 CMake 和第三方库作者约定俗成的,由第三方库的安装程序 负责把包配置文件放到这里。如果第三方库的作者比较懒,没提供 CMake 支持(由安装0 码力 | 56 页 | 6.87 MB | 1 年前3新一代分布式高性能图数据库的构建 - 沈游人
AtlasGraph 。 5 获得 2022 年中国电子学会科学技术奖科技进步一等奖 中国电子学会发布的《 2022 中国电子学会科学技术奖公告》,海 致星图与北京邮电大学、蚂蚁科技集团有限公司、中移动信息技术 有限公司联合研发的“大规模复杂异质图数据智能分析技术与规模化 应用”项目,斩获“科学技术奖科技进步一等奖”,这也是国内电子信 息领域的最高奖项。 该奖项由数十名院士评审,历经三轮,从三百余个申报项目中遴选 之间的传递过程和传递概率 图深度学习及其应用场景 图嵌入 • 将高维的图信息映射到低维向量中 • 通过图嵌入将客户关系表示为低维向量,可以结合其 他客户行为特征进行机器学习训练 图卷积神经网络 • 对图结构数据进行卷积计算 • 通过已有的企业数据,通过 GCN 进行半监督学习和分 类,预测企业的违约概率 传统的关系型数据库的存储方式丢失了事物之间的关系信息 Relational Table Real World0 码力 | 38 页 | 24.68 MB | 1 年前3谈谈MYSQL那点事
越少,一般是内存的一半,不超过 2G , 否则系统会崩溃,这个参数非常重要 innodb_additional_mem _pool_size 2M 512M InnoDB 用来保存 metadata 信息 , 如果内存是 16G ,最好本值超 1024M innodb_flush_log_at_trx _commit 1 0 0 代表日志只大约每秒写入日志文件并且日志文件 刷新到磁盘 ; 1 MySQL MySQL 认为在查询中应该检索的记录数 认为在查询中应该检索的记录数 Extra: Extra: 显示了查询中 显示了查询中 MySQL MySQL 的附加信息,关心 的附加信息,关心 Using filesort Using filesort 和 和 Using temporary Using temporary ,性能杀手 ,性能杀手 MySQL MySQL0 码力 | 38 页 | 2.04 MB | 1 年前3Rust与算法 - 谢波
背景介绍 • 算法相关知识 • Rust 实现数据结构 • Rust 实现算法 • 总结及学习资源 背景介绍 • 个人信息 • 写作动机 • 可参考点 • 为什么 背景介绍 # 个人职业 # 与 Rust 结缘 # 前 GPT 时代作品 个人信息 结算及大数据系统研发工程师 疫情下的明智选择 / 个人项目实践 学习中总结探索 2015 年发布,很多人近几年才知道 Rust0 码力 | 28 页 | 3.52 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 07 深入浅出访存优化
对之下来不及从内存读写数据,从而越容 易 mem-bound 。 1 2 4 6 8 10 0 50 100 150 200 250 300 350 funcA funcB funcC 内存信息查看工具: dmidecode • 可以看到小彭老师电脑上插了 2 块内存,频率都是 2667 MHz ,数据的宽度是 64 位( 8 字节)。 • 理论极限带宽 = 频率 * 宽度 * 数量 格 ( structured grid )表示,那就是一个插桩操作。 • 插桩的内核( kernel )指的就是这个“周围范围”的形状(如右图三个例子) 和每个地方读取到值对修改自身值的权重等信息。 • 个人认为,图像处理中的模糊操作,或者是滤波操作,就属于插桩。有的 插桩内核各轴向是对称的(比如高斯模糊),有的是单单往一个方向延伸 很长(比如径向模糊),有的内核是正方形(箱滤波)。0 码力 | 147 页 | 18.88 MB | 1 年前3唐刚 - Use Rust to Develop the Decentralized Open Data Application - RustChinaConf2023
-> B -> C -> … -> IPO 创业的目的是? ➔ 赚钱盈利。建立一个好的平台,尽量粘住用户 代码:可能开源,可能不开源,绝大部分不开源。 数据?完全封闭。 ➔ 数据是护城河,是信息时代的石油。 互联网企业的发展模式 Web3? So-called Web3 ? Where is the Next Stage ★ Blockchain ★ Decentralized Ledger0 码力 | 30 页 | 2.53 MB | 1 年前3夏歌-使用Rust构建LLM应用
Rust 构建 PR review 机器人 Cargo.toml "0.1.0" 使用 Rust 构建 PR review 机器人 设置 OpenAI 与 GitHub 基本信息 "0.1.0" 使用 Rust 构建 PR review 机器 1. 状态为 Open 的 PR 2. 状态为 Open 的 PR 有新的 commit 30 码力 | 36 页 | 38.31 MB | 1 年前3基于 Rust Arrow Flight 的物联网和时序数据传输及转换工具 霍琳贺
TDengine Rust • OOXML - Excel 解析库 • xlsx2csv - Excel 转 CSV 工具 • Unqlite - 单文件非关系型数据库 • Wisecondor - 生物信息 CNV 分析 • mdsn - A Multi-address DSN(Data Source Name) parser. TDengine 应用开发组 • Python/Rust/Go 连接器0 码力 | 29 页 | 2.26 MB | 1 年前3C++高性能并行编程与优化 - 课件 - Zeno 中的现代 C++ 最佳实践
有 emplace 之前就初始化过,因此不会 有 segfault 的问题了! 函数表结合工厂模式 Zeno 中定义节点的宏 • 在 Zeno 中每个节点还额外有一个 Descriptor 的信息,因此遵循以下格式: • ZENO_DEFNODE(ClassName)({......}) Descriptor 的定义 • 在参数类型已经确定的情况下,例如: 0 码力 | 54 页 | 3.94 MB | 1 年前3
共 19 条
- 1
- 2