美文网首页
GPU通用计算API的变迁和趋势

GPU通用计算API的变迁和趋势

作者: 4595a6bd87df | 来源:发表于2017-07-07 15:17 被阅读0次

摘要:在高性能计算、机器学习等现代应用领域中,GPU(Graphics Processing Unit)是占统治地位的计算引擎。GPU从早期的固化逻辑实现、到可编程、到今天的通用计算架构(GPGPU),其应用接口(API)随着功能和通用性的提升而变得越来越灵活和高效。

在高性能计算、机器学习等现代应用领域中,GPU(Graphics Processing Unit)是占统治地位的计算引擎。GPU从早期的固化逻辑实现、到可编程、到今天的通用计算架构(GPGPU),其应用接口(API)随着功能和通用性的提升而变得越来越灵活和高效。

1. 图形渲染:DirectX 和 OpenGL

早期的GPU有浑名显卡也不冤枉。从软件角度来说,其逻辑架构基本上就是图形的三角形坐标变换、顶点照明、像素着色等一系列功能。因为逻辑固化、功能单纯,应用程序通过驱动接口可以直接执行这些功能,主要API就是较早版本的OpenGL和DirectX。

OpenGL源于曾经非常风光的SGI公司,然后演进成支持跨平台图形的工业标准,版本也从最初的1.x,到2.0,3.x,到今天的4.5【1】。目前Khronos Group(OpenGL标准化组织)正在推进OpenGL5.0。而DirectX是微软的windows平台上专用API。DirectX图形API最初的几个版本基本上是奋力直追OpenGL的features,直到DirectX 9.3c,微软才完成了实质上的超越。DirectX 9.3在features上大致相当于OpenGL3.3。(注意,OpenGL分为台式、嵌入式两个不同的profile,其版本之间的一一对应关系不甚明显)

随着图形算法的改进和对高质清晰画面的追求,GPU需要越来越强大的灵活性来支持纹理、材料属性、和精细度渲染,固化的逻辑显然无法跟得上这些需求。GPU实现真正意义上的可编程是支持高层渲染语言(shading language)。对应于OpenGL的高层语言是GL Shading Language(简称GLSL),对应于DirectX的高层语言是High Level Shading Language (或HLSL)。GPU的可编程流水线架构如下:

由上图可见,在GPU的逻辑流水线上,只有两个阶段是可编程的,其它的仍然是固化的硬件支持。其中,一个可编程的stage是三角形顶点处理器(vertex processor),用户可以根据自己的需求编写适当的坐标变换、光线照明等复杂程序。另一个是像素处理器(fragment processor),实现更细节的渲染和纹理映射等。两个处理器对应的GPU程序分别叫做vertex shader 和fragment shader。在DirectX中,fragment shader叫做pixel shader。

不同的GPU厂商对上述的可编程逻辑单元有不同的的硬件实现。比如,英伟达(Nvidia)早期的GeForce 系列,ARM Mali GPU都采取了离散架构,即vertex processor和fragment processor是独立的物理处理单元。英伟达直到GeForce 8 系列的Tesla微架构,才改成了归一化的GPU架构【2】,即统一的处理器可以同时执行vertex shader 和fragment shader。ARM Mali Midgard和最近的Bifrost微架构也采用了归一化的实现【3】。不过,高通(Qualcomm)的Adreno GPU一开始就是归一化的微架构。

2. 通用计算:DirectX、OpenGL/OpenCL和Renderscript

在DirectX9.3 实现超越之后,微软在GPU API方面一直处于领跑地位。只是DirectX 10时运不济,几乎随着Windows Vista灰飞烟灭。但之后的DirectX 11改头换面,并率先推出了细分曲面(tessellation)和通用计算(compute)API,实现了从GPU 到GPGPU(general-purpose GPU)的飞跃【4】。

相关文章

  • GPU通用计算API的变迁和趋势

    摘要:在高性能计算、机器学习等现代应用领域中,GPU(Graphics Processing Unit)是占统治地...

  • 初识MetalView

    Metal metal是iOS设备的一个底层图形API,功能类似OpenGL,支持图形渲染和GPU通用计算.met...

  • GPGPU

    GPGPU全称General Purpose Computing on GPU,即在图形处理器上进行通用计算。其中...

  • iOS底层day11 - 性能优化

    CPU & GPU 屏幕成像原理: 卡贞 CPU 计算和GPU渲染是具有周期性的,当 CPU 计算和GPU渲染的时...

  • gpu的安装

    和GPU有关的组件有NVIDIA,cuda,cudnn,gpu 其中gpu是硬件,cuda是gpu的并行计算框架。...

  • 阿里云GPU云服务器产品优势、应用场景、最新价格介绍

    阿里云GPU云服务器提供GPU加速计算能力,实现GPU计算资源的即开即用和弹性伸缩。作为阿里云弹性计算家族的一员,...

  • 教你一步步写一个cuda path tracer:cuda简介和

    cuda定义 cuda是nvidia推出的一种通用并行计算架构,该架构能够充分利用gpu强大的并行计算能力,解决一...

  • GPU编程--CPU和GPU的设计区别

    本篇结构 前言 概论 CPU简介 GPU简介 并行计算 CPU/GPU对比 适于GPU计算的场景 GPU开发环境 ...

  • cuda编程背景

    CUDA是NVIDIA于2006年11月推出的,用于发挥NVIDIA GPU通用计算能力的编程环境,目前支持CUD...

  • class0

    学习目标 GPU 历史和渲染流水线 GPU 编程API(Cg,HLSL,*GLSL) 学会Vertex Shade...

网友评论

      本文标题:GPU通用计算API的变迁和趋势

      本文链接:https://www.haomeiwen.com/subject/clzlhxtx.html