infinitetensor训练营-cuda1

devtools/2025/1/15 13:25:02/

一、基础概念剖析:
1、延迟:发送内存请求——>实际完成数据移动所需的时间。可以理解为家到公司的距离
2、带宽:单位时间移动数据量,即数据传输的速度。可以理解为家到公司中间马路的宽度

我们这里举个例子,计算机的延迟与带宽分别是α和1/β:

  • 带宽为1/β表示单位时间可以移动1/β大小的数据量,那么移动一个大小为1的数据就需要β时间
  • 移动N个长度为1的数据需要时间N(α+β)
  • 移动一个长度为N的数据需要时间α+βN
    更形象点的图片如下:
    在这里插入图片描述
    其中蓝色的就是所谓的带宽。
    3、冯诺依曼体系架构
    这个架构是最早提出的架构,其中要点如下:
  • 计算和存储分离:IO设备的访问远远慢于CPU的计算速度
  • 访存受限:现代计算机的缺陷在于计算速度很快,但是数据的访存跟不上,整体的运行时间受到访存限制
  • 内存(存储器):数据访问速度比IO设备快,输入数据先放到内存,CPU直接从内存读取,处理以后写回内存,内存写回输出设备
    意思是cpu的计算速度大于数据传输速度,所以如果想让计算效率高,那么cpu一定尽可能的处于计算过程中。所以内存是个利用空间换速度的产物(后续还有cache等)。
    4、多级存储
    这个也是老生常谈的内容了,全局内存容量大速度慢,多级缓存容量中等速度中等,寄存器容量小速度快。现代计算机一般包含的L2或者L3 Cache,再继续增加缓存,计算机成本进一步提高:
    在这里插入图片描述
    5、访问数据时间计算
    这里又有几个概念:
    (1)缓存命中率 r N r_N rN:数据data在 L N L_N LN Cache中成功访问的概率,如果在访问失败,说明需要在下级存储继续寻找
    (2)假设从全局内存访问数据的时间是 T 0 T_0 T0,从 L N L_N LN Cache中访问数据的时间是 T N T_N TN
    那么data访问的平均时间计算为:
    只有一级缓存,如果在一级缓存命中,那么时间为 T 1 T_1 T1,否则时间为 T 0 T_0 T0,平均时间为 A 1 A_1 A1= r 1 T 1 r_{1}T_1 r1T1+ ( 1 − r 1 ) T 0 (1−r_1)T_0 (1r1)T0
    存在二级缓存,如果在一级缓存命中,那么时间为 T 1 T_1 T1,否则时间为 a 2 = r 2 T 2 + ( 1 − r 2 ) T 0 a_2=r_2T_2+(1−r_2)T_0 a2=r2T2+(1r2)T0,平均时间为 A 2 = r 1 T 1 + ( 1 − r 1 ) a 2 A_2=r_1T_1+(1−r_1)a_2 A2=r1T1+(1r1)a2/
    这里假设 T 0 T_0 T0 = 400, T 1 T_1 T1 = 40, r N r_N rN = 0.9:
    只有一级缓存的话:平均时间为0.9(40)+0.1(400)=36+40=76.
    继续增加缓存,访问时间的降低不明显,但是计算机的成本快速提高
    在这里插入图片描述
    6、并行计算三大定律:阿姆达尔定律
    假设α∈[0,1]是任务无法并行处理部分占用的比例,假设工作量固定,那么对于任意N个机器,相比于1个机器来说,加速比S(N)= T ( 1 ) T ( N ) < 1 α \frac{T(1)}{T(N)}<\frac1α T(N)T(1)<α1
    公式推导:
    在这里插入图片描述
    看起来很抽象,这里我们举个例子,例如一个任务有做饭和吃饭,其中做饭10min,吃饭10min。
    其中α=0.5,也就是无法并行的时间为10min,做饭的10min。其中任务是处理1kg饭,也就是不管多少人都可以一起吃饭,这里面举了10个人一起吃饭的,由于做饭不能并行,所以固定10分钟。后面可以并行,一个人1min可以处理0.1kg,N个人在10/N的时间内处理完。所以总时长为10+10/N,加速比不超过2.
    在这里插入图片描述
    具体的定义:
    任务(task):并行计算处理的对象
    工作量(workload):完成任务的全部开销总和
    执行率(execution rate):单个处理器单位时间处理的工作量
    加速比(scalability):固定工作量下单机处理时间÷多机处理时间
    理想加速比(ideal scalability):处理器增多的比例
    并行效率(parallel effiency):加速比÷理想加速比

7、古斯塔夫森定律(Gustafson’s Law)
这个定律跟阿姆达尔定律不同,阿姆达尔定律强调串行部分是加速的主要限制因素,而古斯塔夫森定律强调通过扩展问题规模,可以改善并行计算性能。并行计算的加速比不仅取决于串行部分的比例,还与问题规模成正比。换句话说,通过增加问题规模,程序的并行部分可以显著增加,从而提高并行效率。
古斯塔夫森定律的加速比公式为:
S ( p ) = p − α ⋅ ( p − 1 ) S(p) = p - α⋅(p−1) S(p)=pα(p1)
S§: 并行计算的加速比。
p: 并行处理器的数量。
α: 程序中串行部分所占的比例(0 ≤ α ≤ 1)。
(1)串行部分限制加速:如果程序的串行部分比例较大,即 α 较大,那么无论增加多少处理器,程序的加速比都受限制。
(2)并行部分与问题规模有关:通过增加问题规模,可以降低串行部分的相对比例,提高整体的并行效率。
这里依旧举一个例子:
我们运行一个图像处理程序,其中:

串行部分占总计算时间的 α=10%。并行部分占 90%。使用 p=4 个并行处理器。

还有孙倪定律,这里不在详细介绍了,感兴趣的可以后面自己搜索。接下来是应用举例:
假设有一个输入向量 z = [ z 1 , z 2 , . . . , z n ] z = [z_1, z_2, ..., z_n] z=[z1,z2,...,zn],Softmax函数输出的向量 σ ( z ) \sigma(z) σ(z) 的第 i i i 个元素计算公式为:

σ ( z ) i = e z i ∑ j = 1 n e z j \sigma(z)_i = \frac{e^{z_i}}{\sum_{j=1}^{n} e^{z_j}} σ(z)i=j=1nezjezi

这里, e z i e^{z_i} ezi 表示自然指数函数应用于 z i z_i zi,分母是对所有可能的输出类别应用了指数函数后的值求和,以确保输出向量的所有元素之和为1。
用并行计算的话这里的softmax算子: y i = x i − M S y_i = \frac{x_i - M}{S} yi=SxiM, M = m a x { x i } M = max\{{x_i}\} M=max{xi}, S = ∑ i e x i − M S = \sum_{i} e^{x_i-M} S=iexiM,计算M和S都可以并行,但是保存M和S这两个中间结果不能并行。
说实话这里我听不懂,。。换下一章

计算密度和roof line模型

性能:可以简单理解为单位时间内处理的数据量 = min{峰值性能,单位时间处理的数据量} = min{峰值性能,带宽x计算密度}
那么对于访存密集型任务,提高计算密度可以提高性能,但是交界处是什么?
在这里插入图片描述
对于访存密集型任务,随着计算密度越大峰值计算速度也越大,但是到了交界处:
内存带宽限制:交界处的斜线表示内存带宽的限制。当任务的计算密度较低时(靠近左下角),任务主要受限于内存带宽,因为每次计算所需的内存访问较多。
计算能力限制:当任务的计算密度较高时(靠近右上角),任务主要受限于计算能力,因为计算量大而内存访问相对较少。


http://www.ppmy.cn/devtools/150689.html

相关文章

idea无法下载源码

1. 方式一 在项目下&#xff0c;项目根目录下 或 pom.xml同级目录中执行 mvn dependency:resolve -Dclassifiersources然后点击“download source”时就能看到源码了。

基于深度学习的视觉检测小项目(十二) 使用线条边框和渐变颜色美化界面

到目前为止&#xff0c;已经建立起了基本的项目架构&#xff0c;样式表体系也初步具备&#xff0c;但是与成品的界面相比&#xff0c;还是差点什么。 我的界面效果图&#xff1a; 优秀demo的界面截图&#xff1a; 是的&#xff0c;我的界面太“平” 了&#xff0c;没有立体感&…

【专题】2025年节日营销趋势洞察报告汇总PDF洞察(附原数据表)

原文链接&#xff1a; https://tecdat.cn/?p38813 在当今复杂多变且竞争激烈的消费市场环境下&#xff0c;节日营销已成为企业获取市场份额、提升品牌影响力的关键战略时机。我们深知深入洞察节日营销趋势对于企业决策的重要性。 本报告汇总基于对 2024 年多个关键消费节点及…

【论文阅读】基于空间相关性与Stacking集成学习的风电功率预测方法

文章目录 摘要0. 引言1. 空间相关性分析2. 风电功率预测模型2.1 Stacking 集成策略2.2 基学习器2.2.1 基于机器学习算法的基学习器2.2.2 基于神经网络的基学习器2.2.3 基于粒子群优化算法的超参数优化 2.3 元学习器2.4 基于空间相关性与Stacking集成学习的风电功率预测方法 3 算…

Elasticsearch学习(2) :DSL和RestClient实现搜索文档

之前的学习中——Elasticsearch学习(1) &#xff0c;我们已经导入了大量数据到elasticsearch中&#xff0c;实现了elasticsearch的数据存储功能。但elasticsearch最擅长的还是搜索和数据分析。 所以这篇我们研究下elasticsearch的数据搜索功能。我们分别使用DSL(Domain Specif…

Mac 端 VSCode Flutter 快捷键大全

Mac 端 VSCode Flutter 快捷键大全 通用快捷键 基础导航 快捷键功能Cmd P快速打开文件Cmd Shift P打开命令面板Cmd T快速查找项目中的符号Cmd B显示/隐藏侧边栏Cmd Shift E聚焦到资源管理器Cmd \水平分屏 通用代码操作 快捷键功能Cmd Z撤销上一步操作Cmd Shift Z…

c#版本、.net版本、visual studio版本之间的对应关系

最近这几年一直没用过c#开发&#xff0c;都是从事Qt c开发工作&#xff0c;回想一下之前c#还要追溯到2019年&#xff0c;算算时间大概都已过去4&#xff0c;5年了&#xff0c;时间飞快。 2019真是个神奇的数字&#xff0c;vs2019是我用的时间最长的一个IDE&#xff0c;新冠起始…

73.矩阵置零 python

矩阵置零 题目题目描述示例 1&#xff1a;示例 2&#xff1a;提示&#xff1a; 题解思路分析Python 实现代码代码解释提交结果 题目 题目描述 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例…