跳转到主要内容

GPU

GPU 并行优化的几种典型策略

demi 提交于

如何对现有的程序进行并行优化,是 GPU 并行编程技术最为关注的实际问题。本文将提供几种优化的思路,为程序并行优化指明道路方向。

<font color="Purple"><strong>优化前准备</strong></font>

首先,要明确优化的目标 - 是要将程序提速 2 倍?还是 10 倍?100倍?也许你会不假思索的说当然是提升越高越好。

但这里存在一个优化成本的问题。在同样的技术水平硬件水平下,提升 2 倍也许只要一个下午的工作量,但提高 10 倍可能要考虑到更多的东西,也许是一周的工作量。提高 100 倍, 1000 倍需要的成本,时间就更多了。

然后,需要将这个问题进行分解。通常来说先对数据集进行分解,然后将任务进行分解。这里要从数据集这样的矩阵角度来分析数据,将输入集和输出集中各个格点的对应关系找出来,然后分派给各个块,各个线程。

<font color="Purple"><strong>策略一:识别代码中的瓶颈所在</strong></font>

为何GPU可以用于加速人工智能或者机器学习的计算速度?

demi 提交于

<font size="3"><strong>一、Why GPU</strong></font>

其实GPU计算比CPU并不是“效果好”,而是“速度快”。

计算就是计算,数学上都是一样的,1+1用什么算都是2,CPU算神经网络也是可以的,算出来的神经网络放到实际应用中效果也很好,只不过速度会很慢罢了。

<font size="3"><strong>GPU的起源</strong></font>

GPU全称叫做graphics processing unit,图形处理器,顾名思义就是处理图形的。

电脑显示器上显示的图像,在显示在显示器上之前,要经过一些列处理,这个过程有个专有的名词叫“渲染”。以前的计算机上没有GPU,渲染就是CPU负责的。渲染是个什么操作呢,其实就是做了一系列图形的计算,但这些计算往往非常耗时,占用了CPU的一大部分时间。而CPU还要处理计算机器许多其他任务。因此就专门针对图形处理的这些操作设计了一种处理器,也就是GPU。这样CPU就可以从繁重的图形计算中解脱出来。

由于GPU是专门为了渲染设计的,那么他也就只能做渲染的那些事情。

GPU渲染流水线

demi 提交于

GPU的渲染流水线的主要任务是完成3D模型到图像的渲染(render)工作。常用的图形学API编程模型中的渲染过程被分为几个可以并行处理的阶段,分别由GPU中渲染流水线的不同单元进行处理。GPU输入的模型是数据结构(或语言)定义的对三维物体的描述,包括几何、方向、物体表面材质以及光源所在位置等;而GPU输出的图像则是从观察点对3D场景观测到的二维图像。在GPU渲染流水线的不同阶段,需要处理的对象分别是顶点(vertex)、几何图元(primitive)、片元(fragment)、像素(pixel)。

如图1-6所示,典型的渲染过程可以分为以下几个阶段:

<font color="Purple"><strong>1.顶点生成</strong></font>

图形学API用简单的图元(点、线、三角形)表示物体表面。每个顶点除了(x,y,z)三维坐标属性外还有应用程序自定义属性,例如位置、颜色、标准向量等。

<font color="Purple"><strong>2.顶点处理</strong></font>

GPU图像处理的基本流程

demi 提交于

现代GPU提供了顶点处理器和片段处理器两个可编程并行处理部件。在利用GPU执行图像处理等通用计算任务时,要做的主要工作是把待求解的任务映射到GPU支持的图形绘制流水线上。

通常的方法是把计算任务的输入数据用顶点的位置、颜色、法向量等属性或者纹理等图形绘制要素来表达,而相应的处理算法则被分解为一系列的执行步骤,并改写为GPU的顶点处理程序或片段处理程序,然后,调用3D API执行图形绘制操作,调用片段程序进行处理;最后,保存在帧缓存中的绘制结果就是算法的输出数据。

虽然数字图像处理算法多种多样,具体实现过程也很不相同,但是在利用GPU进行并行化处理时,有一些共性的关键技术问题需要解决,如:数据的加载,计算结果的反馈、保存等。

下面对这些共性的问题进行分析,并提出相应的解决思路。

<font color="Purple"><strong>1. 数据加载</strong></font>

嵌入式芯片要如何应对真正的AI本地化处理的挑战?

demi /

GPU和NNA(神经网络加速器)正在迅速成为AI应用的关键要素。随着不同企业开始挖掘神经网络在各种任务(比如自然语言处理、图片分类)中的潜力,集成人工智能元素的产品数量正在稳步的增长。与此同时,对于这些任务的处理也正在从传统的云端架构转移到设备本身上来,嵌入式芯片中集成了专用的神经网络加速器,可支持本地化AI处理。

Imagination是如何推动汽车革命的

demi /

自半导体问世以来,这个行业一直致力于创造出更快更强大的电子器件,虽然这个发展还在继续,但是现今的焦点是让产品变得更加的智能、高效,这一点在汽车行业表现的尤为突出。随着汽车行业向电力驱动方向发展,电子器件在汽车系统中扮演着越来越重要的角色,就像手机已经演变成大家口袋里的超级计算机一样,你的下一辆汽车也将是一台带轮子的超级计算机。

联发科逆袭?Helio P90的AI跑分展示其强大的性能

demi /

12月13日,联发科 (MediaTek)在深圳召开了“P90发布会暨全球合作伙伴大会”,这次最新的Helio P90芯片,搭载全新超强的AI引擎 APU 2.0,AI速度大幅度提升。其中,AI性能跑分这一块,通过多个跑分工具展示了目前P90的APU强大的性能。

<center><img width="500" src="http://imgtec.eetrend.com/sites/imgtec.eetrend.com/files/news/201812/19…; alt="联发科逆袭?Helio P90的AI跑分展示其强大的性能"></center>

其中,排名第三的是麒麟980,第二名是高通855,第一名是Helio P90。

GPU Raycasting的两种实现方法

demi 提交于

Raycasting的核心是从每一个屏幕像素处发射一条光纤,然后让其穿过整个体数据。基于GPU的Raycasting可以独立,并行地计算每条光线,从而能大大提高速度,实现实时绘制效果。绘制时的过程一般是绘制一个长方体,并且以体数据作为三维纹理。

根据光线的方向和终点的确定方法的不同,Raycasting有两种实现:
<center><img width="600" src="http://imgtec.eetrend.com/sites/imgtec.eetrend.com/files/201812/blog/19…; alt="GPU Raycasting的两种实现方法"></center>

什么是离屏渲染?什么情况下会触发?该如何应对?

demi 提交于

离屏渲染就是在当前屏幕缓冲区以外,新开辟一个缓冲区进行操作。

离屏渲染出发的场景有以下:
&nbsp; • &nbsp; 圆角 (maskToBounds并用才会触发)
&nbsp; • &nbsp; 图层蒙版
&nbsp; • &nbsp; 阴影
&nbsp; • &nbsp; 光栅化

<font color="Purple"><strong>为什么要有离屏渲染?</strong></font>

大家高中物理应该学过显示器是如何显示图像的:需要显示的图像经过CRT电子枪以极快的速度一行一行的扫描,扫描出来就呈现了一帧画面,随后电子枪又会回到初始位置循环扫描,形成了我们看到的图片或视频。

第三届中国人工智能产业大会Imagination分享GPU+NNA高效灵活解决方案

demi /

<font color="#FD8900">公司领先的GPU、NNA、GPU+NNA等多种灵活的硬件设计方案和完善的软件和工具链,可为芯片设计公司带来满足应用市场需求的最佳技术与生态组合</font>

在11月13日于深圳举办的“OFweek 2018(第三届)中国人工智能产业大会AI技术专场”上,Imagination Technologies首席技术方案工程师李安发表了题为《运用GPU+NNA 实现设备端异构计算》的精彩演进,并介绍了公司领先的图形处理器(GPU)、用于人工智能的神经网络加速器(NNA)、GPU+NNA和片上存储架构和软件。 (这里提到的片上存储架构改成“GPU+NNA等多种灵活的系统架构设计和软件。”

Imagination在过去的近30年中,一直为业界提供领先的GPU硅知识产权(IP)产品,它们被广泛地应用于移动电话、平板电脑、数字电视、汽车电子和智能安防等等应用,客户包括苹果公司和联发科技等国际企业,以及紫光展锐、瑞芯微等国内领先芯片设计公司。其GPU内核全球累计销量已经超过130亿个,为各类电子产品的创新提供了很好的支撑。