0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

从Shader编成入手了解GPU应用方案

Dbwd_Imgtec 来源:未知 作者:胡薇 2018-05-17 09:18 次阅读

Graphics Processing Unit(GPU),即可编程图形处理单元, 通常也称之为可编程图形硬件

由于GPU有高并行结构(highly parallel structure),所以GPU在处理图形数据和复杂算法方面拥有比CPU更高的效率。图 1 GPU VS CPU 展示了 GPU 和 CPU 在结构上的差异,CPU 大部分面积为控制器寄存器,与之相比,GPU拥有更多的 ALU(Arithmetic Logic Unit,逻辑运算单元)用于数据处理,而非数据高速缓存和流控制,这样的结构适合对密集型数据进行并行处理。CPU 执行计算任务时,一个时刻只处理一个数据,不存在真正意义上的并行,而 GPU 具有多个处理器核,在一个时刻可以并行处理多个数据。

GPU 采用流式并行计算模式,可对每个数据进行独立的并行计算,所谓“对 数据进行独立计算”,即,流内任意元素的计算不依赖于其它同类型数据,例如,计算一个顶点的世界位置坐标,不依赖于其他顶点的位置。而所谓“并行计算” 是指“多个数据可以同时被使用,多个数据并行运算的时间和 1 个数据单独执行的时间是一样的”。图 2 中代码目的是提取 2D 图像上每个像素点的颜色值,在 CPU 上运算的 C++代码通过循环语句依次遍历像素;而在 GPU 上,则只需要一条语句就足够。

其一,object space coordinate 就是模型文件中的顶点值,这些值是在模型建模时得到的,例如,用 3DMAX 建 立一个球体模型并导出为.max 文件,这个文件中包含的数据就是 object space coordinate;其二,object space coordinate 与其他物体没有任何参照关系,注意,这个概念非常重要,它是将 object space coordinate 和 world space coordinate 区分 开来的关键。无论在现实世界,还是在计算机的虚拟空间中,物体都必须和一个固定的坐标原点进行参照才能确定自己所在的位置,这是 world space coordinate 的实际意义所在。

从 object space coordinate 到 world space coordinate 的变换过程由一个四阶矩阵控制,通常称之为 world matrix。需要高度注意的是:顶点法向量在模型文件中属于 object space,在 GPU 的 顶点程序中必须将法向量转换到 world space 中才能使用,如同必须将顶点坐标从 object space 转换到 world space 中一样,但两者的转换矩阵是不同的,准确的说,法向量从 object space 到 world space 的转换矩阵是 world matrix 的转置矩阵的逆矩阵。

每个人都是从各自的视点出发观察这个世界,无论是主观世界还是客观世界。同样,在计算机中每次只能从唯一的视角出发渲染物体。在游戏中,都会提供视点漫游的功能,屏幕显示的内容随着视点的变化而变化。这是因为 GPU 将 物体顶点坐标从 world space 转换到了 eye space。 所谓 eye space,即以 camera(视点或相机)为原点,由视线方向、视角和远近平面,共同组成一个梯形体的三维空间,称之为 viewing frustum(视锥), 如图 4 所示。近平面,是梯形体较小的矩形面,作为投影平面,远平面是梯形体 较大的矩形,在这个梯形体中的所有顶点数据是可见的,而超出这个梯形体之外的场景数据,会被视点去除(Frustum Culling,也称之为视锥裁剪)。

从视点坐标空间到屏幕坐标空间 (screen coordinate space)事实上是由三步组成:

1. 用透视变换矩阵把顶点从视锥体中变换到裁剪空间的 CVV 中;2. 在 CVV 进行图元裁剪;3. 屏幕映射:将经过前述过程得到的坐标映射到屏幕坐标系上。

从物理结构而言,寄存器是 cpu 或 gpu 内部的存储单元,即寄存器是嵌入在 cpu 或者 gpu 中的,而内存则可以独立存在;

从功能上而言,寄存器是有限存储 容量的高速存储部件,用来暂存指令、数据和位址。

Shader 编成是基于计算机图形硬件的,这其中就包括 GPU 上的寄存器类型,glsl 和 hlsl 的着色虚拟机版本就是基于 GPU 的寄存器和指令集而区分的。

顶点着色器控制顶点坐标 转换过程;片段着色器控制像素颜色计算过程。这样就区分出顶点着色程序和片 段着色程序的各自分工:Vertex program 负责顶点坐标变换;Fragment program 负责像素颜色计算;前者的输出是后者的输入。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    5020

    浏览量

    117629
  • gpu
    gpu
    +关注

    关注

    27

    文章

    4403

    浏览量

    126564

原文标题:GPU学习笔记

文章出处:【微信号:Imgtec,微信公众号:Imagination Tech】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FPGA在深度学习应用中或将取代GPU

    现场可编程门阵列 (FPGA) 解决了 GPU 在运行深度学习模型时面临的许多问题 在过去的十年里,人工智能的再一次兴起使显卡行业受益匪浅。英伟达 (Nvidia) 和 AMD 等公司的股价也大幅
    发表于 03-21 15:19

    自学STM32的话应该入手

    麻烦问一下自学STM32应该怎样入手呢,很多库文件引用有点看不懂,是要从51开始学起吗
    发表于 03-21 09:28

    OpenHarmony开源GPU库Mesa3D适配说明

    Dislay HDI的GFX合成->调用KMS完成数据转换->LCD硬件完成显示 2.2 适配前提条件 适配框架图可以看出,GPU适配,需要建立在Dislay HDI、DRM
    发表于 12-25 11:38

    GPU集群组网技术详解

    ​ 流行的GPU/TPU集群网络组网,包括:NVLink、InfiniBand、ROCE以太网Fabric、DDC网络方案等,深入了解它们之间的连接方式以及如何在LLM训练中发挥作用。为了获得良好的训练性能,
    的头像 发表于 12-25 10:11 1955次阅读
    <b class='flag-5'>GPU</b>集群组网技术详解

    Mali GPU着色器开发工作室勘误表

    本文档描述了马里GPU Shader Development Studio 1.1版的EAC版本中的已知勘误表。 这是一个贯穿整个产品生命周期的工作文档,因此,随着新信息的发现,其内容可能会被修改
    发表于 09-05 06:08

    GPU发起的Rowhammer攻击常见问题

    任意虚拟内存位置的指针。 该方法使用来自远程JavaScript的侧通道和所谓的“Rowhammer”攻击。 所谓的“Rowhammer”攻击已经存在了几年,但最近的研究表明,这种攻击可能是GPU发起的。
    发表于 08-25 06:41

    gpu和cpu有什么区别?

    gpu和cpu有什么区别? GPU和CPU是电脑中两个重要的计算器件。如果想要了解这两个设备的区别,需要从它们的含义和工作原理入手。 首先,CPU(Central Processing
    的头像 发表于 08-09 16:15 1w次阅读

    Bifrost GPU可编程核心的顶级布局、优势和着色器核心功能

    优化应用程序的二维和三维性能时,您需要对硬件的工作原理有一个高层次的了解。例如,在使用GPU的性能计数器进行优化时,了解马里GPU块架构尤为重要。 这是因为该计数器数据直接绑定到
    发表于 08-02 17:52

    Mali-Valhall系列GPU可编程内核

    2018年起。当使用GPU优化应用程序时,至少有一个高级心理模型是有用的了解底层硬件的工作方式。了解预期性能也很有用以及它可能执行的不同类型操作的数据速率。在优化使用Mali时,了解
    发表于 08-02 16:38

    基于磁贴的GPU架构优缺点

    将输出帧缓冲区渲染为几个不同的较小的子区域,称为平铺。然后,它在完成时将每个磁贴写出到内存中。在马里图形处理器上,这些瓷砖很小,每个瓷砖只有16x16像素。 在本指南结束时,您将了解即时模式GPU和基于磁贴的GPU的主要优势和
    发表于 08-02 12:54

    Midgard Shader核心技术介绍

    Mali-T600、Mali-T700和Mali-T800系列产品。 要优化应用程序的二维和三维性能,您需要对硬件的工作原理有深入的了解。例如,在使用GPU的性能计数器进行优化时,了解马里GP
    发表于 08-02 06:20

    GPU服务器是什么?

    具体是什么呢?如何选择GPU服务器? GPU服务器有什么作用? GPU加快计算能够提供不凡的应用软件性能,能将应用软件计算聚集一部分的工作中负荷迁移到GPU,另外仍由CPU运作其他编程
    的头像 发表于 08-01 18:03 580次阅读

    你不了解的国产GPU,都处于什么水平?

    国内GPU厂商有各自的专注领域,其中不乏自主研发的产品,在IP、微架构创新、软硬件结合等方面均有建树。随着ChatGPT掀起AI热潮,大模型对算力的要求会越来越高,国内GPU厂商以图形处理、通用
    的头像 发表于 06-26 14:03 2236次阅读
    你不<b class='flag-5'>了解</b>的国产<b class='flag-5'>GPU</b>,都处于什么水平?

    GPU如何在imx8m plus上工作以及GPU驱动程序如何集成到DRM驱动程序框架中?

    驱动程序不是开源的,但我没有找到任何 .ko 文件或其他东西。我发布这个问题是因为我想了解 GPU 如何在 imx8m plus 上工作以及 GPU 驱动程序如何集成到 DRM 驱动程序框架中。我
    发表于 06-08 08:23

    如何获取GPU vivante这些文件和目录?

    我必须对 GPU vivante 进行一些测试。我可以在文档中看到它提到了 /unit_tests/GPUgpu.sh 和 gpu_info.sh 以及一些示例 /opt/viv_
    发表于 05-22 06:27