【智算中心】GPU是如何改变世界的

在这里插入图片描述
现在有市场消息表示,NVIDIA正计划减少A800 GPU的产量,以促进其更高端的H800 GPU 的销售。很显然NVIDIA是希望从H800 GPU上获得更多销售量,从中国市场获得更多利益。而且最近一段时间有传闻美国要彻底封杀AI芯片的出口,让国内甚至连A100和H800都无法买到,所以受到这个传闻的影响,国内厂商这段时间疯狂采购NVIDIA的GPU,而现在NVIDIA减产A800,同时将产能重心转向H800,很显然是看准了国内厂商的需求,想借此大赚。

之前NVIDIA并没有在国内大量推销H800,主要是让国内公司根据自己需求选购,所以国内公司都更愿意购买A800,毕竟H800售价 25万。不过现在美国彻底封杀AI芯片出口的传闻散播出来,NVIDIA又大大降低了A800的产能,这使得中国厂商不得不转而购买H800 GPU。

H800采用全新的Hopper架构,拥有最高可达 18432 个FP32(单精度)CUDA核心和 9216 个FP64(双精度)CUDA核心,以及576个第四代张量核心。运算能力方面:FP64性能 34 TFlops(34万亿次/秒),FP64 Tensor Core性能 67 TFlops,TF32性能 989 TFlops,FP16 Tensor Core性能 1979 TFlops,INT8性能 3958 TOPS

看到上面的参数你是否和我一样存有疑惑,CPU为什么只看核心数、主频或者缓存大小而GPU有这么多参数?下面我们就来解读一下GPU这些参数。

文章目录

  • Hopper架构核心数
  • GPU算力是如何计算的呢?
  • 张量核心(Tensor Core )
  • GPU这么牛!我们还需要CPU吗?


Hopper架构核心数

Hopper架构基本结构

Hopper架构基本结构

流式多处理器SM

流式多处理器SM

一个H800芯片有8组GPC(图形处理器集群),每个又由9个TPC(纹理处理器集群)组成,GPC之间通过L2缓存共享中间数据,GPC计算的中间数据通过NVLink与其他GPU连接/交换。每个TPC由两个SM(流式多处理器)组成。每组SM有128个FP32 CUDA核心,总计18432个。每组SM有64个FP64 CUDA核心,总计9216个。

i9 CPU也只有24核心,那GPU的运算速度快也是无可厚非的。

GPU算力是如何计算的呢?

GPU的性能取决于内存带宽、内存访问模式、并联方式、组网带宽、算法并行性等多个因素,所以GPU算力的计算可以分为理论浮点运算峰值计算能力实际应用性能

不同精度核心是固定的,就可以确定在某个精度下的算力了,那我们就可以算出H800的FP64(双精度)算力,已知Hopper架构GPU主频 1.89 GHz,GPU每核心单个周期浮点计算系数是2,从上面我们又知道Hopper架构拥有9216个FP64 CUDA核心。

每一个 SM 的两个 warp(线程束)调度单元和两个指令分发单元,允许同时启动和执行两个 warp。Fermi 双 warp 调度机制可以同时启动两个 warp 。

H800的FP64(双精度)理论峰值算力
= 9216 x 1.89 x 2 = 34836.48 GFlops = 34 TFlops。

由于Hopper架构不同版本的卡核心数略有不同,比如PCIe 5.0版本,SM虽然还是128组,但是CUDA核心只有14952个,所以算力也有所不同。

i9 处理器有 24 核心,基础频率为 3.3 GHz,36 线程,AVX2 每时钟周期的单精度运算次数 32, 每时钟周期的双精度运算次数 16。

i9的FP64(双精度)理论峰值算力
= 24 x 3.3 x 16 = 1267.2 GFlops = 1.2 TFlops。

单个处理器的运算速度超过 1TFLOP,和H800的 34 TFlops相比差距还是非常大的。

浮点数的规格不同,算力载体不同,算力差异是非常巨大的。这里我们要引入另一个概念,通用计算、智算和超算:

  • 通用计算算力:FP32(单精度)算力
  • AI智算算力:FP16(半精度)算力
  • 超算算力:FP64(双精度)算力

《【智算中心】国产GPU横向对比》 中我们也讲到,当前国产GPU还无法达到英伟达通用GPU的能力,只能侧重于某一个方向,比如昇腾910只支持FP16及一下精度,海光DCU却侧重于FP64超算领域。

张量核心(Tensor Core )

在这里插入图片描述

Tensor Core 可实现混合精度计算,并能根据精度的降低动态调整算力,在保持准确性的同时提高吞吐量。

TF32 = TensorFlow-32 英伟达提出的代替FP32的单精度浮点格式
早在NVIDIA A100/Ampere安培架构 GPU 中的就引入了新数据类型,TF32 使用与半精度 (FP16) 数学相同的 10 位尾数,表明对于 AI 工作负载的精度要求有足够的余量。并且TF32采用与FP32相同的8位指数,因此可以支持相同的数值范围。使TF32 在性能、范围和精度上实现了平衡

这样的组合使TF32 成为了代替FP32 ,进行单精度数学计算的绝佳替代品,尤其是用于大量的乘积累加计算,其是深度学习和许多HPC 应用的核心。

借助于NVIDIA 函示库,用户无需修改代码,即可使其应用程式充分发挥TF32 的各种优势。TF32 Tensor Core 根据FP32 的输入进行计算,并生成FP32 格式的结果。

为获得最佳性能,A100 还具有经过增强的16 位数学功能。它以两倍于TF32 的速度支持FP16 和Bfloat16(BF16)。利用自动混合精度。

GPU这么牛!我们还需要CPU吗?

CPU和GPU大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景。CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂。而GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。

于是CPU和GPU就呈现出非常不同的架构(示意图):

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

CPU由算术逻辑单元(ALU)、控制器(Control )和寄存器(Cache)及实现它们之间联系的数据、控制及状态的总线(DRAM)构成。CPU内核必须处理计算机所做的每一个操作,计算、内存获取、IO、中断,因此它有一个庞大的复杂指令集。要实现指令集,您需要更多的逻辑,因此与 GPU 相比,更多的晶体管每个核心的成本更高。

GPU的特点是有很多的ALU和更少的缓存内存、更简单的指令和更低的每时钟时钟速率,但它们经过优化,可以作为一个组进行更多计算。指令集越简单,缓存越少,每个内核的成本就越低。

所以CPU擅长逻辑控制,串行的运算。而GPU擅长做简单的、重复的,大规模并发计算,应用场景不同,短期内也不存在替代之说。

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

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

相关文章

【java】LinkedList 和 ArrayList的简介与对比

Java LinkedList和 ArrayList 在使用上,几乎是一样的。由于LinkedList是基于双向链表的,会多出list.getFirst();获取头部元素等方法 链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按…

掌握指针和数组:经典笔试题攻略(万字详解)

🍁博客主页:江池俊的博客 💫收录专栏:C语言刷题专栏 💡代码仓库:江池俊的代码仓库 🎪我的社区:GeekHub 🎉欢迎大家点赞👍评论📝收藏⭐ 文章目录 前…

电脑显示“Operating System not found”该怎么办?

“Operating System not found”是一种常见的电脑错误提示,这类错误会导致你无法成功启动Windows。那么电脑显示“Operating System not found”该怎么办呢? 方法1. 检查硬盘 首先,您可以测试硬盘是否存在问题。为此,您可以采取以…

基于JSP+Servlet+Mysql停车场管理系统(含实训报告)

TOC 一、系统介绍 项目类型:Java web项目 项目名称:基于JSPServlet的停车场管理系统 项目架构:B/S架构 开发语言:Java语言 前端技术:HTML、CSS、JS、JQuery等技术 后端技术:JSP、Servlet、JDBC等技术…

Python案例|Matplotlib库实现的数据分析

数据展示是数据分析和挖掘中的重要环节,通过图形的形式可以直观、清晰地呈现数据内在的规律。 本文所用数据采用上一篇案例实现后的数据表,数据存储在newbj_lianJia.csv文件中,具体代码如下。 import pandas as pd #导入库 import matplot…

自定义拖拽功能,上下拖拽改变盒子高度

核心在于监听鼠标的move来改变div的高度&#xff0c;抽成了组件 <template><div ref"container" class"drag"><z-tooltip v-if"isShowIcon" effect"dark" content"格式化" placement"top-start"&…

视频分割合并工具说明

使用说明书&#xff1a;视频分割合并工具 欢迎使用视频生成工具&#xff01;本工具旨在帮助您将视频文件按照指定的规则分割并合并&#xff0c;以生成您所需的视频。 本程序还自带提高分辨率1920:1080&#xff0c;以及增加10db声音的功能 软件下载地址 https://github.com/c…

树模型与集成学习:LightGBM

目录 树模型与集成学习 LightGBM 的贡献 LightGBM 的贡献&#xff1a;单边梯度抽样算法 LightGBM 的贡献&#xff1a;直方图算法 LightGBM 的贡献&#xff1a;互斥特征捆绑算法 LightGBM 的贡献&#xff1a;深度限制的 Leaf-wise 算法 树模型与集成学习 树模型是非常好的…

Windows系统下,将文件夹中文件名字全部复制提取出来

一、使用命令提示符&#xff08;Command Prompt&#xff09;&#xff1a; 1、打开文件夹&#xff0c;确保你所需的文件都在该文件夹中。 2、在文件夹的路径栏中&#xff0c;输入 “cmd” 并按下 Enter 键&#xff0c;以打开命令提示符并将其当前路径设置为所选文件夹的路径。 …

Java——一个简单的使用JPanel和JButton来设计窗口界面

这段代码是一个简单的使用JPanel和JButton来设计窗口界面的例子。 在designFrame方法中&#xff0c;创建了一个JFrame对象作为窗口&#xff0c;然后创建了两个JPanel对象作为面板&#xff0c;分别用于放置按钮。 创建了两个JButton对象作为按钮&#xff0c;并设置按钮的文本内容…

AI 时代,程序员无需焦虑 | 《服务端开发:技术、方法与实用解决方案》(文末送书福利4.0)

文章目录 &#x1f4cb;前言&#x1f3af;程序员会被 AI 取代么&#xff1f;&#x1f3af;服务端开发尚难被 AI 取代&#x1f3af; 服务端开发何去何从&#xff1f;&#x1f3af;业界首部体系化、全景式解读服务端开发的著作&#x1f4ac;读者对象&#x1f4da;本书优势&#x…

k-近邻算法概述,k-means与k-NN的区别对比

目录 k-近邻算法概述 k-近邻算法细节 k值的选取 分类器的决策 k-means与k-NN的区别对比 k-近邻算法概述 k近邻&#xff08;k-nearest neighbor, k-NN&#xff09;算法由 Cover 和 Hart 于1968年提出&#xff0c;是一种简单的分类方法。通俗来说&#xff0c;就是给定一个…

3D角色展示

先看效果&#xff1a; 再看代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>3D卡片悬停</title><style>font-face {font-family: "Exoct";src: url("htt…

centos7设置java后端项目开机自启【脚本、开机自启】

1.切换目录 cd /etc/init.d/2.编辑脚本 vim wbs-service-start.sh编辑内容 #!/bin/bash # chkconfig: 2345 80 90 # description: auto_runnohup java -jar /usr/java/wbs-service.jar > /dev/null 2>&1 & echo $! > /var/run/wbs-service.pid3.添加进入系…

Hugo·Stack主题·杂记

运行环境 hugo版本&#xff1a;v0.117.0&#xff08;扩展版&#xff09; go&#xff1a;1.21.0 PowerShell 7&#xff08;x64&#xff09; Windows10 添加主题 git submodule add https://github.com/CaiJimmy/hugo-theme-stack/ themes/hugo-theme-stack修改配置文件 m…

C++ 编译器优化与SIMD指令集

C 编译器优化与SIMD指令集 1. 汇编语言1.1 通用寄存器&#xff1a;32位时代1.2 通用寄存器&#xff1a;64位时代1.3 8位&#xff0c;16位&#xff0c;32位&#xff0c;64位版本1.4 AT&T 汇编语言1.5 返回值&#xff1a;通过 eax 传出1.6 前6个参数&#xff1a;分别通过 edi…

用好「留存」,闭环小程序运营链路

如何通过线上小程序获取用户线索&#xff0c;提高企业抗风险能力&#xff0c;建立有效的营销数字化系统一直是困扰每一个小程序开发者与运营者的问题。 当我们选择使用小程序设计自己的运营流程时&#xff0c;从「推广」到「转化」&#xff0c;再到最终的「留存」都是运营过程…

开始MySQL之路——MySQL安装和卸载

MySQL的介绍 MySQL数据库管理系统由瑞典的DataKonsultAB公司研发&#xff0c;该公司被Sun公司收购&#xff0c;现在Sun公司又被Oracle公司收购&#xff0c;因此MySQL目前属于Oracle旗下产品。 MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权…

使用kubeadm方式快速部署一个K8S集群

目录 一、环境准备 二、环境初始化 三、在所有主机上安装相关软件 1、安装docker 2、配置k8s的yum源 3、安装kubelet、kubeadm、kubectl 四、部署Kubernetes Master 五、加入Kubernets Node 六、部署CNI网络插件 七、测试k8s集群 一、环境准备 我的是CentOS7系统&am…

Django(6)-django项目自动化测试

Django 应用的测试应该写在应用的 tests.py 文件里。测试系统会自动的在所有以 tests 开头的文件里寻找并执行测试代码。 我们的 polls 应用现在有一个小 bug 需要被修复&#xff1a;我们的要求是如果 Question 是在一天之内发布的&#xff0c; Question.was_published_recentl…