CN110766778A - 使用散列执行并行路径空间滤波来降低渲染期间的噪音 - Google Patents
使用散列执行并行路径空间滤波来降低渲染期间的噪音 Download PDFInfo
- Publication number
- CN110766778A CN110766778A CN201910093024.9A CN201910093024A CN110766778A CN 110766778 A CN110766778 A CN 110766778A CN 201910093024 A CN201910093024 A CN 201910093024A CN 110766778 A CN110766778 A CN 110766778A
- Authority
- CN
- China
- Prior art keywords
- vertices
- vertex
- optical transmission
- features
- hash
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000001914 filtration Methods 0.000 title abstract description 38
- 238000009877 rendering Methods 0.000 title abstract description 11
- 230000005540 biological transmission Effects 0.000 claims abstract description 52
- 230000003287 optical effect Effects 0.000 claims abstract description 51
- 238000000034 method Methods 0.000 claims abstract description 48
- 230000004044 response Effects 0.000 claims abstract description 7
- 238000013139 quantization Methods 0.000 claims description 13
- 238000004088 simulation Methods 0.000 claims description 8
- 238000013507 mapping Methods 0.000 claims description 5
- 230000001186 cumulative effect Effects 0.000 claims description 4
- 238000011156 evaluation Methods 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 claims description 2
- 238000012545 processing Methods 0.000 description 74
- 239000012634 fragment Substances 0.000 description 25
- 238000005192 partition Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 18
- 238000004891 communication Methods 0.000 description 17
- 230000008569 process Effects 0.000 description 17
- 239000000872 buffer Substances 0.000 description 16
- 239000011159 matrix material Substances 0.000 description 14
- 238000004422 calculation algorithm Methods 0.000 description 10
- 239000004065 semiconductor Substances 0.000 description 10
- 238000013528 artificial neural network Methods 0.000 description 9
- 238000013519 translation Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000012360 testing method Methods 0.000 description 7
- 238000009825 accumulation Methods 0.000 description 6
- 238000001514 detection method Methods 0.000 description 6
- 238000013135 deep learning Methods 0.000 description 5
- 238000012549 training Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 4
- 230000010076 replication Effects 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 238000002156 mixing Methods 0.000 description 3
- 210000002569 neuron Anatomy 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 239000013598 vector Substances 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 210000004556 brain Anatomy 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000005286 illumination Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000033001 locomotion Effects 0.000 description 2
- 230000001537 neural effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 201000010099 disease Diseases 0.000 description 1
- 208000037265 diseases, disorders, signs and symptoms Diseases 0.000 description 1
- 238000009509 drug development Methods 0.000 description 1
- 238000007876 drug discovery Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000013067 intermediate product Substances 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 238000000329 molecular dynamics simulation Methods 0.000 description 1
- 238000012900 molecular simulation Methods 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000005855 radiation Effects 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000003595 spectral effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/06—Ray-tracing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/506—Illumination models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/70—Denoising; Smoothing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/12—Indexing scheme for image data processing or generation, in general involving antialiasing
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了使用散列执行并行路径空间滤波来降低渲染期间的噪音。公开了一种方法、计算机可读介质和系统,用于通过路径空间滤波通过共享在空间上接近的信息来降低场景渲染期间的噪声。选择光传输路径的顶点,并且量化所选顶点的一个或多个特征。基于所选顶点的一个或多个量化特征来计算第一散列,并且在散列表内执行冲突解决。将所选顶点处的光传输路径的贡献累积到散列表,并且响应于将所选顶点处的光传输路径的贡献添加到散列表,递增计数器。然后利用计数器计算光传输路径的平均贡献。
Description
技术领域
本发明涉及光线跟踪,并且更具体地涉及利用散列执行路径空间滤波。
背景技术
出于性能原因,将路径跟踪限制到每个像素的少量路径几乎不能获得对于感兴趣的场景的令人满意的图像质量。然而,路径空间滤波可以通过在被分类为邻近的路径的顶点之间共享信息来显著改善视觉质量。然而,用于搜索邻近顶点以便实现路径空间滤波的当前技术需要耗费大量时间和资源。因此需要解决与现有技术相关的这些问题和/或其他问题。
发明内容
本发明公开了一种方法、计算机可读介质和系统,用于通过路径空间滤波通过共享在空间上接近的信息来降低渲染场景期间的噪声。选择光传输路径的顶点,并且量化所选顶点的一个或多个特征。基于所选顶点的一个或多个量化特征来计算第一散列,并且在散列表内执行冲突解决。将所选顶点处的光传输路径的贡献累积到散列表,并且响应于将所选顶点处的光传输路径的贡献添加到散列表,递增计数器。然后,利用计数器来计算光传输路径的平均贡献。
附图说明
图1示出了根据实施例的用于通过散列执行并行路径空间滤波的方法的流程图。
图2示出了根据实施例的并行处理单元。
图3A示出了根据实施例的图2的并行处理单元内的一般处理集群。
图3B示出了根据实施例的图2的并行处理单元的存储器分区单元。
图4A示出了根据实施例的图3A的流式多处理器。
图4B是根据实施例的使用图2的PPU实现的处理系统的概念图。
图4C示出了可以实现各种先前实施例的各种架构和/或功能的示例性系统。
图5是根据实施例的由图2的PPU实现的图形处理流水线的概念图。
图6A示出了根据实施例的用于通过散列执行并行路径空间滤波的第一步骤。
图6B示出了根据实施例的用于通过散列执行并行路径空间滤波的第二步骤,其中示出了抖动顶点。
图6C示出了根据实施例的用于通过散列执行并行路径空间滤波的第三步骤,其中对与关注顶点的散列相同的其散列的所有贡献进行平均。
图7示出了根据实施例的累积具有相同散列的所有光传输路径的贡献的结果。
图8示出了根据实施例的使用线性探测在更精细的细节水平上区分光传输路径的属性。
图9示出了根据实施例的抖动位置的细节水平可以与原始位置的细节水平不同。
具体实施方式
图1示出了根据实施例的用于通过散列执行并行路径空间滤波的方法100的流程图。尽管在处理单元的上下文中描述了方法100,但是方法100还可以由程序、定制电路或定制电路和程序的组合来执行。例如,方法100可以由GPU(图形处理单元)、CPU(中央处理单元)或能够通过散列执行并行路径空间滤波的任何处理器来执行。此外,本领域普通技术人员将理解,执行方法100的任何系统都在本发明的实施例的范围和精神内。
如操作102所示,选择光传输路径的顶点。在一个实施例中,光传输路径可以由路径跟踪器生成。在另一个实施例中,光传输路径可以是多个光传输路径中的一个。在又一个实施例中,顶点可以位于光传输路径与场景内的对象(例如,几何体的实例等)之间的交叉点处。
另外,在一个实施例中,顶点可以是场景内的光传输路径的多个顶点之一。在另一实施例中,光传输路径可以从眼睛/相机位置开始并且可以在光源处结束。
此外,如操作104所示,量化所选顶点的一个或多个特征。例如,可以缩放所选顶点的世界空间坐标,并且可以省略它们的小数部分。在一个实施例中,一个或多个特征可以包括场景内所选顶点的位置。例如,一个或多个特征可以包括所选顶点的世界空间位置。在另一实施例中,为所选顶点构造关键码(key)可包括量化所选顶点的一个或多个特征。
此外,如操作106所示,基于所选顶点的一个或多个量化特征来计算第一散列。在一个实施例中,计算第一散列可以包括将散列函数应用于为所选顶点构造的关键码。在另一实施例中,第一散列的结果可包括散列表中的位置(例如,散列表索引)。
另外,如操作108所示,在散列表内执行冲突解决。以这种方式,可以避免具有不同量化特征的顶点的贡献的累积。
此外,如操作110所示,将所选顶点处的光传输路径的贡献累积到散列表。在一个实施例中,贡献可以包括从光源发送到顶点的颜色值。在另一个实施例中,可以将贡献添加到使用第一散列计算的散列表中的位置。
此外,如操作112所示,响应于将在所选顶点处的光传输路径的贡献添加到散列表,递增计数器。在一个实施例中,计数器可以包括原子计数器。此外,在第六操作中,利用计数器计算光传输路径的平均贡献,如操作114所示。在一个实施例中,计算平均贡献可以包括累积具有第一散列的所有光传输路径的贡献。在另一个实施例中,计算平均贡献可以包括缩放累积的贡献。例如,缩放累积的贡献可以包括将累积的贡献除以计数器的值。
此外,在一个实施例中,可以在量化所选顶点的一个或多个特征之前抖动所选顶点。例如,可以根据所选择的分布来执行抖动。在另一示例中,抖动可以在顶点所在的表面的切平面中执行。在另一示例中,所选顶点可以与体积中的多个附加顶点一起存储,并且可以抖动存储在体积中的顶点。
此外,在一个实施例中,量化所选顶点的一个或多个特征可以均匀地执行。在另一个实施例中,量化所选顶点的一个或多个特征可以根据所选顶点距相机的距离来执行。在又一个实施例中,量化所选顶点的一个或多个特征可以根据路径段(例如,来自光源或来自相机/眼睛的路径等)的长度来执行。在又一个实施例中,量化所选顶点的一个或多个特征可以根据基于多个顶点的分布和局部密度的启发式来执行。
另外,在一个实施例中,在散列表内执行冲突解决可以包括通过将所选顶点的一个或多个量化特征与附加顶点的一个或多个量化特征进行比较来检测一个或多个冲突。在另一个实施例中,在散列表内执行冲突解决可以包括:通过量化所选顶点的第二组特征,基于第二组量化特征计算第二散列,以及将所选顶点的第二散列与附加顶点的一个或多个第二散列进行比较来检测一个或多个冲突。
此外,在一个实施例中,可以在模拟期间对于场景内的路径的顶点来查找一个或多个累积的贡献和零个或多个计数器。在另一个实施例中,可以局部确定所选顶点的一个或多个特征的量化。例如,可以通过检查场景内不同光传输路径的所选顶点的相互可见性来确定局部量化分辨率。
此外,在一个实施例中,可以在计算第一散列期间排除所选顶点的一个或多个特征。在另一个实施例中,排除的特征可以包括在第二散列的计算中。在又一个实施例中,可以通过执行冲突解决来启用附加搜索。
此外,在一个实施例中,可以实现指数移动平均值,以便随时间累积光传输路径的贡献。例如,具有第一散列的所有光传输路径的贡献的总和以及计数器可以在一段时间内被保持,并且可以在当前时间段内与光传输路径的平均贡献组合。
另外,在一个实施例中,可以设置指数移动平均值的预定参数,使得指数移动平均值变为累积移动平均值。在另一个实施例中,可以基于路径跟踪模拟的结果来选择预定参数。在又一个实施例中,可以基于对附加光传输路径的评估来选择预定参数。在又一个实施例中,可以基于来自路径跟踪模拟的信息来控制指数移动平均值。
此外,在一个实施例中,可以使用附加滤波器来滤除由抖动导致的噪声。例如,附加滤波器可以在时域中操作。在另一示例中,附加滤波器可以使用指数移动平均值。在又一示例中,可以设置指数移动平均值的参数,使得指数移动平均值变为累积移动平均值。在又一个实施例中,可以基于来自路径跟踪模拟的信息来控制指数移动平均值。
此外,在一个实施例中,可以从来自光源的路径中选择顶点。另外,可以从来自眼睛/相机位置的路径中选择一个或多个附加顶点。此外,可以通过相应的面积度量来执行缩放,作为光子映射操作的一部分。
以这种方式,可以通过量化光传输路径顶点的描述符来聚集邻近顶点。另外,可以通过对散列表中的量化描述符进行散列运算来累积顶点的贡献。此外,散列表可以用于执行路径空间滤波(而不是执行对邻近顶点的一般搜索)。此外,可以通过抖动顶点来解决由描述符的量化导致的离散化伪像。此外,可以利用散列表和累积的贡献来执行光子映射。
现在将根据用户的期望阐述关于可以实现前述框架的各种可选架构和特征的更多说明性信息。应该强烈注意的是,出于说明性目的阐述了以下信息,并且不应该被解释为以任何方式进行限制。可以在排除所描述的其它特征或不排除所描述的其它特征的情况下任选地结合以下任何特征。
并行处理架构
图2示出了根据一个实施例的并行处理单元(PPU)200。在一个实施例中,PPU 200是在一个或多个集成电路设备上实现的多线程处理器。在一个实施例中,PPU 200或其部分可以在可重新配置的逻辑设备上实现。PPU 200是一种延迟隐藏架构,旨在并行处理多个线程。线程(即,执行的线程)是被配置为由PPU 200执行的一组指令的实例。在一个实施例中,PPU 200是被配置为实现图形渲染流水线的图形处理单元(GPU),用于处理三维(3D)图形数据以生成二维(2D)图像数据,以在诸如液晶显示(LCD)设备的显示设备上显示。在其他实施例中,PPU 200可以用于执行通用计算。尽管出于说明性目的在此提供了一个示例性并行处理器,但应该强烈注意,这样的处理器仅出于说明性目的而进行阐述,并且可以采用任何处理器来补充和/或替代该处理器。
一个或多个PPU 200可以被配置为加速数千个高性能计算(HPC),数据中心和机器学习应用。PPU 200可以被配置为加速许多深度学习系统和应用,包括自主车辆平台、深度学习、高精度语音、图像和文本识别系统、智能视频分析、分子模拟、药物发现、疾病诊断、天气预报、大数据分析、天文学、分子动力学模拟、金融建模、机器人技术、工厂自动化、实时语言翻译、在线搜索优化和个性化用户推荐等。
如图2所示,PPU 200包括输入/输出(I/O)单元205、前端单元215、调度器单元220、工作分配单元225、集线器230、交叉交换机(Xbar)270、一个或多个通用处理集群(GPC)250以及一个或多个分区单元280。PPU 200可以经由一个或多个高速NVLink 210互连连接到主处理器或其他PPU 200。PPU 200可以经由互连202连接到主处理器或其他外围设备。PPU200还可以连接到包括多个存储器设备204的本地存储器。在一个实施例中,本地存储器可以包括多个动态随机存取存储器(DRAM)设备。DRAM设备可以被配置为高带宽存储器(HBM)子系统,其中多个DRAM管芯堆叠在每个设备内。
NVLink 210互连使得系统能够扩展并且包括与一个或多个CPU组合的一个或多个PPU 200,支持PPU 200与CPU之间的高速缓存一致性,以及CPU主控。数据和/或命令可以由NVLink 210通过集线器230发送到PPU 200的其他单元或从PPU 200的其他单元发送,PPU200的其他单元例如为一个或多个复制引擎、视频编码器、视频解码器、电源管理单元等(未明确地显示)。结合图4B更详细地描述NVLink 210。
I/O单元205被配置为通过互连202从主处理器(未示出)发送和接收通信(即,命令、数据等)。I/O单元205可以直接通过互连202或通过诸如存储器桥之类的一个或多个中间设备来与主处理器进行通信。在一个实施例中,I/O单元205可以经由互连202与一个或多个其他处理器(诸如一个或多个PPU 200)进行通信。在一个实施例中,I/O单元205实现用于通过PCIe总线进行通信的外围组件互连快速(PCIe)接口,并且互连202是PCIe总线。在备选实施例中,I/O单元205可以实现用于与外部设备通信的其他类型的公知接口。
I/O单元205对经由互连202接收的分组进行解码。在一个实施例中,分组表示被配置为使PPU 200执行各种操作的命令。I/O单元205将解码的命令发送到PPU 200的各种其他单元,如命令可指定的那样。例如,一些命令可以被发送到前端单元215。其他命令可以被发送到集线器230或PPU 200的其他单元,诸如一个或多个复制引擎、视频编码器、视频解码器、电源管理单元等(未明确显示)。换句话说,I/O单元205被配置为在PPU 200的各种逻辑单元之间路由通信。
在一个实施例中,由主处理器执行的程序对缓冲器中的命令流进行编码,该缓冲器向PPU 200提供工作负载以进行处理。工作负载可以包括若干指令和由这些指令处理的数据。缓冲器是存储器中可由主处理器和PPU 200访问(即,读/写)的区域。例如,I/O单元205可以被配置为通过互连202上发送的存储器请求来访问连接到互连202的系统存储器中的缓冲器。在一个实施例中,主处理器将命令流写入缓冲器,然后将指向命令流开始的指针发送到PPU 200。前端单元215接收指向一个或多个命令流的指针。前端单元215管理一个或多个流,从流中读取命令并将命令转发到PPU 200的各个单元。
前端单元215耦合到调度器单元220,调度器单元220配置各种GPC 250以处理由一个或多个流定义的任务。调度器单元220被配置为跟踪与由调度器单元220管理的各种任务有关的状态信息。状态可以指示任务被分配给哪个GPC 250,任务是活动的还是不活动的,与任务相关联的优先级,等等。调度器单元220管理一个或多个GPC 250上的多个任务的执行。
调度器单元220耦合到工作分配单元225,工作分配单元225被配置为分派任务以在GPC 250上执行。工作分配单元225可以跟踪从调度器单元220接收的多个所调度的任务。在一个实施例中,工作分配单元225管理每个GPC 250的待处理任务池和活动任务池。待处理任务池可包括多个时隙(例如,32个时隙),其包含分配给特定GPC 250处理的任务。活动任务池可以包括用于由GPC 250主动处理的任务的多个时隙(例如,4个时隙)。当GPC 250完成任务的执行时,该任务被从GPC 250的活动任务池中逐出,选择并安排在待处理任务池中的其它任务中的一个任务在GPC 250上执行。如果活动任务在GPC 250上空闲,例如在等待数据依赖性被解析时,则活动任务可以从GPC 250中逐出并返回到待处理任务池,同时选择并安排待处理任务池中的另一任务在GPC 250上执行。
工作分配单元225经由XBar 270与一个或多个GPC 250进行通信。XBar 270是将PPU 200的许多单元耦合到PPU 200的其他单元的互连网络。例如,XBar 270可以被配置为将工作分配单元225耦合到特定GPC 250。虽然未明确示出,但是PPU 200的一个或多个其他单元也可以经由集线器230连接到XBar 270。
任务由调度器单元220管理,并由工作分配单元225分派给GPC 250。GPC 250被配置为处理任务并生成结果。结果可以由GPC 250内的其他任务消耗,经由XBar 270路由到不同的GPC 250,或者存储在存储器204中。结果可以经由分区单元280写入存储器204,分区单元280实现用于向从存储器204写入数据以及从存储器204读取数据的存储器接口。结果可以通过NVLink 210发送到另一个PPU 200或CPU。在一个实施例中,PPU 200包括数量为U的分区单元280,其数量与耦合到PPU 200的单独的且不同的存储器设备204的数量相等。分区单元280将在下面结合图3B更详细地描述。
在一个实施例中,主处理器执行驱动程序内核,该驱动程序内核实现应用程序编程接口(API),该API使得在主处理器上执行的一个或多个应用程序能够调度操作以用于在PPU 200上执行。在一个实施例中,多个计算机应用程序由PPU 200同时执行,并且PPU 200为多个计算应用程序提供隔离、服务质量(QoS)和独立地址空间。应用程序可以生成指令(即,API调用),其使得驱动程序内核生成一个或多个任务以供PPU 200执行。驱动程序内核将任务输出到由PPU 200处理的一个或多个流。每个任务可以包括一组或多组相关线程,在此称为线程组(warp)。在一个实施例中,线程组包括可以并行执行的32个相关线程。协作线程可以指代包括执行任务的指令并且可以通过共享存储器交换数据的多个线程。结合图4A更详细地描述线程和协作线程。
图3A示出了根据一个实施例的图2的PPU 200的GPC 250。如图3A所示,每个GPC250包括多个用于处理任务的硬件单元。在一个实施例中,每个GPC 250包括流水线管理器310、前光栅操作单元(PROP)315、光栅引擎325、工作分配交叉交换机(WDX)380、存储器管理单元(MMU)390以及一个或多个更多数据处理集群(DPC)320。应当理解,图3A的GPC 250可以包括其他硬件单元来代替图3A中所示的单元或者除了图3A中所示的单元之外还包括其他硬件单元。
在一个实施例中,GPC 250的操作由流水线管理器310控制。流水线管理器310管理一个或多个DPC 320的配置,用于处理分配给GPC 250的任务。在一个实施例中,流水线管理器310可以配置一个或多个DPC 320中的至少一个以实现图形渲染流水线的至少一部分。例如,DPC 320可以被配置为在可编程流式多处理器(SM)340上执行顶点着色器程序。流水线管理器310还可以被配置为将从工作分配单元225接收的分组路由到该GPC 250内的适当逻辑单元。例如,一些分组可以被路由到PROP 315和/或光栅引擎325中的固定功能硬件单元,而其他分组可以被路由到DPC 320以供原始引擎335或SM 340处理。在一个实施例中,流水线管理器310可以配置一个或多个DPC 320中的至少一个以实现神经网络模型和/或计算流水线。
PROP单元315被配置为将由光栅引擎325和DPC 320生成的数据路由到光栅操作(ROP)单元,结合图3B更详细地描述ROP单元。PROP单元315还可以被配置为执行颜色混合的优化,组织像素数据,执行地址转换等。
光栅引擎325包括多个固定功能硬件单元,其被配置为执行各种光栅操作。在一个实施例中,光栅引擎325包括设置引擎、粗光栅引擎、剔除引擎、剪取引擎、精细光栅引擎和瓦片聚结引擎。设置引擎接收经变换的顶点并生成与由顶点定义的几何图元相关联的平面方程。平面方程被发送到粗光栅引擎以生成图元的覆盖信息(例如,瓦片的x,y覆盖掩模)。粗光栅引擎的输出被发送到剔除引擎,在剔除引擎中,与未通过z测试的图元相关联的片段被剔除,并且被发送到剪取引擎,在剪取引擎中位于视锥体外的片段被剪取。经过剪取和剔除后留下的那些片段可以被传递到精细光栅引擎,以基于由设置引擎生成的平面方程来生成像素片段的属性。光栅引擎325的输出包括要通过例如在DPC 320内实现的片段着色器处理的片段。
包括在GPC 250中的每个DPC 320包括M管道控制器(MPC)330、图元引擎335和一个或多个SM 340。MPC 330控制DPC 320的操作,将从流水线管理器310接收的分组路由到DPC320中的适当单元。例如,与顶点相关联的分组可以被路由到图元引擎335,图元引擎335被配置为从存储器204获取与该顶点相关联的顶点属性。相反,与着色器程序相关联的分组可以被发送到SM 340。
SM 340包括可编程流式处理器,其被配置为处理由多个线程表示的任务。每个SM340是多线程的并且被配置为并发地执行来自特定线程组的多个线程(例如,32个线程)。在一个实施例中,SM 340实现SIMD(单指令,多数据)架构,其中一组线程(即,线程组(warp))中的每个线程被配置为基于同一指令集处理不同的数据集。线程组中的所有线程都执行相同的指令。在另一个实施例中,SM 340实现SIMT(单指令,多线程)架构,其中一组线程中的每个线程被配置为基于同一指令集处理不同的数据集,但是允许一组线程中的单个线程在执行期间发散。在一个实施例中,为每个线程组维护程序计数器、调用栈和执行状态,当线程组内的线程发散时,使线程组与线程组内的串行执行之间的并发成为可能。在另一实施例中,为每个单独的线程维护程序计数器、调用栈和执行状态,从而在线程组内以及线程组之间的所有线程之间实现相等的并发。当为每个单独的线程维护执行状态时,执行相同指令的线程可以被收敛并且并行执行以获得最大效率。下面结合图4A更详细地描述SM 340。
MMU 390提供GPC 250与分区单元280之间的接口。MMU 390可以提供虚拟地址到物理地址的转换、存储器保护和存储器请求的仲裁。在一个实施例中,MMU 390提供一个或多个转换后备缓冲器(TLB),用于执行虚拟地址到存储器204中的物理地址的转换。
图3B示出了根据一个实施例的图2的PPU 200的存储器分区单元280。如图3B所示,存储器分区单元280包括光栅操作(ROP)单元350、二级(L2)高速缓存360和存储器接口370。存储器接口370耦合到存储器204。存储器接口370可以实现32、64、128、1024位数据总线等,用于高速数据传输。在一个实施例中,PPU 200包含U个存储器接口370,每对分区单元280有一个存储器接口370,其中每对分区单元280连接到相应的存储器设备204。例如,PPU 200可以连接到多达Y个存储器设备204,例如高带宽存储器堆栈或第5版图形用双倍数据传输率存储器,同步动态随机存取存储器或其他类型的持久存储。
在一个实施例中,存储器接口370实现HBM2存储器接口并且Y等于U的一半。在一个实施例中,HBM2存储器堆栈与PPU200位于相同的物理封装上,与传统的GDDR5SDRAM系统相比提供了相当大的功率和面积节省。在一个实施例中,每个HBM2堆栈包括四个存储器管芯并且Y等于4,HBM2堆栈包括每个管芯的两个128位通道,总共8个通道以及1024位的数据总线宽度。
在一个实施例中,存储器204支持单纠错双错误检测(SECDED)纠错码(ECC)以保护数据。ECC为对数据损坏敏感的计算应用程序提供更高的可靠性。在PPU 200处理非常大的数据集和/或长时间运行应用程序的大规模集群计算环境中,可靠性尤为重要。
在一个实施例中,PPU 200实现多级存储器层级。在一个实施例中,存储器分区单元280支持统一存储器以为CPU和PPU 200存储器提供单个统一虚拟地址空间,从而实现虚拟存储器系统之间的数据共享。在一个实施例中,跟踪PPU 200对位于其他处理器上的存储器的访问频率,以确保将存储器页面移动到更频繁地访问页面的PPU 200的物理存储器。在一个实施例中,NVLink 210支持地址转换服务,允许PPU 200直接访问CPU的页表并通过PPU200提供对CPU存储器的完全访问。
在一个实施例中,复制引擎在多个PPU 200之间或在PPU 200与CPU之间传输数据。复制引擎可以为未映射到页表的地址生成页面错误。然后,存储器分区单元280可以对页面错误进行维修,将地址映射到页面表中,之后复制引擎可以执行传输。在传统系统中,存储器被固定(即,不可分页)以用于多个处理器之间的多个复制引擎操作,从而大大减少了可用存储器。利用硬件页面错误处理,可以将地址传递给复制引擎,而不必担心存储器页面是否驻留,并且复制过程是透明的。
来自存储器204或其他系统存储器的数据可以由存储器分区单元280获取并存储在L2高速缓存360中,L2高速缓存360位于芯片上并且在各种GPC 250之间共享。如图所示,每个存储器分区单元280包括与对应的存储器设备204相关联的L2高速缓存360的一部分。然后,可以在GPC 250内的各种单元中实现低级高速缓存。例如,SM 340中的每一个可以实现一级(L1)高速缓存。L1高速缓存是专用于特定SM 340的专用存储器。可以获取来自L2高速缓存360的数据并将其存储在每个L1高速缓存中,以便在SM 340的功能单元中进行处理。L2高速缓存360被耦合到存储器接口370和XBar 270。
ROP单元350执行与像素颜色有关的图形光栅操作,例如颜色压缩、像素混合等。ROP单元350还结合光栅引擎325实现深度测试,接收来自光栅引擎325的剔除引擎的与像素片段相关联的样本位置的深度。该深度是对于与片段关联的样本位置,针对深度缓冲器中的对应深度测试的深度。如果片段通过样本位置的深度测试,则ROP单元350更新深度缓冲器并将深度测试的结果发送到光栅引擎325。应当理解,分区单元280的数量可以不同于GPC250的数量,并且因此每个ROP单元350可以耦合到每个GPC 250。ROP单元350跟踪从不同GPC250接收的分组,并确定由ROP单元350生成的结果通过Xbar 270路由到哪个GPC 250。尽管ROP单元350包括在图3B中的存储器分区单元280内,但是在其他实施例中,ROP单元350可以在存储器分区单元280的外部。例如,ROP单元350可以驻留在GPC 250或其他单元内。
图4A示出了根据一个实施例的图3A的流式多处理器340。如图4A所示,SM 340包括指令高速缓存405、一个或多个调度器单元410(K)、寄存器文件420、一个或多个处理核450、一个或多个特殊功能单元(SFU)452、一个或多个加载/存储单元(LSU)454、互连网络480、共享存储器/L1高速缓存470。
如上所述,工作分配单元225调度用于在PPU 200的GPC 250上执行的任务。任务被分配给GPC 250内的特定DPC 320,并且如果任务与着色器程序相关联,任务可以被分配给SM 340。调度器单元410(K)从工作分配单元225接收任务,并管理分配给SM 340的一个或多个线程块的指令调度。调度器单元410(K)调度用于执行的线程块作为并行线程的线程组,其中每个线程块被分配至少一个线程组。在一个实施例中,每个线程组执行32个线程。调度器单元410(K)可以管理多个不同的线程块,将线程组分配给不同的线程块,然后在每个时钟周期期间将来自多个不同的协作组的指令分派给各个功能单元(即,核450、SFU 452和LSU 454)。
协作组是用于组织通信线程组的编程模型,其允许开发者表达线程正在进行通信的粒度,使得能够表达更丰富,更高效的并行分解。协作启动API支持线程块之间的同步,以执行并行算法。常规编程模型提供用于同步协作线程的单个简单构造:跨线程块的所有线程的屏障(即,syncthreads()函数)。但是,程序员通常希望以小于线程块粒度的方式定义线程组,并在定义的组内进行同步,以便以集体组范围的功能接口的形式实现更高的性能、设计灵活性和软件重用。
协作组使程序员能够在子块(即,与单个线程一样小)和多块粒度明确地定义线程组,并且执行集合操作,诸如在协作组中的线程上的同步。编程模型支持跨软件边界的清晰组合,因此库和实用程序函数可以在其本地上下文中安全地同步,而无需对收敛进行假设。协作组原语支持新的协作并行模式,包括生产者-消费者并行性、机会并行性以及跨整个线程块网格的全局同步。
分派单元415被配置为向一个或多个功能单元发送指令。在该实施例中,调度器单元410(K)包括两个分派单元415,其使得能够在每个时钟周期期间分派来自相同线程组的两个不同指令。在备选实施例中,每个调度器单元410(K)可以包括单个分派单元415或附加分派单元415。
每个SM 340包括寄存器文件420,其为SM 340的功能单元提供一组寄存器。在一个实施例中,寄存器文件420在各个功能单元之间划分,使得每个功能单元被分配寄存器文件420的专用部分。在另一实施例中,寄存器文件420在由SM 340执行的不同线程组之间划分。寄存器文件420为连接到功能单元的数据路径的操作数提供临时存储。
每个SM 340包括L个处理核450。在一个实施例中,SM 340包括大量(例如,128等)不同的处理核450。每个核450可以包括完全流水线的单精度、双精度和/或混合精度处理单元,包括浮点算术逻辑单元和整数算术逻辑单元。在一个实施例中,浮点算术逻辑单元实现用于浮点算术的IEEE 754-2008标准。在一个实施例中,核450包括64个单精度(32位)浮点核、64个整数核、32个双精度(64位)浮点核和8个张量核。
张量核被配置成执行矩阵运算,并且在一个实施例中,核450中包括一个或多个张量核。具体地,张量核被配置为执行深度学习矩阵算术,例如用于神经网络训练和推理的卷积运算。在一个实施例中,每个张量核在4×4矩阵上操作并执行矩阵乘法和累加操作D=A×B+C,其中A,B,C和D是4×4矩阵。
在一个实施例中,矩阵乘法输入A和B是16位浮点矩阵,而累加矩阵C和D可以是16位浮点或32位浮点矩阵。张量核在16位浮点输入数据上操作,具有32位浮点累加。16位浮点乘法需要64次运算,并产生一个全精度乘积,然后使用32位浮点加法与4×4×4矩阵乘法的其他中间乘积累加。在实践中,张量核用于执行更大的二维或更高维矩阵运算,这些二维或更高维矩阵运算是从这些较小的元素构建的。诸如CUDA 9C++API之类的API公开了专门的矩阵加载、矩阵乘法和累加以及矩阵存储操作,以高效地使用来自CUDA-C++程序的张量核。在CUDA级别,线程组级接口假设16×16大小的矩阵跨越线程组的所有32个线程。
每个SM 340还包括执行特殊功能(例如,属性评估、倒数平方根等)的M个SFU 452。在一个实施例中,SFU 452可以包括树遍历单元,其被配置为遍历分层树数据结构。在一个实施例中,SFU 452可以包括被配置为执行纹理映射滤波操作的纹理单元。在一个实施例中,纹理单元被配置为从存储器204加载纹理图(例如,2D纹理像素阵列)并对纹理图进行采样以产生采样纹理值以供在SM 340执行的着色器程序中使用。在一个实施例中,纹理图存储在共享存储器/L1高速缓存370中。纹理单元实现纹理操作,例如使用mip-map(即,不同细节水平的纹理图)的滤波操作。在一个实施例中,每个SM 240包括两个纹理单元。
每个SM 340还包括N个LSU 454,其实现共享存储器/L1高速缓存470与寄存器文件420之间的加载和存储操作。每个SM 340包括将每个功能单元连接到寄存器文件420并且将LSU 454连接到寄存器文件420、共享存储器/L1高速缓存470的互连网络480。在一个实施例中,互连网络480是可以被配置为将任何功能单元连接到寄存器文件420中的任何寄存器的交叉交换机并且将LSU 454连接到共享存储器/L1高速缓存470中的寄存器文件和存储器位置。
共享存储器/L1高速缓存470是片上存储器阵列,其允许SM 340与图元引擎335之间以及SM 340中的线程之间的数据存储和通信。在一个实施例中,共享存储器/L1高速缓存470包括128KB的存储容量并且在从SM 340到分区单元280的路径中。共享存储器/L1高速缓存470可用于高速缓存读取和写入。共享存储器/L1高速缓存470、L2高速缓存360和存储器204中的一个或多个是后备存储。
将数据高速缓存和共享存储器功能组合成单个存储器块为两种类型的存储器访问提供了最佳的整体性能。容量可由不使用共享存储器的程序用作高速缓存。例如,如果共享存储器被配置为使用一半容量,则纹理和加载/存储操作可以使用剩余容量。共享存储器/L1高速缓存470内的集成使得共享存储器/L1高速缓存470能够用作用于流式传输数据的高吞吐量管道,同时提供对频繁重用数据的高带宽和低延迟访问。
当配置用于通用并行计算时,与图形处理相比,可以使用更简单的配置。具体地,绕过图2中所示的固定功能图形处理单元,从而创建更简单的编程模型。在通用并行计算配置中,工作分配单元225将线程块直接分配和分发给DPC 320。块中的线程执行相同的程序,在计算中使用唯一的线程ID以确保每个线程生成唯一的结果,使用SM 340执行程序并执行计算,使用共享存储器/L1高速缓存470在线程之间通信,并且使用LSU 454通过共享存储器/L1高速缓存470和存储器分区单元280读取和写入全局存储器。当被配置用于通用并行计算时,SM 340还可以编写调度器单元220可以用来在DPC 320上启动新工作的命令。
PPU 200可以包括在台式计算机、膝上型计算机、平板计算机、服务器、超级计算机、智能电话(例如,无线、手持设备)、个人数字助理(PDA)、数码相机、车辆、头戴式显示器、手持电子设备等中。在一个实施例中,PPU 200体现在单个半导体衬底上。在另一个实施例中,PPU 200与一个或多个其他设备(例如附加PPU 200、存储器204、精简指令集计算机(RISC)CPU、存储器管理单元(MMU)、数模转换器(DAC)等)一起被包括在片上系统(SoC)中。
在一个实施例中,PPU 200可以包括在包括一个或多个存储器设备204的图形卡上。图形卡可以被配置为与台式计算机的主板上的PCIe插槽接口。在又一个实施例中,PPU200可以是包括在主板的芯片组中的集成图形处理单元(iGPU)或并行处理器。
示例性计算系统
具有多个GPU和CPU的系统用于各种行业,因为开发者在诸如人工智能计算的应用中暴露并利用更多并行性。数据中心、研究机构和超级计算机部署了具有数万到数千个计算节点的高性能GPU加速系统,以解决日益严峻的问题。随着高性能系统内处理设备数量的增加,通信和数据传输机制需要扩展以支持增加的带宽。
图4B是根据实施例的使用图2的PPU 200实现的处理系统400的概念图。示例性系统465可以被配置为实现图1中所示的方法100。处理系统400包括CPU 430、交换机410以及每个和相应的存储器204的多个PPU 200。NVLink 210在各个PPU 200之间提供高速通信链路。尽管在图4B中示出了特定数量的NVLink 210和互连202连接,但是到每个PPU 200和CPU430的连接的数量可以变化。交换机410在互连202与CPU 430之间接口。PPU 200、存储器204和NVLink 210可以位于单个半导体平台上以形成并行处理模块425。在一个实施例中,交换机410支持两个或更多个协议以在各种不同连接和/或链路之间接口。
在另一实施例(未示出)中,NVLink 210在每个PPU 200与CPU 430之间提供一个或多个高速通信链路,并且交换机410在互连202与每个PPU 200之间进行接口。PPU 200、存储器204和互连202可以位于单个半导体平台上以形成并行处理模块425。在又一个实施例(未示出)中,互连202在每个PPU 200与CPU 430之间提供一个或多个通信链路,并且交换机410使用NVLink 210在各个PPU 200之间接口,以在PPU 200之间提供一个或多个高速通信链路。在另一个实施例(未示出)中,NVLink 210通过交换机410在PPU 200与CPU 430之间提供一个或多个高速通信链路。在又一个实施例(未示出)中,互连202直接在各个PPU 200之间提供一个或多个通信链路。一个或多个NVLink 210高速通信链路可以使用与NVLink 210相同的协议实现为物理NVLink互连或片上或管芯上互连。
在本说明书的上下文中,单个半导体平台可以指在管芯或芯片上制造的唯一的整体的基于单一半导体的集成电路。应当注意,术语单个半导体平台还可以指具有增加的连接性的多芯片模块,其模拟片上操作并且相对于利用传统总线实现方式进行实质性改进。当然,根据用户的期望,各种电路或设备也可以单独地或以半导体平台的各种组合设置。替代地,并行处理模块425可以实现为电路板基板,并且每个PPU 200和/或存储器204可以是封装设备。在一个实施例中,CPU 430、交换机410和并行处理模块425位于单个半导体平台上。
在一个实施例中,每个NVLink 210的信令速率是20到25千兆比特/秒,并且每个PPU 200包括六个NVLink 210接口(如图4B所示,每个PPU 200包括五个NVLink 210接口)。每个NVLink 210在每个方向上提供25千兆字节/秒的数据传输速率,其中六个链路提供300千兆字节/秒。当CPU 430还包括一个或多个NVLink 210接口时,NVLink 210可以专门用于如图4B所示的PPU到PPU通信,或者PPU到PPU和PPU到CPU的某种组合。
在一个实施例中,NVLink 210允许从CPU 430到每个PPU 200的存储器204的直接加载/存储/原子访问。在一个实施例中,NVLink 210支持一致性操作,允许从存储器204读取的数据存储在CPU 430的高速缓存层次结构中,减少了CPU 430的高速缓存访问延迟。在一个实施例中,NVLink 210包括对地址转换服务(ATS)的支持,允许PPU 200直接访问CPU430内的页表。一个或多个NVLink 210还可以被配置为在低功率模式下操作。
图4C示出了示例性系统465,其中可以实现各种先前实施例的各种架构和/或功能。示例性系统465可以被配置为实现图1中所示的方法100。
如图所示,提供了系统465,其包括连接到通信总线475的至少一个中央处理单元430。通信总线475可以使用任何合适的协议来实现,例如PCI(外围组件互连)、PCI-Express、AGP(加速图形端口)、HyperTransport或任何其他总线或点对点通信协议。系统465还包括主存储器440。控制逻辑(软件)和数据存储在主存储器440中,主存储器440可以采用随机存取存储器(RAM)的形式。
系统465还包括输入设备460、并行处理系统425和显示设备445,即传统的CRT(阴极射线管)、LCD(液晶显示器)、LED(发光二极管)、等离子显示器等。可以从例如键盘、鼠标、触摸板、麦克风等输入设备460接收用户输入。前述模块和/或设备中的每一个甚至可以位于单个半导体平台上以形成系统465。替代地,各个模块也可以根据用户的期望单独地或以半导体平台的各种组合来定位。
此外,系统465可以通过网络接口435耦合到网络(例如,电信网络、局域网(LAN)、无线网络,诸如因特网的广域网(WAN)、对等网络、电缆网络等)以用于通信的目的。
系统465还可以包括辅助存储单元(未示出)。辅助存储单元包括例如硬盘驱动器和/或可移动存储驱动器,表示软盘驱动器、磁带驱动器、光盘驱动器、数字通用盘(DVD)驱动器、记录设备、通用串行总线(USB)闪存。可移动存储驱动器以众所周知的方式从可移动存储单元读取和/或写入可移动存储单元。
计算机程序或计算机控制逻辑算法可以存储在主存储器440和/或辅助存储单元中。这样的计算机程序在被执行时使系统465能够执行各种功能。存储器440、存储单元和/或任何其他存储单元是计算机可读介质的可能示例。
可以在通用计算机系统、电路板系统、专用于娱乐目的的游戏控制台系统、应用特定系统和/或任何其他所需的系统的上下文中实现各种先前附图的架构和/或功能。例如,系统465可以采用台式计算机、膝上型计算机、平板计算机、服务器、超级计算机、智能电话(例如,无线、手持设备)、个人数字助理(PDA)、数码相机、车辆、头戴式显示器、手持电子设备、移动电话设备、电视、工作站、游戏控制台、嵌入式系统和/或任何其他类型的逻辑的形式。
虽然上面已经描述了各种实施例,但是应该理解,它们仅以示例的方式呈现,而不是限制。因此,优选实施例的宽度和范围不应受任何上述示例性实施例的限制,而应仅根据所附权利要求及其等同物来限定。
图形处理流水线
在一个实施例中,PPU 200包括图形处理单元(GPU)。PPU 200被配置为接收指定用于处理图形数据的着色器程序的命令。图形数据可以被定义为一组图元,例如点、线、三角形、四边形、三角形条带等。通常,图元包括指定图元的多个顶点(例如,在模型空间坐标系中)以及与图元的每个顶点相关联的属性的数据。PPU 200可以被配置为处理图形图元以生成帧缓冲器(即,用于显示器的每个像素的像素数据)。
应用程序将场景的模型数据(即,顶点和属性的集合)写入诸如系统存储器或存储器204的存储器中。模型数据定义可在显示器上可见的每个对象。然后,应用程序对驱动程序内核进行API调用,以请求渲染和显示模型数据。驱动程序内核读取模型数据并将命令写入一个或多个流以执行处理模型数据的操作。命令可以引用要在PPU 200的SM 340上实现的不同着色器程序,包括顶点着色器、外壳着色器、域着色器、几何着色器和像素着色器中的一个或多个。例如,SM 340中的一个或多个可以被配置为执行顶点着色器程序,该顶点着色器程序处理由模型数据定义的多个顶点。在一个实施例中,不同的SM 340可以被配置为同时执行不同的着色器程序。例如,SM 340的第一子集可以被配置为执行顶点着色器程序,而SM 340的第二子集可以被配置为执行像素着色器程序。SM的第一子集340处理顶点数据以产生处理的顶点数据并将处理后的顶点数据写入L2高速缓存360和/或存储器204。在处理后的顶点数据被光栅化(即,在屏幕空间中从三维数据变换为二维数据)以产生片段数据之后,SM 340的第二子集执行像素着色器以产生处理后的片段数据,然后将其与其他处理后的片段数据混合并写入存储器204中的帧缓冲器。顶点着色器程序和像素着色器程序可以并发地执行,以流水线方式处理来自同一场景的不同数据,直到场景的所有模型数据都被渲染到帧缓冲器。然后,帧缓冲器的内容被发送到显示控制器以在显示设备上显示。
图5是根据实施例的由图2的PPU 200实现的图形处理流水线500的概念图。图形处理流水线500是实现为从3D几何数据生成2D计算机生成的图像的处理步骤的抽象流程图。众所周知,流水线架构可以通过将操作分成多个阶段来更高效地执行长延迟操作,其中每个阶段的输出耦合到下一个连续阶段的输入。因此,图形处理流水线500接收输入数据501,输入数据501从图形处理流水线500的一个阶段传输到下一阶段,以产生输出数据502。在一个实施例中,图形处理流水线500可以表示由定义的图形处理流水线。作为选择,图形处理流水线500可以在前面的附图和/或任何后续附图的功能和架构的上下文中实现。
如图5所示,图形处理流水线500包括包括多个阶段的流水线架构。这些阶段包括但不限于数据组装阶段510、顶点着色阶段520、图元组装阶段530、几何着色阶段540、视口缩放、剔除和剪取(VSCC)阶段550、光栅化阶段560、片段着色阶段570和光栅操作阶段580。在一个实施例中,输入数据501包括配置处理单元以实现图形处理流水线500的阶段的命令以及待由各阶段处理的几何图元(例如,点、线、三角形、四边形、三角形条带或扇形等)。输出数据502可以包括被复制到存储器中的帧缓冲器或其他类型的表面数据结构的像素数据(即,颜色数据)。
数据组装阶段510接收输入数据501,输入数据501指定高阶表面、图元等的顶点数据。数据组装阶段510在临时存储区或队列中收集顶点数据,例如通过从主处理器接收包括指向存储器中的缓冲器的指针的命令并从缓冲器读取顶点数据。然后将顶点数据发送到顶点着色阶段520以进行处理。
顶点着色阶段520通过对每个顶点一次执行一组操作(即,顶点着色器或程序)来处理顶点数据。例如,顶点可以被指定为与一个或多个顶点属性(例如,颜色、纹理坐标、表面法线等)相关联的4坐标矢量(即,<x,y,z,w>)。顶点着色阶段520可以操纵各个顶点属性,例如位置、颜色、纹理坐标等。换句话说,顶点着色阶段520对顶点坐标或与顶点相关联的其他顶点属性执行操作。这些操作通常包括照明操作(即,修改顶点的颜色属性)和变换操作(即,修改顶点的坐标空间)。例如,可以使用对象坐标空间中的坐标来指定顶点,通过将坐标乘以将坐标从对象坐标空间转换为世界空间或标准化设备坐标(NCD)空间的矩阵来对对象坐标空间中的坐标进行变换。顶点着色阶段520生成经变换的顶点数据,该经变换的顶点数据被发送到图元组装阶段530。
图元组装阶段530收集由顶点着色阶段520输出的顶点,并将顶点分组为几何图元,以供几何着色阶段540处理。例如,图元组装阶段530可以被配置为对每三个连续顶点进行分组,作为用于发送到几何着色阶段540的几何图元(即,三角形)。在一些实施例中,特定顶点可以重复用于连续几何图元(例如,三角形条带中的两个连续三角形可以共享两个顶点)。图元组装阶段530将几何图元(即,关联顶点的集合)发送到几何着色阶段540。
几何着色阶段540通过对几何图元执行一组操作(即,几何着色器或程序)来处理几何图元。曲面细分操作可以从每个几何图元生成一个或多个几何图元。换句话说,几何着色阶段540可以将每个几何图元细分为两个或更多个几何图元的更精细网格,以供图形处理流水线500的其余部分处理。几何着色阶段540将几何图元发送到视口SCC阶段550。
在一个实施例中,图形处理流水线500可以在流式多处理器内进行操作,并且顶点着色阶段520、图元组装阶段530、几何着色阶段540、片段着色阶段570和/或与之相关联的硬件/软件可以顺序地执行处理操作。一旦顺序处理操作完成,在一个实施例中,视口SCC阶段550可以利用该数据。在一个实施例中,可以将由图形处理流水线500中的一个或多个阶段处理的图元数据写入高速缓存(例如,L1高速缓存、顶点高速缓存等)。在这种情况下,在一个实施例中,视口SCC阶段550可以访问高速缓存中的数据。在一个实施例中,视口SCC阶段550和光栅化阶段560被实现为固定功能电路。
视口SCC阶段550执行几何图元的视口缩放、剔除和剪取。所渲染的每个表面与抽象相机位置相关联。相机位置表示观看者观看场景的位置,并定义包围场景对象的视锥体。视锥体可包括观察平面、后平面和四个剪取平面。完全在视锥体之外的任何几何图元可以被剔除(即,丢弃),因为几何图元将不会对最终渲染场景做出贡献。可以剪取部分位于视锥体内部并且部分位于视锥体外部的任何几何图元(即,变换为包围在视锥体内的新几何图元)。此外,几何图元可以各自基于视锥体的深度来缩放。然后,将所有可能可见的几何图元发送到光栅化阶段560。
光栅化阶段560将3D几何图元转换为2D片段(例如,能够用于显示等)。光栅化阶段560可以被配置为利用几何图元的顶点来设置一组平面方程,从该组平面方程中可以内插各种属性。光栅化阶段560还可以计算多个像素的覆盖掩模,其指示像素的一个或多个样本位置是否拦截几何图元。在一个实施例中,还可以执行z测试以确定几何图元是否被已经被光栅化的其他几何图元遮挡。光栅化阶段560生成片段数据(即,与每个被覆盖像素的特定样本位置相关联的内插顶点属性),该片段数据被发送到片段着色阶段570。
片段着色阶段570通过对每个片段执行一组操作(即,片段着色器或程序)来处理片段数据。片段着色阶段570可以生成片段的像素数据(即,颜色值),诸如通过使用片段的内插纹理坐标执行照明操作或采样纹理图。片段着色阶段570生成发送到光栅操作阶段580的像素数据。
光栅操作阶段580可以对像素数据执行各种操作,诸如执行阿尔法测试,模板测试,以及将像素数据与对应于与像素相关联的其他片段的其他像素数据混合。当光栅操作阶段580已经完成处理像素数据(即,输出数据502)时,可以将像素数据写入渲染目标,例如帧缓冲器、颜色缓冲器等。
应当理解,除了上述一个或多个阶段之外或代替上述一个或多个阶段,可以在图形处理流水线500中包括一个或多个附加阶段。抽象图形处理流水线的各种实现方式可以实现不同的阶段。此外,在一些实施例中(例如,几何着色阶段540),可以从图形处理流水线中排除上述一个或多个阶段。预期其他类型的图形处理流水线也在本公开的范围内。此外,图形处理流水线500的任何阶段可以由诸如PPU 200的图形处理器内的一个或多个专用硬件单元实现。图形处理流水线500的其他阶段可以由诸如PPU 200的SM 340的可编程硬件单元实现。
图形处理流水线500可以经由由诸如CPU的主处理器执行的应用程序来实现。在一个实施例中,设备驱动程序可以实现应用程序编程接口(API),其定义可以由应用程序使用以便生成用于显示的图形数据的各种功能。设备驱动程序是包括控制PPU 200的操作的多个指令的软件程序。API为程序员提供抽象,允许程序员利用专用图形硬件(例如PPU 200)来生成图形数据,而不需要程序员利用PPU 200的特定指令集。该应用程序可以包括被路由到PPU 200的设备驱动程序的API调用。设备驱动程序解释API调用并执行各种操作以响应API调用。在某些情况下,设备驱动程序可以通过在CPU上执行指令来执行操作。在其他情况下,设备驱动程序可以至少部分地通过利用CPU与PPU 200之间的输入/输出接口在PPU 200上启动操作来执行操作。在一个实施例中,设备驱动程序被配置为利用PPU 200的硬件来实现图形处理流水线500。
可以在PPU 200内执行各种程序以便实现图形处理流水线500的各个阶段。例如,设备驱动程序可以在PPU 200上启动内核以在一个SM 340(或多个SM 340)上执行顶点着色阶段520。设备驱动程序(或由PPU 300执行的初始内核)还可以启动PPU 300上的其他内核以执行图形处理流水线500的其他阶段,例如几何着色阶段540和片段着色阶段570。此外,图形处理流水线500的一些阶段可以在固定单元硬件上实现,例如在PPU 300内实现的光栅化器或数据组装器。可以理解,来自一个内核的结果可以在由SM 340上的后续内核处理之前通过一个或多个中间固定功能硬件单元来处理。
机器学习
在诸如PPU 200的处理器上开发的深度神经网络(DNN)已被用于各种用例,从自动驾驶汽车到更快的药物开发,从在线图像数据库中的自动图像字幕到视频聊天应用中的智能实时语言翻译。深度学习是一种模拟人类大脑的神经学习过程,不断学习,不断变得更聪明,并随着时间的推移更快地提供更准确结果的技术。最初由成人教导儿童正确识别和分类各种形状,最终能够在没有任何指导的情况下识别形状。类似地,深度学习或神经学习系统需要在对象识别和分类方面进行训练,以便在识别基本对象、被遮挡对象等时更智能且更高效,同时还为对象分配上下文。
在最简单的级别,人脑中的神经元观察所接收的各种输入,将重要性水平分配给这些输入中的每一个,并且将输出传递给其他神经元以作用。人工神经元或感知器是神经网络的最基本模型。在一个示例中,感知器可以接收表示感知器被训练以识别和分类的对象的各种特征的一个或多个输入,并且基于该特征在定义对象的形状方面的重要性,为这些特征中的每一个分配特定权重。
深度神经网络(DNN)模型包括许多连接的感知器(例如,节点)的多个层,其可以用大量输入数据进行训练以快速地以高精度快速解决复杂问题。在一个示例中,DLL模型的第一层将汽车的输入图像分解成各个部分并查找诸如线和角的基本图案。第二层组装线以寻找更高级别的图案,例如轮子、挡风玻璃和镜子。下一层标识车辆的类型,最后几层为输入图像生成标签,识别特定汽车品牌的模型。
一旦训练了DNN,就可以部署DNN并用于在称为推理的过程中对对象或图案进行识别和分类。推理(DNN从给定输入中提取有用信息的过程)的示例包括识别存入ATM机的支票上的手写数字,识别照片中朋友的图像,向超过五千万用户提供电影推荐,识别和分类无人驾驶汽车中不同类型的汽车、行人和道路危险,或实时翻译人类语音。
在训练期间,数据在前向传播阶段中流过DNN,直到产生指示对应于输入的标签的预测。如果神经网络没有正确标记输入,则分析正确标签与预测标签之间的误差,并在向后传播阶段对于每个特征调整权重,直到DNN在训练数据集中正确标记输入和其他输入。训练复杂的神经网络需要强大的并行计算性能,包括PPU 200支持的浮点乘法和加法。推理的计算密集程度低于训练,是一种对延迟敏感的过程,其中训练的神经网络应用于以前没有见过的新输入来对图像进行分类,翻译语音,并且通常推断新信息。
神经网络严重依赖于矩阵数学运算,并且复杂的多层网络需要大量的浮点性能和带宽以实现效率和速度。PPU 200具有数千个处理核,针对矩阵数学运算进行了优化,可提供数十至数百TFLOPS的性能,是一种能够提供基于深度神经网络的人工智能和机器学习应用所需性能的计算平台。
大规模并行路径空间滤波
虽然搜索邻近顶点比在屏幕空间中滤波更昂贵,但是通过在散列表中存储和查找所需信息,我们大大改善了这种性能损失。关键码由抖动和量化的信息构成,使得仅一个查询很可能取代昂贵的邻域搜索。在GPU上演示了该算法的大规模并行实现。
介绍
真实图像合成由具有潜在高方差的函数的高维数值积分组成。因此,限制样本数量通常会产生可见噪声,这可以通过路径空间滤波有效地降低。
我们通过用量化产生的簇的平均值替换昂贵的邻域搜索来改善路径空间滤波的性能。我们的新算法适用于交互式甚至实时渲染,它使许多应用程序可以交换可控偏差,从而实现显着的加速和降噪。
算法
新方案可以包括三个步骤:在已经生成一组光传输路径之后,例如通过路径跟踪器,为每个路径的每个选定顶点构建关键码。此关键码包含聚类邻近顶点所需的所有信息:具有相同散列的所有贡献都以原子方式添加。每个散列的贡献数量也由原子计数器维护,并用于最终计算平均贡献。对于每条路径,其相关平均值乘以其吞吐量并累积在其各自的像素中。吞吐量是从相机沿光传输路径到所选顶点(例如,第一个充分漫射的顶点)的衰减。
图6A示出了根据一个实施例的用于通过散列执行并行路径空间滤波的第一步骤610。如图6A所示,为了确定沿路径段604的示例性顶点602的滤波贡献,所有选择的顶点由与滤波器内核密度成比例采样的矢量抖动。图6B示出了用于通过散列执行并行路径空间滤波的第二步骤620,其中示出了抖动的顶点。可以根据底层网格606来量化移位的顶点。图6C示出了用于通过散列执行并行路径空间滤波的第三步骤630,其中对关注顶点的散列相同的其散列的所有贡献进行平均。在一个实施例中,网格可以不与抖动方向的平面对齐。
对量化的描述符进行散列运算
除了邻域搜索之外,散列允许在线性时间内进行排序和搜索。因此,我们将快速散列函数应用于关键码,该关键码是路径的描述符,并累积具有相同散列的所有光传输路径的贡献。
图7示出了根据一个示例性实施例的累积具有相同散列的所有光传输路径的贡献的结果702。如图7所示,代替搜索n3邻域704,使用由量化产生的聚类来累积贡献,这允许单个查找。
表1包括根据实施例的用于计算用于查找的两个散列的示例性算法。当然,应该注意,表1中所示的算法仅用于说明目的,因此不应被解释为以任何方式进行限制。另外,请注意,可以扩展形成描述符的散列函数的变元以细化聚类。
表1
描述符至少包含光传输路径的所选顶点的量化世界空间位置。如表1所示,描述符也可以有效地处理细节水平:沿路径的距离d这样简单的启发式足以选择用于累积的细节水平。在该位置添加有关法线的信息可避免跨边缘模糊照明。此外,非漫射材料的进入方向和分层材料的层标识符可以包括在描述符中。
除了存储和比较用于散列验证的相当长的描述符之外,我们将第二个不同的散列函数应用于相同的描述符并且仅在次级散列v匹配时累积贡献,参见表1。为了增加散列表中的占用率,当遇到散列冲突时,可以采用具有非常少量步骤的线性探测。限制线性探测以保持在一个高速缓存行内,在现代架构中冲突解决几乎可以忽略不计。除非可以解决散列冲突,否则我们会使用路径的未经滤波的原始贡献。
另外,线性探测可以用于以更精细的细节水平区分光传输路径的属性:例如,法线信息可以包括在传递给验证散列函数的描述符中,而不是已经将其包括在主描述符中。这允许通过线性探测搜索相似的法线。
图8示出了根据一个示例性实施例的线性探测用于以更精细的细节水平区分光传输路径的属性的用途。如图8所示,代替在804中所示的描述符中包括法线802A-802C,为了区分其顶点将落入如806中所示的相同簇的贡献,验证散列函数可以应用于包括法线信息的描述符。这允许通过线性探测来区分法线信息,如808所示。作为参考,图8还包括从量化产生的体素810中出现的法线802A-802C的图示。
通过抖动进行滤波器内核近似
可以通过抖动路径描述符中的关键参数来去除量化的不连续性,其实际上可以相对于通过采样来近似滤波器内核。抖动取决于描述符参数的类型,例如,位置可能在交叉点的切平面中抖动,参见表1。所产生的噪声可能优于由量化产生的可见离散化伪像。除了离散化伪像之外,来自抖动的噪声很容易滤除。
图9示出了抖动位置902A-902B的细节水平可以与原始位置904的细节水平不同。
随着时间的累积
随时间累积贡献显着地提高了效率。对于静态场景,平均值将会收敛。对于动态环境,维持两组平均贡献并将它们与指数移动平均值相结合c=α·cold+(1-α)·cnew是收敛和时间自适应之间的常见权衡。即使对于具有大量旧贡献的散列的大变化也可以通过参数α来控制。
然而,通过指数平均值组合平均值cold和cnew可能不等于时间积分。特别是具有相对较少样本的散列的平均值可能不会收敛。在这种情况下,随着时间累积样品直到一定程度可能是有益的。这可以使用样本数量的固定阈值并随时间累积样本直到达到它来实现。以同样的精神,α可以取决于样本的数量,再次使用上限来保证时间响应性。
驱逐策略
对于较大的场景和更换相机,可能需要驱逐在一段时间内未被查询的散列的贡献。除了最近最少使用(LRU)驱逐策略之外,基于长期观察的启发式可能是高效的。
非常简单的实现方式可以依赖于通过由时间滤波期间的例如顶点密度和最后访问时间组成的优先级替换验证散列的最高有效位。因此,伪随机散列的最低有效位保证了缺失的贡献在整个场景中均匀分布,而最高有效位确保根据优先级驱逐贡献。这允许通过单个atomicMin操作实现冲突处理和驱逐。
由于相机移动或其他参数随时间改变散列值,可能不再发现少量旧贡献。虽然抖动也可能由于这些变化而隐藏不连续性,但由于平均样本数量减少,它不能弥补质量的显着损失。因此,在这些罕见的情况下可以执行附加的邻域搜索。类似的问题可能出现在场景中没有相同散列的许多其他贡献的部分。
结果和讨论
虽然利用所提出的算法对主要交叉点处的贡献进行滤波非常快,但是它仅去除屏幕空间中的一些滤波伪像。但是,散列路径空间滤波被设计为针对实时光传输模拟:当屏幕空间滤波失败或不可用时,例如,对于镜面反射或透明对象,它是唯一有效的回退。在非漫反射表面上进行滤波需要在路径描述符中包含其他参数以及启发式,例如在具有非漫射材质的区域中增加量化分辨率以最小化可见伪像。
在一个实施例中,可以通过采用一个或多个启发式来改善伪像。由于更一致的存储器访问模式,对主要交叉点滤波会使性能翻倍。
可以通过滤波器大小来确定图像质量,其平衡噪声与模糊。散列表中的冲突数量以及因此滤波的性能都可以取决于体素的大小。例如,体素大小可以由像素的投影大小的s倍指定。请注意,最高性能可能不一定与最佳图像质量一致。可以与目标分辨率下的像素数量成比例地选择散列表大小,使得每个像素可以存储潜在的一个顶点。
代替沿着来自相机的路径选择第一充分漫射顶点,可以在任何顶点处应用路径空间滤波。例如,在第二充分漫射顶点处的滤波可以类似于最终聚集或局部通过。事实上,路径空间滤波可以用方差减小换取受控偏差,并且与其他滤波技术正交。屏幕空间中的时间抗锯齿和互补噪声滤波器可以进一步降低噪声。局部平滑滤波器可以帮助减少近似中的误差。
结论
在累积期间仅依赖于几个同步,路径空间滤波可以基于大规模并行硬件上的散列规模。查询可以在恒定时间内运行,并且可能既不需要遍历,也不需要分层空间加速度数据结构的构造。因此,算法可能仅受光线跟踪的性能限制。
简化算法克服了屏幕空间滤波的许多限制,不需要运动矢量,并且能够在包括镜面和透明表面的第一交叉点之外去除噪声。
在一个实施例中,通过降低细节水平,即在较粗略的水平上累积它们的贡献,可以从驱逐中排除重要的散列值。对于只有少量贡献的单元格也是如此。除了通过路径的长度选择细节水平之外,可以使用路径差异和方差来确定适当的分辨率。
该自适应散列方案可以用于路径空间滤波、多视图渲染、光谱渲染、参与媒体、从阴影去耦抗锯齿、光子映射、强化学习重要性采样中的辐照度探测,可以与最终聚集结合来存储辐射探测等等。
虽然上面已经描述了各种实施例,但是应该理解,它们仅以示例的方式呈现,而不是限制。因此,优选实施例的宽度和范围不应受任何上述示例性实施例的限制,而应仅根据所附权利要求及其等同物来限定。
Claims (20)
1.一种方法,包括:
选择光传输路径的顶点;
量化所选顶点的一个或多个特征;
基于所选顶点的一个或多个量化特征计算第一散列;
在散列表内执行冲突解决;
累积所选顶点处的光传输路径对所述散列表的贡献;
响应于将所选顶点处的光传输路径的贡献添加到所述散列表,递增计数器;以及
利用所述计数器计算所述光传输路径的平均贡献。
2.如权利要求1所述的方法,其中,在量化所选顶点的一个或多个特征之前抖动所选顶点,并且根据所选择的分布执行抖动。
3.如权利要求2所述的方法,其中,所述抖动是在所述顶点所在的表面的切平面中执行的。
4.如权利要求1所述的方法,其中,所选顶点与体积中的多个附加顶点一起存储,并且存储在所述体积中的所有顶点可以被抖动。
5.如权利要求1所述的方法,其中:
量化所选顶点的一个或多个特征是均匀执行的,
量化所选顶点的一个或多个特征是根据所选顶点距相机的距离来执行的,
量化所选顶点的一个或多个特征是根据路径段的长度来执行的,或者
量化所选顶点的一个或多个特征根据基于多个顶点的分布和局部密度的启发式来执行。
6.如权利要求1所述的方法,其中,在散列表内执行冲突解决包括:
通过将所选顶点的一个或多个量化特征与附加顶点的一个或多个量化特征进行比较来检测一个或多个冲突,或者
通过量化所选顶点的第二组特征,基于所述第二组量化特征计算第二散列,并将所选顶点的所述第二散列与附加顶点的一个或多个第二散列进行比较来检测一个或多个冲突。
7.如权利要求1所述的方法,其中在模拟期间查找场景内的路径的顶点的一个或多个累积的贡献和零个或多个计数器。
8.如权利要求1所述的方法,其中:
所选顶点的一个或多个特征的量化是局部确定的,并且
通过检查场景内不同光传输路径的所选顶点的相互可见性来确定局部量化分辨率。
9.如权利要求1所述的方法,其中:
在计算所述第一散列期间排除所选顶点的一个或多个特征,
排除的特征包含在第二散列的计算中,并且
通过执行冲突解决来启用附加搜索。
10.如权利要求1所述的方法,其中,实现指数移动平均值,以便累积所述光传输路径随时间的贡献,其中:
具有所述第一散列的所有光传输路径的贡献之和以及所述计数器在一段时间内被保持,并且与当前时间段的所述光传输路径的平均贡献相结合。
11.如权利要求1所述的方法,其中,设定指数移动平均值的预定参数,使得所述指数移动平均值变为累积移动平均值。
12.如权利要求11所述的方法,其中基于以下内容选择所述预定参数:
路径跟踪模拟的结果,或者
额外的光传输路径的评估。
13.如权利要求12所述的方法,其中,基于来自所述路径跟踪模拟的信息来控制所述指数移动平均值。
14.如权利要求1所述的方法,其中使用附加滤波器来滤除由抖动引起的噪声。
15.如权利要求14所述的方法,其中:
所述附加滤波器在时域中操作,并且
所述附加滤波器使用指数移动平均值。
16.如权利要求15所述的方法,其中,设定所述指数移动平均值的参数,使得所述指数移动平均值变为累积移动平均值。
17.如权利要求15所述的方法,其中,基于来自路径跟踪模拟的信息来控制所述指数移动平均值。
18.如权利要求1所述的方法,其中:
从来自光源的路径中选择所述顶点,
从来自相机/眼睛位置的路径中选择附加顶点,并且
通过相应的面积度量作为光子映射操作的一部分来执行缩放。
19.一种系统,包括:
处理器,被配置为:
选择光传输路径的顶点;
量化所选顶点的一个或多个特征;
基于所选顶点的一个或多个量化特征来计算第一散列;
在散列表中执行冲突解决;
累积所选顶点处的光传输路径对所述散列表的贡献;
响应于将所选顶点处的光传输路径的贡献添加到所述散列表,递增计数器;以及
利用所述计数器计算所述光传输路径的平均贡献。
20.一种存储指令的计算机可读存储介质,所述指令在由处理器执行时使所述处理器执行包括以下步骤的步骤:
选择光传输路径的顶点;
量化所选顶点的一个或多个特征;
基于所选顶点的一个或多个量化特征来计算第一散列;
在散列表内执行冲突解决;
累积所选顶点处的光传输路径对所述散列表的贡献;
响应于将所选顶点处的光传输路径的贡献添加到所述散列表,递增计数器;以及利用所述计数器计算所述光传输路径的平均贡献。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762538384P | 2017-07-28 | 2017-07-28 | |
US16/045,627 US10614613B2 (en) | 2017-07-28 | 2018-07-25 | Reducing noise during rendering by performing parallel path space filtering utilizing hashing |
US16/045,627 | 2018-07-25 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110766778A true CN110766778A (zh) | 2020-02-07 |
CN110766778B CN110766778B (zh) | 2023-07-07 |
Family
ID=65038083
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910093024.9A Active CN110766778B (zh) | 2017-07-28 | 2019-01-30 | 使用散列执行并行路径空间滤波的方法和系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10614613B2 (zh) |
CN (1) | CN110766778B (zh) |
DE (1) | DE102019102009A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115268283A (zh) * | 2022-06-29 | 2022-11-01 | 青岛海尔科技有限公司 | 边缘场景的执行方法及装置、存储介质及电子装置 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10235601B1 (en) | 2017-09-07 | 2019-03-19 | 7D Labs, Inc. | Method for image analysis |
US11334762B1 (en) | 2017-09-07 | 2022-05-17 | Aurora Operations, Inc. | Method for image analysis |
US11436783B2 (en) * | 2019-10-16 | 2022-09-06 | Oxide Interactive, Inc. | Method and system of decoupled object space shading |
US11361189B2 (en) * | 2019-12-03 | 2022-06-14 | Ping An Technology (Shenzhen) Co., Ltd. | Image generation method and computing device |
US11257290B2 (en) | 2020-04-30 | 2022-02-22 | Adobe Inc. | Decimating a three-dimensional mesh via successive self-parameterization |
US11423617B2 (en) * | 2020-04-30 | 2022-08-23 | Adobe Inc. | Subdividing a three-dimensional mesh utilizing a neural network |
US11418852B2 (en) * | 2020-05-28 | 2022-08-16 | Nvidia Corporation | Detecting latency anomalies from pipeline components in cloud-based systems |
US11657563B2 (en) * | 2020-07-28 | 2023-05-23 | Unity Technologies Sf | Path guiding for path-traced rendering |
US11915045B2 (en) | 2021-06-18 | 2024-02-27 | International Business Machines Corporation | Adjusting store gather window duration in a data processing system supporting simultaneous multithreading |
US20230052645A1 (en) * | 2021-08-02 | 2023-02-16 | Nvidia Corporation | Multiresolution hash encoding for neural networks |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1857001A (zh) * | 2003-05-20 | 2006-11-01 | Amt先进多媒体科技公司 | 混合视频压缩方法 |
CN1950877A (zh) * | 2004-03-08 | 2007-04-18 | 辉达公司 | 图像数据的误差累加抖动 |
CN103914864A (zh) * | 2012-09-11 | 2014-07-09 | 辉达公司 | 采用梯度域米特罗波利斯光传输的图形渲染的方法和系统 |
CN104112034A (zh) * | 2013-04-22 | 2014-10-22 | 辉达公司 | 用于实施路径空间滤波的系统、方法和计算机程序产品 |
US20140340403A1 (en) * | 2013-05-15 | 2014-11-20 | Nvidia Corporation | System, method, and computer program product for utilizing a wavefront path tracer |
TW201519154A (zh) * | 2013-04-22 | 2015-05-16 | Nvidia Corp | 用以執行路徑空間過濾之系統、方法及電腦程式產品 |
US20160093069A1 (en) * | 2014-09-26 | 2016-03-31 | Subramaniam Maiyuran | Method and apparatus for pixel hashing |
US20170032566A1 (en) * | 2015-07-30 | 2017-02-02 | Nvidia Corporation | Decorrelation of low discrepancy sequences for progressive rendering |
CN106796717A (zh) * | 2014-09-15 | 2017-05-31 | 模拟技术公司 | 辐射图像降噪 |
CN107783993A (zh) * | 2016-08-25 | 2018-03-09 | 阿里巴巴集团控股有限公司 | 数据的存储方法和装置 |
CN108243336A (zh) * | 2016-12-26 | 2018-07-03 | 瑞萨电子株式会社 | 图像处理器以及半导体设备 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8271986B2 (en) | 2003-12-31 | 2012-09-18 | Intel Corporation | Visual and graphical data processing using a multi-threaded architecture |
US7830379B2 (en) | 2006-09-19 | 2010-11-09 | Caustic Graphics, Inc. | Architectures for parallelized intersection testing and shading for ray-tracing rendering |
US8355022B2 (en) | 2008-11-25 | 2013-01-15 | Sony Computer Entertainment America Llc | Method and apparatus for aggregating light sources per-vertex in computer graphics |
US9237263B2 (en) | 2012-10-05 | 2016-01-12 | Vidinoti Sa | Annotation method and apparatus |
EP2904605A1 (en) | 2012-10-05 | 2015-08-12 | Vidinoti SA | Annotation method and apparatus |
US9665974B2 (en) | 2013-08-02 | 2017-05-30 | Disney Enterprises, Inc. | Methods and systems of joint path importance sampling |
KR102193684B1 (ko) | 2013-11-04 | 2020-12-21 | 삼성전자주식회사 | 레이 트레이싱 처리 장치 및 방법 |
US9189883B1 (en) | 2014-02-27 | 2015-11-17 | Pixar | Rendering of multiple volumes |
-
2018
- 2018-07-25 US US16/045,627 patent/US10614613B2/en active Active
-
2019
- 2019-01-28 DE DE102019102009.3A patent/DE102019102009A1/de active Pending
- 2019-01-30 CN CN201910093024.9A patent/CN110766778B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1857001A (zh) * | 2003-05-20 | 2006-11-01 | Amt先进多媒体科技公司 | 混合视频压缩方法 |
CN1950877A (zh) * | 2004-03-08 | 2007-04-18 | 辉达公司 | 图像数据的误差累加抖动 |
CN103914864A (zh) * | 2012-09-11 | 2014-07-09 | 辉达公司 | 采用梯度域米特罗波利斯光传输的图形渲染的方法和系统 |
CN104112034A (zh) * | 2013-04-22 | 2014-10-22 | 辉达公司 | 用于实施路径空间滤波的系统、方法和计算机程序产品 |
TW201519154A (zh) * | 2013-04-22 | 2015-05-16 | Nvidia Corp | 用以執行路徑空間過濾之系統、方法及電腦程式產品 |
US20140340403A1 (en) * | 2013-05-15 | 2014-11-20 | Nvidia Corporation | System, method, and computer program product for utilizing a wavefront path tracer |
CN106796717A (zh) * | 2014-09-15 | 2017-05-31 | 模拟技术公司 | 辐射图像降噪 |
US20160093069A1 (en) * | 2014-09-26 | 2016-03-31 | Subramaniam Maiyuran | Method and apparatus for pixel hashing |
US20170032566A1 (en) * | 2015-07-30 | 2017-02-02 | Nvidia Corporation | Decorrelation of low discrepancy sequences for progressive rendering |
CN107783993A (zh) * | 2016-08-25 | 2018-03-09 | 阿里巴巴集团控股有限公司 | 数据的存储方法和装置 |
CN108243336A (zh) * | 2016-12-26 | 2018-07-03 | 瑞萨电子株式会社 | 图像处理器以及半导体设备 |
Non-Patent Citations (3)
Title |
---|
GUPTE S.: "Real-Time Photon Mapping on GPU", UNIVERSITY OF MARYLAND BALTIMORE COUNTY * |
肖锋;冯飞;田鹏辉;: "多尺度下特征点的目标匹配" * |
陈茹静: "多尺度变换域数字图像去噪算法研究" * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115268283A (zh) * | 2022-06-29 | 2022-11-01 | 青岛海尔科技有限公司 | 边缘场景的执行方法及装置、存储介质及电子装置 |
Also Published As
Publication number | Publication date |
---|---|
DE102019102009A1 (de) | 2020-01-30 |
CN110766778B (zh) | 2023-07-07 |
US10614613B2 (en) | 2020-04-07 |
US20190035140A1 (en) | 2019-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110176054B (zh) | 用于训练神经网络模型的合成图像的生成 | |
CN109472858B (zh) | 用于逆向图形的可微分渲染管线 | |
CN110766778B (zh) | 使用散列执行并行路径空间滤波的方法和系统 | |
CN111210498B (zh) | 降低多边形网格的细节水平以减少被渲染几何的复杂度 | |
US11106261B2 (en) | Optimal operating point estimator for hardware operating under a shared power/thermal constraint | |
US11836597B2 (en) | Detecting visual artifacts in image sequences using a neural network model | |
US10762620B2 (en) | Deep-learning method for separating reflection and transmission images visible at a semi-reflective surface in a computer image of a real-world scene | |
CN112445713A (zh) | 用于对内存有效分区的技术 | |
CN112041894B (zh) | 渲染期间提高涉及水面的场景的真实感 | |
EP3678037A1 (en) | Neural network generator | |
US11847733B2 (en) | Performance of ray-traced shadow creation within a scene | |
CN113609029B (zh) | 动态压缩具有统一值的存储器区域的技术 | |
CN111667542A (zh) | 适用于人工神经网络的用于处理压缩数据的解压缩技术 | |
CN113822975B (zh) | 用于对图像进行有效采样的技术 | |
CN113743573B (zh) | 用于访问和利用压缩数据及其状态信息的技术 | |
CN113608669B (zh) | 用于对基于字典的压缩进行缩放的技术 | |
CN113808183B (zh) | 使用扭曲的复合估计乘积积分 | |
US20200177798A1 (en) | Machine Learning of Environmental Conditions to Control Positioning of Visual Sensors | |
CN115205091A (zh) | 动态场景中改进的时间降噪器质量 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TG01 | Patent term adjustment |