《在并行的多个客户端之间的GPU资源的分配.pdf》由会员分享,可在线阅读,更多相关《在并行的多个客户端之间的GPU资源的分配.pdf(23页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 102959517 A (43)申请公布日 2013.03.06 C N 1 0 2 9 5 9 5 1 7 A *CN102959517A* (21)申请号 201180028557.0 (22)申请日 2011.06.10 12/797,788 2010.06.10 US G06F 9/50(2006.01) G06F 15/16(2006.01) (71)申请人 OTOY公司 地址美国加利福尼亚州 (72)发明人朱利安M乌尔巴赫 (74)专利代理机构北京市联德律师事务所 11361 代理人易咏梅 (54) 发明名称 在并行的多个客户端之间的GPU资源的分配 (5。
2、7) 摘要 本发明公开的方法、设备和系统涉及:在计算 机系统上托管多个应用程序实例,每个应用程序 实例对应于一个远程客户端应用程序;保持与为 其托管应用程序实例的每个远程客户端应用程序 的网络连接;在至少两个远程客户端应用程序之 间分配计算机系统中图形处理单元的资源;利用 计算机系统的图形处理单元的资源,同时渲染对 应于至少两个远程客户端的应用程序实例的图形 输出;以及通过相应的网络连接将经渲染的图像 输出传输给至少两个远程客户端应用程序。 (30)优先权数据 (85)PCT申请进入国家阶段日 2012.12.12 (86)PCT申请的申请数据 PCT/US2011/039897 2011.0。
3、6.10 (87)PCT申请的公布数据 WO2011/156666 EN 2011.12.15 (51)Int.Cl. 权利要求书3页 说明书14页 附图5页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 3 页 说明书 14 页 附图 5 页 1/3页 2 1.一种方法,包括: 在计算机系统上托管多个应用程序实例,每个应用程序实例对应一远程客户端应用程 序; 保持与为其托管应用程序实例的每个所述远程客户端应用程序的网络连接; 在至少两个所述远程客户端应用程序之间分配所述计算机系统的图形处理单元的资 源; 利用所述计算机系统的所述图形处理单元的所述资源,同时渲染相应于。
4、所述至少两个 远程客户端应用程序的所述应用程序实例的图形输出; 通过相应的网络连接,将经渲染的图形输出传输给所述至少两个远程客户端应用程 序。 2.根据权利要求1所述的方法,其特征在于, 所述图形处理单元的所述资源包括内存,以及 在所述至少两个远程客户端应用程序之间分配所述图形处理单元的资源的步骤包括 将所述内存的特定部分分配给所述至少两个远程客户端应用程序中的每一个。 3.根据权利要求2所述的方法,其特征在于,每个经渲染的图像输出存储在被分配给 对应远程客户端应用程序的所述内存的所述部分中。 4.根据权利要求1所述的方法,还包括如下所述步骤,即,利用所述计算机系统的所述 图形处理单元的所述资。
5、源,在传输之前对所述经渲染的图像输出同时进行编码。 5.根据权利要求4所述的方法,其特征在于,每个经渲染的图形输出被编码并且在视 频流中被传输给所述对应的远程客户端应用程序。 6.根据权利要求4所述的方法,其特征在于, 所述应用程序实例的所述图形输出在单次渲染中被渲染; 所述应用程序实例的所述经渲染的图形输出在单次编码中被编码。 7.一种方法,包括: 由第一计算机系统访问多组渲染参数,其中, 所述第一计算机系统被连接到多个第二计算机系统; 所述多组渲染参数中的每一组对应于所述多个第二计算机系统中特定一个第二计算 机系统; 所述第一计算机系统包括用于存储图像的渲染目标;并且 所述渲染目标在所述多。
6、个第二计算机系统之间共享; 基于所述多组渲染参数,由所述第一计算机系统为所述多个第二计算机系统同时渲染 多个图像,其中,基于对应于所述多个第二计算机系统中的特定一个第二计算机系统的所 述多组渲染参数中的特定一组渲染参数,为所述多个第二计算机系统中的特定一个第二计 算机系统渲染所述多个图像中的每个图像并将其存储在所述渲染目标中;以及 由所述第一计算机系统将所述多个图像中的每个图像传输给所述多个第二计算机系 统中的已经为其渲染图像的所述特定一个第二计算机系统。 8.根据权利要求7所述的方法,其特征在于, 所述渲染目标被分为多个渲染目标单元; 所述多个渲染目标单元中的每一个用于存储至少一个像素; 权。
7、 利 要 求 书CN 102959517 A 2/3页 3 所述多个第二计算机系统中的每一个被分配所述多个渲染目标单元中的至少一个; 所述多个图像中的每一个被渲染到所述多个渲染目标单元中的至少一个渲染目标单 元中,所述至少一个渲染目标单元被分配给所述多个第二计算机系统中的已经为其渲染图 像的所述特定一个第二计算机系统。 9.根据权利要求7所述的方法,还包括如下所述步骤,即,在传输之前由所述第一计算 机系统对所述多个图像同时进行编码。 10.根据权利要求9所述的方法,其特征在于, 所述多个图像中的每个图像被编码为多个视频流中的特定一个视频流的当前帧;以及 所述多个视频流中的每个视频流对应于所述多。
8、个第二计算机系统中的特定一个第二 计算机系统。 11.根据权利要求10所述的方法,其特征在于,由所述第一计算机系统将所述多个图 像中的每个图像传输给所述多个第二计算机系统中的已经为其渲染图像的所述特定一个 第二计算机系统的步骤包括,由所述第一计算机系统将所述多个视频流中的每个视频流传 输给所述多个第二计算机系统中的所述对应的一个第二计算机系统。 12.根据权利要求7所述的方法,还包括如下所述步骤,即,由所述第一计算机系统更 新所述多组渲染参数。 13.根据权利要求12所述的方法,其特征在于, 特定的计算机程序的实例在所述多个第二计算机系统的每个第二计算机系统上运行; 以及 在所述多个第二计算机。
9、系统的每个第二计算机系统上运行的所述特定计算机程序的 实例的当前状态决定与所述第二计算机系统相对应的所述多组渲染参数中的特定一组渲 染参数。 14.根据权利要求7所述的方法,其特征在于,所述多组渲染参数中的每组渲染参数包 括至少一个着色器常数。 15.一种系统,包括: 内存,其包括由一个或多个处理器可执行的指令; 图形处理单元;以及 一个或多个处理器,其连接所述内存并可操作地执行所述指令,所述一个或多个处理 器可在执行所述指令时操作,从而: 托管多个应用程序实例,每个应用程序实例对应于一远程客户端应用程序; 保持与为其托管应用程序实例的每个所述远程客户端应用程序的网络连接; 在至少两个所述远程。
10、客户端应用程序之间分配所述图形处理单元的资源; 利用所述图形处理单元的所述资源同时渲染对应于所述至少两个远程客户端应用程 序的所述应用程序实例的图形输出; 通过相应的网络连接,将经渲染的图形输出传输给所述至少两个远程客户端应用程 序。 16.一种或多种计算机可读的有形存储介质,该介质包括在由一个或多个计算机系统 执行时可操作的软件,从而: 托管多个应用程序实例,每个应用程序实例对应于一个远程客户端应用程序; 权 利 要 求 书CN 102959517 A 3/3页 4 保持与为其托管应用程序实例的每个所述远程客户端应用程序的网络连接; 在至少两个所述远程客户端应用程序之间分配所述图形处理单元的。
11、资源; 利用所述图形处理单元的所述资源同时渲染对应于所述至少两个远程客户端应用程 序的所述应用程序实例的图形输出;以及 通过相应的网络连接,将经渲染的图形输出传输给所述至少两个远程客户端应用程 序。 权 利 要 求 书CN 102959517 A 1/14页 5 在并行的多个客户端之间的 GPU 资源的分配 技术领域 0001 本发明总的来说涉及应用程序的服务器端渲染,更详细地说,涉及一种基于多组 渲染参数同时为多个客户端渲染多个应用程序的服务器。 背景技术 0002 客户端-服务器架构一般来说是分布式计算架构,该架构在服务器(可以被认为 是“服务提供者”)和客户端(可以被认为是“服务请求者”。
12、或“服务消费者”)之间划分任务 或工作负荷。服务器和客户端常常会通过计算机网络连接,并且各种数据可以通过计算机 网络在独立的服务器和独立的客户端之间双向传输。 0003 服务器通常具有比客户端更多的资源和更好的性能。服务器可与一个或多个客户 端共享其资源,例如为客户端执行某些任务(即给客户端提供服务)。由于服务器典型地具 有比客户端更多的资源,因此服务器能比客户端更快地完成任务,特别是有资源需求的任 务。 0004 服务器和客户端之间所交换的数据可以由任何合适的数据格式来表征,并利用任 何合适的通信协议来传输。例如,当在服务器上为客户端执行某一应用程序时,该应用程 序的输出可以使用结构化文档来。
13、表征,诸如超文本标记语言(HTML)文档或可扩展标记语言 (XML)文档。服务器可以通过在服务器和客户端之间的超文本传输协议(HTTP)连接将包 括表征应用程序输出的数据的HTML或XML文档传输给客户端。当接收到HTML或XML文档 时,客户端就可以消费该文档,并利用诸如在该客户端上被执行的网络浏览器中的该HTML 或XML文档本地渲染应用程序的输出。 发明内容 0005 本发明总的来说涉及应用程序的服务器端渲染,更详细地说,涉及一种基于多组 渲染参数同时为多个客户端渲染多个应用程序的服务器。在一个实施例中,计算机系统托 管多个应用程序实例,每个应用程序实例对应于一个远程客户端应用程序。计算。
14、机系统保 持与为其托管应用程序实例的每个远程客户端应用程序网络连接。计算机系统在至少两个 远程客户端应用程序之间分配计算机系统中图形处理单元的资源。该计算机系统利用其图 形处理单元的资源同时渲染对应于所述至少两个远程客户端应用程序的应用程序实例的 图形输出。而且,该计算机系统通过相应的网络连接将渲染后的图形输出传输给所述至少 两个远程客户端应用程序。 0006 在一个实施例中,第一计算机系统访问多组渲染参数,其中,第一计算机系统与多 个第二计算机系统相连;多组渲染参数中的每一组对应于多个第二计算机系统中特定一个 第二计算机系统;第一计算机系统包括用于存储图像的渲染目标;并且该渲染目标由多个 第。
15、二计算机系统共享。第一计算机系统基于多组渲染参数为多个第二计算机系统并行渲染 多个图像,其中,基于与多个第二计算机系统中特定一个第二计算机系统相对应的多组渲 染参数中的特定一组渲染参数,为所述多个第二计算机系统中特定一个第二计算机系统渲 说 明 书CN 102959517 A 2/14页 6 染多个图像中的每一个图像并存储在渲染目标中。而且,第一计算机系统将所述多个图像 中的每一个图像传输给已经为其渲染该图像的所述第二计算机系统中的特定一个第二计 算机系统。 0007 本发明的这些和其他的特征、方面和优点将在以下的详细说明中结合附图地加以 详细阐明。 附图说明 0008 图1示出了用于在并行的。
16、多个客户端之间分配服务器资源的一个示例性的客户 端-服务器系统; 0009 图2示出了被划分成多个渲染目标单元的服务器渲染目标的一个例子; 0010 图3示出了服务器同时为多个客户端实施多个渲染的方法; 0011 图4示出了一示例性网络环境; 0012 图5示出了一示例性计算机系统。 具体实施方式 0013 下面将参考附图中所示的一些实施例对本发明进行详细描述。为了更加透彻地理 解本发明,在以下描述中,阐述了大量的具体细节。然而,本领域的技术人员显而易见的是, 在部分或全部没有这些具体细节的情况下,本发明也可以实现。在其他例子中,为了避免不 必要地使本发明难以理解,没有详细描述熟知的处理步骤和。
17、/或结构。另外,虽然结合特定 的实施例对本发明进行了阐述,但应理解,本说明书并非用于限制所述实施例的公开内容。 相反地,本说明书旨在涵盖各种可以包括在如本发明所附权利要求书所限定的公开内容的 精神和范围之内的各种替换、修改或等同替换。 0014 客户端-服务器架构使服务器能够与一个或多个客户端共享其资源。这种架构具 有许多优点。例如,由于服务器比客户端典型地具有更多的资源(例如,处理器或内存)和更 好的性能,因此与客户端所能做到的相比,服务器可以更快地完成任务。当任务为资源需求 型或当客户端仅有有限数量的资源时,这种性能差异特别明显。同时,当服务器为客户端或 代表客户端执行任务时,可以释放客户。
18、端的资源以执行其他任务,诸如需要在客户端本地 执行的那些任务(例如,与客户端用户互动)。 0015 可以适合在服务器上完成的一种任务可以是由服务器托管的作为视频输出传输 给客户端的应用程序的渲染。在计算机绘图中,渲染可以被认为是通常利用计算机程序从 模型生成图像的过程。模型通常是三维(3D)物体的描述并可以以严格定义的语言或数据 结构来表征。模型可以包含几何形状、视点、纹理、照明效果、着色、动作以及其他适当类型 的信息。由模型渲染成的图像可以是数字图像或光栅图形图像,该图像可以由像素的集合 形成。本发明将渲染的概念扩大到生成表征任何应用程序的任何输出的图像。可基于任何 数据完成渲染,所述数据包。
19、括二维(2D)数据和三维(3D)数据。除了基于3D模型生成图像 之外,特定的实施例可以渲染表征如下所述应用程序的输出的图像,即,所述应用程序诸如 (例如但不限于)网络浏览器应用程序,文字处理应用程序,电子表格应用程序,多媒体应用 程序,科学和医学应用程序以及游戏应用程序。 0016 由于渲染过程经常是资源需求型的,特别是当渲染的图像具有高分辨率和高品质 说 明 书CN 102959517 A 3/14页 7 时,其可能是非常计算密集性的,因此渲染可以是一种适合在服务器上执行的任务。在过 去,将一个三维模型渲染成单个2D图像将花费老式计算机系统数小时或数天的时间。随着 计算机硬件、特别是专门为计。
20、算机绘图应用程序(例如,游戏,多媒体,娱乐或绘图)所设计 的计算机硬件的进步和发展,现在的计算机系统能够在几秒或几毫秒内渲染每个图像。事 实上,将模型渲染成单个图像通常并不占用服务器的全部可用资源。 0017 为了更好地利用服务器的可用资源,在特定的实施例中,服务器可以为多个客户 端同时执行多个渲染(例如,将多个3D模型同时渲染成多个2D图像),并且为不同的客户端 执行多个渲染中的每一个。在特定的实施例中,服务器的可用资源可以被分配给多个客户 端且由多个客户端共享。因此,客户端中的每个客户端被分配有服务器可用资源中的一部 分。更具体地说,在特定的实施例中,服务器的图形处理单元(GPU)在客户端。
21、之间共享。为 一个特定客户端执行的多个渲染中的每一个可以使用专门分配给该客户端的那部分资源。 在特定的实施例中,作为渲染过程的最终输出的每个渲染图像可以被传输给对应的为其获 取渲染图像的客户端。 0018 图1示出了一个示例性的系统,其中,单个服务器120同时为多个客户端130执 行多个渲染。需要注意的是,为了简明起见,图1中仅示出了四个客户端130A,130B,130C, 130D。实际上,服务器可以为任意数量的客户端同时执行渲染,而且对服务器在任何时候支 持客户端的数量在理论上并没有限制。类似地,为了简明起见,图1中仅示出了一个GPU121 和一个CPU122。实际上,服务器可以具有任意数。
22、量的GPU和CPU。 0019 在特定的实施例中,服务器120通过单独的连接150与每一个客户端130连接。在 特定的实施例中,服务器120和客户端130之间的连接150可以为通过计算机网络的网络 连接,诸如,例如并且不限于,因特网,内联网,局域网(LAN),广域网(WAN),无线网络,或者 两个或多个此类计算机网络的组合。在特定的实施例中,每个网络连接150可以为传输控 制协议(TCP)连接,用户数据报协议(UDP)连接,或者任何其他合适的连接。在特定的实施 例中,服务器120可以具有多个TCP网口124,并且每个客户端130可以通过单独的TCP连 接150连接到不同的TCP网口124上。例。
23、如,客户端130A可以通过TCP连接150A连接到 服务器120的TCP网口124A上。 0020 在特定的实施例中,通过一个对应的连接150,可以在服务器120和每个客户端 130之间实现双向数据交换。例如,服务器120和客户端130A可以通过连接150A双向地交 换数据。数据可以为任何合适的格式。例如,服务器120可以以视频流的形式将数据传输 到客户端130;并且每一个客户端130可以将数据传输给服务器120。服务器120和客户端 130之间的通信可以采用任何合适的协议。例如,假设为客户端130A在服务器120上执行 应用程序实例131A。在服务器120上执行的应用程序实例131A的渲染输。
24、出可以以视频流 的形式从服务器120传输到客户端130A,其中每一个渲染图像将应用程序实例131A的输 出表征为视频流的一个特定的帧。客户端130A接收的输入,特别是那些可以导致在服务器 120上执行的应用程序实例131A改变状态的输入,可以从客户端130A传输给服务器120。 0021 在特定的实施例中,服务器120可以具有一个或多个中央处理单元(CPU)122以及 一个或多个图形处理单元(GPU)121。CPU和GPU在计算机领域内是公知的。简要地说,CPU 是计算机系统中执行计算机的功能和计算机程序的指令的那部分。GPU是一种专门的处理 器,其从微处理器(例如CPU)卸载图形渲染。一般而。
25、言,GPU能非常有效地处理计算机图形, 说 明 书CN 102959517 A 4/14页 8 并且GPU高度并行的结构使其对于一些复杂算法(例如与图形相关的算法)比通用CPU更加 有效。在特定的实施例中,GPU121可以是视频卡的一部分或者位于服务器120的主板上。 0022 在特定的实施例中,GPU121包括渲染目标。在特定的实施例中,渲染过程将作为一 个或多个图像的一个或多个应用程序的输出渲染成渲染目标。在特定的实施例中,经渲染 的2D图像可以存储在GPU121的渲染目标中。在特定的实施例中,渲染目标可以为帧缓冲器 或者GPU121内的任何合适类型的内存或存储器。图2示出了示例性的GPU。
26、(例如GPU121) 的渲染目标200。在此例子中,渲染目标200为在GPU121中的内存,诸如帧缓冲器。在特定 的实施例中,渲染目标可以存储表征一个或多个应用程序的渲染输出的高达256兆像素。 因此,渲染目标能被分成例如由1兆像素区块(1024像素1024像素)构成的一个1616 的网格。渲染目标还能被划分以适应其他显示宽高比。 0023 在特定的实施例中,渲染目标可以被分成多个部分。在图2中,渲染目标200以 44的网格被分成16个部分,每个部分可以被称为渲染目标200的一个单元或一个渲染 目标单元。同样,将渲染目标200分成16个渲染目标单元只是为了简化后续的说明。实际 上,渲染目标可以。
27、被分成任意数量的单元,并且对渲染目标到底可以被划分成多少个渲染 目标单元在理论上没有限制。类似地,每一个渲染目标单元的大小和尺寸可以根据渲染目 标的大小和尺寸以及渲染目标所被划分成的渲染目标单元的数量变化。例如,每个渲染目 标单元可以为256像素256像素,512像素512像素,或1024像素1024像素。当然, 渲染目标单元不必都具有相同的宽度和高度。例如,渲染目标单元可以为256像素512 像素或512像素256像素。 0024 在特定的实施例中,服务器120的GPU121的渲染目标200可以在四个客户端130 之间被分配,使得每个客户端130被分配一个或多个渲染目标单元。给一个特定的客户。
28、端 130分配多少渲染目标单元可以取决于那个客户端130的实际需求和系统架构。在特定的 实施例中,特定客户端130的显示器的分辨率、尺寸和取向可以决定给那个客户端130分配 多少个渲染目标单元。 0025 例如,假设图2中的每个渲染目标单元为1024像素1024像素。进一步地假设 客户端130A为具有较低分辨率的显示器(例如1024像素768像素)的笔记本电脑。在 此情况下,单个渲染目标单元可以具有足够的存储空间来储存1024像素768像素或更小 的渲染图像。因此,客户端130A可以被分配一个渲染目标单元(例如渲染目标单元211)。 另一方面,假设客户端130B是具有1920像素1680像素显。
29、示器的台式电脑。在这种情况 下,可能需要四个渲染目标单元来存储1920像素1680像素或更小的图像。因此,客户端 130B可以被分配四个渲染目标单元(例如渲染目标单元212,213,222和223)。 0026 在特定的实施例中,分配给特定客户端130的渲染目标单元的取向可以取决于该 客户端130的显示器的尺寸和取向。例如,假设客户端130C具有细长型显示器,其中该显 示器的宽度远小于该显示器的高度。在这种情况下,可将同列中的三个渲染目标单元221, 231,241分配给客户端130C,以便支持其细长型显示器(即渲染目标单元221,231,241一起 模拟客户端130C的显示器的尺寸和取向)。。
30、最后,假设客户端130D具有高分辨率显示器, 从而将六个渲染目标单元232,233,234,242,243,244分配给该客户端130D,以便存储如此 高分辨率的渲染图像。 0027 当然,不一定需要在任意给定时间内将全部可用渲染目标单元分配给各个客户 说 明 书CN 102959517 A 5/14页 9 端。有时,可以在某些渲染中不分配若干渲染目标单元(例如渲染目标单元214,224),而是 在过后将其分配给客户端130。类似地,已经被分配给特定客户端130的渲染目标单元当它 们不再被需要时(例如当该特定客户端130与服务器120断开连接)可被释放出来。 0028 在特定的实施例中,每个客。
31、户端130可以与一个或多个计算机程序相关联,该一 个或多个计算机程序也被称为应用程序。为了简化说明,在图1中,显示出与每个客户端 130相关联的单独一个应用程序131。例如,应用程序131A与客户端130A相关联。然而, 当多个应用程序与每个客户端130相关联时,适用同样的概念。 0029 在特定的实施例中,服务器120被配置成为一个或多个客户端130托管一个或多 个应用程序131的一个或多个实例。将应用程序131的实例的渲染输出传输到对应的客户 端130以呈现给客户端130的一个或多个用户。 0030 在特定的实施例中,与客户端130关联的应用程序131的实例可以在服务器120 上为客户端1。
32、30运行。在服务器120上运行的应用程序131的实例的输出可以由服务器 120渲染为图像。在特定的实施例中,应用程序131的实例的渲染输出可以被编码为视频数 据并作为视频流传输到对应的客户端130。当接收到表征其对应应用程序131的渲染输出 的视频流时,每个客户端130可以解码视频数据并显示对应应用程序131的渲染输出。例 如,在服务器120上为客户端130A运行应用程序实例131A。应用程序实例131A的输出可 以通过服务器120被渲染为一个或多个图像。应用程序实例131A的渲染输出可以被编码 为视频流并传输给客户端130A。在接收到该视频流时,客户端130A可以解码该视频流以重 新得到应用。
33、程序实例131A的渲染输出并将该输出显示于客户端130A上。在特定的实施例 中,每个客户端130可以包括一个或多个CPU(未示出)以及一个或多个GPU(未示出)。在 特定的实施例中,每个客户端130可以将视频流(即,编码的视频帧)装入其GPU的内存中并 解码该编码的视频数据以显示对应应用程序131的渲染输出。 0031 因为计算机程序131的实例在客户端130上运行,所以可能需要执行各种渲染。例 如,假设应用程序实例131A是一个游戏应用程序。该游戏的视频可以每秒60帧的速度进 行,并且每一帧可能需要将游戏场景的3D模型新渲染成图像。因此,应用程序实例131A可 能需要每秒60次的渲染。假设应。
34、用程序实例131B是一个动画电影,并且视频以每秒30帧 的速度进行。同样,每一帧可能需要将动画场景新渲染成图像。因此,应用程序实例131B可 能需要每秒30次的渲染。另外,对于每个应用程序131的实例,还可以有一组用于指明如 何将该程序实例131的3D模型渲染为图像的渲染参数。在特定的实施例中,渲染参数可以 包括(例如并且不限于)要渲染的模型,视口或镜头角度,灯光,纹理,阴影或图像分辨率。另 外,渲染参数可以在帧之间改变,由此在渲染之间也改变。例如,在诸如应用程序实例131A 的游戏应用程序的情况下,随着客户端130A的游戏者移动游戏场景,游戏场景的3D模型 中的对象以及镜头角度,灯光和阴影可。
35、以变化。因此,每一个渲染可以具有对应于当前游戏 状态的一组不同的渲染参数来指明该渲染的例如特定的场景,视点位置,镜头角度,照明效 果,或阴影。 0032 在特定的实施例中,服务器120可以保持当前连接到服务器120上的每个客户端 130的一个不同的渲染参数组123。例如,渲染参数组123A对应于客户端130A。每组渲染 参数123可以从计算机程序131的对应实例中获得,并且描述了对于该计算机程序131的 实例如何执行渲染。例如,渲染参数组123A可以包括描述了对于应用程序实例131A如何 说 明 书CN 102959517 A 6/14页 10 执行渲染的渲染参数并且可以基于应用程序实例131。
36、A的当前状态进行更新。 0033 有时,多个客户端130可以执行相同计算机程序的多个实例并且还具有不同的渲 染参数123。例如,假设客户端130A和130D运行同一游戏应用程序的两个实例。在客户端 130A和130D的两个游戏者可以独自地或互动式地玩同样的游戏(例如在同一游戏中充当 两个不同的角色)。如果两个游戏者独自地玩同样的游戏,在特定时间,他们可能处于游戏 的不同阶段,因此,他们在客户端130A和130D的显示器上所看到的图像是不同的。如果两 个游戏者互动式地玩同样的游戏,在特定时间,即使两个游戏者都处于同样的游戏场景中, 他们也可能从不同的位置和不同的角度观看游戏场景。同样,两个游戏者。
37、在客户端130A和 130D的显示器上也可能看到不同的图像。不论何种情况,因为两个游戏者在任意的给定时 间看到的图像不同,所以渲染参数在相同的游戏应用程序的两个实例之间存在差异。 0034 在一个给定的渲染进程中,像素着色器(和/或其他渲染功能)按一组渲染参数操 作,该组渲染参数中还定义了渲染图像的视点或类似参数。在特定的实施例中,在单次渲染 进程中,服务器120可以分别基于四组渲染参数123为在客户端130上运行的四个程序实 例131同时执行四次渲染。在特定的实施例中,GPU121可以执行实际的渲染功能。在特定 的实施例中,每一次渲染为每一个客户端同时输出一帧渲染图像。在特定的实施例中,四幅。
38、 渲染图像中的每一幅都被存储在GPU121内渲染目标200的已被分配给对应客户端130的 特定部分中。例如,基于渲染参数组123A,为在客户端130A上运行的应用程序实例131A执 行第一渲染,并且将第一渲染图像存储在渲染目标单元211中。基于渲染参数组123B,为在 客户端130B上运行的应用程序实例131B执行第二渲染,并且将第二渲染图像存储在渲染 目标单元212、213、222、223中。基于渲染参数组123C,为在客户端130C上运行的应用程序 实例131C执行第三渲染,并且将第三渲染图像存储在渲染目标单元221,231,241中。基于 渲染参数组123D,为在客户端130D上运行的应。
39、用程序实例131D执行第四渲染,并且将第四 渲染图像存储在渲染目标单元232,233,234,241,242,243,244中。 0035 在特定的实施例中,在单次编码过程中,服务器120可以对存储于渲染目标200中 的四个渲染图像并行编码。在特定的实施例中,GPU121可以执行实际的编码功能。例如, 每一个渲染图像可以被编码为不同视频流中的单个帧。在特定的实施例中,服务器120此 后可以分别将现在已被编码在四段视频流中的四个渲染图像传输到四个客户端130。更具 体地说,第一渲染图像可以被编码为第一视频流中的一帧并被传输到客户端130A。第二渲 染图像可以被编码为第二视频流中的一帧并被传输到客。
40、户端130B。第三渲染图像可以被编 码为第三视频流中的一帧并被传输到客户端130C。第四渲染图像可以被编码为第四视频流 中的一帧并被传输到客户端130D。当接收到对应的视频流时,每一个客户端130可以解码 视频流并且在其显示器上显示渲染图像。 0036 在特定的实施例中,服务器120可以实现视频编解码器功能。视频编解码器可以 用于对渲染图像进行编码,所述渲染图像表征在服务器120上运行的应用程序131的实例 的输出。在特定的实施例中,视频编解码器访问存储于渲染目标200中的渲染图像并将图 像划分成宏块。在一种实施方案中,每个宏块的大小为16像素16像素。如下所述,在一 些实施方案式中,可以在8。
41、8分区上执行离散余弦变换(DCT)操作。因此,由于4:2:0缩 减像素采样,每个宏块包括四个88亮度分区,四个44Cb分区,以及四个44Cr分区。 然而,也可以采用其他的宏块尺寸。然后,视频编解码器如下所述地对每个宏块的亮度和色 说 明 书CN 102959517 A 10 7/14页 11 度分区执行一定的变换和量化操作。这些操作可以串行地或并行地进行。如果在GPU上执 行编码操作,对宏块的处理能够以并行的方式完成,从而减少处理时间并增大吞吐量。 0037 编解码器给每个宏块配备一个2D平面,其可最佳地模拟宏块像素的亮度值。该平 面由方程式z=ax+by定义,其中a和b定义了该平面的梯度参数。
42、。然后,编解码器基于该平 面的梯度参数调整宏块像素的亮度值。在一种实施方案中,对于每一个像素,编解码器从这 个位置上的像素值中减去平面方程式的对应值。在概念上,由以下方程式定义:经调整的像 素(x,y)=像素(x,y)-z。在一种实施方案中,编解码器并不调整色度分区的值。 0038 然后,编解码器将DCT应用于宏块。在一种实施方案中,编解码器将DCT分别应用 到88像素的四个亮度分区和八个44色度分区。编解码器此后在对应于每个亮度分区 和每个色度分区的每个DCT系数集合的DC分量上应用22阿达玛(Hadamard)变换,以找 出DC系数值之间的关联。在可替代的实施方案中,编解码器动态地确定分区。
43、的大小。例如, 编解码器可以基于每一个分区选择的信息率(rate)和失真,在44,88,1616分区中 动态地选择。 0039 编解码器将用于一个宏块的DCT系数重新排序成一维(1D)矩阵。在一种实施方 案中,以曲折排序扫描四个亮度分区的DCT系数,然后使DCT系数交错,从而使DC分量值和 其他对应DCT的分量值一起形成组。在一种实施方案中,亮度分区相对于色度分区单独编 码。在一种实施方案中,色度分区以与亮度通道相似的方式被交错在一起。在其他实施方 案中,可使用曲折重排序(zigzag re-ordering)的替代方法。 0040 编解码器还采用例如率失真优化法量化1D矩阵中的DCT系数,率。
44、失真优化法是一 种基于每种选择的最终成本(需要编码的位数)和与每种选择相关联的错误或失真评价是 否上下取舍到最接近的整数或取舍到零的量化过程。在一种实施方案中,率失真优化法基 本上应用视频质量测试方法,来测量与源的偏差以及每个可能的判定结果的位成本。通过 位成本乘以拉格朗日算符(Lagrangian)以数学方法精确地计算出位,其中拉格朗日算符是 一个表征位成本和特定质量水平的质量之间的关系的值。为了最大化峰值信噪比(PSNR)视 频质量测试方法,可以以均方误差来衡量与源的偏差。位成本的计算可以通过使每个待测 试的视频块通过熵编解码器以测量其实际位成本来完成。 0041 在一种实施方案中,通过从。
45、宏块的DC系数中减去DC预测值,编解码器于是计算出 每个宏块的DC预测值并且基于DC预测值调整每个宏块的DC系数。在一种实施方案中,DC 预测值X基于相邻区块的DC系数。换言之,区块的DC预测值X是基于区块a与b的DC系 数之和再减去区块c的DC系数值。在一种实施方案中,在亮度和色度通道上执行DC预测 值调整。 0042 编解码器然后将量化的系数编码到每个区块的保留内存空间中。在一种实施方案 中,编解码器采用变长编码的形式压缩每个区块的量化系数。在一种实施方案中,编解码器 先采用游程编码(RLE)然后再采用霍夫曼(Huffman)编码。在对每个宏块的量化DCT系数 编码后,产生宏块的被编码的位。
46、和位长。在获知位长信息后,编解码器就能执行并行前缀求 和,以在最终输出位流中获得每个宏块的开始位置。 0043 在一种实施方案中,通过以类似光栅的顺序写入每个宏块的数据,编解码器于是 使GPU121将编码数据写入将缓冲到主系统内存中的输出流上。在一种实施方案中,通过并 行的处理操作,由GPU121将数据写入CPU内存。例如,编解码器可以在一个集中操作中使 说 明 书CN 102959517 A 11 8/14页 12 数据被写入一个或多个输出流。例如,具有写数据字(诸如1或2个字节)任务的步骤或功 能可利用每个宏块的开始位位置以及在该帧的输出流中的数据字的位置,来确定从哪个保 留内存位置访问数。
47、据位以创建数据字并将其写入内存。集中操作允许利用GPU121的资源 在并行处理操作中写输出,由此进一步增加了吞吐量。例如,在一种实施方案中,可以定义 一个功能,即:将输出流被写入其中的内存中的数据或机器字的位置接收为输入。运用该功 能可基于数据或机器字的位置以及宏块的开始位值从一个或多个宏块的位的选择部分中 收集机器字,并且将机器字的数据写入内存。该功能能被并行地执行,以将来自GPU121的 内存(例如渲染目标200)的该输出加速写入主内存,以便通过网络传输给客户端130。在 其他实施方案中,可直接访问GPU121的内存,以写入用于传输到网口或其他连接抽象的数 据。 0044 一些种类的应用程。
48、序可能需要将它们的输出持续地渲染成代表性图像。例如,如 上所述,游戏应用程序经常需要每秒60次渲染。其他类型的应用程序可能仅在响应用程序 户输入时需要一个新的渲染。例如,当用户输入时,文字处理应用程序可能仅需要刷新显示 于客户端屏幕上的文本文档(即,渲染该文档的图像)。另外,用于在客户端运行的应用程序 实例的每个渲染可以基于不同的渲染参数,因为应用程序实例的当前状态可能随时间而改 变。在特定的实施例中,每个客户端130可将在客户端130上运行的应用程序131的3D模 型或渲染所依据的其他数据以及最新的渲染参数(需要时)传输到服务器120。服务器120 可以存储从每个客户端130接收到的信息。在。
49、特定的实施例中,服务器120可以基于从每 个客户端130接收到的信息确定在需要为特定客户端执行渲染时,哪个3D模型和哪些渲染 参数将被用于该渲染,以及其他适合的信息。在特定的实施例中,CPU122可以执行实际的 决定。在特定的实施例中,对于每个渲染进程(rendering pass),CPU122可以给GPU121提 供在该渲染进程中GPU121同时执行多个渲染时可能需要的所有必要的数据(例如,模型, 成组的渲染参数)。 0045 图3示出了一种服务器同时为多个客户端执行多个渲染的方法。特定的实施例可 以将服务器的GPU中的渲染目标分为多个渲染目标单元(步骤301)。在特定的实施例中,渲 染目标可以为帧缓冲器或GPU中可以用于存储渲染图像的其他合适种类的内存或存储器。 在特定的实施例中,渲染目标单元可以都具有同样的大小(例如,每个渲染目标单元具有相 同数量的像素)。 0046 在任意的给定时间,服务器可以与任意数量的客户端相连,而且可以代表并为这 些客户端、或者更加具体地说是为在这些客户端上运行的计算机程序的实例执行渲染。特 定的实施例可以给当前与服。