C++高性能并行编程与优化 - 课件 - 17 由浅入深学习 map 容器insert_or_assign(key, val) 不覆盖写入,要用 m.insert({key, val}) 判断是否存在,用 m.count(key) 若存在则删除,用 m.erase(key) 第四章:迭代与遍历 物理格式 逻辑格式 面壁者罗辑监督你鞋习 ! 面壁者罗辑监督你鞋习 ! map 的元素类型是…… • set::value_type 是 V 。 • map ::value_type 1 == 5 × • 发现不相等,只能继续判断第二个元素是否等于 5 ? 4 == 5 × • 发现不相等,只能继续判断第三个元素是否等于 5 ? 2 == 5 × • 发现不相等,只能继续判断第四个元素是否等于 5 ? 8 == 5 × • 发现不相等,只能继续判断第五个元素是否等于 5 ? 5 == 5 √ • 发现相等,意味着我们成功找到了 5 。这时 std::find 就会返回指向第五个元素的迭代器 就是说,苦劳都是 K 的,功劳都是 V 的。就这两点区别,示意图: k k k k k k k k k k k k v v v v v v set map 第四章:哈希散列表 高效的查找离不开我 高效的查找离不开我 unordered_set 查找为什么高效 • 为什么哈希散列表 unorered_set 会比线性数组 vector 在查找这一点上更高效? 0 码力 | 90 页 | 8.76 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 08 CUDA 开启的 GPU 编程CMAKE_CUDA_SEPARABLE_COMPILATION 选 项(设为 ON ),即可启用分离声明和定义的支持。 • 不过我还是建议把要相互调用的 __device__ 函数放在 同一个文件,这样方便编译器自动内联优化(第四课讲 过)。 两种开启方式:全局有效 or 仅针对单个程序 只对 main 这个程序启用: 对下方所有的程序启用(推荐): 顺便一提, CXX_STANDARD 和 CUDA_ARCHITECTURES cudaMemcpy ,他能够在 GPU 和 CPU 内存之间拷贝数据。 • 这里我们希望把 GPU 上的内存数据拷贝到 CPU 内存上,也就是从设备内存 (device) 到主机内存 (host) ,因此第四个参数指定为 cudaMemcpyDeviceToHost 。 • 同理,还有 cudaMemcpyHostToDevice 和 cudaMemcpyDeviceToDevice 。 cudaMemcpy 调度不对? 是编译器干的大好事! • 其实是编译器自作聪明优化了我们对 local_sum 的访 问,导致结果不对的。解决:把 local_sum 数组声明 为 volatile 禁止编译器优化(第四课介绍过)。 什么是线程组分歧( warp divergence ) • GPU 线程组( warp )中 32 个线程实际是 绑在一起执行的,就像 CPU 的 SIMD 那样。 因此如果出现分支(0 码力 | 142 页 | 13.52 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 15 C++ 系列课:字符与字符串会在字符串中查找字符 ‘ c’ ,不同的是他会从第 pos 个字符开始,例如 “ icatchthecat”.find(‘c’, 3) 会返回 4 ,因为是从 第 3 个字符 ‘ t’ 开始查找(人类看来是第四个),所以第一个 ‘ c’ 被略过。 • 如果 pos 所在的位置刚好就是 ‘ c’ ,那么会返回 pos ,例如 “ icatchthecat”.find(‘c’, 4) 会返回 4 。 会在字符串中查找字符 ‘ c’ ,不同的是他会从第 pos 个字符开始,例如 “ icatchthecat”.find(‘c’, 3) 会返回 4 ,因为是从 第 3 个字符 ‘ t’ 开始查找(人类看来是第四个),所以第一个 ‘ c’ 被略过。 • 如果 pos 所在的位置刚好就是 ‘ c’ ,那么会返回 pos ,例如 “ icatchthecat”.find(‘c’, 4) 会返回 4 。 第一次出现的位置,返回 ‘ s’ 所在位 置。 • 例如 “ hello”.find(“lo”) 会得到 3 ,因为找到的是开头的字符 ‘ l’ , 他是计算机认为的第 3 个字符(人类认为的第四个字符)。 • 同理也有 find(“str”, pos) 是从第 pos 个字符开始查找子字符串 “ str” ,例如 “ hellohello”.find(“lo”, 4) 会得到 8 ,因为0 码力 | 162 页 | 40.20 MB | 1 年前3
Go读书会第二期中文图书 Go 外文图书 读书方法 精读 • 选择高质量图书 • 脑图 + 细节摘录 + 行动清单(输出) 泛读 • 闲书 ( 不烧脑 ) • 碎片化(快读) + 听书 小结 第四部分 小结 • 写书三要素 • Go 精进之路导读:思维先行,践行哲学,遵循惯例,认清本 质,理解原理 • 读书:选高质量图书精读 ( 脑图 + 细节摘录 + 行动清单) 谢谢0 码力 | 26 页 | 4.55 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 11 现代 CMake 进阶指南这个包会去这个目录里搜索 Qt5Config.cmake ,更有针对性。 • 第三种 ( 推荐 ) ,直接在命令行通过 -DQt5_DIR=”xxx” 指定,这样不用修改 CMakeLists.txt 。 • 第四种,还可以通过设置环境变量 Qt5_DIR 也是可以的,就是对 Windows 用户比较困 难。 不指定 REQUIRED ,找不到时不报错,只会设置 TBB_FOUND 为 FALSE 如果没有0 码力 | 166 页 | 6.54 MB | 1 年前3
共 5 条
- 1













