当前位置: 首页 > news >正文

网站品牌建设功能php网站开发原理

网站品牌建设功能,php网站开发原理,网站开发前端应用程序,云服务器是干嘛用的五、GPU技术要点 1.SMID和SIMT SIMD#xff08;Single Instruction Multiple Data#xff09;是单指令多数据#xff0c;在GPU的ALU#xff08;在Core内#xff09;单元内#xff0c;一条指令可以处理多维向量#xff08;一般是4D#xff09;的数据。比如#xff0c…五、GPU技术要点 1.SMID和SIMT SIMDSingle Instruction Multiple Data是单指令多数据在GPU的ALU在Core内单元内一条指令可以处理多维向量一般是4D的数据。比如有以下shader指令 float4 c a b; // a,b都是float4类型 对于没有SIMD的处理单元需要4条指令将4个float数值相加汇编伪代码如下 ADD c.x, a.x, b.x ADD c.y, a.y, b.y ADD c.z, a.z, b.z ADD c.w, a.w, b.w 但是有了SIMD技术只需要一条指令即可处理完 SIMD_ADD c, a, b for(i0; i n ; i) c[i] a[i] b[i]; SIMTSingle Instruction Multiple Threads,单指令多线程是SIMD的升级版可对GPU中单个SM中的多个Core同时处理一个指令并且每个Core存取的数据可以是不同的。 SIMT_ADD cab 上述指令会被同时送入在单个SM中被编组的所有Core中同事执行运算但a、b、c的值可以不一样 2.co-issue co-issue是为了解决SIMD运行单元无法充分利用的问题。例如下图由于float数量的不同ALU利用率从100%依次下降为75%、50%、25%。 为了解决着色器在低维向量的利用率低的问题可以通过合并1D与3D与2D的指令。例如下图DP3指令用了3D数据ADD指令只有1D数据co-issue会自动将他们合并在同一个ALU只需要一个指令周期即可执行完。 但是对于向量运算Vector ALU如果其中一个变量既是操作数又是存储数的情况无法启用co-issue技术 3.if-else语句 如上图SM中有8个ALUCore由于SIMD的特性每个ALU的数据都不一样导致if-else语句在某些ALU中执行的是true分支黄色有些ALU执行的是false分支灰蓝色这样导致很多ALU的执行周期被浪费掉了即masked out拉长了整个执行周期。最坏的情况同一个SM中只有1/88是同一个SM的线程数不同架构的GPU有所不同的利用率。 同样for循环也会导致类似的情况例如以下shader代码 void func(int count, int breakNum) { for(int i 0; i count; i) { if (i breakNum) break; else // do something } } 由于每个ALU的count不一样加上有break分支导致最快执行完shader的ALU可能是最慢的N分之一的时间但由于SIMD的特性最快的那个ALU依然要等待最慢的ALU执行完毕才能接下一组指令的活也就是白白浪费了很多时间周期。 4.Early-Z 早期GPU的渲染管线的深度测试是在像素着色器之后才执行下图这样会造成很多本不可见的像素执行了耗性能的像素着色器计算。 后来为了减少像素着色器的额外消耗将深度测试提至像素着色器之前下图这就是Early-Z技术的由来。 Early-Z技术可以将很多无效的像素提前剔除避免它们进入耗时严重的像素着色器。Early-Z剔除的最小单位不是1像素而是像素块pixel quad2x2个像素。 但是以下情况会导致Early-Z失效 开启Alpha Test由于Alpha Test需要在像素着色器后面的Alpha Test阶段比较所以无法在像素着色器之前就决定该像素是否被剔除。开启Alpha Blend启用了Alpha混合的像素很多需要与frame buffer做混合无法执行深度测试也就无法利用Early-Z技术。开启Tex Kill即在shader代码中有像素摒弃指令DX的discardOpenGL的clip。关闭深度测试。Early-Z是建立在深度测试看开启的条件下如果关闭了深度测试也就无法启用Early-Z技术。开启Multi-Sampling多采样会影响周边像素而Early-Z阶段无法得知周边像素是否被裁剪故无法提前剔除。以及其它任何导致需要混合后面颜色的操作。 此外Early-Z技术会导致一个问题深度数据冲突depth data hazard。 例子要结合上图假设数值深度值5已经经过Early-Z即将写入Frame Buffer而深度值10刚好处于Early-Z阶段读取并对比当前缓存的深度值15结果就是10通过了Early-Z测试会覆盖掉比自己小的深度值5最终frame buffer的深度值是错误的结果。 避免深度数据冲突的方法之一是在写入深度值之前再次与frame buffer的值进行对比 5.统一着色器架构Unitfied shader Architecture 在早期的GPU顶点着色器和像素着色器的硬件结构是独立的它们各有各的寄存器、运算单元等部件。这样很多时候会造成顶点着色器与像素着色器之间任务的不平衡。对于顶点数量多的任务像素着色器空闲状态多对于像素多的任务顶点着色器的空闲状态多下图。 于是为了解决VS和PS之间的不平衡引入了统一着色器架构Unified shader Architecture。用了此架构的GPUVS和PS用的都是相同的Core。也就是同一个Core既可以是VS又可以是PS。 6.像素块 5.4中提到的 32个像素线程将被分成一组或者说8个2x2的像素块这是在像素着色器上面的最小工作单元在这个像素线程内如果没有被三角形覆盖就会被遮掩SM中的warp调度器会管理像素着色器的任务。 也就是说在像素着色器中会将相邻的四个像素作为不可分隔的一组送入同一个SM内4个不同的Core。 为什么像素着色器处理的最小单元是2x2的像素块 推测有以下原因 1、简化和加速像素分派的工作。 2、精简SM的架构减少硬件单元数量和尺寸。 3、降低功耗提高效能比。 4、无效像素虽然不会被存储结果但可辅助有效像素求导函数。 这种设计虽然有其优势但同时也会激化过绘制Over Draw的情况损耗额外的性能。比如下图中白色的三角形只占用了3个像素绿色按我们普通的思维只需要3个Core绘制3次就可以了。 但是由于上面的3个像素分别占据了不同的像素块橙色分隔实际上需要占用12个Core绘制12次下图。 这就会额外消耗300%的硬件性能导致了更加严重的过绘制情况。 更多详情可以观看虚幻官方的视频教学实时渲染深入探究。
http://www.zqtcl.cn/news/198238/

相关文章:

  • 网站维护 静态页面正规企业展厅设计公司
  • 网站分享图片怎么做东莞网站优化关键词费用
  • 做摄影网站的目的域名注册和网站设计服务
  • 手表网站设计免费常州百度推广优化
  • 网站开发找聚脑网视频直播源码
  • 提供免费服务器的网站南沙电子商务网站建设
  • 厦门网站建设开发公司企业网站设计源代码
  • 微网站服务器酒店手机网站首页设计
  • 网站交互做的比较好的怎样营销网站建设
  • 电子商务网站设计代码凡科做的网站能被收录吗
  • 设计网站教程自动点击器永久免费版
  • 深圳 网站建设设计如何用公众号做网站
  • 免费微信网站制作北风淘淘网站开发
  • 建筑模型设计网站建设网站设计 分辨率
  • 网站规划包括哪些内容西部建设网站
  • 网站html静态化网站整体色彩的建设
  • 长春比较有名的做网站建设宁波网站建设联系电话查询
  • 建网站中企动力推荐网络营销外包总代理
  • 网站怎么续费网站内链检测
  • 织梦网站地图样式中国品牌网站
  • 上海金山区建设局网站临淄信息港发布信息
  • 保定外贸网站建设学生网站建设首页
  • 商城网站备案要求wordpress插件 手机版
  • 北京市网站备案查询石家庄建设信息网必须交费吗
  • 北京优化网站方法四川省建设局网站
  • 怎么做网站能快速赚钱重庆快速建站
  • 河南专业网站建设公司首选培训心得简短200字
  • 销售网站开发业务高端建网站多少钱
  • 几个做ppt的网站知乎青岛高品质网站制作
  • 网站seo插件wordpress模板中文版