CN114100118A - 基于网络状况的动态图像平滑 - Google Patents

基于网络状况的动态图像平滑 Download PDF

Info

Publication number
CN114100118A
CN114100118A CN202110629270.9A CN202110629270A CN114100118A CN 114100118 A CN114100118 A CN 114100118A CN 202110629270 A CN202110629270 A CN 202110629270A CN 114100118 A CN114100118 A CN 114100118A
Authority
CN
China
Prior art keywords
image
computer
data
implemented method
memory
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.)
Pending
Application number
CN202110629270.9A
Other languages
English (en)
Inventor
D·加格
K·普拉萨德
V·J·波雷
H·S·阿扎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of CN114100118A publication Critical patent/CN114100118A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/355Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an encoded video stream for transmitting to a mobile phone or a thin client
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/70Denoising; Smoothing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/358Adapting the game course according to the network or server load, e.g. for reducing latency due to different connection speeds between clients
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/52Controlling the output signals based on the game progress involving aspects of the displayed game scene
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • G06T15/205Image-based rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/20Image enhancement or restoration using local operators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • H04L43/087Jitter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0894Packet rate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/164Feedback from the receiver or from the transmission channel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/55Details of game data or player data management
    • A63F2300/5526Game data structure
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/66Methods for processing data by generating or executing the game program for rendering three dimensional images
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/36Level of detail
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Environmental & Geological Engineering (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • Image Processing (AREA)

Abstract

本发明公开了基于网络状况的动态图像平滑。公开了用于基于网络状况动态地平滑图像以调整传输图像所需的比特率的系统和方法。平滑图像中的内容以减少编码每个图像所需的位的数量。过滤图像会修改包含具有高频像素变化的内容的区域,从而降低频率,因此该区域中的像素颜色看起来“平滑”或均匀。换句话说,显示长满草的草坪的图像的区域可能具有从像素到像素的高频变化,这是由于颜色相似但不均匀的草的单独叶片的精细细节造成的。将该区域编码为单一的绿色阴影(或不同绿色阴影的多像素区域),使观看者可以将其识别为长满草的草坪,同时大大减少了表示该区域所需的位的数目。

Description

基于网络状况的动态图像平滑
背景技术
云游戏服务通过执行服务器中的许多处理任务并将处理结果(例如,图 形输出)流传输到本地客户端设备,来使客户端访问服务器上托管的游戏。 流传输的质量取决于网络状况(condition),例如可用的信道带宽。当带宽低 时,用户在帧中会遇到模糊和块状伪像(artifact),并且有时甚至丢失帧而导 致卡顿。常规上,为了改善最终用户体验,动态分辨率转换(DRC)用于无 论何时带宽较低时降低帧分辨率,并将较低分辨率的帧传输到客户端,然后 在客户端进行帧放大。DRC的问题在于,每次更改分辨率时,都必须重置编 码器和解码器。同样,在重置后,编码器会传输IDR(即时解码器刷新)编 码的图片(一种特殊类型的I帧)以清除解码器中参考图片缓冲区的内容, 并防止使用任何先前的帧作为参考帧。以新分辨率传输的第一帧被编码为 IDR帧,即使当降低分辨率时也导致比特率激增。解码器重新初始化为使用 新的IDR帧可能会导致帧率抖动(jitter)。需要解决这些问题和/或与现有技 术相关联的其他问题。
发明内容
本公开的实施例涉及基于网络状况动态地过滤图像。公开了通过基于网 络状况平滑高空间频率内容来动态地调整传输图像所需的比特率的系统和方 法。与诸如上述的常规系统相反,不必改变图像的像素分辨率以适应网络状 况。取而代之的是,平滑图像中的区域和/或内容,以减少对每个图像进行编 码所需的位的数量。过滤图像会修改包含具有高的像素变化频率的内容的区 域,从而降低频率,使该区域中的像素颜色显得“平滑”。例如,显示长满草 的草坪的图像区域可能具有从像素到像素的高频变化,这是由于颜色相似的 草的单独叶片的精细细节造成的。将区域编码为单一的绿色阴影(或不同绿 色阴影的多像素区域),使观看者可以将其识别为长满草的草坪,同时大大减 少了表示该区域所需的位的数目和传输编码图像所需的比特率。
附图说明
下面参考附图详细描述基于网络状况的用于动态图像平滑的当前系统 和方法,其中:
图1A示出了适合用于实现本公开的一些实施例的示例服务器/客户端系 统的框图。
图1B示出了根据一个实施例的图像和被平滑化的图像的版本。
图1C示出了根据一个实施例的用于执行动态图像平滑的方法的流程图。
图2A示出了根据现有技术的用于比特率降低的DRC图。
图2B示出了根据本公开的一些实施例的用于比特率降低的动态图像平 滑的图。
图2C示出了根据一个实施例的用于执行动态图像平滑的另一种方法的 流程图。
图3A示出了根据一个实施例的图像和被平滑的图像的两个版本。
图3B示出了适用于实现本公开的一些实施例的图1C所示的流程图中的 步骤的流程图。
图4示出了适用于实现本公开的一些实施例的示例并行处理单元。
图5A是适用于实现本公开的一些实施例的使用图4的PPU实现的处理 系统的概念图。
图5B示出了其中可以实现各种先前实施例的各种架构和/或功能的示例 性系统。
图6A是适用于实现本公开的一些实施例的由图4的PPU实现的图形处 理管线的概念图。
图6B示出了适用于实现本公开的一些实施例的示例性游戏流式传输系 统。
具体实施方式
公开了与基于网络状况动态地平滑图像有关的系统和方法。可以应用图 像平滑以减少编码图像所需的位的数目。通过过滤图像内的高空间频率内容, 可以平滑小规模细节(例如,图像中的纹理内容)。在以下描述的上下文中, 平滑减少了图像内的熵,这改变了像素的值,并且使得能够对平滑图像进行 更有效的编码。当网络状况改善时,可以调整过滤以减少平滑并增加比特率。
可以基于网络状况动态地调整所使用的平滑量,以为访问服务器上的应 用程序的客户端提供具有视觉上有意义的图像的交互式体验。尤其是,即使 平滑量增加,重要的图像细节(例如,对象边缘和结构)也将保留。动态平 滑快速地响应网络状况的变化,并且不需要重置编码器和/或解码器。感知上 重要的特征仍然可见,因此与使用降低图像分辨率和/或抖动帧率的常规技术 相比,最终用户的体验得到了改善。
图1A示出了适用于实现本公开的一些实施例的示例服务器/客户端系统 100的框图。应当理解,本文描述的这种布置和其他布置仅作为示例阐述。 除了或代替所示的那些,可以使用其他布置和元件(例如,机器、界面、功 能、命令、功能的分组等),并且可以完全省略一些元件。此外,本文描述的 许多元件是功能实体,其可以被实现为离散或分布式组件或与其他组件结合 并且以任何合适的组合和位置来实现。本文描述为由实体执行的各种功能可 以由硬件、固件和/或软件或其任何组合来执行。例如,各种功能可以由处理 器执行存储在存储器中的指令来执行。此外,本领域普通技术人员将理解, 执行服务器/客户端系统100的操作的任何系统都在本公开的实施例的范围和 精神内。
如图1A所示,服务器110经由信道将编码数据传输到客户端140。尽 管在传输图像数据的上下文中描述了服务器/客户端系统100,但是在一些实 施例中,诸如辅助信息深度缓冲区、法线等的其他类型的数据(编码的或未 编码的)可以被动态地平滑和传输。
客户端140将网络状况数据142提供给服务器110。在另一个实施例中, 网络监视器135或附加网络监视器135被配置在服务器110内以提供网络状 况数据142。网络状况数据142可包括与可用带宽、延迟、抖动和信道数据 包丢失有关的数据。基于网络状况数据142,图像平滑控件125生成参数以 通过图像平滑过滤器115和/或游戏捕获单元105动态地控制高空间频率内容 的过滤。在一个实施例中,当超过网络状况数据142的预定阈值时,图像平 滑控件125调整参数。在一个实施例中,当网络状况数据指示超过信道容量 时,图像平滑控件125增加平滑量,并且当不超过信道容量时,图像平滑控 件125减小平滑量。
为了动态地调整比特率,在对帧进行编码以传输给客户端140之前,在 服务器110处执行图像平滑。通过对图像内的高空间频率内容进行过滤来实 现图像平滑。图像平滑可以在图像渲染期间由游戏捕获单元105应用,或者 可以由图像平滑过滤器115应用于渲染图像。通常,在对图像帧进行编码之 前执行图像平滑。游戏捕获单元105生成渲染的图像,并且可以包括游戏引 擎,该游戏引擎根据从图像平滑控件125接收的至少一个参数来渲染渲染的 图像的至少一部分。
在一个实施例中,参数包括纹理LOD(细节水平)偏置(bia),该偏置 控制在渲染期间应用于表面的纹理映射的分辨率。例如,可以将纹理映射应 用于角色、场景背景、地形、建筑物或结构等的表面。过滤纹理映射以生成 每个较低分辨率的LOD,以产生对应于不同LOD的一组纹理映射(例如, mip映射)。偏置LOD计算以使用较低分辨率的纹理映射降低图像质量,并 且由于改进的纹理数据高速缓存,通常会提高渲染速度。使用较低分辨率的 纹理映射导致的图像质量下降在渲染的图像中显示为模糊的伪像。常规地, 纹理映射LOD可以被偏置以维持用于实时渲染的最小帧率。偏置LOD是可 以用于生成平滑图像的第一过滤机制。可以代替第一过滤机制或除第一过滤 机制之外使用第二过滤机制对渲染的图像应用过滤器。
游戏捕获器105输出的渲染图像可以根据从图像平滑控件125接收到的 一个或更多个参数,由图像平滑过滤器115进行过滤。通常,图像平滑过滤 器115实现用于处理像素以模糊小规模细节的过滤器,同时在渲染图像帧内 保留几何结构的结构性边缘以生成平滑的图像帧。在一个实施例中,图像平 滑过滤器115实现滚动引导过滤器,其可以包括双边过滤器和/或域转换过滤 器。
在一个实施例中,图像平滑控件125还接收用于确定参数的用户定义的 控件。用户定义的控件可以指定由图像平滑过滤器115和/或游戏捕获单元105 执行的过滤的类型。例如,可以为图像平滑过滤器115选择或定义边缘保留 平滑过滤器功能。在一个实施例中,可以由用户定义的控件指定最小和/或最 大平滑(或LOD偏置)的级别。
编码器120对平滑图像帧进行编码(压缩),从而生成编码图像帧以传 输至客户端140。解码器130对编码图像帧进行解码(解压缩)以在客户端 140处生成平滑图像帧。网络监视器135检测网络状况的变化并将更新提供 给图像平滑控件125。在一个实施例中,网络监视器135连续或周期性地将 网络状况数据142提供给图像平滑控件125。
图像平滑与常规服务器/客户端系统中的现有编码器和解码器兼容。与 DRC相反,当平滑量改变时,图像平滑不需要重置编码器120或解码器130。 图像平滑后的基本思想是图像由数千个像素组成,但并非所有像素都具有同 等的重要性。根据HVS(人类视觉系统)模型,只有整体结构特征对人的感 知非常重要,并且各个细节(例如,高频细节(例如,纹理和伪像))并不重 要。因此,图像平滑可从图像中提取有意义的信息。图像中的结构细节(例如,几何对象和文本的边缘和角落)将被保留,并且复杂的细节像纹理和小 的细节图案将被去掉。例如,在保留树枝(小图元)和道路边缘的同时,可 以将应用于天空或地面的纹理平滑化为恒定的颜色。重要的是,当应用图像 平滑以降低比特率时,文本保持明锐(sharp)。相反,当使用DRC降低比特 率时,文本显得模糊。
现在将根据用户的需求,给出关于可用于实现前述框架的各种可选架构 和特征的更多说明性信息。应该特别注意的是,以下信息是出于说明目的而 提出的,不应以任何方式解释为限制。下列任何特征都可以视需要并入或不 排除所描述的其他特征。
图1B示出了根据一个实施例的图像140和经平滑的图像版本,图像150。 图像平滑过滤器115处理图像140以产生图像150。在不对用于纹理映射的 LOD偏置值进行任何修改的情况下渲染图像140。在其他实施例中,可以用 修改的LOD偏置值来渲染图像140。如图1B所示,在平滑区域152中减少 了区域142内的内容的某些高频细节。具体地说,具有随像素变化的相似颜 色的像素用单一颜色着色。区域142内的内容的亮块的边缘被保留在平滑区域152内,而较暗的区域显得均匀。同样,区域144内的内容的高频细节在 平滑区域154中显得均匀。相反,与图像140相比,平滑图像150中角色的 轮廓和树的阴影保持明锐。平滑过滤的图像150保留重要的细节和结构,使 游戏玩法继续进行,而不会降低图像分辨率或抖动帧率。在一些实施例中, 使用图像平滑过滤器115实现比特率节省20-35%。当修改LOD偏置值时, 比特率节省可以高达75%(例如,比特率减少4倍)。
通常,与DRC相比,经由过滤动态地平滑的图像更加明锐。当使用DRC 时,由于缩小和放大过程,小文本会模糊,而平滑图像会保持明锐度。对于 某些平滑图像,即使与原始图像相比,对象边缘也会更明锐,并且平滑还会 去掉对象边缘周围的噪点。此外,对于某些图像序列,与原始图像序列相比, 在图像序列的平滑版本中减少了块状伪像。
图1C示出了根据一个实施例的用于执行动态图像平滑的方法170的流 程图。本文所述的方法170的每个框包括可以使用硬件、固件和/或软件的任 何组合来执行的计算过程。例如,各种功能可以由处理器执行存储在存储器 中的指令来执行。该方法还可以体现为存储在计算机存储介质上的计算机可 用指令。该方法可以由独立应用程序、服务或托管服务(独立或与其他托管 服务组合)或另一种产品的插件提供,仅举几例。另外,通过示例的方式, 相对于图1A的系统描述了方法170。然而,该方法可以附加地或可替代地由 任何一个系统或系统的任何组合来执行,包括但不限于本文所述的系统。此 外,本领域普通技术人员将理解,执行方法170的任何系统都在本公开的实 施例的范围和精神内。
在步骤175,接收用于服务器110和客户端140之间的连接的网络状况 数据142。在一个实施例中,图像平滑控件125接收网络状况数据142。网络 状况数据可以包括与用于连接的可用带宽、延迟、抖动和数据包丢失中的一 个或更多个相关的数据或表示用于连接的可用带宽、延迟、抖动和数据包丢 失中的一个或更多个的数据。
在步骤180,响应于网络状况数据的变化,调整控制过滤高空间频率内 容的参数。在一个实施例中,当网络状况数据142指示连接质量已经降低时, 由过滤实现的平滑量增加。在一个实施例中,根据与服务质量(QoS)度量 相关联的一个或更多个预定阈值来评估网络状况数据142。在一个实施例中, 当网络状况数据142指示连接质量已经增加时,由过滤实现的平滑量减少。
在步骤185,根据该参数生成图像帧。在一个实施例中,参数对应于LOD 偏置,并且使用LOD偏置来对渲染的图像进行渲染以减小纹理表面的熵。在 另一个实施例中,该参数对应于平滑过滤器,并且根据该参数对渲染的图像 进行过滤以减小像素中的高频空间变化。图像平滑控件125可以产生一个或 更多个参数以控制用于每个渲染的图像的LOD偏置和/或过滤。
图2A示出了曲线图200,该曲线图200示出了根据现有技术的用于比 特率降低的DRC。曲线图200示出了随着时间从服务器到客户端的连接的可 用带宽。曲线图200还示出了动态平滑技术和DRC消耗的比特率的变化。在 时间201处,从服务器到客户端的连接的可用带宽从第一级别减小到第二级 别。作为响应,常规DRC系统降低了图像分辨率,从而在插入较低分辨率的 I帧期间增加了比特率。重置编码器和解码器以更改用于DRC的分辨率。
在时间201之后IDR帧的传输引起比特率的峰值,此后DRC的比特率 下降到低于可用带宽的水平。比特率的峰值可能特别有问题,因为可用带宽 已经减少。此外,客户端可能无法保持恒定的帧率,从而导致最终用户可见 的帧抖动。当在时间202可用带宽从第二级别增加回到第一级别时,常规DRC 会提高图像分辨率。更改分辨率需要重置编码器和解码器,并在时间202之 后传输另一个IDR帧。对于DRC,比特率在第二IDR帧的传输期间再次达到峰值,并且然后调整为稳定的比特率。即使当可用带宽增加,重置解码器 和/或比特率的峰值也可能导致帧抖动。
与DRC相比,动态平滑技术不需要重置编码器和/或解码器,并且不会 引起比特率或帧抖动的峰值。此外,动态平滑技术可以连续地使过滤适应可 用带宽。由于每个图像的变化,很难确定该参数的特定调整将导致的比特率 变化量。因此,在一个实施例中,经调整的参数可以分别将比特率减小或增 加比不超过可用带宽所需的更大或更小的量。换句话说,响应于网络状况数 据142的变化,对参数的调整可以是保守的,并且然后进行微调或优化。当 服务器110在编码器120处测量的比特率不在可用带宽的阈值范围内时,可 以连续地调整参数。
图2B示出了根据本公开的一些实施例的示出用于比特率降低的动态图 像平滑的曲线图250。如曲线图250所示,动态平滑比特率可以从开始时间 开始增加,在时间201处减小可用带宽之后不久,在时间203处增加以接近 可用带宽的水平。调整参数以快速增加平滑的级别会降低用于传输动态平滑 图像的比特率。图像平滑控件125可以基于测量的比特率和网络状况数据142 在时间203之后继续调整参数,使得比特率增加而仍然保持在可用带宽以下。 在另一个实施例中,该参数是恒定的,直到可用带宽变化超过预定值为止。 图像平滑控件125可以延迟增加比特率(减小平滑的级别)以确保增加的可 用带宽是一致的。类似地,当可用带宽减小时,图像平滑控件125可以延迟 减小比特率(增大平滑的级别)。图像平滑控件125可以使用不同的延迟来调 整参数以增加或减少比特率。在一个实施例中,使用较短的延迟来降低比特 率,而使用较长的延迟来增加比特率。可以基于网络状况数据142来预定、 编程或计算延迟。
如曲线图250所示,在时间202处可用带宽增加。作为响应,在时间204 处,图像平滑控件125调整参数以减小平滑的级别,并且用于传输编码图像 帧的比特率增加。在时间204处增加的比特率高于可用带宽,因此图像平滑 控件125调整参数以增加平滑,在时间205处将比特率减小到低于可用带宽 的量。图像平滑控件125可以在时间205之后,继续调整参数以微调比特率。
与传统的DRC技术相反,图像平滑不需要重置编码器和/或解码器以插 入IDR帧。取而代之的是,在调整参数之前传输的编码图像帧中的至少一个 可以由解码器用作I帧,以对在调整参数之后接收到的编码图像帧进行解码。 当避免比特率的重置和/或峰值时,在调整参数之前和之后,解码图像帧的帧 率是恒定的。
图2C示出了根据一个实施例的用于执行动态图像平滑的另一种方法 220的流程图。方法220包括方法170的步骤175、180和185。步骤175、 180和185如前所述执行。在步骤225处,图像平滑控件125确定从服务器 110到客户端140的传输是否在用于网络状况的阈值范围内(例如,如由一 个或更多个QoS度量所确定的)。例如,如果传输的比特率大于由网络状况 数据142指示的可用带宽,则传输不在阈值范围内。如果传输的比特率等于 或小于可用带宽,则传输在阈值范围内。
在步骤225处,如果图像平滑控件125确定传输不在阈值范围内,则在 步骤230处,图像平滑控件125在返回到步骤185之前调整参数。图像平滑 控件125可以调整一个或更多个参数以针对每个渲染图像经由LOD偏置和/ 或图像平滑来控制过滤。
在步骤225处,如果图像平滑控件125确定传输在网络状况内,则在步 骤235处,图像平滑控件125保持参数恒定,直到网络状况数据142改变为 止。在一个实施例中,图像平滑控件125将参数保持恒定,直到网络状况数 据142和/或传输比特率改变为止。
如前所述,可以通过图像平滑控件125控制用于渲染图像的LOD偏置 以调整编码图像帧的比特率。在一些实施例中,在游戏捕获单元105上运行 的应用程序的外部不暴露或不可访问LOD偏置。当未暴露LOD偏置的控制 时,图像平滑控件125可能无法设置用于渲染期间的LOD偏置的值。
图3A示出了根据一个实施例的图像300和经平滑的图像的两个版本。 游戏捕获单元105使用图像平滑控件125提供的参数来渲染图像300而无需 修改纹理LOD值。游戏捕获单元105可以应用LOD偏置,该LOD偏置不基 于该参数而是在不知道网络状况数据142的情况下替代地由游戏程序本身确 定。在一个实施例中,与由游戏程序确定的LOD偏置相比,由图像平滑控件 125提供的参数具有更高的优先级,并且优先于由游戏程序确定的LOD偏置(如果有的话)。
由游戏捕获单元105渲染的图像320,其具有由图像平滑控件125控制 的第一LOD偏置值。由游戏捕获单元105渲染的图像330,其具有由图像平 滑控件125控制的第二LOD偏置值。没有将平滑过滤器应用于图像300以产 生图像320和330。第一LOD偏置值可以将最高的纹理映射分辨率从256x256 减小到64x64,并且每个较低分辨率的mip映射在每个维度上都类似地向下 偏置四。第二LOD偏置值可以将最高的纹理映射分辨率从256x256减小到8x8,并且每个较低分辨率的mip映射在每个维度上都类似地向下偏置32。 在一个实施例中,图像平滑控件125根据用于控制平滑的可用带宽的范围来 调整参数以将LOD偏置值控制为预定值。在一个实施例中,游戏捕获单元 105针对16个不同级别的纹理LOD支持从0到15的mip映射LOD偏置值。
在一个或更多个实施例中,并且如图3A所示,区域305内的高空间频 率细节在平滑区域325中减小,并且甚至在呈现均匀的平滑区域335中更被 减小。相反,不包括纹理映射表面的区域不受LOD偏置调整的影响。例如, 地平线上的树木被构造为图元(通常是小三角形),因此树木的结构看起来保 留在图像320和330中。类似地,角色的结构和外观保留在图像320和330 中。区域310内的文本被保留在平滑区域328和338内。类似地,平视显示 器(HUD)内的文本、符号和图标将被保留。
平滑图像320和330很好地保留了重要的细节和结构,使游戏玩法继续 进行而不会降低图像分辨率或抖动帧率。使用针对平滑的图像320和330的 LOD偏置调整的比特率节省分别为58%和62%。在一个实施例中,图像平 滑过滤器115可以被配置为将过滤器应用于图像,该图像已经使用由图像平 滑控件125提供的LOD偏置值进行渲染。在这样的实施例中,图像平滑控件 125可以提供用于控制LOD偏置的第一参数和用于控制平滑过滤器的第二参 数。
尽管在渲染图像的上下文中描述了平滑技术,但是该技术也可以应用于 其他图像,诸如“在野外”捕获的图像。但是,对于未渲染的图像,LOD偏 置值可能不会用于执行平滑。此外,当游戏捕获单元105不支持对用于纹理 映射的LOD偏置的修改或控制时,修改LOD偏置的参数对平滑没有影响。
图3B示出了适用于实现本公开的一些实施例图的1C所示的流程图的步 骤180的流程图。在步骤340处,图像平滑控件125确定是否可以控制游戏 捕获单元105用来渲染图像的LOD偏置。如果可以控制LOD偏置,则在步 骤345处,图像平滑控件125在进行到步骤350之前,调整提供给游戏捕获 单元105的LOD偏置参数。调整LOD偏置参数控制渲染图像中的高空间频 率纹理映射的过滤。如果不能控制LOD偏置,则图像平滑控件125从步骤 340直接进行到步骤350。在步骤350处,游戏捕获单元105根据LOD偏置 渲染图像。在步骤355处,图像平滑控件125调整控制由图像平滑过滤器115 应用的过滤的参数以减少高空间频率内容。减少高空间频率内容会降低用于 从服务器110传输到客户端140的编码图像帧的比特率。
与经由诸如DRC之类的常规技术相比,使用经由LOD偏置和/或图像 过滤的动态图像平滑来调整从服务器110到客户端140的图像传输的比特率, 提供了改善的用户体验。响应于可用带宽的变化,可以快速增加或减少比特 率,以适应低延迟并不会引起帧抖动。动态图像平滑不需要重置编码器和/或 解码器。在一个实施例中,动态图像平滑可以被实现为用于流传输工具的插 件,使得不需要修改就可以使应用程序受益于动态图像平滑。动态图像平滑 技术通过保留文本、平视显示器(HUD)和渲染图像的结构细节,即使在降 低的比特率下也为最终用户提供了有趣的体验。
并行处理架构
图4示出了根据一个实施例的并行处理单元(PPU)400。PPU 400可以 用于实现服务器/客户端系统100的服务器110和/或客户端140。PPU 400可 以用于在服务器/客户端系统100内实现游戏捕获单元105、图像平滑过滤器 115、图像平滑控件125、编码器120、解码器130和网络监视器中的一个或 更多个。
在一个实施例中,PPU 400是在一个或更多个集成电路设备上实现的多 线程处理器。PPU 400是被设计为并行处理许多线程的延迟隐藏架构。线程 (例如,执行线程)是被配置为由PPU 400执行的一组指令的实例。在一个 实施例中,PPU 400是图形处理单元(GPU),其被配置为实现用于处理三维 (3D)图形数据的图形渲染管线,以便生成二维(2D)图像数据以在显示设 备上显示。在其他实施例中,PPU 400可以用于执行通用计算。尽管本文中出于说明性目的提供了一个示例性并行处理器,但应强烈注意,仅出于说明 性目的而提出了这种处理器,并且可以采用任何处理器来对其进行补充和/或 替代。
一个或更多个PPU 400可被配置为加速数千个高性能计算(HPC)、数 据中心、云计算和机器学习应用程序。PPU 400可以被配置为加速用于自主 车辆、模拟、诸如射线或路径跟踪的计算图形、深度学习、高精度语音、图 像和文本识别系统、智能视频分析、分子模拟、药物发现、疾病诊断、天气 预报、大数据分析、天文学、分子动力学模拟、金融建模、机器人技术、工 厂自动化、实时语言翻译、在线搜索优化和个性化用户推荐等的众多深度学 习系统和应用程序。
如图4所示,PPU 400包括输入/输出(I O)单元405、前端单元415、 调度器单元420、工作分配单元425、集线器430、交叉开关(Xbar)470、 一个或更多个通用处理群集(GPC)450和一个或更多个存储器分区单元480。 PPU 400可以通过一个或更多个高速NVLink 410互连连接到主机处理器或其 他PPU 400。PPU 400可以经由互连402连接到主机处理器或其他外围设备。 PPU 400还可以连接到包括多个存储设备的本地存储器404。在一个实施例中, 本地存储器可以包括多个动态随机存取存储器(DRAM)设备。DRAM设备 可以被配置为高带宽内存(HBM)子系统,每个设备内堆叠有多个DRAM裸 晶(die)。
NVLink 410互连使系统能够缩放并包括与一个或更多个CPU结合的一 个或更多个PPU 400,支持PPU 400和CPU之间的高速缓存一致性,以及 CPU主控。NVLink 410可以通过集线器430将数据和/或命令传输到PPU 400 的其他单元或从PPU 400的其他单元传输(例如,一个或更多个复制引擎、 视频编码器、视频解码器、电源管理单元等(未明确示出))。结合图5A更 详细地描述了NVLink 410。
I/O单元405被配置为通过互连402从主机处理器(未示出)传输和接 收通信(例如,命令、数据等)。I/O单元405可以直接经由互连402或通过 一个或更多个中间设备(例如,存储桥)与主机处理器进行通信。在一个实 施例中,I/O单元405可以经由互连402与一个或更多个其他处理器(例如, 一个或更多个PPU 400)通信。在一个实施例中,I/O单元405实现用于在 PCIe总线上进行通信的外围组件互连快速(PCIe)接口,并且互连402是PCIe总线。在替代实施例中,I/O单元405可以实现用于与外部设备通信的其他类 型的众所周知的接口。
I/O单元405对经由互连402接收的分组进行解码。在一个实施例中, 分组表示被配置为使PPU 400执行各种操作的命令。I/O单元405如命令所指 定的那样将解码的命令传输到PPU 400的各种其他单元。例如,一些命令可 以被传输到前端单元415。其他命令可以被传输到集线器430或PPU 400的 其他单元,例如一个或更多个复制引擎、视频编码器、视频解码器、电源管 理单元等(未明确显示)。换句话说,I/O单元405被配置为在PPU 400的各种逻辑单元之中和之间路由通信。
在一个实施例中,由主机处理器执行的程序在缓冲器中对命令流进行编 码,该缓冲器将工作负载提供给PPU 400以进行处理。工作负载可以包括多 个指令以及将由这些指令处理的数据。缓冲器是存储器中的可由主机处理器 和PPU 400两者访问(例如,读/写)的区域。例如,I/O单元405可以被配 置为访问经由在互连402上传输的存储器请求连接到互连402的系统存储器 中的缓冲器。在一个实施例中,主处理器将命令流写入缓冲器,并且然后将 指向命令流的开始的指针传输至PPU 400。前端单元415接收指向一个或更 多个命令流的指针。前端单元415管理一个或更多个流,从这些流中读取命 令,并将命令转发到PPU400的各个单元。
前端单元415耦合到调度器单元420,该调度器单元420配置各种GPC 450以处理由一个或更多个流定义的任务。调度器单元420被配置为跟踪与 由调度器单元420管理的各种任务有关的状态信息。该状态可以指示任务被 分配给哪个GPC 450、任务是活动的还是非活动的、与任务相关联的优先级 等。调度器单元420管理在一个或更多个GPC 450上的多个任务的执行。
调度器单元420耦合到工作分配单元425,该工作分配单元425被配置 为分配要在GPC 450上执行的任务。工作分配单元425可以跟踪从调度器单 元420接收到的多个调度的任务。工作分配单元425管理每个GPC 450未决 (pending)任务池和活动任务池。当GPC 450完成任务执行时,从GPC 450 的活动任务池中逐出该任务,并且其中来自未决任务池中的其他任务之一被 选择并安排在GPC 450上执行。如果活动任务在GPC 450上处于空闲状态(例 如,在等待解决数据依赖关系时),则将活动任务从GPC 450中逐出并返回到 未决任务池,同时选择未决任务池中的另一个任务并安排在GPC 450上执行。
在一个实施例中,主机处理器执行实现应用程序编程接口(API)的驱 动器内核,该应用程序编程接口(API)使在该主机处理器上执行的一个或更 多个应用程序能够调度用于在PPU 400上执行的操作。在一个实施例中,PPU 400同时执行多个计算应用程序,并且PPU 400为多个计算应用程序提供隔 离、服务质量(QoS)和独立的地址空间。应用程序可以生成使驱动器内核 生成一个或更多个任务以供PPU 400执行的指令(例如,API调用)。驱动器 内核将任务输出至PPU 400正在处理的一个或更多个流。每个任务可以包括 一个或更多个相关线程组,在本文中被称为线程束(warp)。在一个实施例中, 线程束包括可以并行执行的32个相关线程。协作线程(cooperating threads) 可以指包括执行任务的指令的多个线程,并且可以通过共享存储器交换数据。 可以将任务分配给GPC 450内的一个或更多个处理单元,并且调度指令以由 至少一个线程束执行。
工作分配单元425经由XBar 470与一个或更多个GPC 450通信。XBar 470是将PPU400的多个单元耦合到PPU 400的其他单元的互连网络。例如, XBar 470可以被配置为将工作分配单元425耦合到特定的GPC 450。尽管未 明确示出,但是PPU 400的一个或更多个其他单元也可以经由集线器430连 接到XBar 470。
任务由调度器单元420管理,并由工作分配单元425分配给GPC 450。 GPC 450被配置为处理任务并生成结果。结果可能会被GPC 450内的其他任 务消耗,经由XBar 470路由到不同GPC 450或存储在存储器404中。结果可 经由存储器分区单元480写入存储器404,该存储器分区单元480实现存储 器接口用于向/从存储器404读取和写入数据。结果可以经由NVLink 410传 输到另一个PPU 400或CPU。在一个实施例中,PPU 400包括数量为U的存 储器分区单元480,其等于耦合到PPU 400的存储器404的分离的和不同的 存储器设备的数量。每个GPC 450可以包括存储器管理单元,以提供虚拟地 址到物理地址的转换、存储器保护以及存储器请求的仲裁。在一个实施例中, 存储器管理单元提供一个或更多个转换后备缓冲器(TLB),用于将虚拟地址 转换为存储器404中的物理地址。
在一个实施例中,存储器分区单元480包括光栅操作(ROP)单元、二 级(L2)高速缓存以及耦合到存储器404的存储器接口。存储器接口可以实 现32、64、128、1024位数据总线等,用于高速数据传输。PPU 400可以连 接至多达Y个存储设备,例如高带宽存储栈或图形双数据速率版本5,同步 动态随机存取存储器或其他类型的持久性存储。在一个实施例中,存储器接 口实现了HBM2存储器接口,并且Y等于U的一半。在一个实施例中,HBM2 存储栈与PPU 400位于同一物理封装上,与传统的GDDR5 SDRAM系统相 比,可节省大量功率和面积。在一个实施例中,每个HBM2堆栈包括四个存 储器裸晶,并且Y等于4,每个HBM2堆栈包括每个裸晶两个128位通道, 用于总共8个通道和1024位的数据总线宽度。
在一个实施例中,存储器404支持单错误校正双错误检测(SECDED) 错误校正码(ECC)以保护数据。ECC为对数据损坏敏感的计算应用程序提 供了更高的可靠性。在PPU400处理非常大的数据集和/或长时间运行应用程 序的大规模集群计算环境中,可靠性尤其重要。
在一个实施例中,PPU 400实现了多级存储器层次结构。在一个实施例 中,存储器分区单元480支持统一存储器以为CPU和PPU 400存储器提供单 个统一虚拟地址空间,从而实现虚拟存储器系统之间的数据共享。在一个实 施例中,追踪PPU 400对位于其他处理器上的存储器的访问频率,以确保将 存储器页面移动到更频繁地访问该页面的PPU 400的物理存储器。在一个实 施例中,NVLink 410支持地址转换服务,从而允许PPU 400直接访问CPU 的页表,并由PPU 400提供对CPU存储器的完全访问。
在一个实施例中,复制引擎在多个PPU 400之间或PPU 400与CPU之 间传输数据。复制引擎可以为未映射到页表中的地址生成页面故障。存储器 分区单元480然后可以服务页面故障,将地址映射到页表中,之后复制引擎 可以执行传输。在常规系统中,为多个处理器之间的多个复制引擎操作固定 (例如,不可分页)存储器,从而大大减少了可用存储器。由于硬件页面故 障,可以将地址传递到复制引擎,而不必担心存储器页面是否驻留,并且复 制过程是透明的。
来自存储器404或其他系统存储器的数据可以由存储器分区单元480获 取并存储在L2高速缓存460中,该L2高速缓存460位于芯片上并且在各个 GPC 450之间共享。如图所示,每个存储器分区单元480包括与对应的存储 器404相关联的L2高速缓存的一部分。然后,可以在GPC 450内的各个单 元中实现较低级别的高速缓存。例如,GPC 450内的每个处理单元都可以实 现一级(L1)高速缓存。L1高速缓存是专用于特定处理单元的专用存储器。L2高速缓存460耦合到存储器接口470和XBar 470,并且可以获取来自L2 高速缓存的数据并将其存储在每个L1高速缓存中以进行处理。
在一个实施例中,每个GPC 450内的处理单元实现SIMD(单指令、多 数据)架构,其中一组线程(例如,线程束)中的每个线程被配置为基于相 同的指令集来处理不同的数据集。线程组中的所有线程执行相同的指令。在 另一个实施例中,处理单元实现SIMT(单指令、多线程)架构,其中一组线 程中的每个线程被配置为基于相同的指令集来处理不同的数据集,但是其中 在执行过程中允许线程组中的各个线程发散。在一个实施例中,为每个线程 束维护程序计数器、调用栈和执行状态,从而当线程束内的线程发散时,实 现线程束和线程束内的串行执行之间的并发。在另一个实施例中,为每个个 体线程维护程序计数器、调用栈和执行状态,从而使得在线程束内和线程束 之间的所有线程之间具有相等的并发性。当为每个个体线程维持执行状态时, 执行相同指令的线程可以被收敛并且并行地执行,以实现最大效率。
协作组是用于组织通信线程组的编程模型,该编程模型允许开发人员表 达线程正在通信的粒度,从而能够表达更丰富、更有效的并行分解。协作启 动API支持线程块之间的同步,以执行并行算法。常规的编程模型提供了用 于同步协作线程的单个简单结构:跨线程块的所有线程的屏障(例如, syncthreads()函数)。但是,编程人员通常希望以小于线程块粒度的大小来 定义线程组,并在定义的组内进行同步,以实现更高的性能、设计灵活性以 及以集体组范围内的功能接口的形式实现软件复用。
协作组使编程人员能够在子块(例如,小到单个线程)和多块粒度上明 确地定义线程组,并在协作组中对线程执行集体操作,例如同步。编程模型 支持跨软件边界的清晰组合,因此库和实用程序功能可以在其本地上下文中 安全地同步,而不必对收敛进行假设。协作组图元启用了新的合作并行模式, 包括生产者-消费者并行,机会主义并行以及整个线程块网格上的全局同步。
每个处理单元包括大量(例如,128个等)不同的处理核心(例如,功 能单元),其可以是全管线、单精度、双精度和/或混合精度的,并且包括浮 点算术逻辑单元和整数算术逻辑单元。在一个实施例中,浮点算术逻辑单元 实现用于浮点算术的IEEE 754-2008标准。在一个实施例中,核心包括64个 单精度(32位)浮点核心、64个整数核心、32个双精度(64位)浮点核心 和8个张量核心。
被配置为执行矩阵运算的张量核心。特别是,张量核心被配置为执行深 度学习矩阵算术,例如用于神经网络训练和推理的卷积运算。在一个实施例 中,每个张量核心在4×4矩阵上运算并且执行矩阵乘法和累加运算D=A× B+C,其中A、B、C和D是4×4矩阵。
在一个实施例中,矩阵乘法输入A和B是16位浮点矩阵,而累加矩阵 C和D可以是16位浮点或32位浮点矩阵。张量核心对16位浮点输入数据进 行32位浮点累加运算。16位浮点乘法需要64次运算,并产生全精度乘积, 然后使用32位浮点加法将其与其他中间乘积进行累加,以进行4x4x4矩阵乘 法。实际上,张量核心由这些较小的元素构成的更大的二维或更高维度的矩 阵运算。诸如CUDA9C++API之类的API公开专门的矩阵加载、矩阵乘法 和累加以及矩阵存储操作,以有效地使用来自CUDA-C++程序中的张量核心。 在CUDA级别上,线程束级(warp-level)接口假定跨越线程束的所有32个 线程的16x16大小的矩阵。
每个处理单元还可以包括执行特殊功能(例如,属性评估、倒数平方根 等)的M个特殊功能单元(SFU)。在一个实施例中,SFU可以包括被配置 为遍历层次树数据结构的树遍历单元。在一个实施例中,SFU可以包括被配 置为执行纹理映射过滤操作的纹理单元。在一个实施例中,纹理单元被配置 为从存储器404加载纹理映射(例如,纹理像素的2D阵列),并且对纹理映 射进行采样以产生采样的纹理值,以用于由处理单元执行的着色器程序中。在一个实施例中,纹理映射被存储在共享存储器中,该共享存储器可以包括 或包括L1高速缓存。纹理单元实现纹理操作,例如使用mip-映射(例如, 细节水平不同的纹理映射)进行过滤操作。在一个实施例中,每个处理单元 包括两个纹理单元。
每个处理单元还包括N个加载存储单元(LSU),它们实现共享存储器 和寄存器文件之间的加载和存储操作。每个处理单元包括互连网络,该互连 网络将每个核心连接到寄存器文件,将LSU连接到寄存器文件、共享存储器。 在一个实施例中,互连网络是交叉开关,其可以被配置为将任何核心连接到 寄存器文件中的任何寄存器,并且将LSU连接到寄存器文件和共享存储器中 的存储位置。
共享存储器是片上存储器的阵列,其允许在处理单元之间以及处理单元 内的线程之间进行数据存储和通信。在一个实施例中,共享存储器包括128KB 的存储容量,并且位于从每个处理单元到存储器分区单元480的路径中。共 享存储器可以用于高速缓存读取和写入。共享存储器、L1高速缓存、L2高 速缓存和存储器404中的一个或更多个是后备存储。
将数据高速缓存和共享存储器功能组合到单个存储器块中,为两种类型 的存储器访问提供了最佳的整体性能。该容量被不使用共享存储器的程序用 作高速缓存。例如,如果将共享存储器配置为使用一半容量,则纹理和加载/ 存储操作可以使用剩余的容量。共享存储器中的集成使共享存储器可以用作 流传输数据的高吞吐量管道,同时提供对频繁重复使用的数据的高带宽和低 延迟访问。
当配置用于通用并行计算时,与图形处理相比,可以使用更简单的配置。 具体来说,绕过固定功能的图形处理单元,从而创建了更为简单的编程模型。 在通用并行计算配置中,工作分配单元425将线程的块直接分配和分发给 GPC 450中的处理单元。线程执行相同的程序,在计算中使用唯一的线程ID, 以确保每个线程生成唯一的结果,使用一个或更多个处理单元以执行程序并 执行计算,使用共享存储器以在线程之间进行通信,并使用LSU以通过共享 存储器和存储器分区单元480读取和写入全局内存。当配置为通用并行计算 时处理单元还可以写命令,调度器单元420可以使用该命令来启动处理单元 上的新工作。
PPU 430可各自包括和/或被配置为执行一个或更多个处理核心和/或其 组件的功能,例如,张量核心(TC)、张量处理单元(TPU)、像素可视核心 (PVC)、视觉处理单元(VPU)、图形处理集群(GPC)、纹理处理集群(TPC)、 流式多处理器(SM)、树遍历单元(TTU)、人工智能加速器(AIA)、深度学 习加速器(DLA)、算术逻辑单元(ALU)、专用集成电路(ASIC)、浮点单 元(FPU)、输入/输出(I/O)元件、外围组件互连(PCI)或外围组件互连快 速(PCIe)元件和/或类似内容。
PPU 400可以被包括在台式计算机、膝上型计算机、平板计算机、服务 器、超级计算机、智能电话(例如,无线、手持设备)、个人数字助理(PDA)、 数码相机、车辆、头戴式显示器、手持式电子设备等之上。在一个实施例中, PPU 400体现在单个半导体衬底上。在另一实施例中,PPU 400与一个或更多 个其他设备(例如,附加的PPU 400、存储器404、精简指令集计算机(RISC) CPU、存储器管理单元(MMU)、数模转换器(DAC)等)一起被包括在片 上系统(SoC)中。
在一个实施例中,PPU 400可以被包括在包括一个或更多个存储设备的 图形卡上。图形卡可以配置为与台式计算机主板上的PCIe插槽接口。在又一 个实施例中,PPU 400可以是主板的芯片组中包括的集成图形处理单元(iGPU) 或并行处理器。
示例计算系统
随着开发人员在诸如人工智能计算之类的应用中公开并利用更多的并 行性,具有多个GPU和CPU的系统被用于各种行业。具有数以万计计算节 点的高性能GPU加速系统已部署在数据中心、研究设施和超级计算机中,以 解决越来越大的问题。随着高性能系统中处理设备的数量增加,通信和数据 传输机制需要扩展以支持增加的带宽。
图5A是根据一个实施例的使用图4的PPU 400实现的处理系统500的 概念图。示例性系统565可以被配置为分别实现图1C、图2B和图3B所示 的方法170、220和/或步骤185。处理系统500包括CPU 530、交换机510和 多个PPU 400以及相应的存储器404。
NVLink 410在每个PPU 400之间提供高速通信链接。尽管在图5A中示 出了特定数量的NVLink 410和互连402连接,但是到每个PPU 400和CPU 530的连接数量可以变化。交换机510在互连402和CPU 530之间进行接口。 PPU400、存储器404和NVLink 410可以位于单个半导体平台上以形成并行 处理模块525。在一个实施例中,交换机510支持两个或更多个协议,以在 各种不同的连接和/或链接之间进行接口。
在另一实施例(未示出)中,NVLink 410在每个PPU 400和CPU 530 之间提供一个或更多个高速通信链接,并且在互连402与每个PPU 400之间 提供交换机510接口。PPU400、存储器404和互连402可以位于单个半导体 平台上以形成并行处理模块525。在又一实施例(未示出)中,互连402在 每个PPU 400与CPU 530之间提供一个或更多个通信链接,并且使用NVLink 410在每个PPU 400之间提供交换机510接口,以在PPU 400之间提供一个 或更多个高速通信链接。在另一实施例(未示出)中,NVLink 410通过交换 机510在PPU 400和CPU 530之间提供一个或更多个高速通信链接。在又一 实施例(未示出)中,互连402直接在每个PPU 400之间提供一个或更多个 通信链接。NVLink 410高速通信链接中的一个或更多个可使用与NVLink 410 相同的协议实现为物理NVLink互连或片上或裸晶上互连。
在本说明书的上下文中,单个半导体平台可以指代制造裸晶或片上的唯 一的基于单一半导体的集成电路。应当注意的是,术语“单个半导体平台” 也可以指具有增加的连通性的多芯片模块,其模拟片上的操作并相对于利用 常规总线实现方式进行了实质性的改进。当然,根据用户的需求,各种电路 或设备也可以分开放置或以半导体平台的各种组合放置。可替代地,并行处 理模块525可以被实现为电路板基板,并且每个PPU 400和/或存储器404可 以是封装的设备。在一个实施例中,CPU 530、交换机510和并行处理模块 525位于单个半导体平台上。
在一个实施例中,每个NVLink 410的信令速率是20至25千兆比特/秒 (Gigabits/second),并且每个PPU 400包括六个NVLink 410接口(如图5A 所示,每个PPU 400包括五个NVLink 410接口)。每个NVLink 410在每个 方向上提供25千兆比特/秒的数据传输速率,其中六个链接提供400千兆比 特/秒。当CPU 530还包括一个或更多个NVLink 410接口时,NVLink 410可 以专门用于PPU到PPU的通信(如图5A所示),或PPU到PPU和PPU到 CPU的某种组合。
在一个实施例中,NVLink 410允许从CPU 530到每个PPU 400的存储 器404的直接加载/存储/原子访问。在一个实施例中,NVLink 410支持一致 性操作,从而允许将从存储器404读取的数据存储在CPU 530的高速缓存层 次结构中,从而减少了对CPU 530的高速缓存访问延迟。在一个实施例中, NVLink 410包括对地址转换服务(ATS)的支持,从而允许PPU 400直接访 问CPU 530中的页表。NVLink 410中的一个或更多个也可以被配置为以低功 率模式运行。
图5B示出了在其中可以实现各种先前实施例的各种体系结构和/或功能 的示例性系统565。示例性系统565可以被配置为分别实现图1C、图2B和 图3B所示的方法170、220和/或步骤185。
如图所示,提供了系统565,该系统565包括连接到通信总线575的至 少一个中央处理单元530。通信总线575可以直接或间接耦合以下设备中的 一个或更多个:主存储器540、网络接口535、一个或更多个CPU 530、一个 或更多个显示设备545、一个或更多个输入设备560、交换机510和并行处理 系统525。通信总线575可以使用任何合适的协议来实现,并且可以表示一 个或更多个链接或总线,例如地址总线、数据总线、控制总线或其组合。通信总线575可以包括一个或更多个总线或链路类型,例如工业标准架构(ISA) 总线、扩展工业标准架构(EISA)总线、视频电子标准协会(VESA)总线、 外围组件互连(PCI)总线、外围组件互连快速(PCIe)总线、超级传输和/ 或另一类型的总线或链路。在一些实施例中,组件之间存在直接连接。作为 示例,一个或更多个CPU 530可以直接连接到主存储器540。此外,一个或 更多个CPU 530可以直接连接到并行处理系统525。在组件之间是直接或点 对点连接的情况下,通信总线575可以包括PCIe链接以执行连接。在这些示 例中,PCI总线不需要被包括在系统565中。
尽管图5B的各个框被示为经由通信总线575与线路连接,但这并不旨 在进行限制,仅是为了清楚起见。例如,在一些实施例中,呈现组件,例如 一个或更多个显示设备545,可以被认为是I/O组件,例如一个或更多个输入 设备560(例如,如果显示器是触摸屏)。作为另一示例,一个或更多个CPU 530和/或并行处理系统525可以包括存储器(例如,除了并行处理系统525、 CPU 530和/或主存储器540和/或其他组件之外,主存储器540可以表示存储 设备)。换句话说,图5B的计算设备仅是说明性的。在“工作站”、“服务器”、 “笔记本电脑”、“台式机”、“平板电脑”、“客户端设备”、“移动设备”、“手 持设备”、“游戏机”、“电子控制单元(ECU)”、“虚拟现实系统”和/或其他 设备或系统类型等类别之间未进行区分,均在图5B的计算设备的范围内。
系统565还包括主存储器540。控制逻辑(软件)和数据被存储在主存 储器540中,其可以采用各种计算机可读介质的形式。计算机可读介质可以 是系统565可以访问的任何可用介质。计算机可读介质可以包括易失性和非 易失性介质以及可移除和不可移除介质。作为示例而非限制,计算机可读介 质可以包括计算机存储介质和通信介质。
计算机存储介质可以包括用于存储例如计算机可读指令、数据结构、程 序模块和/或其他数据类型之类的信息的以任何方法或技术实现的易失性和 非易失性介质和/或可移除和不可移除介质。例如,主存储器540可以存储计 算机可读指令(例如,表示诸如操作系统的一个或更多个程序和/或一个或更 多个程序元素)。计算机存储介质可以包括但不限于到RAM、ROM、EEPROM、 闪存或其他存储技术、CD-ROM、数字多功能磁盘(DVD)或其他光学存储 设备、盒式磁带、磁带、磁盘存储设备或其他磁性存储设备或可以用于存储 所需信息并且可以由系统565访问的任何其他介质。如本文所使用的,计算 机存储介质本身不包括信号。
计算机存储介质可以在诸如载波或其他传输机制的调制的数据信号中 体现计算机可读指令、数据结构、程序模块和/或其他数据类型,并且包括任 何信息传递介质。术语“调制的数据信号”可以指具有以这样的方式设置或 改变其一个或更多个特性以在信号中编码信息的信号。作为示例而非限制, 计算机存储介质可以包括诸如有线网络或直接有线连接的有线介质,以及诸 如声学、RF、红外和其他无线介质的无线介质。以上任何内容的组合也应包 括在计算机可读介质的范围内。
计算机程序在被执行时使系统565能够执行各种功能。一个或更多个 CPU 530可以被配置为执行计算机可读指令中的至少一些,以控制系统565 的一个或更多个组件以执行本文描述的方法和/或过程中的一个或更多个。每 个CPU 530可以包括一个或更多个能够同时处理多个软件线程的核心(例如, 一个、两个、四个、八个、二十八个、七十二个等)。一个或更多个CPU 530 可以包括任何类型的处理器,并且可以取决于所实现的系统565的类型而包 括不同类型的处理器(例如,用于移动设备的具有较少核心的处理器和用于 服务器的具有较多核心的处理器)。例如,取决于系统565的类型,处理器可 以是使用精简指令集计算(RISC)实现的高级RISC机器(ARM)处理器或 使用复杂指令集计算(CISC)实现的x86处理器。除了一个或更多个微处理 器或辅助协处理器(例如,数学协处理器)之外,系统565还可包括一个或 更多个CPU 530。
除了一个或更多个CPU 530之外或从一个或更多个CPU 530开始,并 行处理模块525可以被配置为执行至少一些计算机可读指令,以控制系统565 的一个或更多个组件以执行本文描述的一个或更多个方法和/或过程。系统 565可以使用并行处理模块525来渲染图形(例如,3D图形)或执行通用计 算。例如,并行处理模块525可以用于GPU上的通用计算(GPGPU)。在实 施例中,一个或更多个CPU 530和/或并行处理模块525可以离散地或联合地执行方法、过程和/或其部分的任何组合。
系统565还包括输入一个或更多个设备560、并行处理系统525和一个 或更多个显示设备545。一个或更多个显示设备545可以包括显示器(例如, 监视器、触摸屏、电视屏幕、平视显示器(HUD)、其他显示器类型或其组合)、 扬声器和/或其他呈现组件。一个或更多个显示设备545可以从其他组件(例 如,并行处理系统525、一个或更多个CPU 530等)接收数据,并且输出数 据(例如,作为图像、视频、声音等)。
网络接口535可以使系统565逻辑地耦合到其他设备,其他设备包括输 入设备560、一个或更多个显示设备545和/或其他组件,其中一些可以内置 于(例如,集成在)系统565。说明性输入设备560包括麦克风、鼠标、键 盘、操纵杆(joystick)、游戏板、游戏控制器、卫星天线、扫描仪、打印机、 无线设备等。输入设备560可提供自然的用户界面(NUI)以处理用户生成 的空中手势、语音或其他生理输入。在某些情况下,可以将输入传输到适当的网络元素以进行进一步处理。NUI可以实现与系统565的显示相关联的语 音识别、手写笔识别、面部识别、生物特征识别、屏幕上以及与屏幕相邻的 手势识别、空中手势、头部和眼睛跟踪以及触摸识别(如下更详细描述)的 任意组合。系统565可以包括用于手势检测和识别的深度相机,例如立体相 机系统、红外相机系统、RGB相机系统、触摸屏技术及其组合。另外,系统 565可以包括能够检测运动的加速度计或陀螺仪(例如,作为惯性测量单元 (IMU)的一部分)。在一些示例中,系统565可以使用加速度计或陀螺仪的 输出来渲染沉浸式增强现实或虚拟现实。
此外,为了通信目的,系统565可以通过网络接口535耦合到网络(例 如,电信网络、局域网(LAN)、无线网络、诸如因特网之类的广域网(WAN)、 对等网络、电缆网络等)。系统565可以被包括在分布式网络和/或云计算环 境内。
网络接口535可以包括使系统565能够经由包括有线和/或无线通信的 电子通信网络与其他计算设备通信的一个或更多个接收器、发射器和/或收发 器。网络接口535可以包括组件和功能,以使得能够在许多不同网络中的任 何一个上进行通信,例如无线网络(例如,Wi-Fi、Z波(Z-Wave)、蓝牙、 蓝牙LE,ZigBee等)、有线网络(例如,通过以太网或InfiniBand进行通信)、 低功耗广域网(例如,LoRaWAN,SigFox等)和/或Internet。
系统565还可以包括辅助存储器(未示出)。辅助存储610包括例如硬 盘驱动器和/或可移动存储驱动器,其代表软盘驱动器、磁带驱动器、光盘驱 动器、数字多功能盘(DVD)驱动器、记录设备、通用串行总线(USB)闪 存。可移除存储驱动器以众所周知的方式从可移除存储单元读取和/或写入可 移除存储单元。系统565还可包括硬线电源、电池电源或其组合(未示出)。 电源可以向系统565提供电力以使系统565的组件能够操作。
前述模块和/或设备中的每一个甚至可以位于单个半导体平台上以形成 系统565。可替换地,根据用户的需求,各个模块也可以单独地或以半导体 平台的各种组合来放置。尽管上面已经描述了各种实施例,但是应该理解, 它们仅是示例性的,而非限制性的。因此,优选实施例的广度和范围不应受 到任何上述示例性实施例的限制,而应仅根据所附权利要求及其等同物来限 定。
机器学习
在诸如PPU 400之类的处理器上开发的深度神经网络(DNN)已用于 各种用例,从自动驾驶汽车到更快的药物开发,从在线图像数据库中的自动 图像字幕到视频聊天应用程序中的智能实时语言翻译。深度学习是一种模拟 人脑的神经学习过程,不断学习,不断变得更聪明并随着时间的推移更快地 提供更准确的结果的技术。最初,成年人会教孩子正确地识别和分类各种形 状,最终无需任何指导即可识别形状。同样,深度学习或神经学习系统需要 在对象识别和分类方面进行训练,因为它在识别基本对象、被遮挡的对象等 方面变得更聪明且更有效,同时还为对象分配了上下文。
在最简单的级别上,人脑中的神经元查看接收到的各种输入,将重要性 级别分配给这些输入中的每一个,并将输出传递给其他神经元以对其进行操 作。人工神经元或感知器是神经网络的最基本模型。在一个示例中,感知器 可以接收一个或更多个输入,其表示该感知器正在被训练以识别和分类的对 象的各种特征,并且基于该特征在定义对象形状的重要性上为这些特征中的 每一个分配一定的权重。
深度神经网络(DNN)模型包括许多连接节点的多层(例如,感知器、 玻尔兹曼机器、径向基函数、卷积层等),可以用大量输入数据对其进行训练 以快速解决复杂问题高精度问题。在一个示例中,DNN模型的第一层将汽车 的输入图像分解为各个部分,并寻找诸如线条和角度之类的基本图案。第二 层组装线条以寻找更高级别的图案,例如车轮、挡风玻璃和后视镜。下一层 识别车辆的类型,并且最后几层为输入图像生成标签,以识别特定汽车品牌 的模型。
一旦训练了DNN,就可以部署DNN并将其用于在称为推理的过程中 对对象或图案进行识别和分类。推理示例(DNN从给定输入中提取有用信息 的过程)包括识别存入ATM机的支票上的手写数字,识别照片中朋友的图像, 向超过五千万用户提供电影推荐,识别和分类无人驾驶汽车中的汽车、行人 和道路危险的不同类型,或实时翻译人类语音。
在训练期间,数据在前向传播阶段流经DNN,直到产生指示对应于输 入的标签的预测为止。如果神经网络没有正确标记输入,则将分析正确标记 和预测标记之间的错误,并在反向传播阶段调整每个特征的权重,直到DNN 在训练数据集中正确地标记输入和其他输入。训练复杂的神经网络需要大量 的并行计算性能,包括PPU 400支持的浮点乘法和加法。推理比训练要少计 算密集度,这是对延迟敏感的过程,其中将训练后的神经网络应用于以前从 未见过的新输入,以对分类图像、检测情绪、识别推荐、识别和翻译语音以 及通常推断出新信息。
神经网络在很大程度上依赖于矩阵数学运算,而复杂的多层网络需要大 量的浮点性能和带宽以提高效率和速度。PPU 400拥有数千个处理内核,针 对矩阵数学运算进行了优化,并提供数十至数百TFLOPS的性能,是一个计 算平台,能够提供基于深度神经网络的人工智能和机器学习应用所需的性能。
此外,应用本文公开的一种或更多种技术生成的图像可用于训练、测试 或认证用于识别现实世界中的对象和环境的DNN。这样的图像可以包括道路、 工厂、建筑物、城市环境、农村环境、人类、动物以及任何其他物理对象或 真实环境的场景。这样的图像可以用于训练、测试或认证在机器或机器人中 使用的DNN,以操纵、处理或修改现实世界中的物理对象。此外,此类图像 可用于训练、测试或认证在自动驾驶车辆中使用的DNN,以在现实世界中导 航和移动车辆。另外,应用本文公开的一种或更多种技术产生的图像可以用 于向这些机器、机器人和车辆的用户传达信息。
图形处理管线
在一个实施例中,PPU 400包括图形处理单元(GPU)。PPU 400被配 置为接收指定用于处理图形数据的着色器程序的命令。图形数据可以定义为 一组图元,例如点、线、三角形、四边形、三角形条带等。通常,图元包括 为该图元指定多个顶点的数据(例如,在模型空间坐标系中)以及与该图元 的每个顶点相关联的属性。PPU 400可以被配置为处理图形图元以生成帧缓 冲区(例如,用于显示器的每个像素的像素数据)。
应用程序将场景的模型数据(例如,顶点和属性的集合)写入诸如系统 存储器或存储器404之类的存储器中。模型数据定义了在显示器上可见的每 个对象。然后,应用程序对驱动器内核进行API调用,以请求渲染和显示模 型数据。驱动器内核读取模型数据并将命令写入一个或更多个流以执行处理 模型数据的操作。命令可以引用要在PPU 400内的处理单元上实现的不同着 色器程序,包括顶点着色器、外壳着色器、域着色器、几何形状着色器和像 素着色器中的一个或更多个。例如,一个或更多个处理单元可以被配置为执 行顶点着色器程序,该程序处理由模型数据定义的多个顶点。在一个实施例 中,不同的处理单元可以被配置为同时执行不同的着色器程序。例如,处理 单元的第一子集可以被配置为执行顶点着色器程序,而处理单元的第二子集 可以被配置为执行像素着色器程序。处理单元的第一子集处理顶点数据以产 生经处理的顶点数据,并将经处理的顶点数据写入L2高速缓存460和/或存 储器404。在对经处理的顶点数据进行光栅化之后(例如,从三维数据转换成屏幕空间中的二维数据)以产生片段数据,处理单元的第二个子集执行像 素着色器以产生已处理的片段数据,然后将其与其他已处理的片段数据混合 并写入存储器404中的帧缓冲区。顶点着色程序和像素着色器程序可以同时 执行,以流水线方式处理来自同一场景的不同数据,直到该场景的所有模型 数据都已渲染到帧缓冲区为止。然后,帧缓冲区的内容被传输到显示控制器 以在显示设备上显示。
图6A是根据一个实施例的由图4的PPU 400实现的图形处理管线600 的概念图。图形处理管线600是被实现以从3D几何数据生成2D计算机生成 的图像的处理步骤的抽象流程图。众所周知,管线体系架构可以通过将操作 分成多个阶段来更有效地执行长延迟的操作,其中每个阶段的输出耦合到下 一个连续阶段的输入。因此,图形处理管线600接收从图形处理管线600的 一个阶段传输到下一阶段的输入数据601,以生成输出数据602。在一个实施 例中,图形处理管线600可以表示由
Figure BDA0003099318290000251
API定义的图形处理管线。作 为选择,可以在先前附图和/或任何后续附图的功能和架构的上下文下实现图 形处理管线600。
如图6A所示,图形处理管线600包括管线体系架构,该管线体系架构 包括多个阶段。这些阶段包括但不限于数据组装阶段610、顶点着色阶段620, 图元组装阶段630,几何形状着色阶段640,视口缩放、剔除和修剪(VSCC) 阶段650,光栅化阶段660,片段着色阶段670和光栅操作阶段680。在一个 实施例中,输入数据601包括配置处理单元以实现图形处理管线600和要由 该阶段处理的几何图元(例如,点、线、三角形、四边形、三角形条带或扇形等)的命令。输出数据602可以包括被复制到存储器中的帧缓冲区或其他 类型的表面数据结构中的像素数据(例如,颜色数据)。
数据组装阶段610接收输入数据601,该输入数据601指定用于高阶表 面、图元等的顶点数据。数据组装阶段610例如通过从主机处理器接收包括 指向存储器中的缓冲区的指针的命令并从缓冲区读取顶点数据,来在临时存 储或队列中收集顶点数据。然后将顶点数据传输到顶点着色阶段620以进行 处理。
顶点着色阶段620通过对每个顶点一次执行一组操作(例如,顶点着色 器或程序)来处理顶点数据。顶点可以例如被指定为与一个或更多个顶点属 性(例如,颜色、纹理坐标、表面法线等)相关联的4坐标向量(例如,<x, y,z,w>)。顶点着色阶段620可以操纵各个顶点属性,例如位置、颜色、 纹理坐标等。换句话说,顶点着色阶段620对顶点坐标或与顶点相关联的其 他顶点属性执行操作。这样的操作通常包括照明操作(例如,修改顶点的颜 色属性)和变换操作(例如,修改顶点的坐标空间)。例如,可以使用对象坐 标空间中的坐标指定顶点,其通过将坐标乘以将坐标从对象坐标空间转换为 世界空间或归一化设备坐标(NCD)空间的矩阵进行变换。顶点着色阶段620 生成被传输到图元组装阶段630的经变换的顶点数据。
图元组装阶段630收集由顶点着色阶段620输出的顶点,并将这些顶点 分组为几何图元以供几何形状着色阶段640处理。例如,图元组装阶段630 可以被配置为将每三个连续的顶点分组。作为几何图元(例如,三角形),以 传输到几何形状着色阶段640。在一些实施例中,可以将特定顶点重新用于 连续的几何图元(例如,三角形条带中的两个连续的三角形可以共享两个顶 点)。图元组装阶段630将几何图元(例如,相关联的顶点的集合)传输到几 何形状着色阶段640。
几何形状着色阶段640通过对几何图元执行一组操作(例如,几何形状 着色器或程序)来处理几何图元。镶嵌(tessellation)操作可以从每个几何图 元生成一个或更多个几何图元。换句话说,几何形状着色阶段640可以将每 个几何图元细分为两个或更多个几何图元的更精细的网格,以供图形处理管 线600的其余部分进行处理。几何形状着色阶段640将几何图元传送到视口 SCC阶段650。
在一个实施例中,图形处理管线600可以在流式多处理器中操作,并且 顶点着色阶段620、图元组装阶段630、几何形状着色阶段640、片段着色阶 段670和/或与之相关联的硬件/软件,可以顺序地执行处理操作。一旦顺序处 理操作完成,在一个实施例中,视口SCC阶段650可以利用该数据。在一个 实施例中,可以将由图形处理管线600中的一个或更多个阶段处理的图元数 据写入高速缓存(例如,L1高速缓存、顶点高速缓存等)。在这种情况下,在一个实施例中,视口SCC阶段650可以访问高速缓存中的数据。在一个实 施例中,视口SCC阶段650和光栅化阶段660被实现为固定功能电路。
视口SCC阶段650对几何图元执行视口缩放、剔除和修剪。渲染到的 每个表面都与抽象相机位置相关联。相机位置代表观看者观看场景的位置, 并定义了包围场景对象的视锥(viewing frustum)。视锥可包括视平面、后平 面和四个修剪平面。可以剔除(例如,丢弃)完全在视锥之外的任何几何图 元,因为该几何图元不会对最终的渲染场景有所贡献。可以修剪部分位于视 锥内部和部分位于视锥外部的任何几何图元(例如,将其转换为包围在视锥 内的新几何图元)。此外,每个几何图元都可以基于视锥的深度进行缩放。然 后将所有可能可见的几何图元传输到光栅化阶段660。
光栅化阶段660将3D几何图元转换为2D片段(例如,能够用于显示 等)。光栅化阶段660可以被配置为利用几何图元的顶点来设置平面方程式的 集合,可以从该平面方程式内插各种属性。光栅化阶段660还可为多个像素 计算覆盖掩模,其指示该像素的一个或更多个样本位置是否拦截了几何图元。 在一个实施例中,还可以执行z测试以确定该几何图元是否被已经被光栅化 的其他几何图元遮挡。光栅化阶段660生成片段数据(例如,与每个被覆盖 像素的特定样本位置相关联的内插顶点属性),该片段数据被传输到片段着色 阶段670。
片段着色阶段670通过对每个片段执行一组操作(例如,片段着色器或 程序)来处理片段数据。片段着色阶段670可以例如通过执行照明操作或使 用针对片段的内插纹理坐标来采样纹理映射,来生成片段的像素数据(例如, 颜色值)。片段着色阶段670生成像素数据,该像素数据被传输到光栅操作阶 段680。
光栅操作阶段680可以对像素数据执行各种操作,例如执行alpha测试、 模板测试以及将像素数据与对应于与像素相关联的其他片段的其他像素数据 混合。当光栅操作阶段680已经完成了对像素数据(例如,输出数据602) 的处理时,可以将像素数据写入诸如帧缓冲区、颜色缓冲区等的渲染目标。
将会理解,除了或代替上述一个或更多个阶段之外,图形处理管线600 中还可包括一个或更多个附加阶段。抽象图形处理管线的各种实现可以实现 不同的阶段。此外,在一些实施例中,上述一个或更多个阶段可以从图形处 理管线中排除(例如,几何着色阶段640)。可以将其他类型的图形处理管线 设想为在本公开的范围内。此外,图形处理管线600的任何阶段都可以由诸 如PPU 400之类的图形处理器内的一个或更多个专用硬件单元来实现。图形 处理管线600的其他阶段可以由诸如PPU 400中的处理单元之类的可编程硬 件单元来实现。
图形处理管线600可以经由由诸如CPU之类的主处理器执行的应用程 序来实现。在一个实施例中,设备驱动器可以实现应用程序编程接口(API), 该API定义了可以由应用程序利用以便生成用于显示的图形数据的各种功能。 设备驱动器是包括多个指令的软件程序,这些指令控制PPU 400的操作。API 为编程人员提供了抽象,其使编程人员可以利用专用的图形硬件(例如,PPU 400)来生成图形数据,而不需要编程人员利用PPU 400的特定指令集。应用 程序可以包括路由到PPU 400的设备驱动器的API调用。设备驱动器解释API调用并执行各种操作以响应API呼叫。在某些情况下,设备驱动器可以通过 在CPU上执行指令来执行操作。在其他实例中,设备驱动器可以至少部分地 通过利用CPU和PPU 400之间的输入/输出接口在PPU 400上启动操作来执 行操作。在一个实施例中,设备驱动器被配置为利用PPU 400的硬件来实现 图形处理管线600。
可以在PPU 400内执行各种程序,以实现图形处理管线600的各个阶 段。例如,设备驱动器可以在PPU 400上启动内核以在一个或更多个处理单 元上执行顶点着色阶段620。设备驱动器(或由PPU 400执行的初始内核) 也可以在PPU 400上启动其他内核,以执行图形处理管线600的其他阶段, 例如几何形状着色阶段640和片段着色阶段670。此外,图形处理管线600 的某些阶段可以在固定单元硬件上实现,例如在PPU 400内实现的光栅化器 或数据汇编器。应该理解,来自一个内核的结果可以在被处理单元上的后续 内核处理之前由一个或更多个中间固定功能硬件单元处理。
应用本文公开的一种或更多种技术生成的图像可以显示在监视器或其 他显示设备上。在一些实施例中,显示设备可以直接耦合到生成或渲染图像 的系统或处理器。在其他实施例中,显示设备可以例如经由网络间接地耦合 到系统或处理器。此类网络的示例包括因特网、移动电信网络、WIFI网络以 及任何其他有线和/或无线联网系统。当显示设备间接耦合时,由系统或处理 器生成的图像可以通过网络流传输到显示设备。这种流传输允许例如在服务 器上或在数据中心中执行渲染图像的视频游戏或其他应用程序,并且将在与服务器或数据中心物理上分开的一个或更多个用户设备(例如,计算机、视 频游戏机、智能手机、其他移动设备等)上传输和显示渲染的图像。因此, 本文公开的技术可以应用于增强流传输的图像并增强流传输图像的服务,例 如NVIDIAGeForce Now(GFN)、Google Stadia等。
示例游戏流系统
图6B是根据本公开的一些实施例的游戏流传输系统605的示例系统图。 游戏流传输系统605可以与图1A的服务器/客户端系统100结合使用或代替 其使用。图6B包括一个或更多个游戏服务器603(其可以包括与图5A的示 例处理系统500和/或图5B的示例性系统565类似的组件、特征和/或功能), 一个或更多个客户端设备604(其可以包括与图5A的示例处理系统500和/ 或图5B的示例性系统565类似的组件、特征和/或功能),以及一个或更多个 网络606(其可以与本文所述的一个或更多个网络类似)。在本公开的一些实 施例中,可以实现系统605。
在系统605中,对于游戏会话,一个或更多个客户端设备604可以仅响 应于对一个或更多个输入设备的输入来接收输入数据,将输入数据传输到一 个或更多个游戏服务器603,接收来自一个或更多个游戏服务器603的编码 的显示数据,并将显示数据显示在显示器624上。这样,计算强度更高的计 算和处理被卸载到一个或更多个游戏服务器603(例如,由一个或更多个游 戏服务器603的一个或更多个GPU执行游戏会话的图形输出的渲染-尤其是 射线或路径追踪)。换句话说,游戏会话从一个或更多个游戏服务器603流传 输到一个或更多个客户端设备604,从而降低了一个或更多个客户端设备604 对图形处理和渲染的需求。
例如,关于游戏会话的实例,客户端设备604可以基于从一个或更多个 游戏服务器603接收显示数据而在显示器624上显示游戏会话的帧。客户端 设备604可以接收对一个或更多个输入设备之一的输入,并作为响应生成输 入数据。客户端设备604可以经由通信接口621并且通过一个或更多个网络 606(例如,因特网)将输入数据传输到一个或更多个游戏服务器603,并且 一个或更多个游戏服务器603可以经由通信接口618接收输入数据。一个或 更多个CPU可以接收输入数据,处理输入数据,并且将数据传输到一个或更 多个GPU,从而使一个或更多个GPU生成游戏会话的渲染。例如,输入数 据可以表示用户在游戏中的角色的运动、射击武器、重新加载、传球、转弯 车辆等的运动。渲染组件612可以渲染游戏会话(例如,表示输入数据的结 果),并且渲染捕获组件614可以将游戏会话的渲染捕获为显示数据(例如, 作为捕获游戏会话的渲染帧的图像数据)。游戏会话的渲染可能包括使用一个 或更多个并行处理单元(例如,GPU)计算得出的射线或路径跟踪的照明和/ 或阴影效果,这些处理单元可能会进一步使用一个或更多个专用硬件加速器 或处理核心来执行一个或更多个游戏服务器603的射线或路径跟踪技术。
在一个实施例中,渲染组件612可以被配置为接收基于一个或更多个网 络606的状况来控制的LOD偏置参数。一个或更多个游戏服务器603可以包 括图像平滑控件125和/或网络监视器135以调整LOD偏置参数并执行动态 图像平滑以控制比特率。在一个实施例中,图像平滑过滤器115和图像平滑 控件125被包括在渲染捕获组件614和编码器616之间。
编码器616然后可以对显示数据进行编码以生成编码的显示数据,并且 可以在一个或更多个网络606上经由通信接口618将编码的显示数据传输到 客户端设备604。客户端设备604可以经由通信接口621接收编码的显示数 据并且解码器622对编码的显示数据进行解码以生成显示数据。客户端设备 604然后可以经由显示器624显示显示数据。
示例网络环境
适用于实现本公开的实施例的网络环境可以包括一个或更多个客户端 设备、服务器、网络附加存储(NAS)、其他后端设备和/或其他设备类型。 客户端设备、服务器和/或其他设备类型(例如,每个设备)可以在图5A的 处理系统500和/或图5B的示例性系统565的一个或更多个实例上实现(例 如,每个设备可以包括处理系统500和/或示例性系统565的类似组件、特征 和/或功能)。
网络环境的组件可以经由可以是有线、无线或两者的一个或更多个网络 相互通信。该网络可以包括多个网络或网络的网络。举例来说,该网络可以 包括一个或更多个广域网(WAN)、一个或更多个局域网(LAN)、一个或更 多个公共网络(例如,因特网和/或公共交换电话网络(PSTN))和/或一个或 更多个专用网络。在网络包括无线电信网络的情况下,诸如基站、通信塔甚 至接入点之类的组件(以及其他组件)可以提供无线连接。
兼容的网络环境可以包括一个或更多个对等网络环境(在这种情况下服 务器可能不包含在网络环境中)以及一个或更多个客户端服务器网络环境(在 这种情况下一个或更多个服务器)可以包含在网络环境中。在对等网络环境 中,本文针对一个或更多个服务器描述的功能可以在任意数量的客户端设备 上实现。
在至少一个实施例中,网络环境可包括一个或更多个基于云的网络环境、 分布式计算环境及其组合等。基于云的网络环境可包括在一个或更多个服务 器上实现的框架层、作业调度器、资源管理器和分布式文件系统,该服务器 可以包括一个或更多个核心网络服务器和/或边缘服务器。框架层可以包括用 于支持软件层的软件和/或应用程序层的一个或更多个应用程序的框架。该软 件或一个或更多个应用程序可以分别包括基于网络的服务软件或应用程序。 在实施例中,一个或更多个客户端设备可以使用基于网络的服务软件或应用 程序(例如,通过经由一个或更多个应用程序编程接口(API)访问服务软件 和/或应用程序)。框架层可以是但不限于一种自由和开源软件Web应用程序 框架,例如其可以使用分布式文件系统进行大规模数据处理(例如,“大数据”)。
基于云的网络环境可以提供执行本文所述的计算和/或数据存储功能 (或其一个或更多个部分)的任何组合的云计算和/或云存储。这些各种功能 中的任何一个都可以从中央或核心服务器(例如,一个或更多个数据中心可 以分布在州、地区、国家、全球等)被分布在多个位置。如果到用户(例如, 客户端设备)的连接相对靠近一个或更多个边缘服务器,则一个或更多个核 心服务器可以向一个或更多个边缘服务器指定功能的至少一部分。基于云的 网络环境可以是私有的(例如,限于单个组织),可以是公共的(例如,可用 于许多组织)和/或其组合(例如,混合云环境)。
一个或更多个客户端设备可以包括图5A的示例处理系统500和/或图 5B的示例性系统565的至少一些组件、特征和功能。作为示例而非限制,客 户端设备可以体现为个人计算机(PC)、膝上型计算机、移动设备、智能手 机、平板计算机、智能手表、可穿戴计算机、个人数字助理(PDA)、MP3 播放器、虚拟现实耳机、全球定位系统(GPS)或设备、视频播放器、摄像 机、监视设备或系统、车辆、船只、飞船、虚拟机、无人机、机器人、手持 通信设备,医院设备、游戏设备或系统、娱乐系统、车辆计算机系统、嵌入 式系统控制器、遥控器、设备、消费电子设备、工作站、边缘设备、这些描 绘的设备的任何组合或任何其他合适的设备。
注意,本文描述的技术可以体现在存储在计算机可读介质中的可执行指 令中,以供基于处理器的指令执行机器、系统、装置或设备使用或与其结合 使用。本领域技术人员将理解,对于一些实施例,可以包括各种类型的计算 机可读介质来存储数据。如本文所使用的,“计算机可读介质”包括用于存储 计算机程序的可执行指令的任何合适的介质中的一个或更多个,使得指令执 行机器、系统、装置或设备可以从计算机可读介质中读取(或获取)指令, 并执行用于执行所描述的实施例的指令。合适的存储格式包括电子、磁性、 光学和电磁格式中的一个或更多个。常规示例性计算机可读介质的非详尽列 表包括:便携式计算机软盘;随机存取存储器(RAM);只读存储器(ROM); 可擦除编程只读存储器(EPROM);闪存设备;以及光学存储设备,包括便 携式光盘(CD)、便携式数字视频光盘(DVD)等。
应该理解,附图中示出的组件的布置是出于说明的目的,并且其他布置 也是可能的。例如,本文描述的一个或更多个元件可以全部或部分地实现为 电子硬件组件。可以以软件、硬件或软件和硬件的组合来实现其他元件。此 外,可以组合这些其他元件中的一些或全部,可以完全省略一些其他元件, 并且可以添加附加组件,同时仍实现本文所述的功能。因此,本文描述的主 题可以体现为许多不同的变型,并且所有这些变型都被认为在权利要求的范 围内。
为了促进对本文所述主题的理解,根据动作序列描述了许多方面。本领 域技术人员将认识到,各种动作可以由专用电路或电路,由一个或更多个处 理器执行的程序指令,或两者的组合来执行。本文对任何动作序列的描述并 不旨在暗示必须遵循为执行该序列而描述的特定顺序。除非本文另外指出或 与上下文明显矛盾,否则本文描述的所有方法可以以任何合适的顺序执行。
在描述主题的上下文中(特别是在所附权利要求的上下文中)术语“一 个”、“一个”和“该”以及类似的引用的使用应解释为涵盖单数形式和复数 形式。除非本文另有说明或与上下文明显矛盾,否则为复数形式。术语“至 少一个”之后是一个或更多个项目的列表(例如,“A和B中的至少一个”) 应理解为是指从所列项目(A或B)中选择的一个项目或所列项目(A和B) 中两个或更多个的任意组合,除非本文另有说明或与上下文明显矛盾。此外,前述描述仅出于说明的目的,而非出于限制的目的,因为所寻求的保护范围 由下文所述的权利要求及其等同形式限定。除非另外要求,否则本文提供的 任何和所有示例或示例性语言(例如,“诸如”)的使用仅旨在更好地说明主 题,并且不对主题的范围构成限制。在权利要求书和书面说明书中,术语“基 于”和其他类似的短语表示产生结果的条件的使用,并不旨在排除产生该结 果的任何其他条件。说明书中的任何语言都不应被解释为指示任何未要求保 护的要素对于实施所要求保护的发明是必不可少的。

Claims (20)

1.一种计算机实现的方法,包括:
接收用于从服务器到客户端的连接的网络状况数据;
响应于所述网络状况数据的变化,自动地调整控制应用至渲染图像的一个或更多个区域的过滤级别的参数,所述一个或更多个区域对应于具有高空间频率内容的区域;以及
根据所述参数生成图像帧。
2.根据权利要求1所述的计算机实现的方法,其中所述参数控制用于渲染所述图像帧的细节的纹理映射级别。
3.根据权利要求1所述的计算机实现的方法,其中生成所述图像帧包括:将图像平滑过滤器应用至一系列渲染图像中的每个渲染图像帧。
4.根据权利要求3所述的计算机实现的方法,其中所述图像平滑过滤器包括以下至少之一:
滚动引导过滤器;
双边过滤器;或者
域转换过滤器。
5.根据权利要求1所述的计算机实现的方法,还包括:编码所述图像帧以传输到所述客户端。
6.根据权利要求5所述的计算机实现的方法,还包括:在所述客户端处对编码图像帧进行解码以产生解码图像帧。
7.根据权利要求6所述的计算机实现的方法,其中在所述网络状况数据的所述变化之前,被解码的所述解码图像帧中的一个被用作帧内编码帧(I帧),其中基于所述I帧对所述编码图像帧中的至少一个进行解码。
8.根据权利要求6所述的计算机实现的方法,其中在所述网络状况数据的所述变化之前和之后,所述解码图像帧的帧率基本恒定。
9.根据权利要求1所述的计算机实现的方法,其中生成所述图像帧包括:在由所述图像帧表示的一个或更多个场景内保留可见的几何结构。
10.根据权利要求1所述的计算机实现的方法,其中所述网络状况数据由所述客户端监视。
11.根据权利要求1所述的计算机实现的方法,其中所述网络状况数据包括与以下至少一项有关的数据:
对应于信道的可用带宽;
对应于所述信道的延迟;
对应于所述信道的抖动;或者
对应于所述信道的数据包丢失。
12.根据权利要求1所述的计算机实现的方法,还包括:
测量对应于所述图像帧的比特率;以及
基于所述比特率和所述网络状况数据之间的比较来调整所述参数。
13.根据权利要求12所述的计算机实现的方法,其中调整所述参数以增加平滑的级别,以减小所述比特率。
14.根据权利要求12所述的计算机实现的方法,其中调整所述参数以减小平滑的级别,以增加所述比特率。
15.根据权利要求1所述的计算机实现的方法,其中在云计算环境内执行接收、调整和生成的步骤。
16.根据权利要求1所述的计算机实现的方法,其中在所述服务器上或在数据中心中执行所述接收、调整和生成的步骤以生成所述图像帧,并且所述客户端包括用户设备。
17.根据权利要求1所述的计算机实现的方法,其中所述图像帧用于以下至少之一:
游戏应用程序;或者
用于训练、测试或认证在机器、机器人或自主车辆中使用的神经网络的应用程序。
18.根据权利要求1所述的计算机实现的方法,其中生成所述图像帧保留所述图像帧内的文本和结构。
19.一种系统,包括:
服务器,其包括处理器和存储器,并被配置为:
接收用于从所述服务器到客户端的连接的网络状况数据;
响应于所述网络状况数据的变化,自动地调整控制应用至渲染图像的一个或更多个区域的过滤级别的参数,所述一个或更多个区域对应于具有高空间频率内容的区域;以及
根据所述参数生成图像帧。
20.一种非暂时性计算机可读介质,其存储计算机指令,所述计算机指令在由一个或更多个处理器执行时,使所述一个或更多个处理器执行以下步骤:
接收用于从服务器到客户端的连接的网络状况数据;
响应于所述网络状况数据的变化,自动地调整控制应用至渲染图像的一个或更多个区域的过滤级别的参数,所述一个或更多个区域对应于具有高空间频率内容的区域;以及
根据所述参数生成图像帧。
CN202110629270.9A 2020-08-28 2021-06-03 基于网络状况的动态图像平滑 Pending CN114100118A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/005,646 US11875478B2 (en) 2020-08-28 2020-08-28 Dynamic image smoothing based on network conditions
US17/005,646 2020-08-28

Publications (1)

Publication Number Publication Date
CN114100118A true CN114100118A (zh) 2022-03-01

Family

ID=80221801

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110629270.9A Pending CN114100118A (zh) 2020-08-28 2021-06-03 基于网络状况的动态图像平滑

Country Status (3)

Country Link
US (1) US11875478B2 (zh)
CN (1) CN114100118A (zh)
DE (1) DE102021120604A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2600763B (en) * 2020-11-10 2023-05-24 Sony Interactive Entertainment Inc Image rendering system and method
US20230118415A1 (en) * 2021-10-20 2023-04-20 Apple Inc. Systems and methods of using a media bit rate curve for streaming bit rate adaption

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9207905B2 (en) * 2003-07-28 2015-12-08 Sonos, Inc. Method and apparatus for providing synchrony group status information
FR2975555A1 (fr) * 2011-05-18 2012-11-23 Thomson Licensing Methode d'adaptation dynamique du debit de reception et recepteur associe
US10839487B2 (en) * 2015-09-17 2020-11-17 Michael Edwin Stewart Methods and apparatus for enhancing optical images and parametric databases
US11164295B2 (en) * 2015-09-17 2021-11-02 Michael Edwin Stewart Methods and apparatus for enhancing optical images and parametric databases
US10460429B1 (en) * 2018-01-03 2019-10-29 United States Of America As Represented By The Secretary Of The Air Force Auto-ranging parametric spatial filtering
US20200134421A1 (en) * 2018-10-27 2020-04-30 Cisco Technology, Inc. Assurance of policy based alerting
US20220337489A1 (en) * 2019-09-30 2022-10-20 Nec Corporation Control apparatus, method, and system
CN113705553B (zh) * 2020-05-20 2024-01-26 深圳清华大学研究院 视觉任务执行方法、装置、电子设备、存储介质及系统

Also Published As

Publication number Publication date
US20220067883A1 (en) 2022-03-03
US11875478B2 (en) 2024-01-16
DE102021120604A1 (de) 2022-03-03

Similar Documents

Publication Publication Date Title
US10741143B2 (en) Dynamic jitter and latency-tolerant rendering
US10970816B2 (en) Motion blur and depth of field reconstruction through temporally stable neural networks
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
US11941752B2 (en) Streaming a compressed light field
CN114092665A (zh) 从视频重建三维对象
US11734890B2 (en) Three-dimensional model recovery from two-dimensional images
US11615602B2 (en) Appearance-driven automatic three-dimensional modeling
US11954830B2 (en) High dynamic range support for legacy applications
US11501467B2 (en) Streaming a light field compressed utilizing lossless or lossy compression
US11165848B1 (en) Evaluating qualitative streaming experience using session performance metadata
US11315310B2 (en) Reservoir-based spatiotemporal importance resampling utilizing a global illumination data structure
US11847733B2 (en) Performance of ray-traced shadow creation within a scene
CN114100118A (zh) 基于网络状况的动态图像平滑
US11475549B1 (en) High dynamic range image generation from tone mapped standard dynamic range images
US11282258B1 (en) Adaptive sampling at a target sampling rate
US20230298243A1 (en) 3d digital avatar generation from a single or few portrait images
US11966765B2 (en) Memory bandwidth throttling for virtual machines
US11270161B2 (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
US11783532B1 (en) View synthesis using attribute correspondences and geometric relationship constraints
US20240112308A1 (en) Joint neural denoising of surfaces and volumes

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