GPU领域相关基础概念介绍

做图形图像领域始终绕不开对gpu相关业务接触,虽然没有直接做过gpu相关驱动项目,但是了解一些典型概念还是非常有必要的。

文章目录

    • 一、GPU基础概念
      • GPU基本定义---GPU/GPGPU/CUDA 从图形处理器 发展 到并行计算平台
      • GPU厂商盘点---Nvidia、AMD、Intel、ARM
      • 游戏、游戏引擎(如Unity)、图形API(如OpenGL)与 GPU(驱动driver)的关联
      • 图形API之OpenGL、Directx、Vulkan简介
      • 显卡Graphic Card与GPU关系
    • 二、GPU逻辑抽象理解涉及概念
      • GPU与CPU核心差别---更简单业务场景,追求极致并行计算
      • GPU对三维世界的描述过程---图形3D渲染管线 与 可编程逻辑概念
      • GPU逻辑设计的约束---围绕标准和上下游的限制(待更新)
    • 三、GPU逻辑基本处理流程介绍(待更新)
    • 参考

一、GPU基础概念

GPU基本定义—GPU/GPGPU/CUDA 从图形处理器 发展 到并行计算平台

GPU这个概念是由Nvidia公司1999年提出。在没有GPU之前,计算器基本上所有的任务都是交给CPU来做的。有GPU之后二者就进行了分工,CPU负责逻辑性强的事物处理和串行计算,GPU则专注于执行高度线程化的并行处理任务
发展过程:(1)最早期GPU(Graphic Processing Unit)仅用于图形渲染相关计算。(2)后来由于性能升级,提出 GPGPU(General Purpose GPU)的概念,把一些如浮点等计算处理包装成图形渲染任务,然后交给GPU来做。(3)继续Nvidia又提出CUDA(Compute Unified Device Architecture) 通用并行计算架构的概念,它包含CUDA指令集架构以及GPU内部的并行计算引擎,你只要使用一种类似于C语言的CUDA C语言,就可以开发CUDA程序,从而可以更加方便的利用GPU强大的计算能力,而不是像以前那样先将计算任务包装成图形渲染任务,再交由GPU处理。
在NPU出现之前,GPU基本上就是计算器中并行能力最强的计算逻辑;

GPU厂商盘点—Nvidia、AMD、Intel、ARM

1、英伟达Nvidia,于1999年率先推出GPU的图形解决方案。公司主要设计游戏和专业市场的GPU,移动计算和自动驾驶汽车的SoC,是GPU计算领域公认的全球领导者。它主要的GPU产线GeForce和AMD的Radeon形成直接竞争。
2、AMD,全球唯一可以同时提供高性能GPU和CPU的企业。AMD同时提供独立GPU和集成GPU,其集成GPU主要运用在Ryzen APU、嵌入式、半定制平台中,独立GPU分为Radeon和Instinct系列,主要用于游戏、专业视觉、服务器等应用。
3、英特尔intel,全球最大的PC GPU供应商。进入Core i时代后,英特尔通过将核芯显卡和CPU进行捆绑销售,利用CPU的庞大市场份额,确立了公司在集成GPU领域的寡头垄断地位。
4、ARM,全球最大的半导体IP提供商。全世界超过95%的智能手机和平板电脑都采用ARM架构。2019Q2,全球近43%的手机和平板GPU由Mali驱动。国产SoC中,有95%是基于ARM处理器技术,基于ARM架构的国产芯片出货量已经超过184亿。

游戏、游戏引擎(如Unity)、图形API(如OpenGL)与 GPU(驱动driver)的关联

当前较复杂的游戏避免从零开始解决各种通用问题,往往都是基于游戏引擎实现(可以理解为面向游戏应用的framework)。游戏引擎是用于制作游戏或其它实时交互交互图形程序的软件,大多数游戏引擎都包含了渲染、UI、动画、物理引擎、音效、脚本、网络等系统,常见的引擎有Cocos、Unreal Engine、Unity等。
图形API(如OpenGL、Directx、Vulkan)是用于定义2D/3D图形图像绘制渲染的一组接口(不包含实现),在游戏引擎看来,是其渲染引擎使用的API的一种。其目标是让AMD、Nvidia等图形硬件厂家实现统一的API ,开发者在不同的平台看不到使用差异。
各家厂商的GPU逻辑实现方案是不同的,GPU驱动或者显卡驱动 就是对逻辑硬件的使用封装,告诉操作系统如何使用GPU,这一部分由GPU厂商实现,厂商需要通过GPU驱动实现对图形API如OpenGL的支持,最终的主要实际绘制工作都是图形API调用GPU驱动完成。
GPU领域相关基础概念介绍_第1张图片

图形API之OpenGL、Directx、Vulkan简介

1、DirectX Direct eXtension,是由微软公司创建的多媒体编程API。DirectX可以让以windows为平台的游戏或多媒体程序获得更高的执行效率,加强3D图形和声音效果。DirectX已被广泛使用于Microsoft Windows、Microsoft XBOX、Microsoft XBOX 360和Microsoft XBOX ONE电子游戏开发。
2、OpenGL Open Graphics Library,由 Khronos Group推出,并1992年成立的OpenGL架构评审委员会 维护的开放图形库,用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程API。这个接口由近350个不同的函数调用组成,用来从简单的图形比特绘制复杂的三维景象。
3、Vulkan 同样由Khronos Group 2015年推出的称为下一代OpenGL(核心目标是解决性能问题)。GPU的可编程性越来越强,越来越多的平台开始支持加速图形,计算,视觉和深度学习,灵活性和可移植性变得很重要。Vulkan相对OpenGL主要调整方向:把更多的控制权交给开发者;最求更快的性能,更低的开销,更少的延迟;支持新功能的扩展,推动行业技术进步;
值得关注的是,DirectX是微软的产品不是产业标准,微软决定DirectX支持什么系统。OpenGL 是产业标准很多厂家和组织一起做的。 目前看Vulkan还在发展过程中,逐步体现出一些优势,但还并未形成主流。
GPU领域相关基础概念介绍_第2张图片

显卡Graphic Card与GPU关系

显卡Graphic Card与图像处理单元GPU在日常交流中经常混用,泛指图形渲染设备。严谨上来说,显卡上除了GPU还有显存,总线 和 其他外围组件 比如HDMITX的输出端口等等。
GPU领域相关基础概念介绍_第3张图片

二、GPU逻辑抽象理解涉及概念

初次接触gpu相关的领域可能发现很难理解它的抽象模型,个人总结的一些概念帮助后续理解

GPU与CPU核心差别—更简单业务场景,追求极致并行计算

CPU需要强通用性来处理各种不同数据类型,其逻辑判断又引入大量跳转和中断的处理,以及处理加速设计,使得内部结构异常复杂。 CPU不仅被Cache占据了大量空间,而且还有有复杂的控制逻辑和诸多优化电路,相比之下计算能力只是CPU很小的一部分。GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。 GPU采用了数量众多的计算单元和超长的流水线,但只有非常简单的控制逻辑并省去了Cache。
如下图,其中绿色的是计算单元,橙红色的是存储单元,橙黄色的是控制单元。
GPU领域相关基础概念介绍_第4张图片
GPU使用典型场景:1、深度学习的训练和推理;2、视频处理 编码、转码、片源修复;3、科学计算影视渲染制作、碰撞模拟、计算金融、基因工程、气象预测;4、图形可视化工程设计、非线性编辑、远程教育应用、3D展示。

GPU对三维世界的描述过程—图形3D渲染管线 与 可编程逻辑概念

图形渲染管线是实时图形学中的核心部分,把3D的物体渲染到2D画面上。通过给定虚拟相机、3D场景物体以及光源等场景要素来渲染一副2D的图像。 画面中对象物体的位置和形状是由它们的几何形状,环境的特性以及在环境中摄像机的位置所共同决定的,对象物体的外观表现则是由材质的属性,光源,纹理贴图,以及着色模型所影响。
GPU领域相关基础概念介绍_第5张图片
渲染过程可以大致划分为如下几个阶段,每个阶段通过其着色器shader程序进行处理,多个shader串行完成数据处理。1)Vertex Shader顶点着色器得到定点坐标,坐标变换(将输入的局部坐标变换到世界坐标、观察坐标和裁剪坐标等)。
2)Shape Assembly图元装配,将输入顶点组装成指定的图元,包括点,线段,三角形等,是构成实体模型的基本单位。
3)Geometry Shader几何着色器,将输入的点或线扩展成多边形。
4)Rasterization光栅化,将几何数据经过一系列变换后最终转换为像素,过程产生的是片元,片元中的每一个元素对应于帧缓冲区中的一个像素。
5)Fragment Shader片段着色器,片段着色器用来决定屏幕上像素的最终颜色。这个阶段会进行光照计算以及阴影处理,是渲染管线高级效果产生的地方。
6)Tests And Blending测试与混合,包括裁切测试、Alpha测试、模板测试和深度测试。没有经过测试的片段会被丢弃,不需要进行混合阶段;Alpha混合可以根据片段的alpha值进行混合,用来产生半透明的效果,这些测试与混合操作决定了屏幕视窗上每个像素点最终的颜色以及透明度。
GPU领域相关基础概念介绍_第6张图片
我们可以使用着色语言(如 OpenGL Shading Language)编写自定义的着色器进行定义,这里就涉及可编程的概念。你可以理解为 通过定义shader来定义一个渲染管道的一部分,对shader的定义修改过程 就类似对硬件逻辑的编辑,启动后 图形管道就的处理数据(每个阶段内部 数据处理是大量并行的) 得到最终的显示画面。

GPU逻辑设计的约束—围绕标准和上下游的限制(待更新)

三、GPU逻辑基本处理流程介绍(待更新)

参考

CPU和GPU的设计区别:https://www.cnblogs.com/biglucky/p/4223565.html
gpu wiki:https://en.jinzhao.wiki/wiki/Graphics_processing_unit
opengl wiki:https://en.jinzhao.wiki/wiki/OpenGL
opengl 学习网站:https://learnopengl.com/
Life of a triangle - NVIDIA’s logical pipeline:https://developer.nvidia.com/content/life-triangle-nvidias-logical-pipeline
nvidia GPU Management and Deployment Documentation:https://docs.nvidia.com/deploy/index.html
几分钟了解GPU是如何工作的:https://www.bilibili.com/video/BV1eE411E7Jf
英伟达架构师Stephen Jones关于GPU工作原理的演讲:https://www.zhihu.com/zvideo/1421421171497304064
针对移动端TBDR架构GPU特性的渲染优化:https://gameinstitute.qq.com/community/detail/123220
CUDA编程——GPU架构,由sp,sm,thread,block,grid,warp说起:
https://blog.csdn.net/junparadox/article/details/50540602

你可能感兴趣的:(音视频领域业务,人工智能,硬件架构,深度学习)