NVIDIA CUDA初级教程视频 - 学习笔记(二)并行程序设计概述

并行程序设计概述(视频

串行计算模式
  • 常规软件是串行的
并行计算模式
  • 并行计算是同时应用多个计算资源解决一个计算问题
  • 每个部分的指令在不同的处理器上执行
并行计算分布
  • 金融
Flynn矩阵
SISDSIMD
单指令单数据单指令多数据
MISDMIMD
多指令单数据多指令多数据

SISD:一条指令处理一条数据
SIMD:一条指令处理多个数据,一群人搬砖
MISD:一个数据会有多个操作过程
MIMD:…

并行计算:常用SISD、SIMD

名词解释
Task(任务)可以去完整得到结果的一个程序,相对独立
Parallel Task (并行任务)多个并行计算去解决的一个任务
Serial Execution (串行执行)单一指令
Parallel Execution (并行执行)多个兄弟去搬砖
Shared Memory (共享存储)数据存储的地方,大家共享存储空间
Distributed Memory (分布式存储)
Communications (通信)并行执行的程序,交互
Synchronization (同步)容易导致性能的下降
Granularity (粒度)并行计算的任务划分后,每个任务的大小
Observed Speedup (加速比)比值,相同层次的计算系统的比较。
Parallel Overhead (并行开销)
Scalability (可扩展性)
存储器架构

共享存储

分布式存储

混合 分布式-共享 存储

并行编程模型
  1. 共享存储模型Shared Memory Model
  2. 线程模型Threads Model
  3. 消息传递模型Message Passing Model
  4. 数据并行模型Data Parallel Model
具体实例

OpenMP

MPI

SPMD

MPMD

设计并行处理程序和系统
  1. 自动和手动并行

    自动的并行化是追求的目标,但还不能完全代替手动

    对于复杂的任务,需要人手动并行

  2. 理解问题和程序

    对于很大的一个系统,怎么去解决,才能去设计我们的程序

  3. 分块和分割

    数据的分块和数据的分割,在我们理解问题的基础上对任务的分割

  4. 通信

    不同的分块和分割之间进行通讯

  5. 同步

  6. 数据依赖

    墙的建设需要砖,但是砖还没来。

  • 负载均衡

    一个人搬很多砖,剩下的人不干,就不是很均衡,比如联发科

  • 粒度

  • I/O

  • 成本

    性能满足的条件下,成本越低越好

  • 性能分析和优化

数据和任务的分割

数据分割依据于我们的问题

通信和同步

广播模型(给所有人发送一样的东西)、Scatter模型(给每个人单独发送消息)

gather模型、reduction模型

Amdahl’s Law

程序的加速比取决于可以被并行化的比分

s p e e d u p = 1 1 − P speedup = \frac{1}{1-P} speedup=1P1 P:可以被并行化的占比

s p e e d u p = 1 P N + s speedup = \frac{1}{\frac{P}{N}+s} speedup=NP+s1 P:并行部分 N:处理器数码 S:串行部分

加速比有极限

并行处理器的数量增加,加速比有上限。

加速比极限

Linux创始人LinusTorvalds有一句名言:Talk is cheap, Show me the code.(冗谈不够,放码过来!)。 代码阅读是从入门到提高的必由之路。尤其对深度学习,许多框架隐藏了神经网络底层的实现,只能在上层调包使用,对其内部原理很难认识清晰,不利于进一步优化和创新。  YOLOv3是一种基于深度学习的端到端实时目标检测方法,以速度快见长。YOLOv3的实现Darknet是使用C语言开发的轻型开源深度学习框架,依赖少,可移植性好,可以作为很好的代码阅读案例,让我们深入探究其实现原理。  本课程将解析YOLOv3的实现原理和源码,具体内容包括: YOLO目标检测原理  神经网络及Darknet的C语言实现,尤其是反向传播的梯度求解和误差计算 代码阅读工具及方法 深度学习计算的利器:BLAS和GEMM GPU的CUDA编程方法及在Darknet的应用 YOLOv3的程序流程及各层的源码解析本课程将提供注释后的Darknet的源码程序文件。  除本课程《YOLOv3目标检测:原理与源码解析》外,本人推出了有关YOLOv3目标检测的系列课程,包括:   《YOLOv3目标检测实战:训练自己的数据集》  《YOLOv3目标检测实战:交通标志识别》  《YOLOv3目标检测:原理与源码解析》  《YOLOv3目标检测:网络模型改进方法》 建议先学习课程《YOLOv3目标检测实战:训练自己的数据集》或课程《YOLOv3目标检测实战:交通标志识别》,对YOLOv3的使用方法了解以后再学习本课程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值