NV的shuffle渲染指令和GPU运行机制--Apple的学习笔记

今天在看ShuffleIntrinsicsVk和HelloVulkan工程的区别,从显示效果来看,比hellovulkan多了些选项,看上去是渲染效果不同而已。

一,问题

那么代码到底要改多少呢?带着问题我对比了工程。

  1. shader文件变了,引入了mode及一些glgs中我不清楚的变量和函数比如gl_SMIDNV和ballotThreadNV。
  2. 除了GUI添加了可选项,vulkan处理代码改动很少
    a,添加了VK_NV_GLSL_SHADER_EXTENSION_NAME的扩展支持。
    b,将一个pipeline改成pipeline队列。(因为有多种渲染,所以初始化时候需要配置多个pipeline)
    c, 添加了VkSpecializationInfo结构体。
    d,设置了pInheritanceInfo,即设置了辅助缓冲区,合并后一起提交,应该是为了性能,不影响功能,我改成nullptr也没区别。(可以忽略)

二,重点

从我对比工程来看,主要区别其实就是shader文件了。

1.SpecializationInfo参数理解

vulkan spec中SpecializationInfo参数是指向VkSpecializationInfo类型的变量的指针。 它允许在管线创建期间在运行时修改着色器源代码中定义的常量变量的值。
其实我理解就是多加了一个glsl的变量mode,然后通过switch case来选择不同的渲染效果。后来查看了help说明
"它允许为着色器指定常量值。使用单个着色器模块,通过为其中使用不同的常量值,可以在流水线创建时对行为进行配置。这比在渲染时使用变量配置着色器更有效率,因为编译器可以进行优化,例如消除if值判断的语句。如果没有这样的常量,可以将成员设置为nullptr,我们的struct结构体初始化自动进行。"
就是说他有优化的作用,因为GPU编程不希望看到很多判断条件,它会浪费线程。有了这个功能,那么就可以优化线程了。提高了性能。

2.VK_NV_GLSL_SHADER_EXTENSION_NAME的扩展支持

NV官网Reading Between The Threads: Shader Intrinsics 快速的看了一遍,没有理解。原因是它说使用warp shuffle和warp vote指令比使用共享内存快。那么这些指令在GPU哪里,是怎么运行的?我必须再系统的了解下GPU的结果及运行机制。

3.GPU的结构

GPU的硬件结构,也不是具体的硬件结构,就是与CUDA相关的几个概念:thread,block,grid,warp,sp,sm。
sp: 最基本的处理单元,streaming processor 最后具体的指令和任务都是在sp上处理的。GPU进行并行计算,也就是很多个sp同时做处理
sm:多个sp加上其他的一些资源组成一个sm, streaming multiprocessor. 其他资源也就是存储资源,共享内存,寄储器等。
warp:GPU执行程序时的调度单位,目前cuda的warp的大小为32,同在一个warp的线程,以不同数据资源执行相同的指令。
grid、block、thread:在利用cuda进行编程时,一个grid分为多个block,而一个block分为多个thread.其中任务划分到是否影响最后的执行效果。划分的依据是任务特性和GPU本身的硬件特性。

4.GPU的运行机制

系统的了解了GPU的部件及运行机制。


GPU硬件结构.png

如上图,对于某些GPU(如Fermi部分型号)的单个SM,包含:
32个运算核心 (Core,也叫流处理器Stream Processor)
16个LD/ST(load/store)模块来加载和存储数据
4个SFU(Special function units)执行特殊数学运算(sin、cos、log等)
128KB寄存器(Register File)
64KB L1缓存
全局内存缓存(Uniform Cache)
纹理读取单元
纹理缓存(Texture Cache)
PolyMorph Engine:多边形引擎负责属性装配(attribute Setup)、顶点拉取(VertexFetch)、曲面细分、栅格化(这个模块可以理解专门处理顶点相关的东西)。
2个Warp Schedulers:这个模块负责warp调度,一个warp由32个线程组成,warp调度器的指令通过Dispatch Units送到Core执行。
指令缓存(Instruction Cache)
内部链接网络(Interconnect Network)

5. compute shaders的含义

Compute Shader 可以在通常的渲染管线之外运行,执行一些大量的通用计算,用途:大量并行少分支的数学运算很适合使用。
Compute Shader是一种技术,是微软DirectX 11 API新加入的特性,在Compute Shader的帮助下,程序员可直接将GPU作为并行处理器加以利用,GPU将不仅具有3D渲染能力,也具有其他的运算能力,也就是我们说的GPGPU的概念和物理加速运算。

6. 像素块

32个像素线程将被分成一组,或者说8个2x2的像素块,这是在像素着色器上面的最小工作单元,在这个像素线程内,如果没有被三角形覆盖就会被遮掩,SM中的warp调度器会管理像素着色器的任务。
也就是说,在像素着色器中,会将相邻的四个像素作为不可分隔的一组,送入同一个SM内4个不同的Core。

三,总结

要了解渲染,就必须了解GPU结构及GPU运行机制。NV有很多架构,比如图灵架构,最新的RTX光线追踪技术,我只是初步了解NV主流的GPU硬件架构及运行机制。
有了GPU基础后,我再阅读官网关于warp shuffle和warp vote的渲染指令,我现在理解它是GPU内部的引擎就像physx一样。它在GPU内部通过SM之间交换数据而达到某些渲染效果比如爆炸/水波纹效果,而不需要和memory模块交互数据,这样可以节约系统切换时间,从而提升效率。而所谓引擎也可以理解为驱动程序中的一部分,它提供了API接口,程序员编程只要直接使用开放的接口即可。所以代码中需要检测VK_NV_GLSL_SHADER_EXTENSION_NAME扩展是否支持。

四,参考资料

https://blog.csdn.net/asasasaababab/article/details/80447254
啊哈~我又进步了一点点。不积跬步无以至千里V

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,125评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,293评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,054评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,077评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,096评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,062评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,988评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,817评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,266评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,486评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,646评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,375评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,974评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,621评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,642评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,538评论 2 352

推荐阅读更多精彩内容