当前位置: 首页 > news >正文

NVIDIA CUDA初级教程视频学习笔记1

周斌老师
课程链接:

目录

  • 第一课
    • 内容
    • 生态环境
  • 第一课 CPU体系架构的概述
    • 什么是CPU
      • 指令
    • 存储器架构
    • CPU内部的并行性

第一课

预修课程:
Cuda c programming guide
在这里插入图片描述
参考内容 1,2,3查找一下。

内容

CPU体系架构概述
并行程序设计概述
CUDA开发环境搭建和工具配置
GPU体系架构概述
GPU编程模型
CUDA编程
CUDA程序分析和调试工具
基本优化
深入优化
最新NVIDIA GPU和CUDA特性

生态环境

在这里插入图片描述

nvidia cuda zone
QQ群:
GPU深度开发==》还没有加,记得去加群

多核系统和并行系统,是因为我们的单频系统性能遇到了瓶颈。

第一课 CPU体系架构的概述

什么是CPU

执行指令,处理数据的器件

  • 能够完成基本的逻辑和算术指令

指令

算术
访存
控制
这三类指令组成了一个计算机程序。

优化的目标:
每天指令需要的时钟周期最少
时钟周期尽量短

程序指令占比:
分支:12.5%
访存:46%
矢量运算:0.2%

CPU结构图:

芯片做计算
内存接口,接内存到CPU上
外部接口:显示系统的接口、多媒体的接口
桥接芯片接口==》硬盘、南桥北桥、

摩尔定律
芯片的集成密度每2年翻一番,成本下降一半。

28nm,芯片加工到了极限。
所以,摩尔定律表现不那么理想了。

百亿的量级的晶体管,这些晶体管都在干什么?

在这里插入图片描述
22亿个晶体管,8和芯片
中间最大的部分是三级缓存。
CPU是一个吞吐机,是一个处理机,不断把数据倒来倒去,花费在存储仓库花费在路上的成本最大。

简单的CPU结构图
在这里插入图片描述

上面部分数据通道
下面是控制逻辑

流水线
在这里插入图片描述

利用指令级并行

  • 极大的减小时间周期
    增加一些延迟和芯片面积

会带来的问题:
具有依赖关系的指令怎么办?
分支应当处理?
流水线的长度:

  • core 2 14级
  • pentium 4 > 20级
  • Sandy Bridge 14到20级之间

旁路Bypassing
在这里插入图片描述
add R1,R7需要用到sub R2,R3指令的结果,可以加一个旁路,这样就不用访问内存,直接获取R7的结果。

停滞Stalls
在这里插入图片描述
load [R3]->R7
add R1,R7->r2
add指令需要等待load指令完成

分支 Branches
在这里插入图片描述

分支预测Branch Prediction
在这里插入图片描述

基于过去的分支记录
在这里插入图片描述

分支断定

提升IPC
在这里插入图片描述

超标量

峰值N
增加了面积

  • N倍资源使用
  • 旁路网络N

Sandy Bridge超标量
在这里插入图片描述
指令调度Scheduling
在这里插入图片描述

寄存器重命名
在这里插入图片描述

乱序执行
把指令重新排一下,做一个优化
在这里插入图片描述
在这里插入图片描述

存储器架构

越大越慢
在这里插入图片描述

缓存Caching
将数据放在尽可能接近的位置
利用:
时间的邻近性
空间的邻近性

缓存层次

存储器的另外的设计考虑
分区==》避免多端口
一致性Coherency
控制器Memory controller==>

CPU内部的并行性

在这里插入图片描述

向量运算
相同处理的数据同时去做
在这里插入图片描述

数据级并行
单指令多数据
在这里插入图片描述

X86的向量运算
在这里插入图片描述

线程级的并行
在这里插入图片描述

多核Multicore
在这里插入图片描述

锁、一致性和同一性
在这里插入图片描述

CPU遇到了现实的困境,我们称为能量墙,cpu主频提升导致功耗很强度的提升,功耗的提升导致功耗的面积、集成度、成本不能无限增加。

结论
在这里插入图片描述

http://www.lryc.cn/news/25089.html

相关文章:

  • CEC2005:星雀优化算法(Nutcracker optimizer algorithm,NOA)求解CEC2005(提供MATLAB代码)
  • 工作实战之密码防重放攻击
  • 如何编写测试用例?
  • 5.排序算法之二:选择排序
  • Ubuntu18系统安装:node及node版本管理工具nvm部署前端项目
  • 统计学 假设检验
  • 【C++】哈希
  • 「TCG 规范解读」PC 平台相关规范(3)
  • 这篇教你搞定Android内存优化分析总结
  • 概率论与数理统计期末小题狂练 11-12两套,12-13-1
  • golang对字符串的处理操作 如何正确理解 rune byte和string
  • 软件项目管理简答题复习(1)
  • 云Windows Server 2022 Datacenter 安装MySQL8解压缩版 mysql-8.0.32-winx64 230301记录
  • 如何使用BeaconEye监控CobaltStrike的Beacon
  • STM32开发(17)----CubeMX配置CRC
  • 【MySQL】基础操作:登录、访问、退出和卸载
  • 【算法经典题集】递推(持续更新~~~)
  • mysql兼容性验证
  • C++回顾(五)—— 构造函数和析构函数
  • 嵌入式学习笔记——概述
  • 化繁为简高效部署 华为云发布部署服务CodeArts Deploy
  • 注意力机制详解系列(四):混合注意力机制
  • Makefiles学习1
  • 日志框架以及如何使用LogBack记录程序
  • 集成RocketChat至现有的.Net项目中,为ChatGPT铺路
  • 王道操作系统课代表 - 考研计算机 第三章 内存管理 究极精华总结笔记
  • Cypher中的聚合
  • 图注意网络GAT理解及Pytorch代码实现【PyGAT代码详细注释】
  • 项目成本管理中的常见误区及解决方案
  • 墨天轮2022年度数据库获奖名单