显卡的一些总结

0.显卡架构

在这里插入图片描述

1.浮点数在计算机内存中的存储方式(FP32, FP64)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.FP32 & TF32

在这里插入图片描述

  • TF32 采用了与半精度( FP16 )数学相同的10 位尾数位精度,这样的精度水平远高于AI 工作负载的精度要求,有足够的余量。同时, TF32 采用了与FP32 相同的8 位指数位,能够支持与其相同的数字范围。这样的组合使TF32 成为了代替FP32 ,进行单精度数学计算的绝佳替代品,尤其是用于大量的乘积累加计算,其是深度学习和许多HPC 应用的核心。借助于NVIDIA 函示库,用户无需修改代码,即可使其应用程式充分发挥TF32 的各种优势。TF32 Tensor Core 根据FP32 的输入进行计算,并生成FP32 格式的结果。目前,其他非矩阵计算仍然使用FP32 。
  • NVIDIA A100/Ampere安培架构 GPU 中的新数据类型,TF32 使用与半精度 (FP16) 数学相同的 10 位尾数,表明对于 AI 工作负载的精度要求有足够的余量。并且TF32采用与FP32相同的8位指数,因此可以支持相同的数值范围。

3.FLOPS计算

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述

  • 英伟达Tesla A100核心采用台积电7N工艺,826mm2核心面积塞入542亿个晶体管。108组SXM4架构的SM单元拥有6912个CUDA核心,核心Tensor Core虽然减少到432个,但性能大幅增强,支持全新的TF32运算。一个Tensor Core每个时钟可以完成 256 FP16/FP32 FMA 操作。每个SM中有1024个FMA独立计算单元,对应2048个独立的浮点运算,等效为2048个线程,A100总共108 SM,所以A100总共存在108*2048=221184个线程。
  • FP64,是指一个SM中的8*4=32个FP64 CUDA core对应的算力,108*32*2FLOP*1.41Ghz=9.7 TFLOPS。
  • FP16 Tensor core ,(108*4)*256*2FLOP*1.41Ghz=311 TFLOPS。
  • FP64 Tensor core ,(108*4)*256*2FLOP*1.41Ghz/16=19.5 TFLOPS。
    在这里插入图片描述
    在这里插入图片描述

4.tensor core和cuda core的区别

在这里插入图片描述

5.GPU和CPU内部

在这里插入图片描述



在这里插入图片描述



在这里插入图片描述



在这里插入图片描述



在这里插入图片描述



在这里插入图片描述



在这里插入图片描述



在这里插入图片描述



在这里插入图片描述



在这里插入图片描述



在这里插入图片描述



在这里插入图片描述



在这里插入图片描述

6.cuda、kernel、grid、block

  • GPU包括更多的运算核心,其特别适合数据并行的计算密集型任务,如大型矩阵运算,而CPU的运算核心较少,但是其可以实现复杂的逻辑运算,因此其适合控制密集型任务。另外,CPU上的线程是重量级的,上下文切换开销大,但是GPU由于存在很多核心,其线程是轻量级的。因此,基于CPU+GPU的异构计算平台可以优势互补,CPU负责处理逻辑复杂的串行程序,而GPU重点处理数据密集型的并行计算程序,从而发挥最大功效。
    在这里插入图片描述

  • CUDA是NVIDIA公司所开发的GPU编程模型,它提供了GPU编程的简易接口,基于CUDA编程可以构建基于GPU计算的应用程序。
    在这里插入图片描述

  • CUDA编程模型是一个异构模型,需要CPU和GPU协同工作。在CUDA中,host和device是两个重要的概念,我们用host指代CPU及其内存,而用device指代GPU及其内存。CUDA程序中既包含host程序,又包含device程序,它们分别在CPU和GPU上运行。同时,host与device之间可以进行通信,这样它们之间可以进行数据拷贝。典型的CUDA程序的执行流程如下:

    • 分配host内存,并进行数据初始化;
    • 分配device内存,并从host将数据拷贝到device上;
    • 调用CUDA的核函数在device上完成指定的运算;
    • 将device上的运算结果拷贝到host上;
    • 释放device和host上分配的内存。
  • CUDA逻辑层

    • kernel是CUDA中一个重要的概念,kernel是在device上线程中并行执行的函数,核函数用__global__符号声明,在调用时需要用<<<grid, block>>>来指定kernel要执行的线程数量,在CUDA中,每一个线程都要执行核函数,并且每个线程会分配一个唯一的线程号thread ID。
    • kernel在device上执行时实际上是启动很多线程,一个kernel所启动的所有线程称为一个网格(grid),同一个网格上的线程共享相同的全局内存空间,grid是线程结构的第一层次,而网格又可以分为很多线程块(block),一个线程块里面包含很多线程,这是第二个层次。
      在这里插入图片描述
  • CUDA物理层

    • 一个kernel实际上会启动很多线程,这些线程是逻辑上并行的,但是在物理层却并不一定。这其实和CPU的多线程有类似之处,多线程如果没有多核支持,在物理层也是无法实现并行的。但是好在GPU存在很多CUDA核心,充分利用CUDA核心可以充分发挥GPU的并行计算能力。
    • GPU硬件的一个核心组件是SM,前面已经说过,SM是英文名是 Streaming Multiprocessor,翻译过来就是流式多处理器。SM的核心组件包括CUDA核心,共享内存,寄存器等,SM可以并发地执行数百个线程,并发能力就取决于SM所拥有的资源数。当一个kernel被执行时,它的gird中的线程块被分配到SM上,一个线程块只能在一个SM上被调度。SM一般可以调度多个线程块,这要看SM本身的能力。那么有可能一个kernel的各个线程块被分配多个SM,所以grid只是逻辑层,而SM才是执行的物理层。
    • SM采用的是SIMT (Single-Instruction, Multiple-Thread,单指令多线程)架构,基本的执行单元是线程束(wraps),线程束包含32个线程,这些线程同时执行相同的指令,但是每个线程都包含自己的指令地址计数器和寄存器状态,也有自己独立的执行路径。所以尽管线程束中的线程同时从同一程序地址执行,但是可能具有不同的行为,比如遇到了分支结构,一些线程可能进入这个分支,但是另外一些有可能不执行,它们只能死等,因为GPU规定线程束中所有线程在同一周期执行相同的指令,线程束分化会导致性能下降。
    • 当线程块被划分到某个SM上时,它将进一步划分为多个线程束,因为这才是SM的基本执行单元,但是一个SM同时并发的线程束数是有限的。这是因为资源限制,SM要为每个线程块分配共享内存,而也要为每个线程束中的线程分配独立的寄存器。所以SM的配置会影响其所支持的线程块和线程束并发数量。总之,就是网格和线程块只是逻辑划分,一个kernel的所有线程其实在物理层是不一定同时并发的。所以kernel的grid和block的配置不同,性能会出现差异,这点是要特别注意的。
      还有,由于SM的基本执行单元是包含32个线程的线程束,所以block大小一般要设置为32的倍数。
      在这里插入图片描述在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/32031.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI生成留学文书 [研讨直播]

相信很多留过学的同学知道留学申请有一大堆事情需要处理&#xff0c;个人陈述是其中一部分。今年AI让很多行业发生了颠覆性变化&#xff0c;留学申请也不例外&#xff0c;以下是我们通过MiX Copilot实现的文书撰写&#xff08;文书案例放在末尾&#xff09;。 如果你正打算申请…

全网最详细中英文ChatGPT-GPT-4示例文档-语句情绪分类从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)

从0到1快速入门语句情绪分类应用场景 Introduce 简介setting 设置Prompt 提示Sample response 回复样本API request 接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例 其它资料下载 ChatGPT是目前最先进的AI聊天机器人&#xff0c;它能够理解图片和文字…

chatgpt赋能python:Python的图标长啥样?

Python的图标长啥样&#xff1f; Python是当今世界上最热门的编程语言之一。它因其易学易用、可读性强、功能强大等优点&#xff0c;被广泛地应用于机器学习、数据分析、Web开发等领域。而Python的标志也成为了许多程序员们最为熟悉的图标之一。那么Python的图标长什么样呢&am…

论文阅读-自指导self instruct:将语言模型与自生成的指令相结合

SELF-INSTRUCT: Aligning Language Model with Self Generated Instructions GitHub - yizhongw/self-instruct: Aligning pretrained language models with instruction data generated by themselves. Stanford Alpaca-ChatGPT平替 Stanford CRFM 小虎AI珏爷&#xff1a;…

用chatGPT增强SAP FICO功能 【现金流量预测】

如开发基于SAP银行的回单进行企业现金流量表的预测功能 promot :查询SAP中基于银行回单的现金流量预测 ABAP代码 REPORT z_cash_flow_forecast.* 获取当前日期 DATA: date TYPE dats. date sy-datum.* 获取最近6个月的银行回单 SELECT febep~belnr, febep~budat, febep~xblnr…

走近人工智能|NLP的语言革命

前言&#xff1a; 自然语言处理&#xff08;NLP&#xff09;是指使用计算机处理和理解人类语言的技术。 文章目录 自然语言序言背景适用领域技术支持应用领域程序员如何学总结 自然语言 序言 自然语言处理&#xff08;Natural Language Processing&#xff0c;NLP&#xff09…

MinGW与Cygwin的学习和理解

笔者来聊聊MinGW的学习和理解 1、MinGW认识 MinGW&#xff1a;Minimalist GNU for Windows&#xff0c;GNU项目的for windows的迷你版。 MinGW是针对windows&#xff0c;对GNU 编译器进行的原生的移植&#xff0c;为了构建windows可移植程序&#xff0c;导入了相关的库和头文…

写作社区平台汇总(自媒体运营的素材来源和推文发送地)

文章目录 引言I 技术社区II 其他写作社区see also引言 所谓平台,不是只有大众知道的大平台,还有行业中热门的网站或APP。 必须具备的平台有知乎、百家号 、今日头条、抖音、快手、 大鱼号、 网易号、 搜狐号、 新浪号、 企鹅媒体、 东方号、 趣头条、 搜狗媒体、 360自媒体平…

微头条自媒体常见领域,好创作,快速实现自媒体变现

有些人认为&#xff0c;不写狗血不吐槽就没有流量。事实上&#xff0c;这是偏见。头条用户基数很大&#xff0c;任何形式的创作&#xff0c;都有大量有兴趣的读者。所以我们应该创作自己擅长的内容&#xff0c;并坚守自己的立场&#xff0c;接下来我们一起了解一下比较常见的微…

自媒体一键多平台分发工具,自媒体人必备

在谈到怎么运营自己的自媒体账号时&#xff0c;很多自媒体人觉得比较困难&#xff0c;因为他们要花费大量的时间与精力去经营&#xff0c;在不止一家自媒体平台拥有自己的账号是一件麻烦的事情&#xff0c;光是每个平台发布就需要很长的时间。于是我像他们推荐了我正在使用的融…

自媒体适合多平台发布,30+自媒体平台都可以一键发布!

现在越来越多的自媒体人员&#xff0c;为了获得全网曝光&#xff0c;都会注册开通10多个新媒体平台&#xff0c;如果你只分发图文&#xff0c;10个平台发完怎么的也得30分钟。如果你只分发视频&#xff0c;20个平台保底3小时&#xff0c;同时还得是都群发成功了&#xff0c;在达…

最靠谱的6个自媒体平台,也可以快速上手

现在自媒体发展已是相对成熟的阶段&#xff0c;很多朋友还想做自媒体&#xff0c;很明确地告诉你还不晚&#xff0c;只要你有创意&#xff0c;有出色的审美&#xff0c;什么时候都还不算晚&#xff0c;那么要选什么平台比较好了&#xff0c;小编给大家介绍比较好上手的自媒体平…

如何快速有效地运营自己的社交媒体账号?

在众多的社交媒体平台中&#xff0c;您可以先选择一个平台开始运营&#xff0c;如Facebook、Twitter、领英、 Instagram等。不同的平台有不同的特点&#xff0c;所以最好在选择之前了解好不同社交媒体的特点&#xff0c;以便 更好地展示自己的特点。 例如&#xff0c;领英在商…

怎么注册自媒体账号?技巧分享

自媒体行业的快速发展&#xff0c;相信大家都有耳闻&#xff0c;至于自媒体应该如何有效地运营&#xff0c;相信大家就纷纷摸不着头脑了那么新手如何做自媒体呢&#xff1f;我归纳分为这几个步骤&#xff1a; 一、自媒体账号定位 在做自媒体之前&#xff0c;一定需要做好定位&…

自媒体账号如何注册申请

如何利用自媒体挣取到人生第一桶金&#xff0c;建议大家可以从以下几个方面入手。 一、申请自媒体账号 申请自媒体账号需要的材料&#xff1a;身份证&#xff0c;手机号&#xff0c;辅助材料&#xff1a;微信公众号或者博客写过文章的都可以。如果实在不会弄就去买一个账号先练…

【云原生】基本概念梳理:容器、镜像、仓库和集群

有条件的同学尽可能都开始使用 ChatGPT、new bing 和 GPT-4&#xff0c;这些是新的生产力工具。 它们或许不能替代某个岗位&#xff0c;但做个不恰当的比方&#xff0c;没有它们时的学习效率是坐马车&#xff0c;使用这些工具的学习效率是开汽车。 一、引言 1.1 先问问 ChatGP…

vsCode编辑器 快速国际化-以及一些国际化细节

i18n.code-snippets 配置 {"vue-i18n-mall": {"scope": "vue-html","prefix": "vt","body": "\\$t(passenger.$1)", //passenger-国际化文档名"description": "vue i18n mall"}…

消息队列之 RabbitMQ基本流程

介绍 关于消息队列&#xff0c;从前年开始断断续续看了些资料&#xff0c;想写很久了&#xff0c;但一直没腾出空&#xff0c;近来分别碰到几个朋友聊这块的技术选型&#xff0c;是时候把这块的知识整理记录一下了。 市面上的消息队列产品有很多&#xff0c;比如老牌的 Activ…

出现IllegalArgumentException:Could not resolve placeholder ‘xxx‘ in value “${xxxx}“ 的问题

在写一个SSM框架的整合项目时,出现了 Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder data.username in value "${data.username}"错误. 在查阅了很多资料,结果是自己的一个配置xml文件导致的: 引入了一个外部文件db.properties,需要…

后台返回数据中有换行符,但是在文本中不显示换行效果

之前在标签里面是这样写的 &#xff08;vue项目&#xff09; <div class"text">{{trainDetail.trainingContent}}</div>返回的后台数据是这样的 是含有换行符的 后面发现用v-htm就可以解决 <div class"text" v-html"trainDetail.trai…