精华内容
下载资源
问答
  • photoshop 图形处理器 (gpu)卡常见问题解答 Photoshop 图形处理器 (GPU) 卡常见问题解答在此页 面上 Photoshop 如何利用图形处理器哪些图形卡已经过测 试图形处理器和显示器的最低要求是什么如何在 Photoshop 中使用...
  • NFV图形处理器-源码

    2021-02-16 17:43:00
    NFV图形处理器
  • 21ic下载_GPU高通Adreno图形处理器全解析21ic下载_GPU高通Adreno图形处理器全解析21ic下载_GPU高通Adreno图形处理器全解析21ic下载_GPU高通Adreno图形处理器全解析
  • 移动图形处理器的纹理Cache设计
  • 鉴于图形处理器的应用日趋广泛,多核SoC的研究日益迫切,设计了一款多核交互式图形处理器MIGPU-9及其完整的软件系统.为了兼顾编程灵活性和计算高效性,设计了具有专用指令的前端处理器FEP、支持定点/浮点运算与函数求值...
  • 为了解决这一问题,提出了基于宇宙计算的图形处理器算法。研究了两点式角相关函数以及孔径质量统计这两种宇宙学的计算方法,构建算法代码,并使用统一计算设备架构在图形处理器上实现了这两种算法;比较了算法在中央...
  • 基于图形处理器加速的医学图像配准技术进展
  • 分析图形处理器单元(GPU)指令集架构
  • 简化球谐近似模型的图形处理器加速求解
  • 可重配置图形处理器的照明算法的性能表征
  • 论文范文对于图形处理器的统一计算设备架构数据流并行处理方法研讨 1引言 受到市场的竞争和需求的影响图形处理器的计算能力在近年来以超过摩尔定律的每年2.5-3倍的速度不断增长随着Tesla架构的图形处理器的问世图形...
  • 基于图形处理器GPU的通用计算
  • 基于图形处理器的点云快速光顺,张连伟,胡庭波,点云数据光顺是点模型数字几何处理的一个重要研究内容。在海量数据规模应用中,不仅需要较高的光顺质量,而且需要有快速的处理速
  • 图形处理器加速的联机分析处理系统,方艺璇,陈红,基于现有联机分析处理系统(Online Analytical Processing, OLAP)的不足和图形处理器(Graphics Processing Unit, GPU)的发展,研制了GOOLAP(GPU Oriented
  • 能源效率驱动的移动图形处理器的可编程和可自重配置架构
  • Matlab的图形处理器并行计算及其在拓扑优化中的应用.pdf
  • CudaDB集群 通过图形处理器集群,使用 NVIDIA CUDA sdk 在大规模并行显卡处理器上进行数据库集群
  • 基于图形处理器的边缘检测算法。论文,还可以,图像处理的同学可以研究下
  • 英特尔图形处理器第8代架构 The Compute Architecture of Intel®Processor Graphics Gen8 一.概述 简介 了解英特尔体系结构的软件、硬件和产品处理器图形第8代。与运行相关的架构特性,英特尔处理器图形上的...

    英特尔图形处理器第8代架构

    The Compute Architecture of Intel®Processor Graphics Gen8

    一.概述
    在这里插入图片描述

    1. 简介

    了解英特尔体系结构的软件、硬件和产品处理器图形第8代。与运行相关的架构特性,英特尔处理器图形上的计算应用程序。

    这个Gen8更新了“Intel的计算体系结构”中的大部分内容,处理器图形Gen7.5“使其能够独立运行。

    英特尔的片上集成处理器图形体系结构提供卓越的实时3D渲染和媒体性能。然而,它的底层计算架构也提供了接近teraFLOPS性能的通用计算能力。构建英特尔处理器图形处理器的整数计算能力、分层的高带宽内存层次结构和深度集成具有片上CPU和其他片上系统(SoC)设备。

    它是一个模块,实现从手机到平板电脑和笔记本电脑,高端台式机和服务器。
    2. 什么是英特尔图形处理器?

    英特尔处理器图形是指提供图形、计算、媒体和英特尔许多SoC产品的显示功能。在Intel,架构师通俗地称为Intel处理器图形体系结构简单地称为“gen”,简称gen。
    特定的一代
    对于第6代,英特尔处理器图形体系结构可以称为“gen6”,或者“gen7”用于第7代等品牌产品Intel HD graphics 4600、Intel Iris™绘图5100和Intel Iris Pro graphics 5200都是从Intel处理器graphics实例派生的gen7.5构架。

    Intel HD graphics 5300、Intel Iris graphics 6100和Intel Iris Pro graphics6200是图形组件基于Intel的处理器产品的示例处理器图形gen8体系结构。本文只关注计算架构,英特尔处理器图形第8代的几个方面。

    用gen8这个词来作速记,计算架构是指那些计算组件。本文也简要介绍讨论Intel Core中Intel处理器图形gen8的实例化™ i5处理器和同样在Intel Core M处理器中用于低功耗外形。
    在这里插入图片描述
    二.SOC 架构ARCHITECTURE

    本节介绍Intel图形处理器是其组件的SoC体系结构。
    在这里插入图片描述
    The Compute Architecture of Intel Processor Graphics Gen8 v1.1

    1. SOC架构

    Intel Core M处理器是集成多个CPU核的复杂SoC,Intel图形处理器和其他潜在的固定功能都在一个共享的硅芯片上。构建实现多个唯一的时钟域,这些时钟域已被划分为每个CPU核心时钟域、处理器图形时钟域和环形互连时钟域。这个SoC体系结构设计为可扩展到一系列产品,但仍然能够将SoC中各组件之间的有效布线。

    1. 环形互连

    CPU核心、缓存和英特尔处理器图形之间的片上总线是基于环的,为每个连接的“代理”提供专用本地接口的拓扑结构。这个SoC环interconnect是一个双向环,具有32字节宽的数据总线,具有请求、窥探和确认。每个片上CPU核心都被视为唯一的代理。

    类似地,Intel图形处理器被视为互连环上的唯一代理。一个系统代理也连接到环,环捆绑了DRAM内存管理单元、显示控制器和其他片外I/O控制器,如PCI Express。重要的是,与CPU核心之间和与英特尔处理器图形之间的芯片系统内存事务,是通过这种互连、系统代理和统一的DRAM内存控制器。

    1. SHARED LLC

    一些SoC产品包括一个共享的末级缓存(LLC),它也连接到双向环。在这样的soc中,每个片上的核心被分配一个缓存片,并且该缓存片是作为环上的唯一代理连接。但是,所有的切片作为一个单独的缓存,尽管是共享和分布式缓存。地址哈希方案路由数据请求分配给其地址的缓存片。此分布式SHARED LLC也与英特尔共享图形处理器。对于CPU内核和英特尔图形处理器,LLC都希望减少系统DRAM和提供更高有效带宽,减少延迟。
    4. 可选EDRAM

    一些SoC产品包括嵌入到SoC芯片中的DRAM(EDRAM)封装。例如,基于Intel图形处理器gen7.5的Intel Iris Pro 5200和基于Intel处理器图形gen8的Intel Iris Pro 6200产品捆绑128兆字节EDRAM。EDRAM在自己的时钟域中工作,最高可工作1.6GHz。这个EDRAM有独立的读写总线,每个总线都能进行32字节/EDRAM循环。

    EDRAM支持许多应用程序,包括低延迟显示表面刷新。对于两个CPU,Intel图形处理器gen8、EDRAM的体系结构和计算体系结构,通过充当LLC,Compute数据后面的大型“victim cache缓存”来支持内存层次结构。

    首先填充LLC。从LLC缓存线Cacheline victims将泄漏到EDRAM中。如果以后对存储在EDRAM中的缓存线进行读/写操作,它们很快被重新加载到LLC中,并且读/写然后照常进行。

    三.Gen8图形处理器架构

    THE COMPUTE ARCHITECTURE OF INTEL PROCESSOR
    GRAPHICS GEN8

    1. 英特尔图形处理器第8代中的关键改进

    英特尔处理器图形gen8在整个微体系结构和支持软件。它还包括几个主要的新功能和英特尔的变化图形处理器gen7.5。简而言之,这些变化包括:

    · Gen8’s micro-architecture throughput for 32-bit integer computation
    has doubled.

    · Gen8 has added native 16-bit floating-point support to the execution units.

    · For some gen8-based products, the write bandwidth from GTI has
    doubled.

    · Coherent shared virtual memory between CPU cores and Intel
    processor graphics gen8 has been implemented, enabling seamless sharing of pointer rich data structures.

    · For many gen8-based products, 8 execution units are now
    instantiated per subslice. This can improve compute throughput as data port and sampler are now shared by fewer execution units. (Gen 7.5 was 10 execution units per subslice.)

    · For many gen8-based products, 3 subslices are now instantiated per
    slice. This enables new product configurations, and instantiates more samplers per slice, and more concurrent memory interfaces to L3 and SLM. (Gen 7.5 was 2 subslices per slice.)

    · Gen8 has increased the L3

    1. 产品可扩展性的模块化设计

    gen8计算体系结构的设计是为了在广泛的目标范围内实现可伸缩性产品。体系结构的模块化使产品能够精确地瞄准特定的市场或产品功率包络线。体系结构从称为执行单位。执行单元被聚集到称为子片的组中。子切片更进一步成片地聚在一起。集成,执行单元、子片和片是模块化的构建,用于创建基于英特尔图形处理器的许多产品变体的块,第8代计算架构。一些示例变量如图7和图8所示。以下各节详细描述了架构组件,并整体展示了它们是如何可以组成完整的产品。

    1. 执行单元(EUS)架构

    gen8计算体系结构的基本构建块通常是执行单元缩写为EU。执行单元的体系结构是同时多线程的组合(SMT)和细粒度交错多线程(IMT)。这些是计算处理器驱动多问题单指令多数据算术逻辑单元(SIMD,ALUs),流水线跨多个线程,用于高吞吐量浮点和整数计算。

    细颗粒EUs的线程特性确保了执行指令的连续流,支持长时间操作的延迟,如内存分散/收集、采集卡请求或其它系统通信。

    在这里插入图片描述
    产品架构师可以微调每个EU的线程数和寄存器数,以匹配可扩展性和特定的产品设计需求。对于基于gen8的产品,每个EU线程有128个通用寄存器。每个寄存器存储32个字节,可作为SIMD访问32位数据元素的8元素向量。因此,每个gen8线程都有4kbytes的通用目的寄存器文件(GRF)。在gen8架构中,每个EU有7个线程,每个EU 28千字节的GRF。灵活的寻址模式允许寄存器一起寻址,有效地建立更宽的寄存器,甚至表示跨步矩形块数据结构。每线程体系结构状态在单独的专用体系结构中维护注册文件(ARF)。

    1. 子层架构

    在gen8计算体系结构中,EUs数组被实例化在一个称为subslice的组中。为了可伸缩性,图形产品架构可以选择每个子片的EUs数量。基于gen8的产品,每个子片包含8个EUs。每个子片都包含自己的本地线程分派器单元及其自己的支持指令缓存。

    给这8个EUs加上7个每个线程,单个子片都有专用的硬件资源,并注册文件,总共56个同时线程。每个子层还包括一个采集卡器单元和一个数据端口存储器管理股。与gen7.5的设计相比,gen7.5的设计中每个层有10个EUs,这个gen8设计减少了共享每个子层的采集卡和数据端口的EUs数量。从每个EU的观点来看,这有提高子片本地有效带宽的效果。
    在这里插入图片描述
    5. SLICE ARCHITECTURE
    在这里插入图片描述
    子片聚集成片。对于大多数基于gen8的产品,共有3个子片组成一片。因一个切片总共聚集了24个EUs3。除了分组子片之外,该片集成了另外的线程调度路由逻辑、一个3级缓存库、一个较小但高存储容量的共享本地内存结构,以及原子的固定功能逻辑。附加的固定功能单元支持媒体和图形功能。

    1. PRODUCT ARCHITECTURE

    SoC产品架构师可以在一个系列中创建产品系列或特定的产品。通过实例化一个或多个切片。产品系列的组成可能不同,主要是切片的数量。这些片与附加的前端逻辑相结合,管理命令提交,以及支持3D、渲染和媒体管道。另外,整个gen8计算体系结构与SoC组件通过一个称为图形技术接口(GTI)的专用单元。
    在这里插入图片描述
    在这里插入图片描述
    7. MEMORY

    1)Unified Memory Architecture

    2)Shared Memory Coherency
    在这里插入图片描述
    8. ARCHITECTURE CONFIGURATIONS, SPEEDS, AND FEEDS

    下表显示了英特尔计算体系结构的理论峰值吞吐量,两个示例产品SKU的处理器图形。对于每种产品,峰值吞吐量为英特尔图形处理器Gen8,v1.116的计算体系结构在整个体系结构中聚合。基于其他产品的理论峰值吞吐量,在gen8体系结构上,遵循与英特尔Iris Pro系列类似的模式。
    在这里插入图片描述
    四.EXAMPLE COMPUTE APPLICATIONS

    下面的图片提供了几种计算应用程序和英特尔处理器图形加速的算法。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 图形处理器发展现状,并行计算优势,以及挑战
  • 在这项研究中,我设计并实现了可编程具有定点顶点着色器的图形处理器,适用于移动应用。所提出的架构具有四个主要特征:数据传输流的分离,带有流处理的全硬件加速,指令集架构的两级扩展,以及定点单指令多数据处理...
  • 计算机组成原理 — GPU 图形处理器

    万次阅读 多人点赞 2019-08-12 19:32:44
    GPU(Graphic Processing Unit,计算机图形处理器)在 1999 年 8 月发表 NVIDIA GeForce 256 绘图处理芯片时首先提出的概念,而对手冶天科技(ATi,已被 AMD 收购)亦提出视觉处理器(VPU,Visual Processing Unit)...

    目录

    显卡

    显卡(Video card、Display card、Graphics card、Video adapter)是 PC(Personal Computer)最基本的组成部分之一,用途是将计算机系统所需要的显示信息进行转换,继而驱动显示器,并向显示器提供逐行或隔行扫描信号,控制显示器的正确显示,是连接显示器和个人计算机主板的重要组件,是 “人机对话” 的重要设备之一。

    显卡是插在计算机主板扩展槽(现在一般是 PCI-E 插槽,此前还有 AGP、PCI、ISA 等插槽)上的外部设备。它主要负责把主机向显示器发出的显示信号转化为一般电器信号,使得显示器能明白个人计算机在让它做什么。显卡的主要芯片叫 “显示芯片”(Video chipset,也叫 GPU 或 VPU,图形处理器或视觉处理器),是显卡的主要处理单元。显卡上也有和计算机存储器相似的存储器,称为 “显示存储器”,简称显存。

    早期的显卡只是单纯意义的显卡,只起到信号转换的作用。目前我们一般使用的显卡都带有 3D 画面运算和图形加速功能,所以也叫做 “图形加速卡” 或 “3D 加速卡”。PC 上最早的显卡是 IBM 在 1981 年推出的 5150 个人计算机上所搭载的 MDA 和 CGA 两款 2D 加速卡。

    显卡通常由总线接口、PCB 板、显示芯片、显存、RAM DAC、VGA BIOS、VGA 功能插针、D-sub 插座及其他外围组件构成,现在的显卡大多还具有 VGA、DVI 显示器接口或者 HDMI 接口及 S-Video 端子和 Display Port 接口。

    GPU

    GPU(Graphic Processing Unit,计算机图形处理器)在 1999 年 8 月发表 NVIDIA GeForce 256 绘图处理芯片时首先提出的概念,而对手冶天科技(ATi,已被 AMD 收购)亦提出视觉处理器(VPU,Visual Processing Unit)概念。在此之前,计算机中处理影像输出的显示芯片,通常不被视为是一个独立的运算单元,也就是我们常说的 “集显”(集成显卡)。GPU 的提出让 “独显”(独立显卡)成为了可能。GPU 作为硬件显卡的 “心脏”,地位等同于 CPU 在计算机系统中的作用。GPU 使硬件显卡减少对 CPU 的依赖,并分担部分原本由 CPU 所担当的工作,尤其是在进行三维绘图运算时,功效更加明显。

    GPU 也可以用来作为区分 2D 硬件显卡和 3D 硬件显卡的重要依据。2D 硬件显卡主要通过使用 CPU 来处理特性和 3D 图像,将其称作 “软加速”。3D 硬件显卡则是把特性和 3D 图像的处理能力集中到硬件显卡中,也就是 “硬件加速”。目前市场上流行的显卡多半是由 NVIDIA 及 ATi 这两家公司生产的。

    使用 GPU 有两种方式,一种是开发的应用程序通过通用的图形库接口调用 GPU 设备,另一种是 GPU 自身提供 API 编程接口,应用程序通过 GPU 提供的 API 编程接口直接调用 GPU 设备。

    在这里插入图片描述

    GPU 与深度学习

    深度学习是模拟人脑神经系统而建立的数学网络模型,这个模型的最大特点是,需要大数据来训练。因此,对电脑处理器的要求,就是需要大量的并行的重复计算,GPU 正好有这个专长,时势造英雄,因此,GPU 就出山担当重任了。

    • 训练:我们可以把深度学习的训练看成学习过程。人工神经网络是分层的、是在层与层之间互相连接的、网络中数据的传播是有向的。训练神经网络的时候,训练数据被输入到网络的第一层。然后所有的神经元,都会根据任务执行的情况,根据其正确或者错误的程度如何,分配一个权重参数(权值)。
    • 推理:就是深度学习把从训练中学习到的能力应用到工作中去。不难想象,没有训练就没法实现推断。我们人也是这样,通过学习来获取知识、提高能力。深度神经网络也是一样,训练完成后,并不需要其训练时那样的海量资源。

    GPU 与 CPU 体系结构的区别

    GPU 设计目的和 CPU 截然不同。CPU,如 Intel i5 或 i7 处理器,其内核数量较少,专为通用计算而设计,因此具有复杂的控制单元;而 GPU,是一种特殊类型的处理器,具有数百或数千个内核,经过优化,可并行运行大量计算,主要用来处理计算性强而逻辑性不强的计算任务,GPU 中可利用的处理单元可以更多的作为执行单元。因此,相较于 CPU,GPU 在具备大量重复数据集运算和频繁内存访问等特点的应用场景中具有无可比拟的优势。

    由于图形渲染任务具有高度的并行性,因此 GPU 可以仅仅通过增加并行处理单元和存储器控制单元便可有效的提高处理能力和存储器带宽。虽然 GPU 在游戏中以 3D 渲染而闻名,但它们对运行分析、深度学习和机器学习算法尤其有用。GPU 能够让某些计算比传统 CPU 上运行相同的计算速度快 10 倍至 100 倍。

    GPU 是并行编程模型,和 CPU 的串行编程模型完全不同,导致很多 CPU 上优秀的算法都无法直接映射到 GPU 上,并且 GPU 的结构相当于共享存储式多处理结构,因此在 GPU 上设计的并行程序与 CPU 上的串行程序具有很大的差异。GPU 主要采用立方环境的材质贴图、硬体 T&L(Transform and Lightning)、顶点混合、凹凸的映射贴图和纹理压缩、双重纹理四像素 256 位的渲染引擎等重要技术。

    • CPU 串行运算
      在这里插入图片描述

    • GPU 并行运算
      在这里插入图片描述

    简单来说,CPU 是一个具有多种功能的优秀领导者。它的优点在于调度、管理、协调能力强,但计算能力一般。而 GPU 相当于一个接受 CPU 调度的 “拥有大量计算能力” 的员工

    在这里插入图片描述

    在这里插入图片描述
    CPU 是一种低延迟的设计

    • CPU 有强大的 ALU(逻辑运算部件),时钟频率很高;
    • CPU 的容量较大的 Cache,一般包含 L1、L2 和 L3 三级高速缓存。其中 L3 可以达到 8MB,这些 Cache 占据相当一部分的片上空间;
    • CPU 有复杂的控制逻辑,例如:复杂的流水线(pipeline)、分支预测(branch prediction)、乱序执行(Out-of-order execution)等;

    这些设计使得真正执行运算的 ALU 单元只占据了很小一部分的 CPU 片上空间。

    在这里插入图片描述

    GPU 是一种高吞吐的设计

    • GPU 有大量的 ALU;
    • Cache 很小,缓存的目的不是保存后面需要访问的数据的,而是为 Thread 提高服务的,这点和 CPU 不同;
    • 没有复杂的控制逻辑,没有分支预测等这些组件;

    这样的设计,使得 GPU 擅长的是大规模的数据并行(Data-Parallel)的计算任务。

    GPU 显存与 CPU 主存的区别

    在这里插入图片描述
    一般来说,CPU 和主存之间的带宽只有数十 GB/s。例如:Intel Xeon E5-2699 v3,内存带宽达到 68GB/s((2133 * 64 / 8)*4 MB/s)。
    在这里插入图片描述
    而 GPU 的高速缓存虽然较小,高速缓存与显存(上图中的 Memory)之间的带宽可以达到数百 GB/s,比如 P40 的显存带宽为 346GB/s,远远大于 CPU 的内存带宽。但是,相对于 GPU 的计算能力,显存仍然是性能瓶颈的所在。

    GPU 与 CPU 之间的数据交互方式

    在现代的异构计算系统中,GPU 是以 PCIe 卡作为 CPU 的外部设备存在的,两者之间通过 PCIe 总线通信。对于 PCIe Gen3 x1 理论带宽约为 1000MB/s,所以对于 Gen3 x32 的最大带宽约为 32GB/s,而受限于本身的实现机制,有效带宽往往只有理论值的 2/3,甚至更低。所以,CPU 与 GPU 之间的通信开销是比较大的。
    在这里插入图片描述

    GPU 的体系结构

    在这里插入图片描述

    一个 “假想” 的 GPU Core 的结构如下
    在这里插入图片描述
    一个 GPU Core 包含 8 个 ALU,4 组执行环境(Execution context),每组有 8 个Ctx。这样,一个 Core 可以并发(Concurrent but interleaved)执行 4 条指令流(Instruction Streams),32 个并发程序片元(Fragment)。

    一个 “假想” 的 GPU 的结构如下
    在这里插入图片描述
    则一个 GPU 有 16 个 Core、128 个 ALU,可以同时处理 16 条指令流、64 条并发指令流、32*16 个并发程序片元。

    下面以 NVIDIA GeForce GTX 580 为例,看看具体的 GPU Core 的内部架构
    在这里插入图片描述
    每个 GPU Core 有 64 个 CUDA core,又称 Stream Processor(SP)。每个 CUDA core 可以理解为一个复杂完整的 ALU。这些 CUDA core 分成 2 组,每组 32 个 CUDA core,共享相同的取指/译码部件,这一组称为 Stream Multiprocessor(SM)。每个 Core 可以并发执行 1536 个程序片元,即 1536 个 CUDA threads。一个 GTX 580 GPU 包含 16 个 Core,总共 1024 个 CUDA core,可以并发执行 1536*16 个 CUDA threads.

    在这里插入图片描述

    GPU 的工作原理

    在这里插入图片描述
    GPU 的图形(处理)流水线如下:

    • 顶点生成:这阶段 GPU 读取描述 3D 图形外观的顶点数据并根据顶点数据确定 3D 图形的形状及位置关系,建立起 3D 图形的骨架。在支持 DX8 和 DX9 规格的 GPU 中,这些工作由硬件实现的 VertexShader(顶点着色器)完成。
    • 光栅化计算:显示器实际显示的图像是由像素组成的,我们需要将上面生成的图形上的点和线通过一定的算法转换到相应的像素点。把一个矢量图形转换为一系列像素点的过程就称为光栅化。例如:一条数学表示的斜线段,最终被转化成阶梯状的连续像素点。
      在这里插入图片描述
    • 纹理帖图:顶点单元生成的多边形只构成了 3D 物体的轮廓,而纹理映射(Texture Mapping)工作完成对多边形表面的帖图,通俗的说,就是将多边形的表面贴上相应的图片,从而生成 “真实” 的图形。TMU(Texture Mapping Unit)即是用来完成此项工作。
    • 像素处理:这阶段(在对每个像素进行光栅化处理期间)GPU 完成对像素的计算和处理,从而确定每个像素的最终属性。在支持 DX8 和 DX9 规格的 GPU 中,这些工作由硬件实现的 PixelShader(像素着色器)
    • 最终输出:由 ROP(光栅化引擎)最终完成像素的输出,1 帧渲染完毕后,被送到显存帧缓冲区。

    在这里插入图片描述

    NOTE:因为流水线效率的问题,实际上 GPU 有可能是乱序执行上述工作的。

    GPU 的关键参数

    • CUDA 核心:CUDA 核心的数量决定了 GPU 并行处理能力,在深度学习、机器学习等并行计算类业务下,CUDA 核心多意味着性能好一些。

    • 显存容量:其主要功能就是暂时储存 GPU 要处理的数据和处理完毕的数据。显存容量大小决定了 GPU 能够加载的数据量大小。在显存已经可以满足客户业务的情况下,提升显存不会对业务性能带来大的提升。在深度学习、机器学习的训练场景,显存的大小决定了一次能够加载训练数据的量,在大规模训练时,显存会显得比较重要。

    • 显存位宽:显存在一个时钟周期内所能传送数据的位数,位数越大则瞬间所能传输的数据量越大,这是显存的重要参数之一。

    • 显存频率:一定程度上反应着该显存的速度,以 MHz(兆赫兹)为单位,显存频率随着显存的类型、性能的不同而不同。显存频率和位宽决定显存带宽。

    • 显存带宽:指显示芯片与显存之间的数据传输速率,它以字节/秒为单位。显存带宽是决定显卡性能和速度最重要的因素之一。

    • 其他指标:除了显卡通用指标外,NVIDIA 还有一些针对特定场景优化的指标,例如 TsnsoCore、RTCoreRT 等能力。例如 TensenCore 专门用于加速深度学习中的张量运算。

    CUDA 编程模型

    CUDA(Compute Unified Device Architecture,统一计算架构)是由 NVIDIA 所推出的一种集成技术,是对于 GPGPU 的正式名称,本质是一种外部接口编程模型。利用 CUDA 技术,使 GPU 能够解决复杂的计算问题。它包含了 CUDA 指令集架构(ISA)以及 GPU 内部的并行计算引擎。开发人员现在可以使用 C 语言来为 CUDA 架构编写程序。CUDA 配合适当的软件(e.g. MediaCoder、Freemake Video Converter)就可以利用 GPU 进行高清视频编码加速。视频解码方面亦然。简而言之,CUDA 是获取 NVIDIA GPU 运算能力的开发平台。所有基于 G80 及之后架构的民用与专业显卡或运算模块皆支持 CUDA 技术。

    GPU 可以利用多个 CUDA 核心来做并行计算,而 CPU 只能按照顺序进行串行计算,同样运行 3000 次的简单运算,CPU 需要 3000 个时钟周期,而配有 3000 个 CUDA 核心的 GPU 运行只需要 1 个时钟周期。

    在 GPUs(GPGPU)上使用图形 APIs 进行传统通用计算,CUDA 技术有下列几个优点:

    • 分散读取:代码可以从存储器的任意地址读取
    • 统一虚拟内存
    • 共享存储器:CUDA 公开一个快速的共享存储区域(每个处理器 48K),使之在多个进程之间共享。其作为一个用户管理的高速缓存,比使用纹理查找可以得到更大的有效带宽。
    • 与 GPU 之间更快的下载与回读。
    • 全面支持整型与位操作,包括整型纹理查找。

    CUDA 的架构

    在这里插入图片描述
    CUDA 主要提供了 4 个重要的组件:CUDA C 和对应的 COMPILER(编译器),CUDA 库、CUDA RUNTIME 和 CUDA DRIVER。

    • CUDA C:其实就是标准 C 的变种,它加入 4 大特性:
      • 可以定义程序的哪部分运行在 GPU 或 CPU 上;
      • 可以定义变量位于 GPU 的存储类型;
      • 利用 KERNEL、BLOCK、GRID 来定义最原始的并行计算;
      • State 变量。
    • CUDA 开发库:基于 CUDA 技术所提供的应用开发库。CUDA 的 1.1 版提供了两个标准的数学运算库:CUFFT(离散快速傅立叶变换)和 CUBLAS(离散基本线性计算)的实现。这两个数学运算库所解决的是典型的大规模的并行计算问题,也是在密集数据计算中非常常见的计算类型。开发人员在开发库的基础上可以快速、方便的建立起自己的计算应用。此外,开发人员也可以在 CUDA 的技术基础上实现出更多的开发库。
    • CUDA 运行时环境:提供了应用开发接口和运行期组件,包括基本数据类型的定义和各类计算、类型转换、内存管理、设备访问和执行调度等函数。基于 CUDA 开发的程序代码在实际执行中分为两种,一种是运行在 CPU 上的宿主代码(Host Code),一种是运行在 GPU 上的设备代码(Device Code)。不同类型的代码由于其运行的物理位置不同,能够访问到的资源不同,因此对应的运行期组件也分为公共组件、宿主组件和设备组件三个部分,基本上囊括了所有在 GPGPU 开发中所需要的功能和能够使用到的资源接口,开发人员可以通过运行期环境的编程接口实现各种类型的计算。
    • CUDA 驱动:由于目前存在着多种 GPU 版本的 NVIDIA 显卡,不同版本的 GPU 之间都有不同的差异,因此 CUDA 驱动基本上可以理解为是 CUDA-enable 的 GPU 的设备抽象层,提供硬件设备的抽象访问接口。CUDA 提供运行期环境也是通过这一层来实现各种功能的。由于体系结构中硬件抽象层的存在,CUDA 今后也有可能发展成为一个通用的 GPU 标准接口,兼容不同厂商的 GPU 产品。

    对于软件开发者来说,使用 CUDA 平台调用 CUDA 的加速库使用的语言包括:C、C++ 和 Fortran。C/C++ 编程者使用 UDAC/C++ 并用 nvcc 进行编译。Nvidia 的 LLVM 库是基于 C/C++ 编译器的。Fortran 的开发者能够使用 CUDA Fortran,编译使用 PGI CUDA Fortran。当然 CUDA 平台也支持其他的编程接口,包括 OpenCL,微软的 DirectCompute、OpenGL ComputeShaders 和 C++ AMP。第三方的开发者也可以使用 Python、Perl、Fortran、Java、Ruby、Lua、Haskell、R、MATLAB、IDL 由曼赛马提亚原生支持。

    CUDA 的核心概念

    再次小结 CUDA 的心和概念:

    SP(Streaming Processor):是最基本的处理单元,指令和任务最终都是在 SP 上处理的。GPU 进行并行计算,也就是很多个 SP 同时做处理。
    SM(Streaming Multi-Processor):多个 SP 加上其他的一些资源组成了一个 SM,其他资源也就是存储资源,共享内存,寄储器等。
    Warp:GPU 执行程序时的调度单位,目前 CUDA 的 Warp 大小为 32,同在一个 Warp 的线程,以不同数据资源执行相同的指令。
    GRID、Block、Thread:利用 CUDA 进行编程时,一个 GRID 分为多个 Block,而一个 Block 可分为多个 Thread。

    • SM 与 SP 的关系
      在这里插入图片描述

    • GRID、Blouk 与 Thread 的关系
      在这里插入图片描述

      • 每个 Block 所能包含的 Thread 数量是有限制的,因为目前每个 Block 内的所有 Threads 都是在一个物理的处理器核中,并且共享了这个核有限的内存资源。当前的 GPU 中,每个 Block 最多能执行 1024 个 Thread。
      • 多个 Blocks 可以组成 1 维、2 维或者 3 维的 Grid。kernel 函数可以访问 Grid 内部标识 Block 的内置变量 BlockIDX,也可以访问表示 Block 维度的内置变量 BlockDim。
    • Warp 调度单元与 Threads 的关系
      在这里插入图片描述

    上图反映了 Warp 作为调度单位的作用,每次 GPU 调度一个 Warp 里的 32 个线程执行同一条指令,其中各个线程对应的数据资源不同。
    在这里插入图片描述
    上图反映了 Warp 是如何排程的,即最终将 CUDA thread 映射到实际的物理硬件计算单元中执行(Thread -> SP Block -> SM Grid -> GPU)。一个 SM 只会执行一个 Block 里的 Warp,当该 Block 里 Warp 执行完后才会执行其他 Block 里的 Warp。进行划分时,最好保证每个 Block 里的 Warp 数量合理,那样一个 SM 可以交替执行里面的 Warp,从而提高效率。此外,在分配 Block 时,要根据 GPU 的 SM 个数,分配出合理的 Block 数,让 GPU 的 SM 都利用起来,提利用率。分配时,也要考虑到同一个线程 Block 的资源问题,不要出现对应的资源不够。

    CUDA threads 在执行时,可以访问多个 Memory Spaces,每个线程有自己的私有的 Local Memory。每个 Block 有一个 Shared Memory,Block 的所有线程都可以访问。最后,所有线程都可以访问 Global Memory。不同的内存访问速度为:本地内存 > 共享内存 > 全局内存。通过 cudaMalloc 分配的内存就是全局内存。核函数中用 __shared__ 修饰的变量就是共享内存。 核函数定义的变量使用的就是本地内存。

    在这里插入图片描述

    CUDA 的工作原理

    在这里插入图片描述

    GPU 是协处理器,与 CPU 端存储是分离的,故 GPU 运算时必须先将 CPU 端的代码和数据传输到 GPU,GPU 才能执行 kernel 函数。在 CUDA 中,程序的执行区域分为两部分,CPU(HOST)和 GPU(DEVICE),任务组织和发送是在 CPU 里完成的,而并行计算是在 GPU 里完成。每当 CPU 遇到需要并行计算的任务,则将要做的运算组织成 kernel,然后丢给 GPU 去执行。当然任务是通过 CUDA 系统来丢的,CUDA 在把任务正式提交给 GPU 前,会对 kernel 做些处理,让 kernel 符合 GPU 体系架构。

    假设,我们先简单的把 GPU 当作拥有上百个核的 CPU,kernel 当成一个要创建为线程的函数。所以,CUDA 现在就要将你的 kernel 创建出上百个 thread,然后将这些 thread 送到 GPU 中的各个核上去运行,但为了更好的利用 GPU 资源,提高并行度,CUDA 还要将这些 thread 加以优化组织,将能利用共有资源的线程组织到一个 thread block 中,同一 thread block 中的 thread 可以通过 share memory 共享数据,每个 thread block 最高可拥有 512 个线程。拥有同样维度同样 kernel 的 thread block 被组织成一个 grid,而 CUDA 处理任务的最大单元便是 grid 了。

    云主机显卡的实现方式

    目前在虚拟机中使用图形处理的方式有三种:

    1. 采用虚拟显卡
    2. 采用物理显卡直通
    3. 采用物理显卡虚拟化

    虚拟显卡

    虚拟显卡技术,主要用于虚拟机 Remote Console 领域,如:VNC(Virtual Network Computing,虚拟网络计算机),它能将完整的窗口界面通过网络,传输到另一台计算机的屏幕上。VNC 主要由 VNC server 和 VNC viewer 两部分组成。用户需先将 VNC server 安装在被远程操控的计算机上,然后才能在客户端执行 VNC viewer 进行远程操控。但 VNC 仍未能提供硬件图形加速能力,这些虚拟显示设备都是通过使用 CPU 以及内存的方式来对图形数据进行处理的,并没有应用到物理显示设备的功能。而 **VMGL(VMM-Independent Graphics Acceleration)**解决了这个问题。VMGL 是一个独立于 Hypervisor 的图形加速系统,采用了前端虚拟化(Front-end virtualization)机制将需要图形处理的数据发送到一个拥有硬件图形加速功能的 VMM 上进行相应的图形数据处理。

    物理显卡直通

    显卡直通,或称显卡穿透,即 GPU 直通,是指绕过 Hypervisor 将服务器的 GPU 硬件外设以直通(Pass-Through)的方式分配给某个虚拟机的技术,并通过远程协议使得用户可以进行远程接入。相对的,只有该虚拟机拥有使用 GPU 的权限。用户可以通过终端远程接入到虚拟机,这样虚拟机就可以使用 GPU 获得 3D 加速能力。这种独占设备的分配方式保持了 GPU 的完整性和独立性,在性能方面与非虚拟化条件下非常接近,且可以用来进行通用计算。此外,显卡直通方式还具有兼容性好、对 GPU 厂商无依赖等优势。但是显卡直通技术需要利用显卡的一些特殊细节,只能被一个虚拟机独占,且兼容性差,仅在部分 GPU 中设备可以使用。

    在科学计算大多数领域中都可以使用 GPU 加速,包括化学研究,流体动力学分析,结构分析,环境建模,地球物理学,可视化/图像处理。在科学计算领域,要求极强的双精度计算能力。在模拟仿真过程中,消耗大量计算资源的同时,会产生大量临时数据,对存储带宽与时延也有极高的要求,这些场景通常采用 GPU 直通技术。

    一般情况下,将 PCI 设备提供到虚拟机需要经过 Hypervisor 的模拟,PCI 设备首先经过 Host OS 的物理驱动,然后在 Hypervisor(e.g. KVM-QEMU)层将物理驱动模拟成模拟驱动并提供给虚拟机。
    在这里插入图片描述
    而 GPU Pass-Through 技术则可以绕过 Hypervisor,通过将 Host 上 GPU 设备的 PCI 内存地址映射给云主机,将 GPU 设备直接加载给云主机进行使用,虚拟机看到的该设备,就完全是一块物理卡。
    在这里插入图片描述

    Xen 4.0 增加了 VGA Passthrough 技术,利用了英特尔设备虚拟化(Intel VT-d)技术将显卡设备暴露给某个客户虚拟机,不仅其它客户虚拟机不能访问,就连宿主虚拟机也失去了使用该 GPU 的权限。它在客户虚拟机中实现了显卡的一些特殊细节,如:VGA BIOS、文本模式、IO 端口、内存映射、VESA 模式等,以支持直接访问。Xen Server VGA Pass-Through 技术的 GPU 执行效率高,功能全,但只能被单一虚拟机占用,失去了设备复用的功能。

    VMware ESXi 提供了一个 VM DirectPath I/O 框架,使用该技术也可以将显卡设备穿透给某个虚拟机使用。XenServer 和 ESXi 使用的是不同的技术但是最终效果都是一样的,即将物理显卡设备直通给某个虚拟机使用,以达到虚拟机进行 3D 显示和渲染的效果。

    由于显卡直通实际上是由 GuestOS 使用原生的驱动和硬件,缺少必要的中间层来跟踪和维护 GPU 状态,它不支持实时迁移等虚拟机高级特性。如:Xen Server VGA Pass-Through 禁止虚拟机执行 Save、Restore、Migration 等操作。VMware 虚拟机亦然,一旦开启 VM DirectPath I/O 功能,虚拟机就失去了执行挂起/恢复、实时迁移的能力。

    物理显卡虚拟化

    GPU 虚拟化与 CPU 虚拟化类似,核心是切片轮询,将这些显卡时间片分配给虚拟机使用。支持 GPU 虚拟化的显卡一般可以根据需要切分成不同的规格的时间片,并分配给多台虚拟机使用。目前市场上的 GPU 厂商分别有 NVIDIA 和 AMD,两者各自有自己提出的 vGPU 技术方案。

    NIVDIA vGPU 的设计主要实现了 Mediated Passthrough(分片透传)。Mediated Passthrough 是一种完全软件定义的 GPU 虚拟化解决方案,其技术原理主要为:对于与 GPU 性能相关的访问直接透传给云主机,把与性能无关功能的相关访问在 Mdev 模块中来模拟实现。Mdev 是此方案的关键技术,简单解释一下,Mdev 即 mediated 设备框架,能够驱动 VFIO 框架及接口支持虚拟 PCI 设备,因此也就能够完全基于软件实现,将宿主机上的物理 GPU 切分成为多个虚拟 GPU 设备并进行共享。

    在这里插入图片描述

    相对的,AMD 的 vGPU 实现则遵循了 SR-IOV 规范,这个规范定义了以标准化的方式支持实现多个云主机共享一个 PCI 设备。可理解为一个 PCI 设备在物理层面上被切分为多个,并且每个都是符合 PCI 标准的 PCI 设备。而由于这个能力,切分后的每个单元都可以再通过 PCI 透传(Pass-Through)的方式分别提供给多个云主机使用。GPU 作为一种典型 PCI 设备,自然也支持以上技术的实现,AMD vGPU 方案就是如此。

    在这里插入图片描述

    KVM 虚拟机通过 PCI Pass-through 使用 NVIDIA 显卡

    等拿到卡了再做补充。

    展开全文
  • 图形处理器架构(GPU_Architecture)与图形管线(Graphics_Pipeline)入门
  • 显卡的处理器称为图形处理器(GPU),它是显卡的“心脏”,与CPU类似,只不过GPU是专为执行复杂的数学和几何计算而设计的,这些计算是图形渲染所必需的。某些最快速的GPU集成的晶体管数甚至超过了普通CPU。GPU通用...

    显卡的处理器称为图形处理器(GPU),它是显卡的“心脏”,与CPU类似,只不过GPU是专为执行复杂的数学和几何计算而设计的,这些计算是图形渲染所必需的。某些最快速的GPU集成的晶体管数甚至超过了普通CPU。GPU通用计算技术发展已经引起业界不少的关注,事实也证明在浮点运算并行计算等部分计算方面,GPU可以提供数十倍乃至于上百倍于CPU的性能。

    为什么CPU与GPU不同,要做得很通用。CPU需要同时很好的支持并行和串行操作,需要很强的通用性来处理各种不同的数据类型,同时又要支持复杂通用的逻辑判断,这样会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂,计算单元的比重被降低了。而GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。因此GPU的芯片比CPU芯片简单很多。

    举个例子,假设有一堆相同的加减乘除计算任务需要处理,那把这个任务交给一堆(几十个)小学生就可以了,这里小学生类似于GPU的计算单元,而对一些复杂的逻辑推理等问题,比如公式推导、科技文章写作等高度逻辑化的任务,交给小学生显然不合适,这时大学教授更适合,这里的大学教授就是CPU的计算单元了,大学教授当然能处理加减乘除的问题,单个教授计算加减乘除比单个小学生计算速度更快,但是成本显然高很多。

    下图对CPU与GPU中的逻辑架构进行了对比。其中Control是控制器、ALU算术逻辑单元、Cache是cpu内部缓存、DRAM就是内存。可以看到GPU设计者将更多的晶体管用作执行单元,而不是像CPU那样用作复杂的控制单元和缓存。从实际来看,CPU芯片空间的5%是ALU,而GPU空间的40%是ALU。这也是导致GPU计算能力超强的原因。

    展开全文
  • 基于可编程图形处理器的实时烟雾控制模拟,烟雾控制是仿真的难点,可以参考一下本资料。
  • 1.2.2. 图形处理器体系结构 4 1.2.3. 图形处理器软件接口 6 1.3 图形处理器上的通用计算 7 1.4 本文研究内容和组织 10 第2章 投影法求解粘性不可压流体 12 2.1 概述 12 2.2 数值方法 13 2.2.1. Navier-Stokes方程和...
  • 行业分类-物理装置-基于图形处理器的数据库表连接方法、装置、计算机设备和存储介质.zip
  • GPU--图形处理器

    千次阅读 2012-08-26 16:32:05
    图形处理器 ” ,就是俗称“显卡”的处理器。 GPU 是相对于 CPU 的一个概念,现代的计算机中(服务器不算哦)图形的处理变得越来越重要,需要一个专门的图形的核心处理器。  NVIDIA (英伟达,其中创始人...

                GPU 英文全称 Graphic Processing Unit 图形处理器 ,就是俗称“显卡”的处理器。 GPU 是相对于 CPU 的一个概念,现代的计算机中(服务器不算哦)图形的处理变得越来越重要,需要一个专门的图形的核心处理器。

                NVIDIA (英伟达,其中创始人之一 黄仁勋是美籍华裔,高兴不?美籍中国台湾人)公司在 1999 年发布 GeForce256 图形处理芯片时首先提出 GPU 的概念,并且迅速成长。 GPU 使 显卡 减少了对 CPU 的依赖,使得 CPU 从繁杂的图像计算中解脱出来,更专心地干适合它的工作。这也是硬件加速的由来吧。 So ,软件加速(应该是软件模拟更恰当吧,加不加速还不一定呢)就是用 CPU 干不适合它的活,至少是有了 GPU 后,那种活不适合它了。

                直到 AMD 收购 ATI 之后,才把 VPU ATI 称之为视觉处理器)图形芯片才正式改名为 GPU 。现在 AMD 收购了 A 记显卡芯片的设计厂商(请注意,是设计厂商哦,不是生产商( AMD 会制造哦),更不是代工厂(组装))。 AMD 看到今后 CPU GPU 只有走一条融合的道路才能地竞争中占得先机。 CPU GPU 如何配合默契才能最大地提高工作效率是 AMD 现在考虑的问题,也是英特尔的问题,这也为后来英特尔 2007 年收购 Havok 三大物理运算引擎之一)埋下伏笔。

               GPU 的竞争远比 CPU 的竞争来得激烈。通用 PC CPU 就只有英特尔和 AMD 两家 大厂 。而在 GPU 方面领先的是 N 记和 A 记两家厂商,但能生产中低端产品的还有英特尔(虽然 CPU 很牛)、三星等好几家厂商。它们的产品虽然不如前两家,但在很多应用方面也能满足用户的需要,所以 N 记和 A 记只有拼命往前跑才不会死掉。是真心死掉的那种,否则难逃被收购的命运,联想一听乐了。有一点值得一提,人家英特尔可以把自己的 GPU 集成到主板上一起发售啊,你 N 可以吗?

              2000 年, NVIDIA Microsoft 选为 X-Box 游戏机的指定图形处理单元,一直跟微软走的很近,可能微软真心欣赏人家的技术。技术才是王道啊!有没有?

               NVIDIA 针对不通领域或者平台有不同系列的产品, GeForce NVIDIA 公司出品的面向 PC 显示芯片的一种系列。用于抗衡 AMD Radeon 系列显卡。 GeForce256 GeForce2 GeForce3 GeForce4 GeForce FX GeForce 6 系列, GeForce 7 系列, GeForce 8 系列, GeForce 9 系列和第十代产品 “GeForce+ 定位 + 型号 系列。由高到低如下

    Ultra Nvidia 的旗舰级产品,为本系列中的最强者。

    GTX: 其性能介于 GTS Ultra 之间。一般为 Nvidia 首发的高端产品。

    GTS: 始终为 Nvidia 第三强的产品( GeForce 2 GTS GeForce 8800GTS 均可展示出来),性能处于 GTX 之下,与 GT 相比有些模糊。

    GT: 频率提升版本 "GeForce Technology" 的缩写 , 频率和管线都较 LE GS SE XT 有较大的提升

    GS: 相比 GT ,渲染管线或者显存位宽的缩减,频率一般在 GT 之下,并且由于规格限制,性能在 GT 之下。

    LE:"LimitEdition" 的缩写,表示限制版本,代表某一产系列中的入门级产品,主要是频率和规格均与标准版本相比有一定的下降。

    SE: Nvidia 卡中不常出现,与 LE 相似。

    XT:"CostDown" 表示降频率版本 , 将标准版的频率降低,部分产品削减了管线。


    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 95,236
精华内容 38,094
关键字:

图形处理器