C++高性能并行编程与优化 - 课件 - 03 现代 C++ 进阶:模板元编程
现代 C++ 进阶:模板元编程 by 彭于斌( @archibate ) 往期录播: https://www.bilibili.com/video/BV1fa411r7zp 课程 PPT 和代码: https://github.com/parallel101/course 高性能并行编程与优化 - 课程大纲 • 分为前半段和后半段,前半段主要介绍现代 C++ ,后半段主要介绍并行编程与优化。 ,后半段主要介绍并行编程与优化。 1.课程安排与开发环境搭建: cmake 与 git 入门 2.现代 C++ 入门:常用 STL 容器, RAII 内存管理 3.现代 C++ 进阶:模板元编程与函数式编程 4.编译器如何自动优化:从汇编角度看 C++ 5.C++11 起的多线程编程:从 mutex 到无锁并行 6.并行编程常用框架: OpenMP 与 Intel TBB 7.被忽视的访存优化:内存带宽与 cpu 9 及以上( Linux 用户) CMake 3.12 及以上(跨平台作业) Git 2.x (作业上传到 GitHub ) CUDA Toolkit 10.0 以上( GPU 专题) 为什么需要模板函数( template ) • 避免重复写代码。 • 比如,利用重载实现“将一个数乘以 2” 这个 功能,需要: 为什么面向对象在 HPC 不如函数式和元编程香了? 这个例子要是按传统的面向对象思想,可能是这样:0 码力 | 82 页 | 12.15 MB | 1 年前3Go vs. GoPlus(Go+)
Go vs. GoPlus(Go+) 许式伟 x@goplus.org 2021-6-27 北京 话外: 模板 Go 篇 谁是最成功的语言? • 1970 – 至今 -什么语言是最成功的? • C (1970) • C++ (1979) • Objective-C (1986) • Java (1994) • C# (2002) • Go (2009) 2012年8月 C 是 50 关注焦点 -服务端开发 -大型软件工程 Go 语言的发展瓶颈 • 服务端开发不是一个大市场 -成也云计算,败也云计算 • Go 语言需要开辟新战场 -桌面开发(程序员最多的市场) • PC桌面开发 • Mobile开发 • Web开发(含小程序及轻应用) • IoT开发 -数据科学(当前最火的市场,推动Python到语言排行榜第二) • 大数据、人工智能 • 数学软件 Go+ 篇0 码力 | 54 页 | 1.82 MB | 1 年前3Egg & Node.js 从⼩⼯坊⾛向企业级开发
��� controller (控制器器) � � ��� home.js � ��� service (业务逻辑) � � ��� github.js � ��� view (模板) � � ��� home.tpl � ��� public (静态资源) � � ��� main.css � ��� router.js (路路由) ��� config service.github.listReposByOrg(org); // 渲染模板 await this.ctx.render('home.tpl', data); } } module.exports = HomeController; 控制器器 + 路路由 → 参数处理理,调⽤用 API,模板渲染 编程模型规范 - Service // app/service/github 多引擎共存 … ⼀一套 API (ctx.render / ctx.renderString) 插件⽣生态 ▸ 进程:egg-cluster ▸ 安全: egg-security ▸ 模板:egg-view-nunjucks / … ▸ ⽇日志:egg-logger / egg-tracer / … ▸ 数据库:egg-mysql / egg-sequelize ▸ 统⼀0 码力 | 70 页 | 7.57 MB | 1 年前3Rust在物理引擎研发中的应用 崔汉青
第三届中国Rust开发者大会 Rust在物理引擎研发中的应用 崔汉青 Motphys CEO Motphys 驱动虚拟世界的全部运动 体验 应用 基础应用: 内容生成工具、 交易市场等 基础硬件: 5G/6G、 半导体、 VR/AR等 基础软件: 渲染引擎、 动作物理引擎等 静态表现力 动态表现力 渲染技术 动作物理技术 动作技术 Motion 物理技术 Physics macro, or… Generic 表达力不足 不容易做精细性能优化 Procedure Macro 过于复杂 结果不可见 那么,用代码生成代码?Web 开发用的模板引擎, 也可以用于生成 Rust 代码 tera 模板生成分指令集优化的 Rust 代码 提供远超 Procedure Macro 的可读性和易用性 mathbench • 已有开源数学 crates 的 benchmark0 码力 | 22 页 | 1.18 MB | 1 年前3《深入浅出MFC》2/e
对一本如此高阶又如此高价的技术书籍而言,诚不易也。我有许多感触! 先从技术面谈起。我阅读过的VC++ 或MFC 书籍不算少,因此,我很有信心地说,这本书 的内容有其独步全球之处。本书企图引领读者进入MFC 这个十分庞大并在软件工具市场上 极端重要之application framework 的核心;我尝试剖析其中美好的对象导向性质(注1)的实 作方式,亦尝试剖析其中与Windows 程序设计模型(注2)息息相关之特殊性质(注3)的 multithreading, console programming。 ■ C++ 重要技术:类别与对象、this 指针与继承、静态成员、虚拟函数与多态、 深入淺出 MFC 28 模板(template)类别、异常处理(exception handling)。 ■ MFC 六大技术之简化仿真(Console 程序) 第二篇【欲善工事先利其器】提供给对Visual C++ 整合环境全然陌生的朋友一个导引。 通告消息(发生于控制组件) 强制性、先占式、优先权式 进程(一个执行起来的程序) 队列 template C++ 有所谓的class template,一般译为类别模板; Windows 有所谓的dialog template,我把它译为对话框模板; MFC 有所谓的Document Template,我没有译它(其义请见第7章 和第8章) 第0章 你㆒定要知道(導讀) 33 另有一些名词很0 码力 | 1009 页 | 11.08 MB | 1 年前3FISCO BCOS 2.9.0 中文文档
,在文件夹下分别拥有不同机构的目录,每个机构 目录下需要有对应的配置文件node_deployment.ini。使用前需要保证generator的meta文件夹没有进 行过任何操作。 查看一键部署模板文件夹: cd ~/generator ls ./tmp_one_click # 参数解释 # 如需多个机构,需要手动创建该文件夹 tmp_one_click # 用户指定进行一键部署操作的文件夹 EOF 生成节点 bash ./one_click_generator.sh -b ./tmp_one_click 执行完毕后,./tmp_one_click文件夹结构如下: 查看执行后的一键部署模板文件夹: ls ./tmp_one_click agencyA # A机构文件夹 agency_cert # A机构证书及私钥 generator-agency # 自动代替A机构进行操作的generator文件夹 -----END PRIVATE KEY----- 注意,节点私钥需要私密存储,部署区块链网络时需要用到私钥,每个节点都需要独立的私钥 根据CFCA的要求,使用节点私钥node.key填写信息模板,采用如下方式生成证书请求文件 openssl req -new -key node.key -out node.csr 将此步生成的证书请求文件node.csr发送给CFCA,得到PEM格式的证书node0 码力 | 1489 页 | 107.09 MB | 1 年前3FISCO BCOS 3.6.0 中文文档
,在文件夹下分别拥有不同机构的目录,每个机构 目录下需要有对应的配置文件node_deployment.ini。使用前需要保证generator的meta文件夹没有进 行过任何操作。 查看一键部署模板文件夹: cd ~/generator ls ./tmp_one_click # 参数解释 # 如需多个机构,需要手动创建该文件夹 tmp_one_click # 用户指定进行一键部署操作的文件夹 EOF 生成节点 bash ./one_click_generator.sh -b ./tmp_one_click 执行完毕后,./tmp_one_click文件夹结构如下: 查看执行后的一键部署模板文件夹: ls ./tmp_one_click agencyA # A机构文件夹 agency_cert # A机构证书及私钥 generator-agency # 自动代替A机构进行操作的generator文件夹 -----END PRIVATE KEY----- 注意,节点私钥需要私密存储,部署区块链网络时需要用到私钥,每个节点都需要独立的私钥 根据CFCA的要求,使用节点私钥node.key填写信息模板,采用如下方式生成证书请求文件 openssl req -new -key node.key -out node.csr 将此步生成的证书请求文件node.csr发送给CFCA,得到PEM格式的证书node0 码力 | 1489 页 | 107.09 MB | 1 年前3FISCO BCOS 2.9.0 中文文档
,在文件夹下分别拥有不同机构的目录,每个机构 目录下需要有对应的配置文件node_deployment.ini。使用前需要保证generator的meta文件夹没有进 行过任何操作。 查看一键部署模板文件夹: cd ~/generator ls ./tmp_one_click # 参数解释 # 如需多个机构,需要手动创建该文件夹 tmp_one_click # 用户指定进行一键部署操作的文件夹 EOF 生成节点 bash ./one_click_generator.sh -b ./tmp_one_click 执行完毕后,./tmp_one_click文件夹结构如下: 查看执行后的一键部署模板文件夹: ls ./tmp_one_click agencyA # A机构文件夹 agency_cert # A机构证书及私钥 generator-agency # 自动代替A机构进行操作的generator文件夹 -----END PRIVATE KEY----- 注意,节点私钥需要私密存储,部署区块链网络时需要用到私钥,每个节点都需要独立的私钥 根据CFCA的要求,使用节点私钥node.key填写信息模板,采用如下方式生成证书请求文件 openssl req -new -key node.key -out node.csr 将此步生成的证书请求文件node.csr发送给CFCA,得到PEM格式的证书node0 码力 | 1489 页 | 107.09 MB | 1 年前3FISCO BCOS 2.9.0 中文文档
,在文件夹下分别拥有不同 机构的目录,每个机构目录下需要有对应的配置文件node_deployment.ini。 使用前需要保证generator的meta文件夹没有进行过任何操作。 查看一键部署模板文件夹: cd ~/generator ls ./tmp_one_click # 参数解释 # 如需多个机构,需要手动创建该文件夹 tmp_one_click # 用户指定进行一键部署操作的文件夹 desktop/ ; for more instructions. rpc_ip=127.0.0.1 生成节点 执行完毕后,./tmp_one_click文件夹结构如下: 查看执行后的一键部署模板文件夹: 启动节点 调用脚本启动节点: 查看节点进程: channel_ip=0.0.0.0 p2p_listen_port=30302 channel_listen_port=20202 生成的私钥会存储在node.key中,生成后私钥示例如下: 注意,节点私钥需要私密存储,部署区块链网络时需要用到私钥,每个节点 都需要独立的私钥 根据CFCA的要求,使用节点私钥node.key填写信息模板,采用如下方式生成 证书请求文件 -----BEGIN PRIVATE KEY----- MIGEAgEAMBAGByqGSM49AgEGBSuBBAAKBG0wawIBAQQgZQE8JAJfs97BAj3mJbme0 码力 | 2649 页 | 201.08 MB | 1 年前3FISCO BCOS 2.9.0 中文文档
,在文件夹下分别拥有不同 机构的目录,每个机构目录下需要有对应的配置文件node_deployment.ini。 使用前需要保证generator的meta文件夹没有进行过任何操作。 查看一键部署模板文件夹: cd ~/generator ls ./tmp_one_click # 参数解释 # 如需多个机构,需要手动创建该文件夹 tmp_one_click # 用户指定进行一键部署操作的文件夹 desktop/ ; for more instructions. rpc_ip=127.0.0.1 生成节点 执行完毕后,./tmp_one_click文件夹结构如下: 查看执行后的一键部署模板文件夹: 启动节点 调用脚本启动节点: 查看节点进程: channel_ip=0.0.0.0 p2p_listen_port=30302 channel_listen_port=20202 生成的私钥会存储在node.key中,生成后私钥示例如下: 注意,节点私钥需要私密存储,部署区块链网络时需要用到私钥,每个节点 都需要独立的私钥 根据CFCA的要求,使用节点私钥node.key填写信息模板,采用如下方式生成 证书请求文件 -----BEGIN PRIVATE KEY----- MIGEAgEAMBAGByqGSM49AgEGBSuBBAAKBG0wawIBAQQgZQE8JAJfs97BAj3mJbme0 码力 | 2649 页 | 201.08 MB | 1 年前3
共 257 条
- 1
- 2
- 3
- 4
- 5
- 6
- 26