C++高性能并行编程与优化 - 课件 - 06 TBB 开启的并行编程之旅份,作为一个“任务”推送到 全局队列里去。每个线程空闲时会不断地从那个 队列里取出数据,即“认领任务”。然后执行,执行 完毕后才去认领下一个任务,从而即使每个任务 工作量不一也能自动适应。 • 这种技术又称为线程池( thread pool ),避免了 线程需要保存上下文的开销。但是需要我们管理 一个任务队列,而且要是线程安全的队列。 struct Task { int x0, y0; CPU , GPU 上则有 stream 作为替代。 • 流水线额外的好处是可以指定一部分 filter 为串行的 (如果他们没办法并行调用的话)而其他 filter 可以 和他同时并行运行。这可以应对一些不方便并行,或 者执行前后的数据有依赖,但是可以拆分成多个步骤 ( filter )的复杂业务。 • 还有好处是他无需先把数据全读到一个内存数组里, 可以流式处理数据( on-fly ),节省内存。0 码力 | 116 页 | 15.85 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 09 CUDA C++ 流体仿真实战当然如果是三维数组,那就是三维纹理对象,访问时是 提供三线性插值( trilerp )的。 CUDA 纹理对象:封装 • 其中 cudaTextureAddressMode 表示采样的坐标超出范 围时采取的措施,有以下几种选择: • cudaAddressModeClamp :超出范围就用边界值代替 • 示意: AA | ABCDE | EE • cudaAddressModeBorder :超出范围就用零代替0 码力 | 58 页 | 14.90 MB | 1 年前3
Hello 算法 1.0.0b4 C++版但至少是一次积极的尝试。这本书虽然不足以让你直接拿到 Offer ,但会引导你探索数据结构与算法的“知 识地图”,带你了解不同“地雷”的形状大小和分布位置,让你掌握各种“排雷方法”。有了这些本领,相信 你可以更加自如地应对刷题和阅读文献,逐步构建起完整的知识体系。 本书中的代码附有可一键运行的源文件,托管于 github.com/krahets/hello‑algo 仓库。动画在 PDF 内的 展示效果受限,可访问 还处于相对早期的阶段,那时候使用 16 位的编码就足够表 示所有的 Unicode 字符了。 ‧ C# 使用 UTF‑16 编码,主要因为.NET 平台是由 Microsoft 设计的,而 Microsoft 的很多技术,包括 Windows 操作系统,都广泛地使用 UTF‑16 编码。 由于以上编程语言对字符数量的低估,它们不得不采取“代理对”的方式来表示超过 16 位长度的 Unicode 字符。这是一个0 码力 | 343 页 | 27.39 MB | 1 年前3
Hello 算法 1.0.0b5 C++版也至少是一次积极的尝试。这本书虽然不足以让你直接拿到 Offer ,但会引导你探索数据结构与算法的“知 识地图”,带你了解不同“地雷”的形状大小和分布位置,让你掌握各种“排雷方法”。有了这些本领,相信 你可以更加自如地应对刷题和阅读文献,逐步构建起完整的知识体系。 本书中的代码附有可一键运行的源文件,托管于 github.com/krahets/hello‑algo 仓库。动画在 PDF 内的 展示效果受限,可访问 还处于相对早期的阶段,那时候使用 16 位的编码就足够表 示所有的 Unicode 字符了。 ‧ C# 使用 UTF‑16 编码,主要因为.NET 平台是由 Microsoft 设计的,而 Microsoft 的很多技术,包括 Windows 操作系统,都广泛地使用 UTF‑16 编码。 由于以上编程语言对字符数量的低估,它们不得不采取“代理对”的方式来表示超过 16 位长度的 Unicode 字符。这是一个0 码力 | 377 页 | 30.69 MB | 1 年前3
《深入浅出MFC》2/e由于排版问题,有些繁体说法在换行时候没有被替换,所以遇到问题大家可以对照原文比较一下。 3. 附录、无责任书评那个文件没有转(估计看到那个地方的时候,你手里也该有一本纸板的了)。 2 因此,此书虽已出版两年,鉴于仍具阅读与技术上的价值,鉴于繁简转译制作 上的费时费工,鉴于我对同胞的感情,我决定开放此书内容,供各位免费阅读。 我已为《深入浅出MFC 》2/e 制作了PDF 格式之电子文件, 放在 http://www 真是一个好东西。我在书店驻足察看这本书五分钟之后,我便知 道这本书是一定要买下的。适巧我工作上的项目进度也到了一个即将完成的阶度,所以我便 一口气将这本书给读完了,而且是彻彻底底读了两遍。 我个人特别喜欢第3章:MFC 六大关键技术之仿真。这章内容的设计的确在MFC 丛林中, 大刀阔斧地披露出最重要的筋络,我相信这正是所有学习MFC 的人所需要的一种表明方 式。对我而言,以往遗留的许多疑惑,在此都一一得到了解答。最重要的是,您曾经说过, 系统程序设计大奥秘与深入浅出MFC,更是对您五体投地,立刻将这两 本书买下来,准备好好享受一下。对于深入浅出MFC,我给予极高的评价,因为它完全 满足我的需要。我去年才从台大电机博士班计算器科学组毕业,目前在资策会信息技术处服 国防役。先前作的纯是理论研究,现在才开始接触Windows Programming。您的深入浅出 MFC 对我而言是圣经。 真的很感谢您为知识传授所作的努力! 台中Fox Wang 自从阅读深入浅出MFC0 码力 | 1009 页 | 11.08 MB | 1 年前3
现代C++ 教程:高速上手C++11/14/17/20特性并不需要全部掌握,只需针对自己的使用需求和特定的应用场景,学习、查阅最适合自己的新特性 7 相关代码 第 1 章迈向现代 C++ 即可。 同时,本书在介绍这些特性的过程中,尽可能简单明了的介绍了这些特性产生的历史背景和技术需 求,这为理解这些特性、运用这些特性提供了很大的帮助。 此外,笔者希望读者在阅读本书后,能够努力在新项目中直接使用 C++17,并努力将旧项目逐步迁 移到 C++17。也算是笔者为推进现代 C++ std::bind 和 std::function)、export 等特性也均 被弃用。前面提到的这些特性如果你从未使用或者听说过,也请不要尝试去了解他们,应该向新标准靠 拢,直接学习新特性。毕竟,技术是向前发展的。 1.2 与 C 的兼容性 出于一些不可抗力、历史原因,我们不得不在 C++ 中使用一些 C 语言代码(甚至古老的 C 语言代 码),例如 Linux 系统调用。在现代 C++ 出现之前,大部分人当谈及『C 能就忘记了去释放资源 而导致泄露。所以通常的做法是对于一个对象而言,我们在构造函数的时候申请空间,而在析构函数(在 离开作用域时调用)的时候释放空间,也就是我们常说的 RAII 资源获取即初始化技术。 凡事都有例外,我们总会有需要将对象在自由存储上分配的需求,在传统 C++ 里我们只好使用 new 和 delete 去『记得』对资源进行释放。而 C++11 引入了智能指针的概念,使用了引用计数的想法,让程序0 码力 | 83 页 | 2.42 MB | 1 年前3
面向亿行 C/C++ 代码的静态分析系统设计及实践-肖枭面向亿行C/C++代码的 静态分析系统设计及实践 肖枭 自我介绍 2016年香港科技大学取得博士学位 过去10年一直以极高的热情从事静态 分析技术的学术用研究 合作创办源伞科技,致力于推动静态 分析技术在企业中的应用 目录 代码质量管理是个大问题 静态分析+代码评审的实践 学习和强调,红线和惩罚,100%的测试 覆盖率,和事后复盘并不够 有经验的程序员也会犯错 对代码提要求很难监督落实 Thx! DevOps: 代码质量责任应该左移 设计 代码 开发 代码 评审 入库 测试 发布 1. 非研发人员主导,沟通成本高,推动修复周期长 2. 很难形成标准推动研发实施 3. 形成技术债,偿债成本高 1. 代码签入前,研发人员有义务修复问题 2. 测试人员早期加入,更懂项目研发的情况,沟通成本低,加快上线 3. 能逐步形成好的编码规范和最佳实践 检查代码风格问题挺准,但是 我warning都不看,还看这个?0 码力 | 39 页 | 6.88 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - Zeno 中的现代 C++ 最佳实践 m_inner.end()) 之类的任意表达式,只要语义上通过,就可以实例化。 • (把 sort 封装成虚函数,留作回家作业) Zeno 中对 OpenVDB 的类型擦除 • 结合类型擦除技术,自动虚克隆技术。 • VDBGrid 作为所有网格类的基类提供各个 操作做为虚函数, VDBGridWrapper 则是 那个实现了擦除的包装类。 Zeno 节点系统 • 节点在 Zeno 中所0 码力 | 54 页 | 3.94 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 08 CUDA 开启的 GPU 编程cudaMemcpy 会自动进行同步操作 ,即和 cudaDeviceSynchronize() 等价! 因此前面的 cudaDeviceSynchronize() 实 际上可以删掉了。 统一内存地址技术( Unified Memory ) • 还有一种在比较新的显卡上支持的特性, 那就是统一内存 (managed) ,只需把 cudaMalloc 换成 cudaMallocManaged 以切换到另一个线程继续执行计算任务,等这个线程陷入内存等 待时,原来那个线程说不定就好了呢?(记得上节课说过内存延 迟是阻碍 CPU 性能提升的一大瓶颈, GPU 也是如此。 CPU 解决方案是超线程技术,一个物理核提供两个逻辑核,当一个逻 辑核陷入内存等待时切换到另一个逻辑核上执行,避免空 转。 GPU 的解决方法就是单个 SM 执行很多个线程,然后在遇 到内存等待时,就自动切换到另一个线程)0 码力 | 142 页 | 13.52 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 15 C++ 系列课:字符与字符串5. 函子 functor 与 lambda 表达式知多少 6. 通过实战案例来学习 STL 算法库 7. C++ 标准输入输出流 & 字符串格式化 8. traits 技术,用户自定义迭代器与算法 9. allocator ,内存管理与对象生命周期 ASCII 码 第 1 章 计算机如何表达字符 https://zh.wikipedia.org/wiki/ASCII ),必须和右边的参数一致,初学者容易搞错 。 • 而且即使搞错了也能正常编译通过(一些高级的编译器会 给出警告),但是运行结果不对,或者还有可能崩溃。 泛型的 iostream 应运而生 • 得益于 C++ 的重载技术, cout 不用你手动指定类型,他 会自动识别参数的类型,帮你调用相应的格式化函数。 c_str 和 data 的区别 • s.c_str() 保证返回的是以 0 结尾的字符串首地址指针,总长度为0 码力 | 162 页 | 40.20 MB | 1 年前3
共 22 条
- 1
- 2
- 3













