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 缓存机制 8.GPU 专题: wrap 以上( GPU 专题) 为什么需要模板函数( template ) • 避免重复写代码。 • 比如,利用重载实现“将一个数乘以 2” 这个 功能,需要: 为什么面向对象在 HPC 不如函数式和元编程香了? 这个例子要是按传统的面向对象思想,可能是这样: 令 Int, Float, Double 继承 Numeric 接口类并实现 ,其中 multiply(int) 作为虚函数。然后定义: Numeric0 码力 | 82 页 | 12.15 MB | 1 年前3Go Web编程
《Go Web 编程》 《Go Web 编程》 因为自己对Web开发比较感兴趣,所以最近抽空在写一本开源的书籍《Go Web编程》《Build Web Application with Golang》。写这本书不表示我能力很强,而是我愿意分享,和大家一起分享Go写Web应用的一些东西。 对于从PHP/Python/Ruby转过来的同学了解Go怎么写Web应用开发的 对于从C/C++转过来的同学了解Web到底是怎么运行起来的 这样读者就可以把相应的Markdown文件编译成html文件,执行go build build.go,执行生成的文件,就会在底目 录下生成相应的html文件 交流 交流 欢迎大家加入QQ群:259316004 《Go Web编程》专用交流群 大家有问题还可以上德问上一起交流学习:http://www.dewen.org/topic/165 致谢 致谢 首先要感谢Golang-China的QQ群102319854 7.文本文件处理 7.1 XML处理 7.2 JSON处理 7.3 正则处理 7.4 模板处理 7.5 文件操作 7.6 字符串处理 7.7 小结 8.Web服务 8.1 Socket编程 8.2 WebSocket 8.3 REST 8.4 RPC 8.5 小结 9.安全与加密 9.1 预防CSRF攻击 9.2 确保输入过滤 9.3 避免XSS攻击 9.4 避免SQL注入 90 码力 | 295 页 | 5.91 MB | 1 年前3MoonBit月兔编程语言 现代编程思想 第七课 命令式编程:命令,可变数据结构,循环
现代编程思想 命令式编程 Hongbo Zhang 1 函数式编程 到此为⽌,我们介绍的可以归类于函数式编程的范畴 对每⼀个输⼊,有着固定的输出 对于标识符,我们可以直接⽤它所对应的值进⾏替代⸺引⽤透明性 开发实⽤的程序,我们需要⼀些计算之外的�副作⽤� 进⾏输⼊输出 修改内存中的数据等 这些副作⽤可能导致多次执⾏的结果不⼀致 2 引⽤透明性 我们可以定义如下数据绑定和函数 4. let t = acc1 + acc2 5. acc1 = acc2; acc2 = t 6. } 7. acc1 8. } 22 总结 本章节初步接触了命令式编程,包括 如何使⽤命令 如何使⽤变量 如何使⽤循环等 230 码力 | 23 页 | 780.46 KB | 1 年前3MoonBit月兔编程语言 现代编程思想 第九课 接口
现代编程思想 接⼝ Hongbo Zhang 1 回顾 第六课:定义平衡⼆叉树 我们定义⼀个更⼀般的⼆叉搜索树,允许存放任意类型的数据 1. enum Tree[T] { 2. Empty 3. Node(T, Tree[T], Tree[T]) 4. } 5. 6. // 我们需要⼀个⽐较函数来⽐较值的⼤⼩以了解顺序 7. // 负数表示⼩于,0表示等于,正数表示⼤于 80 码力 | 16 页 | 346.04 KB | 1 年前3Java 应用与开发 - Servlet 编程
Servlet 概述 Servlet 编程 Servlet 生命周期 Servlet 配置 Servlet 部署 Servlet 示例 Java 应用与开发 Servlet 编程 王晓东 wangxiaodong@ouc.edu.cn 计算机科学与技术系 November 13, 2018 大纲 Web 基础 Servlet 概述 Servlet 编程 Servlet 生命周期 Servlet 的概念、体系结构及生命周期管理基本原理。 3. 掌握 Servlet 的编程及配置方法,了解 Servlet 的在 Tomcat 服务器上的部署方式(war)。 大纲 Web 基础 Servlet 概述 Servlet 编程 Servlet 生命周期 Servlet 配置 Servlet 部署 Servlet 示例 大纲 Web 基础 Servlet 概述 Servlet 编程 Servlet 生命周期 Servlet Servlet 编程 Servlet 生命周期 Servlet 配置 Servlet 部署 Servlet 示例 Servlet 是主流 Web 框架的基础 JSP 和 JSF 都是建立在 Servlet 基础之上的,其他 Web 框架如 Struts、WebWork 和 Spring MVC 都是基于 Servlet。 大纲 Web 基础 Servlet 概述 Servlet 编程 Servlet0 码力 | 50 页 | 725.36 KB | 1 年前3Java 应用与开发 - 线程编程
大纲 线程基础 线程控制 线程的同步 Java 应用与开发 线程编程 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 November 6, 2018 大纲 线程基础 线程控制 线程的同步 学习目标 1. 线程基础:理解任务调度、进程和线程,掌握其联系和区别; 掌握 Java 的线程模型,以及如何创建线程;理解后台线程。 2. 线程控制:理解线程的生命周期,明白各阶段的含义;掌握 简述线程的基本概念。程序、进程、线程的关系是什么? 2. 线程的生命周期包括哪些基本状态?这些状态的关系如何? 状态间的切换控制如何进行?(可以通过思维导图、文字描 述等方式梳理线程状态与控制转换方法之间的关系) O 小编程 1. 编程实践生产者—消费者模式,并在理解的基础上对代码给 出比较完整的注释。 大纲 线程基础 线程控制 线程的同步 THE END wangxiaodong@ouc.edu.cn0 码力 | 82 页 | 1010.73 KB | 1 年前3快速微服务化编程体验
0 码力 | 12 页 | 2.67 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 08 CUDA 开启的 GPU 编程
CUDA 开启的 GPU 编程 by 彭于斌( @archibate ) 往期录播: https://www.bilibili.com/video/BV1fa411r7zp 课程 PPT 和代码: https://github.com/parallel101/course 前置条件 • 学过 C/C++ 语言编程。 • 理解 malloc/free 之类的概念。 • 熟悉 STL 中的容器、函数模板等。 。这样 分配出来的地址,不论在 CPU 还是 GPU 上都是一模一样的,都可以访问。而 且拷贝也会自动按需进行(当从 CPU 访 问时),无需手动调用 cudaMemcpy ,大 大方便了编程人员,特别是含有指针的一 些数据结构。 注意不要混淆 • 主机内存 (host) : malloc 、 free • 设备内存 (device) : cudaMalloc 、 cudaFree 组中一个元素的赋值。 小技巧:网格跨步循环( grid-stride loop ) • 无论调用者指定了多少个线程 ( blockDim ),都能自动根据给定的 n 区间循环,不会越界,也不会漏掉几个元 素。 • 这样一个 for 循环非常符合 CPU 上常见 的 parallel for 的习惯,又能自动匹配不同 的 blockDim ,看起来非常方便。 从线程到板块 • 核函数内部,用之前说到的0 码力 | 142 页 | 13.52 MB | 1 年前3MoonBit月兔编程语言 现代编程思想 第十二课 案例:自动微分
现代编程思想 案例:⾃动微分 Hongbo Zhang 1 微分 微分被应⽤于机器学习领域 利⽤梯度下降求局部极值 ⽜顿迭代法求函数解: 我们今天研究简单的函数组合 例: 2 ⽜顿迭代法 3 ⽜顿迭代法 4 ⽜顿迭代法 5 ⽜顿迭代法 6 ⽜顿迭代法 7 ⽜顿迭代法 8 ⽜顿迭代法 9 ⽜顿迭代法 10 ⽜顿迭代法 11 微分 微分被应⽤于机器学习领域 max(x, N::constant(0.0)) 6. } 20 前向微分 利⽤求导法则直接计算微分,同时计算 与 简单理解:计算 需要同时计算 与 专业术语:线性代数中的⼆元数(Dual Number) 1. struct Forward { 2. value : Double // 当前节点值 f 3. derivative : Double //0 码力 | 30 页 | 3.24 MB | 1 年前3MoonBit月兔编程语言 现代编程思想 第十三课 案例:神经网络
现代编程思想 案例:基于梯度下降的神经⽹络 Hongbo Zhang 1 案例:鸢尾花 鸢尾花数据集是机器学习中的"Hello World" 1936年发布 包含对3种鸢尾花的测量,各有50个样本 每个样本包含4项特征:花萼与花瓣的⻓度和宽度 ⽬标 通过特征,判断属于哪⼀类鸢尾花 构建并训练神经⽹络,正确率95%以上 2 神经⽹络 神经⽹络是机器学习的⼀种 模拟⼈的⼤脑神经结构 模拟⼈的⼤脑神经结构 单个神经元通常有 多个输⼊ ⼀个输出 神经元在达到⼀定阈值后激活 通常分为多层结构 3 神经⽹络 ⼀个典型的神经⽹络通常包含 输⼊层:接受输⼊的参数 输出层:输出计算结果 隐含层:输⼊层与输出层之间的层级 神经⽹络的架构 隐含层的层数、节点数、连接⽅式 神经元的激活函数等 4 神经⽹络架构 输⼊:每个样本包含4个特征,四个输⼊ 输出:属于每⼀种类的可能性,三个输出 样本数:150(总共) ⽹络架构:前馈神经⽹络 输⼊层:四个节点 输出层:三个节点 隐含层:⼀层四个节点 全连接:每⼀个神经元与前⼀层所有神经元相连 5 神经元 , :参数 :输⼊ 激活函数 隐含层:线性整流函数 ReLU 当计算值⼩于零,不激活神经元 输出层:Softmax 将输出整理为总和为1的概率分布 6 神经⽹络实现 运算的定义 1. trait Base {0 码力 | 17 页 | 521.66 KB | 1 年前3
共 425 条
- 1
- 2
- 3
- 4
- 5
- 6
- 43