GPU为什么跑得快?

为什么GPU比CPU更重要 网友提问: 为什么现在更多需要用的是 GPU 而不是 CPU,比如挖矿甚至破解密码? 从煎蛋一篇文章ios热点密码不随机,破解仅需一分钟,看到提到: 不过,他们成功的原因在一定程度上也要归功于破解硬件的发展:4张AMD Radeon 7970显卡的GPU一同工作可在50秒内完成破解。 又产生了前段时间对挖矿(bitcoin)的疑问,网上查到资料挖矿的速度无不在于GPU给不给 阅读详情

GameRes游戏开发资源网 http://www.gameres.com

 

GPU 为什么跑得快?

计算机3D游戏最基本的一个要求是:能以每秒数十帧的速率,根据当前的三维景物实时生成三维动画。你所看到的图像会随着你视点的变化而即时改变,使人产生“身临其境”的感觉。高的帧率可以得到更流畅的画面。一般来说30fps就是可以接受的,但是将帧速增加至60fps则可以明显提升交互感。这与计算机影视制作不同,电影特效可以通过很多台工作站,花几十个小时绘制出长度仅为几秒的高质量画面,并不强调实时性。

渲染一个复杂的三维场景,需要在一秒内处理几千万个三角形顶点和光栅化几十亿的像素。早期的3D游戏,显卡只是为屏幕上显示像素提供一个缓存,所有的图形处理都是由CPU单独完成。图形渲染适合并行处理,擅长于执行串行工作的CPU实际上难以胜任这项任务。所以,那时在PC上实时生成的三维图像都很粗糙。不过在某种意义上,当时的图形绘制倒是完全可编程的,只是由CPU来担纲此项重任,速度上实在是达不到要求。

直到1995年,PC机领域第一款GPU (Graphical Processing Unit) 3dfx Voodoo出来以后,游戏的速度、画质才取得了一个飞跃。3dfx Voodoo有两个主要的特征:深度缓冲区(z-buffer)和纹理映射(texture mapping)。z-buffer执行“隐藏面消除”这一工作,这样可以避免渲染“不可视”的无效像素。利用纹理映射功能则可以十分逼真地表达物体表面细节。1999年,第二代GPU (Nvidia GeForce256,GeForce 2和ATI Radeon 7500)包括了图形的几何变换与光照计算功能(T&L)。而在此之前T&L都是由CPU完成的,这对CPU来说是很复杂的计算。第二代GPU解决了系统的一个瓶颈,减轻了CPU的负荷,速度明显提高了。但是由于是固定的渲染流水线,缺乏灵活性,束缚了开发人员的创造性。2001年,NIVIDA公司的GeForce 3首先引入了可编程的顶点着色器(Vertex Shader)单元。紧接着在2002年,可编程的像素着色器(Pixel Shader)单元也加入了GPU (见图1)。在绘制时,GPU首先接收CPU以三角形顶点形式的发送的几何数据。然后由可编程的顶点着色器单元进行处理,完成几何变换与顶点属性计算等功能。接着,這些三维空间的三角形由一个固定功能的光栅生成器转换为二维屏幕上的像素。每个像素的最终颜色值都通过运行在像素着色器上的小程序运算而得。目前三维游戏借助于GPU,已经能够实时生成十分细腻、逼真的画面。

图1.  GPU体系结构示意图

 


GPU的功能更新很迅速,平均每一年多便有新一代的GPU诞生,运算速度也越来越快。2004年,2004年推出的GPU Nvidia GeForce 6800 Ultra可达到峰值40 Gigaflops( 1 GigaFLOPS=1秒钟进行10亿次的浮点运算),2005年刚发布的 Nvidia GeForce 7800 GTX更是将峰值提高至令人惊讶的169 Gigaflops。而Intel 3GHz Pentium 4采用SSE指令集也只能达到6 Gigaflops(见图2)。GPU的运算速度如此之快,主要得益于GPU是对图形实时渲染量身定制的,具有两点主要特征:超长流水线与并行计算。

图2.  GPU、CPU浮点运算速度对比图

流水线技术与工厂里的装配线在原理上类似。如果装配一台汽车需要10个时间单元,将它分成10个流水线阶段,每个阶段分配一个时间单元,那么一条装配线每一个时间单元就可以生产一辆汽车。显然流水线模式的生产在理想状况下要比串行方式快了十倍。从这个例子中,可以看出为了提高流水线的速度,可以将任务划分成更小的单元,这样流水线的级数就增加了。CPU的设计中就使用了流水线原理,奔腾IV就有20级的流水线。但是流水线级数越多,一条指令从开始进入流水线到最后被执行完毕这之间的延迟间隔会相当大。换句话说,当流水线级数过多时,控制台发出一条指令,会经过很长时间才会真正生效,这不适用于快速反应要求很高的场合。打个比方,当用消防水龙头救火时,正常情况下打开阀门开关几秒后水便喷射出来,立刻可用来扑灭火灾。但是如果延迟了十几分钟,才有水流出,即使这时水流速度(吞吐量)还是很快,不过这时火灾就会造成更大的损失了。CPU的设计目标是不仅要有很高的吞吐量,还要求很小的延迟,这是CPU并不采用过多流水线级数的原因之一。另外流水线只有在满载时,才能发挥出最佳效率来。由于CPU执行的代码中有很多分支语句,因此长流水线需要用有效的技术来预测分支,尽量保持流水线在满负荷状态。但是一旦预测分支失败,就会清除流水线中滞留的大量无用指令,同时将新指令流重新注入流水线。但是如果流水线阶段过多的话,充满整个流水线就需要很长的时间,这样使流水线保持满载的机会不多,速度反而下降了。所以权衡利弊,CPU不会使用深度流水线。

但是GPU却采用了几百级的流水线,比如GeForce 3的流水线有800个阶段。是什么原因,GPU的应用为何可以忍受这么大的延迟呢?假设以每秒50帧的速率显示画面,那么只要求每帧在20ms以内生成就行。而GeForce 3的时钟频率是200MHz(每个时钟周期是5ns),5ns * 800 = 4μs < 20ms。所以对GPU来说这一些延迟根本不成问题,而且GPU中执行的Shader程序中,分支语句用的很少(在早期的GPU中,甚至不提供动态的分支语句)。因此,GPU的流水线深度变大后,利大于弊,大大提升了整体性能。GPU的执行速度很快,但是当运行从内存中获取纹理数据这样的指令时(由于内存访问是瓶颈,此操作比较缓慢),整个流水线便出现长时间停顿。在CPU内部,使用多级Cache来提高访问内存的速度。GPU中也使用Cache,不过Cache命中率不高,只用Cache解决不了这个问题。所以,为了保持流水线保持忙碌,GPU的设计者使用了多线程机制(multi-threading),见图3。当像素着色器针对某个像素的线程A遇到存取纹理的指令时,GPU会马上切换到另外一个线程B,对另一个像素进行处理。等到纹理从内存中取回时,可再切换到线程A。但是使用这种方法有一个前提,线程A与线程B没有数据依赖性,也就是说两线程之间无需通讯。如果线程B需要线程A提供某些数据,那么即使切换到线程B,线程B仍是无法运行,流水线还是处于空闲状态。不过幸运的是,图形渲染本质上是一个并行任务。无论是CPU送给GPU的顶点数据,还是GPU光栅生成器产生的像素数据都是互不相关的,可以并行地独立处理。而且顶点数据(xyzw),像素数据(RGBA)一般都用四元数表示,适合于并行计算。在GPU中专门设置了SIMD指令来处理向量,一次可同时处理四路数据。SIMD指令使用起来非常简洁,可以看一个顶点矩阵变换的例子(见图4)。此外,纹理片要么只能读取,要么只能写入,不允许可读可写,从而解决了存贮器访问的读写冲突。GPU这种对内存使用的约束也进一步保证了并行处理的顺利完成。

图3. GPU中的多线程机制

 

// c0 - c3 = 几何变换矩阵(world/view/proj matrix)

 

dp4 oPos.x, r0, c0      //指令dp4完成两个四元数的点积运算

//oP0s.x=(r0.x*c0.x)+(r0.y*c0.y)+

//       (r0.z*c0.z)+(r0.w*c0.w)

//四条dp4指令就实现了对一个顶点的矩阵变换

dp4 oPos.y, r0, c1   

dp4 oPos.z, r0, c2   

dp4 oPos.w, r0, c3   

 

 

 

 

 

 

 

 

 

图4.  GPU中的SIMD指令

 


为了进一步提高并行度,可以增加流水线的条数。在GeForce 6800 Ultra中,有多达16组像素着色器流水线, 6组顶点着色器流水线。多条流水线可以在单一控制部件的集中控制下运行,也可以独立运行。在单指令多数据流(SIMD)的结构中,单一控制部件向每条流水线分派指令,同样的指令被所有处理部件同时执行。另外一种控制结构是多指令多数据流(MIMD),每条流水线都能够独立于其他流水线执行不同的程序。GeForce 6800 Ultra的顶点着色器流水线使用MIMD方式控制,像素着色器流水线使用SIMD结构。MIMD能比较有效率地执行分支程序,而SIMD体系结构运行条件语句时会造成很低的资源利用率。不过SIMD需要硬件少,这是一个优势。

CPU中大部分晶体管主要用于构建控制电路(象分支预测等)和Cache,只有少部分的晶体管来完成实际的运算工作。而GPU的控制相对简单,而且对Cache的需求小,所以大部分晶体管可以组成各类专用电路、多条流水线,使得GPU的计算速度有了突破性的飞跃,拥有了惊人的处理浮点运算的能力。现在CPU的技术进步正在慢于摩尔定律,而GPU(视频卡上的图形处理器)的运行速度已超过摩尔定律,每6个月其性能加倍。

虽然GPU最初专门是为图形渲染设计的,但是GPU还可以有效地执行多种通用计算,从线性代数和信号处理到数值仿真等等。有的专家甚至认为GPU将进入计算的主流。过去,学生们在课堂学习计算机体系结构时,听老师讲解各类并行计算机时,仿佛觉得这些东西都是科学家才使用的尖端产品。可又何曾想到,现在并行计算机(GPU) 就在我们的普通PC电脑内,触手可及。

 

主要参考文献:

1.  GPU Gems 2 : Programming Techniques for High-Performance Graphics
and General-Purpose Computation (Gpu Gems): Books by Matt Pharr,Randima Fernando.

2.  The Cg Tutorial: The Definitive Guide to Programmable Real-Time Graphics.

3. Lindholm E, Kilgard MJ, Moreton H. A user-programmable vertex engine. In: Proc. of the SIGGRAPH 2001. Los Angeles , 2001. 149~158.

 

 

 

 

 

 

作者:沈璐

EMAIL:szlongman@hotmail.com

GameRes游戏开发资源网 http://www.gameres.com

CPU 和 GPU:为什么GPU更适合深度学习? GPU(图形处理单元)的诞生,初衷是为了专门应对渲染复杂图形和加速视频处理的需求。随着计算机图形技术的发展,实时 3D 图形的渲染需求逐渐增多,传统的CPU(中央处理器)难以高效处理这些繁重的计算任务。GPU 的出现大大缓解了这一负担,通过其独特的架构将大量的图形处理操作从 CPU 中剥离出来,从而极大地提升了系统的图形处理能力。GPU 的架构设计非常独特,由成百上千个小型处理单元组成,每个处理单元能够独立并行执行指令。这种高度并行的处理能力使 GPU 能够同时处理海量数据。 阅读详情

相关推荐

《Gpu Gems》《Gpu Pro》《Gpu Zen》系列读书笔记

本篇blog简单记录了一下最近一两年一直在读的一系列书目。《Gpu Gems》1-3三部,《Gpu Pro》1-7七部,《Gpu Zen》一部。针对每一项渲染技术,进行全系列书的总结,从这个角度来看,可以看到一项技术,近十五六年来的进化过程。

puppet_master的专栏 2万+

【深度学习】GPU为什么这么高效

报告者:姜思君摘要:机器学习和深度学习通常需要从海量的数据中学习到其中的知识,从而应用于各种任务之中。在学习的过程中,GPU是强大而有效的计算单元,能够大幅缩减训练时间。今天的paper reading将深入这种关键设备的内部,了解其在深度学习中的运作原理。正文: GPU是深度学习使用的关键计算单元,大多数任务都在上面执行。虽然使用GPU实现深度学习已经成为目前的一种通用做法,但广大研究人员实...

fengdu78的博客 431

AI计算,为什么要用GPU?

几年后,2012年,神经网络之父杰弗里·辛顿(Geoffrey Hinton)的两个学生——亚历克斯·克里切夫斯基(Alex Krizhevsky)、伊利亚·苏茨克沃(Ilya Sutskever),利用“深度学习+GPU”的方案,提出了深度神经网络AlexNet,将识别成功率从74%提升到85%,一举赢得Image Net挑战赛的冠军。根据形态,GPU可分为独立GPU(dGPU,discrete/dedicated GPU)和集成GPU(iGPU,integrated GPU),也就是常说的独显、集显。

经营范围: CTA、SRRC、CCC、移动、电信、联通入库 1675

GPU为什么如此之快?

GPU为什么如此之快?

weixin_45639224的博客 1437

虚拟机Ubuntu连接USRP

笔记本通过网线连接USRP。

xiaozir的博客 2308

【Hadoop】开发插件安装

前言 Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。 Eclipse的插件机制是轻型软件组件化架构。在客户机平台上,Eclipse使用插件来提供所有的附加功能,例如支持Java...

weixin_44039347的博客 3209

【零基础】搞懂GPU为什么比CPU“快”

一、前言   近几年深度学习在各领域大显神威,而”GPU加速"也得到了越来越多的篇幅,似乎任何程序只要放到GPU上运行那速度就是杠杠的。GPU代替CPU计算已成了大势所趋?我先告诉你结论”那是不可能滴“,然后咱们再来说说”GPU为什么比CPU快“。二、图形处理,GPU的源起   GPU是显卡的计算单元,就好比CPU是电脑的计算核心,有时我们直接就把GPU称为显卡。显而易见,GPU从诞生之初就是...

布兰姥爷的博客 5218

线上专利申请(超详细)| 签名确认

在【法人登录】页面点击【证书登录】按钮,弹出证书登录提示框,点击【确 认】按钮,进入到输入证书密码页面,点击【取消】按钮,取消本次操作。企业在提交申请时,需要增加签名,如使用企业账户点击提交,会弹出“法人、代理机构不能签名,请使用经办人签名”,这个时候就需要换个账号了。在需要签名时,将专利官网的登录方式点击法人登录,选择扫码登录,使用移动端经办人账户的扫一扫功能扫描登录。登录完成后,再点击签名,使用移动端扫一扫功能,扫描签名,输入证书号,确认签名,并提交。最后,祝大家的申请都成功!

weixin_62112323的博客 9112

CPU和GPU的区别

核心数量的增加通常可以提升并行处理能力,但CPU的核心设计更加复杂,适合处理更复杂的任务。在GPU中,"核心"指的是用于执行计算任务的处理单元。与CPU的核心(通常较少,适合执行复杂的串行任务)不同,GPU的核心数量非常庞大,通常有数百到数千个。:CPU核心在执行每个任务时需要更多的上下文切换和复杂的逻辑判断,而GPU核心则可以同时处理多个数据流,极大地提高了并行处理能力。:GPU核心的设计通常比CPU核心简单,专注于执行重复的计算操作,如加法、乘法等,因此在处理图形和数据时效率极高

lf_1234的博客 1201

open-mmlab / mmpose安装、使用教程

mmpose安装、使用教程mmpose安装教程1. 安装mmcv-full2. 安装MMPose2. 安装mmdet使用教程1. 预测图片2. 预测视频 mmpose mmpose是商汤旗下有又一款好用的工具箱,主要是针对姿态识别任务开发的,包括人体姿态识别和动物姿态识别。里面继承很多现成的网络可以供大家使用,并且提供了训练好的权重。用户可以更具自己的需求训练自己的数据,或者直接应用他们的结果,反正就是很全面啦!!!! github连接:https://github.com/open-mmlab/mmpos

CharmsLUO的博客 1万+

Unity安卓打包实战:SDK与JDK配置全攻略

本文详细介绍了Unity安卓打包过程中SDK与JDK的配置方法,包括工具下载、安装步骤、环境变量设置及常见错误排查。通过实战指南帮助开发者快速完成Unity安卓打包环境搭建,提升开发效率。

weixin_30338481的博客 416

模型训练中,不调用gpu比调用gpu更快的情况

gpu,cpu,训练时间

永远的我们的博客 3548

Halcon深度图转点云实战:从XYZ映射到3D可视化全解析

本文详细解析了如何使用Halcon将深度图转换为点云图,涵盖从XYZ映射到3D可视化的全流程。通过实战案例和代码示例,介绍了深度图预处理、xyz_to_object_model_3d核心转换及3D可视化技巧,适用于工业检测、三维重建等场景。

stem5的博客 766

GPU为什么跑得快?

过去,学生们在课堂学习计算机体系结构时,听老师讲解各类并行计算机时,仿佛觉得这些东西都是科学家才使用的尖端产品。可又何曾想到,现在并行计算机GPU( Graphical Processing Unit) 就在我们的普通PC电脑内,触手可及。现在CPU的技术进步正在慢于摩尔定律,而GPU(视频卡上的图形处理器)的运行速度已超过摩尔定律,每6个月其性能加倍。WHY? 前阵子应一位编辑的约稿,写了一篇《...

weixin_30437847的博客 187

从0到全栈:C#/.NET/.NET Core终极学习路线——2025年开发者必修的12个阶段与30个实战项目

【代码】从0到全栈:C#/.NET/.NET Core终极学习路线——2024年开发者必修的12个阶段与30个实战项目。

墨夶的博客 2042

机器学习实战26-一种基于LightGBM的股市涨跌预测系统与代码实现过程

在全球经济一体化的背景下,股市作为经济活动的晴雨表,其波动与预测对于投资者、金融机构乃至国家政策制定者而言至关重要。随着金融市场的日益复杂化与信息量的爆炸式增长,股市分析不再仅限于基本面和技术面的传统研究,而是迫切需要更加精准、高效及智能化的方法来捕捉市场动态,以辅助决策制定。模型评估是确保LightGBM股市预测系统准确性和稳定性不可或缺的一环。通过综合运用多种评估指标、科学的验证方法以及深入的性能分析,我们不仅能够全面理解模型的能力和限制,还能为持续优化模型、提升预测准确性奠定坚实基础。

微学AI的博客 2328

【31】GPU(下):为什么深度学习需要使用GPU?

GPU发展历史:1.加速卡(顶点处理仍在CPU完成,图像渲染受制于CPU的性能);2.带有顶点处理功能的显卡:NVidia推出GeForce 256 显卡;3.可编程管线(Programable Function Pipeline)的引入:2001年的Direct3D 8.0【微软第一次引入】;4. 可编程管线出现;5.统一着色器架构

星Yeah 的博客 2万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

大模型为什么需要 GPU?

理解GPU的重要性,不仅仅是理解一项硬件技术,更是理解我们这个时代AI如何从理论走向实践、从实验室走向千家万户的关键路径。在可见的未来,GPU仍将是AI进步的核心驱动力之一。但我们也期待,更多元、更高效、更普惠的算力选择不断出现,推动人工智能技术走向更广阔的世界。

优秀、有趣的AI知识共享! 1239

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【tensorflow】为什么CUDA装好了,Tensorflow-GPU不能用?

为什么CUDA装好了,Tensorflow-GPU不能用? 当我们把CUDA、cudnn、tensorflow-GPU都装好,但在tensorflow GPU测试tf.test.is_gpu_avaiable()却始终返回false,怎么办? import tensorflow as tf tf.test.is_gpu_available() FALSE 可能的原因如下: ———————————————————————————————— 1,CUDA、cudnn、Tensorflow、python版本并不

xiangxiang613的专栏 5万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

“既然 GPU 这么好,那为什么我们还要用 CPU?”

【优快云 编者按】在当今这个计算能力飞速发展的时代,GPU 的崛起无疑为诸多领域带来了革命性的变化。凭借其强大的并行处理能力,GPU 在深度学习、图像处理、科学计算等需要大量数值运算的场景中大放异彩,让许多之前难以想象的计算任务变得触手可及。然而,即便 GPU 有着诸多令人瞩目的优势,CPU 依然在我们的计算世界中扮演着不可或缺的角色。原文链接:https://codingstuff.subst...

优快云资讯 1万+

MinerU新手必看:不用买显卡,云端GPU照样跑得快

本文介绍了如何利用“星图GPU”平台自动化部署📑 MinerU 智能文档理解服务镜像,实现无需本地显卡的高效AI文档解析。通过云端GPU算力,用户可快速将PDF转换为结构化文本,应用于模型微调、RAG系统构建或开发无障碍助盲APP等场景,显著降低AI应用门槛。

FrostfirePhoenix43的博客 751

AI训练,为什么需要GPU?

随着人工智能热潮,GPU成为了AI大模型训练平台的基石,决定了算力能力。为什么GPU能力压CPU,成为炙手可热的主角呢?首先我们要先了解一下GPU的分类。提到分类,就得提及到芯片。半导体芯片分为和。其中,数字芯片的市场规模占比较大,达到70%左右。。由上图可以看到,。现在特别火爆的AI,用到的所谓“AI芯片”,也主要是指它们。下面先了解下人工智能技术。

wszswllnzn_的博客 3152

大模型训练为什么依赖GPU

近年来,随着人工智能技术的飞速发展,特别是深度学习领域的进步,大模型的训练逐渐成为研究和工业界的热点。作为大模型训练中的核心硬件,GPU(图形处理单元)扮演了至关重要的角色。那么,为什么大模型训练如此依赖GPU呢?本文将从多个角度探讨这一问题。

码上飞扬的博客 1825
上一篇: 游戏AI基础
下一篇: 浅析3ds max脚本
海之子99
博客等级 码龄21年 53粉丝 147原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值