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

深度学习名词总结

SPMD

SPMD(Single Program, Multiple Data)是一种并行程序设计的模型,主要思想是使用同一个程序在多个处理器上并行执行,但每个处理器执行程序时处理不同的数据。其主要特点包括:

  • 单程序:所有处理器执行的是同一份程序代码,但工作部分通过条件判断等进行分支。
  • 多数据:每个处理器处理的数据不同,这样就实现了并行计算。
  • 数据并行:数据分布到不同处理器上,计算问题通过数据并行的方式并行处理。
  • 同步通信:处理器之间通过同步和通信协调工作,例如barrier同步。

SPMD模式下,同一个程序复制到不同处理器,通过进程/线程ID区分各自的数据。程序员主要编写串行代码,编译器和运行时系统负责生成并行执行代码。

SPMD更适合于数据并行的应用,例如处理大规模矩阵、物理模拟等科学计算。MPI就是一种典型的SPMD模式的并行编程框架。

与SPMD不同,MPMD(Multiple Program, Multiple Data)模型下并行任务可以运行不同的程序。SPMD程序结构更简单,但是MPMD更灵活。

总之,SPMD是并行编程的重要模式,对它的理解有助于编写并行应用程序。

大页内存

GPU使用的大页内存是指CPU主内存中映射给GPU使用的部分,它使用的是系统内存,而不是GPU显存。启用大页内存只是改变了CPU内存的分页机制,并不占用额外的显存。

回调

回调的思想是将一个函数作为参数传递给另一个函数,这样在需要的时候可以在那个函数内调用参数函数。这可以实现异步编程,也允许高度定制和灵活的代码逻辑。

Warp

在英伟达的GPU上,任务的调度最小单元是warp

一个warp以32个线程为一组,故通过8*4的block来进行矩阵的切分,每个block里共32个位置

这样可以保证每个block上到SM时不用去与其他的block拼接线程,产生额外开销

注意我这里用的是位置,并不是元素,32个线程,每个线程去负责一个位置的计算

GMEM、SMEM和SM

GMEM:全局内存(Global Memory),是GPU上的一块对所有CUDA线程可见的内存区域,位于设备端。数据传输速度相对慢,但可以存储大量数据。
SMEM:共享内存(Shared Memory),是位于每个SM上的一小块内存,只能被同一SM上的线程块访问。速度很快但容量有限。用于线程块内部的数据共享。
SM:流多处理器(Streaming Multiprocessor),是GPU硬件的运算单元,每个SM包含多个CUDA核心共享内存。一个GPU芯片上集成了多个SM。

GMEM在整个GPU上共享,容量大速度慢;
SMEM在SM内共享,容量小速度快;
SM是GPU的运算单元,包含SMEM和CUDA核心。
————————————————————————————
在CUDA编程中,合理利用不同内存的层级可以大大优化程序性能。

Dump

指的是将模型或数据以特定格式导出保存的操作。

具体来说,dump op可以表示以下几种含义:

  • 将模型的参数(变量和权重等)导出保存的操作,是model dump或parameter dump的缩写。这样可以保存训练好的模型用来部署或者继续训练。
  • 将训练或预测过程中的中间数据(张量或者特征映射等)导出保存的操作,用来分析模型内部表示、调试模型等。这称为data dump或feature dump。
  • 将日志、指标等训练调试信息保存到文件中的操作,以便后期查看和分析,这称为log dump。
  • 将模型的计算图网络结构导出保存的操作,这样可以可视化模型结构,称为graph dump或model dump。
  • TensorFlow中tf.py_func等操作的输出需要dump到CPU中,这也是一个常见的dump操作。
  • 在分布式训练中,由于内存限制,需要周期性执行dump将中间结果写到磁盘,这也称为分布式dump

综上所述,dump在机器学习领域是一个非常常见和重要的操作,用于导出保存各种信息,方便模型分析、部署和调试

Shape

2维数组 shape:(N,D),表示ND格式
3维数组 shape:(N,H,W),表示NHW格式
4维数组 shape:(N,C,H,W),表示NCHW格式
5维数组 shape:(N,C,D,H,W),表示NCDHW格式

n —— batchsize(样本数量)

相关文章:

  • 【算法】最短路径——迪杰斯特拉 (Dijkstra) 算法
  • 解决java发邮件错误javax.net.ssl.SSLHandshakeException: No appropriate protocol
  • 亚马逊上架儿童睡衣,婴儿沐浴座椅,不锈钢儿童水杯被召回的原因解析
  • 终于有人把VMware虚拟机三种网络模式讲清楚了!
  • 【力扣刷题篇】栈与队列相关OJ题及题解
  • 中睿天下Coremail | 2023年Q3企业邮箱安全态势观察报告
  • rocketmq-exporter配置为系统服务-自启动
  • SQL对数据进行去重
  • Java自学第8课:电商项目(3) - 重新搭建环境
  • Linux实战一天一个小指令--《日志查看》
  • 设备报修流程要怎么优化?工单管理系统如何提高设备维修效率?
  • 云原生服务高可用性保持的简单思考
  • Linux 网络管理
  • 探秘美国服务器价格因素:成本、竞争力还是资源优势?
  • docker通过nginx代理tomcat-域名重定向
  • $translatePartialLoader加载失败及解决方式
  • [译]如何构建服务器端web组件,为何要构建?
  • JavaScript对象详解
  • PAT A1092
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 安卓应用性能调试和优化经验分享
  • 从重复到重用
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 两列自适应布局方案整理
  • 每天10道Java面试题,跟我走,offer有!
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 怎样选择前端框架
  • FaaS 的简单实践
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • ​​​​​​​​​​​​​​Γ函数
  • #DBA杂记1
  • #WEB前端(HTML属性)
  • ${factoryList }后面有空格不影响
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (一)Neo4j下载安装以及初次使用
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • **PHP二维数组遍历时同时赋值
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .chm格式文件如何阅读
  • .NET gRPC 和RESTful简单对比
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .net与java建立WebService再互相调用
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • .php文件都打不开,打不开php文件怎么办
  • [100天算法】-x 的平方根(day 61)
  • [100天算法】-实现 strStr()(day 52)
  • [Asp.net MVC]Bundle合并,压缩js、css文件
  • [CTSC2014]企鹅QQ
  • [nlp] tokenizer
  • [office] 在Excel2010中设定某些单元格数据不参与排序的方法介绍 #其他#知识分享#笔记
  • [osgearth]通过API创建一个earth模型
  • [PAT练级笔记] 44 Basic Level 1044 火星数字
  • [PyQt] 使用.qrc 生成资源文件供程序中使用
  • [Python人工智能] 四十二.命名实体识别 (3)基于Bert+BiLSTM-CRF的中文实体识别万字详解(异常解决中)
  • [Pytorch] pytorch笔记 三