AI计算,为什么要用GPU?

今天这篇文章,我们继续来聊聊芯片。


 

在之前的文章里,小枣君说过,行业里通常会把半导体芯片分为数字芯片和模拟芯片。其中,数字芯片的市场规模占比较大,达到70%左右。

数字芯片,还可以进一步细分,分为:逻辑芯片、存储芯片以及微控制单元(MCU)。


 

存储芯片和MCU以后再介绍,今天小枣君重点讲讲逻辑芯片


 

逻辑芯片,其实说白了就是计算芯片。它包含了各种逻辑门电路,可以实现运算与逻辑判断功能,是最常见的芯片之一。

大家经常听说的CPU、GPU、FPGA、ASIC,全部都属于逻辑芯片。而现在特别火爆的AI,用到的所谓“AI芯片”,也主要是指它们。


 

█CPU(中央处理器)

先说说大家最熟悉的CPU,英文全称Central Processing Unit,中央处理器。

CPU

但凡是个人都知道,CPU是计算机的心脏。

现代计算机,都是基于1940年代诞生的冯·诺依曼架构。在这个架构中,包括了运算器(也叫逻辑运算单元,ALU)、控制器(CU)、存储器、输入设备、输出设备等组成部分。

冯·诺依曼架构


 

数据来了,会先放到存储器。然后,控制器会从存储器拿到相应数据,再交给运算器进行运算。运算完成后,再把结果返回到存储器。

这个流程,还有一个更有逼格的叫法:“Fetch(取指)-Decode(译码)- Execute(执行)-Memory Access(访存)-Write Back(写回)”。

大家看到了,运算器和控制器这两个核心功能,都是由CPU负责承担的。

具体来说,运算器(包括加法器、减法器、乘法器、除法器),负责执行算术和逻辑运算,是真正干活的。控制器,负责从内存中读取指令、解码指令、执行指令,是指手画脚的。

除了运算器和控制器之外,CPU还包括时钟模块和寄存器(高速缓存)等组件。


 

时钟模块负责管理CPU的时间,为CPU提供稳定的时基。它通过周期性地发出信号,驱动CPU中的所有操作,调度各个模块的工作。

寄存器是CPU中的高速存储器,用于暂时保存指令和数据。它的CPU与内存(RAM)之间的“缓冲”,速度比一般的内存更快,避免内存“拖累”CPU的工作。

寄存器的容量和存取性能,可以影响CPU到对内存的访问次数,进而影响整个系统的效率。后面我们讲存储芯片的时候,还会提到它。

CPU一般会基于指令集架构进行分类,包括x86架构和非x86架构。x86基本上都是复杂指令集(CISC),而非x86基本为精简指令集(RISC)。

PC和大部分服务器用的是x86架构,英特尔和AMD公司占据主导地位。非x86架构的类型比较多,这些年崛起速度很快,主要有ARM、MIPS、Power、RISC-V、Alpha等。以后会专门介绍。


 

█GPU(图形处理器)

再来看看GPU。

GPU是显卡的核心部件,英文全名叫Graphics Processing Unit,图形处理单元(图形处理器)。

GPU并不能和显卡划等号。显卡除了GPU之外,还包括显存、VRM稳压模块、MRAM芯片、总线、风扇、外围设备接口等。

显卡

1999年,英伟达(NVIDIA)公司率先提出了GPU的概念。

之所以要提出GPU,是因为90年代游戏和多媒体业务高速发展。这些业务给计算机的3D图形处理和渲染能力提出了更高的要求。传统CPU搞不定,所以引入了GPU,分担这方面的工作。

根据形态,GPU可分为独立GPU(dGPU,discrete/dedicated GPU)和集成GPU(iGPU,integrated GPU),也就是常说的独显、集显。

GPU也是计算芯片。所以,它和CPU一样,包括了运算器、控制器和寄存器等组件。

但是,因为GPU主要负责图形处理任务,所以,它的内部架构和CPU存在很大的不同。

如上图所示,CPU的内核(包括了ALU)数量比较少,最多只有几十个。但是,CPU有大量的缓存(Cache)和复杂的控制器(CU)。

这样设计的原因,是因为CPU是一个通用处理器。作为计算机的主核心,它的任务非常复杂,既要应对不同类型的数据计算,还要响应人机交互。

复杂的条件和分支,还有任务之间的同步协调,会带来大量的分支跳转和中断处理工作。它需要更大的缓存,保存各种任务状态,以降低任务切换时的时延。它也需要更复杂的控制器,进行逻辑控制和调度。

CPU的强项是管理和调度。真正干活的功能,反而不强(ALU占比大约5%~20%)。

如果我们把处理器看成是一个餐厅的话,CPU就像一个拥有几十名高级厨师的全能型餐厅。这个餐厅什么菜系都能做,但是,因为菜系多,所以需要花费大量的时间协调、配菜,上菜的速度相对比较慢。

而GPU则完全不同。


 

GPU为图形处理而生,任务非常明确且单一。它要做的,就是图形渲染。图形是由海量像素点组成的,属于类型高度统一、相互无依赖的大规模数据。

所以,GPU的任务,是在最短的时间里,完成大量同质化数据的并行运算。所谓调度和协调的“杂活”,反而很少。


 

并行计算,当然需要更多的核啊。


 

如前图所示,GPU的内核数,远远超过CPU,可以达到几千个甚至上万个(也因此被称为“众核”)。


 

RTX4090有16384个流处理器

GPU的核,称为流式多处理器(Stream Multi-processor,SM),是一个独立的任务处理单元。

在整个GPU中,会划分为多个流式处理区。每个处理区,包含数百个内核。每个内核,相当于一颗简化版的CPU,具备整数运算和浮点运算的功能,以及排队和结果收集功能。


 

GPU的控制器功能简单,缓存也比较少。它的ALU占比,可以达到80%以上。

虽然GPU单核的处理能力弱于CPU,但是数量庞大,非常适合高强度并行计算。同等晶体管规模条件下,它的算力,反而比CPU更强。

还是以餐厅为例。GPU就像一个拥有成千上万名初级厨师的单一型餐厅。它只适合做某种指定菜系。但是,因为厨师多,配菜简单,所以大家一起炒,上菜速度反而快。

CPU vs GPU


 

█GPU与AI计算

大家都知道,现在的AI计算,都在抢购GPU。英伟达也因此赚得盆满钵满。为什么会这样呢?


 

原因很简单,因为AI计算和图形计算一样,也包含了大量的高强度并行计算任务。

深度学习是目前最主流的人工智能算法。从过程来看,包括训练(training)和推理(inference)两个环节。


 

在训练环节,通过投喂大量的数据,训练出一个复杂的神经网络模型。在推理环节,利用训练好的模型,使用大量数据推理出各种结论。

训练环节由于涉及海量的训练数据,以及复杂的深度神经网络结构,所以需要的计算规模非常庞大,对芯片的算力性能要求比较高。而推理环节,对简单指定的重复计算和低延迟的要求很高。

它们所采用的具体算法,包括矩阵相乘、卷积、循环层、梯度运算等,分解为大量并行任务,可以有效缩短任务完成的时间。

GPU凭借自身强悍的并行计算能力以及内存带宽,可以很好地应对训练和推理任务,已经成为业界在深度学习领域的首选解决方案。

目前,大部分企业的AI训练,采用的是英伟达的GPU集群。如果进行合理优化,一块GPU卡,可以提供相当于数十其至上百台CPU服务器的算力。

NVIDIA HGX A100 8 GPU 组件

不过,在推理环节,GPU的市场份额占比并没有那么高。具体原因我们后面会讲。

将GPU应用于图形之外的计算,最早源于2003年。

那一年,GPGPU(General Purpose computing on GPU,基于GPU的通用计算)的概念首次被提出。意指利用GPU的计算能力,在非图形处理领域进行更通用、更广泛的科学计算。

GPGPU在传统GPU的基础上,进行了进一步的优化设计,使之更适合高性能并行计算。

2009年,斯坦福的几位学者,首次展示了利用GPU训练深度神经网络的成果,引起了轰动。

几年后,2012年,神经网络之父杰弗里·辛顿(Geoffrey Hinton)的两个学生——亚历克斯·克里切夫斯基(Alex Krizhevsky)、伊利亚·苏茨克沃(Ilya Sutskever),利用“深度学习+GPU”的方案,提出了深度神经网络AlexNet,将识别成功率从74%提升到85%,一举赢得Image Net挑战赛的冠军。

左起:伊利亚·苏茨克沃,亚历克斯·克里切夫斯基,杰弗里·辛顿

这彻底引爆了“AI+GPU”的浪潮。英伟达公司迅速跟进,砸了大量的资源,在三年时间里,将GPU性能提升了65倍。

除了硬刚算力之外,他们还积极构建围绕GPU的开发生态。他们建立了基于自家GPU的CUDA(Compute Unified Device Architecture)生态系统,提供完善的开发环境和方案,帮助开发人员更容易地使用GPU进行深度学习开发或高性能运算。


 

这些早期的精心布局,最终帮助英伟达在AIGC爆发时收获了巨大的红利。目前,他们市值高达1.22万亿美元(英特尔的近6倍),是名副其实的“AI无冕之王”。


【以上信息由艾博检测整理发布,如有出入请及时指正,如有引用请注明出处,欢迎一起讨论,我们一直在关注其发展!专注:CCC/SRRC/CTA/运营商入库】

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

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

相关文章

LeetCode——栈

栈 特点&#xff1a; 先进后出&#xff0c;后进先出 适合&#xff1a; 相当于一个暂存的地方&#xff0c;方便回来找 特&#xff1a; 单调栈——需要找到左边或者右边第一个比当前位置数大或者小的数字 数据类型 LinkedList<T> stack new LinkedList<>(); ad…

ECharts配置个性化图表:圆环、立体柱状图

官网调试地址&#xff1a;调试 效果图&#xff1a; 配置&#xff1a; option {color: [#29BEFF, #A2DC00, #FFC400, #FF7F5C, #CA99FC],// 提示窗tooltip: {trigger: item,show: false},// 图例legend: {top: 5%,left: center,show: false},// 数据series: [{name: Access …

C++常用遍历算法---for_each、transform

C常用遍历算法—for_each、transform 1、for_each—遍历容器 1.1 内置数据类型 void print1(int num) {cout << "这个数字是&#xff1a;" << num << endl; }void test1() {vector<int> numList;for (int i 0; i < 10; i){numList.pu…

LM393典型应用Multisim仿真设计

一、LM393简介: LM393是由两个独立的、高精度电压比较器组成的IC。LM393失调电压低,最大为2.0mv。可以是单电源供电,也可以是双电源供电,供电电压范围比较宽,电源功耗比较低。 LM393主要应用于限幅器、简单的模数转换器、脉冲发生器、方波发生器、延时发生器、宽频…

微同城生活源码系统:专业搭建本地生活服务平台 附带完整的安装部署教程

随着移动互联网的普及&#xff0c;人们越来越依赖手机进行日常生活中的各种活动&#xff0c;包括购物、餐饮、娱乐等。而传统的本地生活服务平台往往存在着功能单一、用户体验差等问题&#xff0c;无法满足用户日益增长的需求。因此&#xff0c;开发一款功能强大、易用性强的本…

获取 Linux 系统中所有网络命名空间的路由表

获取 Linux 系统中所有网络命名空间的路由表 以下是一个获取 Linux 系统中所有网络命名空间的路由表的 Bash 脚本示例&#xff1a; #!/bin/bash# 获取当前系统中所有网络命名空间的列表 ns_list$(ip netns list | awk {print $1})# 循环遍历每个网络命名空间 for ns in $ns_l…

css文本溢出处理——单行、多行

日常开发中&#xff0c;经常会遇到需要展示的文本过长&#xff0c;这种情况下&#xff0c;为了提高用户的使用体验&#xff0c;最常见的处理方式就是把溢出的文本显示成省略号。 处理文本的溢出的方式&#xff1a;1&#xff09;单行文本溢出&#xff1b; 2&#xff09;多行文本…

TikTok未来十年:平台发展的前瞻性思考

TikTok&#xff0c;作为全球短视频平台的领军者&#xff0c;已经在数字时代崭露头角。然而&#xff0c;随着技术的飞速发展和用户需求的变化&#xff0c;TikTok未来十年的发展前景充满了挑战和机遇。本文将深入探讨TikTok未来的发展方向&#xff0c;从技术、内容、社交和商业等…

SQL是什么?它有什么功能和特性?它值不值得我们去学习?我们该如何去学习呢?

SQL&#xff08;Structured Query Language&#xff09;是一种用于管理关系型数据库的标准化语言。它是一种专门用于查询、操作和管理数据库的语言&#xff0c;可以用于创建、修改和删除数据库中的数据表、索引和视图&#xff0c;以及执行数据查询、插入、更新和删除操作。 SQ…

OpenCV-Python(24):模板匹配

原理及介绍 模板匹配是一种常用的图像处理技术&#xff0c;它用于在一幅图像中寻找与给定模板最匹配的区域(在一副大图中搜寻查找模版图像位置的方法)。模板匹配的基本思想是将模板图像在目标图像上滑动&#xff0c;并计算它们的相似度&#xff0c;找到相似度最高的位置即为匹配…

2024款HarmonyOS教程 Next_HarmonyOS4鸿蒙OS最新入门实战全套教程

IT营大地老师2024款HarmonyOS视频教程重磅来袭&#xff01;视频 课件 源码等配套资料均可免费下载学习&#xff08;网盘下载地址&#xff1a;最新HarmonyOS系列教程下载地址-IT营大地老师--更新中&#xff09; 2024新出HarmonyOS Next_HarmonyOS4鸿蒙OS视频教程目录介绍&#…

LeetCode做题总结 15. 三数之和(未完)

不会做&#xff0c;参考了代码随想录和力扣官方题解&#xff0c;对此题进行整理。 代码思路 思想&#xff1a;利用双指针法&#xff0c;对数组从小到大排序。先固定一个数&#xff0c;找到其他两个。 &#xff08;1&#xff09;首先对数组从小到大排序。 &#xff08;2&…

2024史上最全的 iOS 各种测试工具集锦!

引言&#xff1a; 随着移动互联网的兴起&#xff0c;APP 测试的越来越被重视&#xff01;Android 系统因为自己的开源性&#xff0c;测试工具和测试方法比较广为流传&#xff0c;但是 iOS 系统的私密性&#xff0c;导致很多测试的执行都有点麻烦。 为了帮助大家更好的执行 iO…

Axure鲜花速递商城网站原型图,花店网站O2O本地生活电商平台

作品概况 页面数量&#xff1a;共 30 页 兼容软件&#xff1a;仅支持Axure RP 9/10&#xff0c;非程序软件无源代码 应用领域&#xff1a;鲜花网、花店网站、本地生活电商 作品特色 本作品为「鲜花购物商城」网站模板&#xff0c;高保真高交互&#xff0c;属于O2O本地生活电…

css设置图片左上角加文字

要在图片的左上角添加文字&#xff0c;可以使用CSS的position属性来定位文字元素&#xff0c;然后使用z-index属性来确保文字在图片上方显示。以下是示例CSS代码&#xff1a; css&#xff1a; .container {position: relative; }.text {position: absolute;top: 0;left: 0;z-…

香橙派--关于jammy-xfce-arm64.f12a43b3e629442a073a7236bf9166ce.tar.lz4的rootfs定制与镜像制作

使用 x64 的 Ubuntu22.04 电脑编译 Linux SDK&#xff0c;即 orangepi-build&#xff0c;支持在安装有 Ubuntu 22.04 的电脑上运行&#xff0c;所以下载 orangepi-build 前&#xff0c;请首先确保自己电脑已安装的 Ubuntu 版本是 Ubuntu22.04。查看电脑已安装的 Ubuntu 版本的命…

论文阅读--EFFICIENT OFFLINE POLICY OPTIMIZATION WITH A LEARNED MODEL

作者&#xff1a;Zichen Liu, Siyi Li, Wee Sun Lee, Shuicheng YAN, Zhongwen Xu 论文链接&#xff1a;Efficient Offline Policy Optimization with a Learned Model | OpenReview 发表时间&#xff1a; ICLR 2023年1月21日 代码链接&#xff1a;https://github.com/s…

什么是Maven ??? (以及关于依赖,中央仓库,国内源)

文章目录 什么是 Maven创建第一个 Maven 项目依赖管理Maven 的仓库Maven 如何设置国内源 什么是 Maven Maven &#xff1a;用于构建和管理任何基于java的项目的工具。**说白了就是管理 Java项目 的工具。**我们希望我们已经创建了一些东西&#xff0c;可以使Java开发人员的日常…

鸿蒙HarmonyOS- 弹框组件库

简介 今天介绍一个基于ArkUI框架开发的弹框组件库&#xff0c;该库基于ArkUI的弹框基础功能和自定义能力。针对通用的弹框业务场景&#xff0c;该库提供了丰富的组件弹窗功能。 包括确认输入弹窗、列表展示选择弹窗、自定义底部/顶部弹窗、自定义动画弹窗、自定义全屏弹窗、消息…

20.oracle保留小数或整数函数

oracle的函数主要有这几种 1、ceil(n)取整(大)&#xff0c;取比真值大的最小整数&#xff0c;注意正负数的取值&#xff1a; 如ceil(251.0001)252&#xff0c;ceil(-251.0001)-251&#xff0c;ceil(-251.9999)-251&#xff1b; select ceil(251.0000001) from dual; 结果&…