GPGPU代表general purpose computing on graphics procesing unit,就是“图形处理器通用计算技术”。这种新型的加速技术试图把个人计算机上的显卡当作CPU这样的通用处理器来用,使显卡的强劲动力不仅仅发挥在图形处理上。从2009年开始,利用显卡进行计算已经渐成主流。

GPU的工作过程,它从CPU处获得三维模型,这些模型是用顶点坐标和色彩信息组成的,GPU对这些顶点的位置进行一系列的变换,然后投影到帧缓存上。投影的同时,GPU根据显示其的大小和分辨率对投影结果进行裁减,光栅化,每个帧缓存里的像素或者像素多边形的色彩经过GPU的一系列变换,最后的结果被GPU输出到显示器上。

GPU在计算机中的位置:

这一系列的工作是先后有序,不可颠倒的,前面步骤的输出是后面步骤的输入,这一连串的图形处理任务被成为图形流水线,图形流水线的入口是顶点坐标和颜色信息,输出是一帧适合当前显示器显示的图像,流水线以较高的频率工作(高于显示器的刷新频率),期间不断有数据从中流过,同时连续的一帧帧图像被输出到显示器上。

应用程序输入GPU的是三维的点云数据,从流水线输入端直到顶点着色器,流水线计算的对象都是三维几何模型,从光栅化器开始,所有操作都帧度二维像素了。

1.在计算机科学史上,某个算法一旦被设计出来就会被持续不断的改进,来达到更高的直行效率,一般来说,某个算法若在改进后比原来快了20%或者50%,就会被认为是个显著的贡献,并有机会发表在学术论文中。但显著改进某个算法的性能绝非易事,除了要深入了解算法的内涵,还要求算法设计者有较身后的理论基础和很强的创新能力。

2.2004年之后,CPU发展已经告别了主频时代,单核CPU的性能自此之后很难靠提高主频来提高性能。然而依靠重新设计算法来显著提高程序的运行效率是一项艰巨的脑力劳动,且成效较为有限。所以,为了充分利用CPU的计算资源,越来越多的算法被重新设计成并行结构,以适应多核CPU架构,但是,和主频一样,多核CPU的核心数目也受到各种因素的限制,比如成本,散热灯技术难题。

3.要使用GPU做并行计算,就要保证并行计算算法满足几个条件,首先每个线程的任务互不相关,其次,每个线程执行相同的指令。与之相应,具有以下特点的算法能够在GPU上达到最高的直行效率,首先每个数据(数据包)都需要经过相同的流程来处理,其次数据之间没有相干性,即某些数据的计算不依赖于另一些数据的计算结果,最后,数据量庞大。需要注意的事,以上的要求都是针对局部算法而言的,比如,算法中的一步操作,一个循环语句等等,并不要求整个程序都满足线程的不相干性和指令一致性,一个完整的程序可以是由多个满足以上条件的部分接合起来的,而对程序全剧的控制和个部分的协调可以放在CPU上完成,这也就是所谓的异构并行计算。也就是说,计算资源含有多个不同的处理器,比如由GPU,CPU,甚至还有其他的处理器比如NPU,组成的处理器阵列,而GPGPU的计算过程是由CPU和GPU等共同完成的,开发人员可以将算法复杂的,要求精度高的数据量小的部分交给CPU,而将算法枯燥的,对精度要求不是很高的,数据量庞大的部分交给GPU来完成。

doorbell机制

GPGPU的编程模型如下图所示,在第二阶段,主机将设备计算所需要的数据以packet的形式传递到GPU和CPU共享的ringbuffer之中,并通过某种手段同志GPU去执行。

为了提高效率,通常通知GPU执行采用的机制为doorbell, HOST CPU会写command queue对应的 PCIe BAR空间的doorbell寄存器,一个驱动在多次将请求入队ringbuffer后产生一次doorbell。类似于家庭中的门铃。

Wikipedia上的解释:

in a push button analogy applied to computer systems, the term doorbell or doorbell interrupt is often used to describe a mechanism whereby a software system can signal or notify a computer hardware device that there is some work to be done. Typically, the software system will place data in some well-known and mutually agreed upon memory locations, and “ring the doorbell” by writing to a different memory location. This different memory location is often called the doorbell region, and there may even be multiple doorbells serving different purposes in this region. It is this act of writing to the doorbell region of memory that “rings the bell” and notifies the hardware device that the data are ready and waiting. The hardware device would now know that the data are valid and can be acted upon. It would typically write the data to a hard disk drive, or send them over a network, or encrypt them, etc.For GPGPU, it will push gpu to work for compute.

The term doorbell interrupt is usually a misnomer. It is similar to an interrupt, because it causes some work to be done by the device; however, the doorbell region is sometimes implemented as a polled region, sometimes the doorbell region writes through to physical device registers, and sometimes the doorbell region is hardwired directly to physical device registers. When either writing through or directly to physical device registers, this may cause a real interrupt to occur at the device’s central processor unit (CPU), if it has one.

Doorbell interrupts can be compared to Message Signaled Interrupts, as they have some similarities.

门铃,就是按钮按下以后, 门内铃声想起。doorbell理解,host操作指定位置(按钮), 客户端会立即触发(响铃)

1、 比如, AMDGPU的ring buffer 同步机制, 早期是mmio操作share regs, 后来使用doorbell, 可以达到省电和快速反应
2、 而且, doorbell是bar单出, 有很多ip都可以用, 增加了可操作数量.

intel集成显卡doorbell机制的实现

intel_gvt_init_workload_scheduler->kthread_run(workload_thread,, engine, ...);

workload_thread->complete_current_workload->update_guest_context->vgpu_vreg_t(vgpu, RING_TAIL(ring_base)) = tail;vgpu_vreg_t(vgpu, RING_HEAD(ring_base)) = head;


结束

GPGPU渲染GPU的工作原理和认知总结相关推荐

  1. CPU GPU设计工作原理《转》

    我知道这非常长,可是,我坚持看完了.希望有幸看到这文章并对图形方面有兴趣的朋友,也能坚持看完.一定大有收获.毕竟知道它们究竟是怎么"私下勾搭"的.会有利于我们用程序来指挥它们... ...

  2. CPU GPU设计工作原理

    转自:http://blog.csdn.net/claien/article/details/6965135 要说到设计的复杂程度,那还是CPU了!这个不用讨论,很简单的道理你看看显卡芯片的更新速度和 ...

  3. 云计算机渲染效果,分析云渲染平台的工作原理

    云渲染平台分布式并行计算分为空间上的并行和时间上的并行. 空间上的并行是指用多个处理器并发的执行计算,比如Mentalray渲染器就支持单帧画面分割渲染,时间上的并行就是指流水线技术. 云渲染平台现在 ...

  4. 从渲染页面的角度来聊一聊浏览器的工作原理

    从渲染页面的角度来聊一聊浏览器的工作原理 页面内容快速加载和流畅的交互是用户希望得到的Web体验,因此,开发者应力争实现这两个目标. 了解如何提升性能和感知性能,有助于了解浏览器的工作原理. 概述 快 ...

  5. 懂GPU服务器的工作原理

    GPU服务器是一种用于计算机科学技术领域的计算机及其配套设备,于2017年5月31日启用. 一.GPU服务器的用途 GPU服务器是基于GPU功能的视频编解码.深度学习.科学计算等多种场景的快速.稳定. ...

  6. CPU、GPU的设计工作原理

    要说到设计的复杂程度,那还是CPU了!这个不用讨论,很简单的道理你看看显卡芯片的更新速度和CPU的更新速度就可见一斑了.还是简单说说他们的设计原理吧. CPU: 但是,现在我要问一句:"什么 ...

  7. 干货:浏览器渲染引擎Webkit和V8引擎工作原理

    浏览器的历史 W3C在80年代后期90年代初期发明了世界上第一个浏览器WorldWideWeb(后更名为Nexus),支持文本/简单的样式表/电影/声音和图片 1993年,网景(netscape)浏览 ...

  8. 一文搞懂GPU的概念、工作原理,以及与CPU的区别

    近几个月,几乎每个行业的小伙伴都了解到了ChatGPT的可怕能力.你知道么,ChatGPT之所以如此厉害,是因为它用到了几万张NVIDA Tesla A100显卡做AI推理和图形计算. 本文就简单分享 ...

  9. JavaScript 工作原理之十一-渲染引擎及性能优化小技巧

    原文请查阅这里,略有删减,本文采用知识共享署名 4.0 国际许可协议共享,BY Troland. 本系列持续更新中,Github 地址请查阅这里. 这是 JavaScript 工作原理的第十一章. 迄 ...

最新文章

  1. 迁移学习CNN图像分类模型 - 花朵图片分类
  2. C语言访问MYSQL数据库的完整的代码例子
  3. 【Java开发问题】对象封装+固定排序+list All elements are null引起的异常处理+Missing artifact com.sun:tools:jar:1.8.0
  4. python狗图像识别_TensorFlow卷积神经网络之使用训练好的模型识别猫狗图片
  5. pyecharts怎么绘制散点图_pyecharts可视化和wx的结合
  6. NET Framework 安装时出现错误无法安装
  7. requestmapping注解访问404_开发人员都必须知道的Spring注解概览
  8. Linux服务器的攻防技术
  9. 辰信领创:下一代信息安全是认知安全
  10. 获取mysqli函数的值和字段名
  11. linux shell文件转码命令:iconv
  12. 计算机丢失d3d10,“怎样解决d3dx10_42.dll丢失造成的游戏打不开”的解决方案
  13. echarts结合amap (echarts-extension-amap)
  14. php 获取当天是星期几,获取当天或某个日期是星期几
  15. 为什么我的cairo画出的直线不同角度宽度不同???
  16. 2022-2028全球与中国企业上云市场现状及未来发展趋势
  17. iOS开发 - 中文 iOS/Mac 开发博客列表
  18. GateData Graph Digitizrer 图片中原始曲线数据提取——科研利器
  19. torchtext使用-- 单标签多分类任务TREC
  20. Windows 10 更新遇到错误代码 0x80240034 的解决方法

热门文章

  1. 安科瑞精密配电列头柜产品XXX数据中心案例分享-安科瑞华楠
  2. Tiny语言编译器简介
  3. 一元n次多项式的处理
  4. 聚焦分布式资本:中国首家区块链基金如何布局区块链
  5. oracle中制表符,oracle中去掉文本中的换行符、回车符、制表符
  6. Java利用TCP进行文件的传输
  7. ESP8266模块使用完整教程
  8. 最全的apple pay苹果支付步奏
  9. 解析mp3文件,获得mp3中的专辑图片
  10. 答题小程序 服务器,答题小程序如何实现随机发题目