CN106663081A - 用于可扩展的异步计算架构的系统和方法 - Google Patents

用于可扩展的异步计算架构的系统和方法 Download PDF

Info

Publication number
CN106663081A
CN106663081A CN201580020841.1A CN201580020841A CN106663081A CN 106663081 A CN106663081 A CN 106663081A CN 201580020841 A CN201580020841 A CN 201580020841A CN 106663081 A CN106663081 A CN 106663081A
Authority
CN
China
Prior art keywords
data
user
thread
end device
block
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
CN201580020841.1A
Other languages
English (en)
Inventor
罗翰·马洛里·科夫马尔·阿伦
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.)
Global LLC
Original Assignee
Global LLC
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 Global LLC filed Critical Global LLC
Publication of CN106663081A publication Critical patent/CN106663081A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1423Digital output to display device ; Cooperation and interconnection of the display device with other functional units controlling a plurality of local displays, e.g. CRT and flat panel display
    • G06F3/1438Digital output to display device ; Cooperation and interconnection of the display device with other functional units controlling a plurality of local displays, e.g. CRT and flat panel display using more than one graphics controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1423Digital output to display device ; Cooperation and interconnection of the display device with other functional units controlling a plurality of local displays, e.g. CRT and flat panel display
    • G06F3/1446Digital output to display device ; Cooperation and interconnection of the display device with other functional units controlling a plurality of local displays, e.g. CRT and flat panel display display composed of modules, e.g. video walls
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1454Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/08Volume rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/16Indexing scheme for image data processing or generation, in general involving adaptation to the client's capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10024Color image
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/52Parallel processing

Abstract

描述用于分布式数据处理方法的系统和方法,该分布式数据处理方法包含但不限于:由后端装置接收源数据;由后端装置将源数据分区为多个数据线程;由后端装置向多个用户装置中的每者发送多个数据线程中的至少一者;并由后端装置基于多个数据线程结果来确定源数据的工作成果,多个数据线程结果中的每者由多个用户装置中的一者基于多个数据线程中的至少一者来确定。

Description

用于可扩展的异步计算架构的系统和方法
相关申请的交叉引用
本申请要求在2014年3月12日提交的美国临时专利申请No.61/952,055;以及在2014年11月10日提交的美国专利申请No.14/537,768的优先权,上述每个专利申请的全部内容通过引用并入本文。
发明背景
1.发明领域
各实施例大体涉及大规模的分布式计算架构,并且更具体地,涉及使用网络内可用的空闲核的可扩展异步计算架构。
2.背景
各种分布式计算架构已被开发出用以执行某些复杂(大规模的)的计算任务。此类分布式计算架构利用大量内核的处理能力来处理复杂的计算任务,它可能要求极大量的处理能力。具体地,复杂的计算任务可以被分布到多个内核以进行处理。
虽然分布式计算架构已被用于某些复杂的计算任务,但是在计算任务极其复杂时,分布式计算架构可能遇到容量问题。在数据处理中心(例如,谷歌大脑)可包括有限数量的内核(例如,16,000个内核)的情况下,分布式计算架构的总处理能力受由数据处理中心支持的内核的数量的限制。
公开概述
本文所述的实施例涉及使用分布式计算架构的分布式数据处理。分布式计算架构可包含后端装置(例如,中心服务器),其被提供用于将计算任务分区为多个块(例如,更小的具体任务)。后端装置可经由网络将每个块分布到一组用户装置中的一者。后端装置可基于与每个用户装置相关联的处理能力和网络状况来分布各块。
分布式计算架构可被实施以解决需要极大量处理能力的很多计算任务。在非限制性实施例中,分布式计算架构可被实施用于3维空间成像、处理和显示过程。具体地,目标(3维)空间被分区为包含多个顶点。关于目标空间的数据(例如,图像数据、视频数据和/或类似物)由源装置(例如,照相机)采集。每个图像或视频帧可包含多个像素,每个像素可与多个顶点中的一者相关联。数据线程(它们中的一或多者可形成块)可由后端装置生成用于分布在各种用户装置之中,其中,每个数据线程可对应于关于顶点的数据(例如,像素数据)。
每个用户装置可计算被分配给用户装置的数据线程的数据结果(例如,加权值)并将该数据结果回送至后端装置。后端装置可基于从用户装置接收到的多个数据结果来确定工作成果。接着后端装置可以存储工作成果,用于在用户装置上将来或实时显示(在工作成果对应于处理图像/视频时)。在一些实施例中,后端装置可能不能显示数据。后端装置可保持处理调度和数据位置。此类数据可被本地存储在后端装置或存储在远程数据存储中(例如,在网络内的另一节点中)。
在一些实施例中,后端装置可向至少一些用户装置发送工作成果用于消费。在其它实施例中,工作成果可不被发送给用户装置。与后端装置或第三方相关联的实体可消费工作成果。在这些情况下,用户装置(或网络内的其它节点)可不接收局部或完整的工作成果。在具体实施例中,用户装置可基于与颜色、纹理、频率变换、小波变换、平均值、顶点的标准偏差相关的工作成果显示目标空间的3维投影(采用视频的形式)。
在一些实施例中,处理源数据所需的用户装置的计数和数据处理可为动态的(例如,随着时间改变)。因此,在更多的用户装置变为可用时,分布式计算架构可增加规模,反之亦然。在各种实施例中,在阈值最少数量的用户装置未能实现以用于实时处理给定计算任务时,专用的用户装置可被添加以用于对抗计算任务。
用于处理数据的方法,该方法包括但不限于:由后端装置接收源数据;由后端装置将源数据分区为多个数据线程;由后端装置向多个用户装置中的每者发送多个数据线程中的至少一者;并由后端装置基于多个数据线程结果来确定源数据的工作成果,多个数据线程结果中的每者由多个用户装置中的一者基于多个数据线程中的至少一者来确定。
在一些实施例中,源数据为视频数据;以及数据工作包含视频数据帧的图像处理。
根据一些实施例,将源数据分区为多个数据线程包含,基于与帧和多个区域相关联的元数据将帧分区为多个区域,多个区域中的每个区域对应于多个数据线程中的一者。
在一些实施例中,将源数据分区为多个数据线程包含基于源数据的像素来分区源数据。
根据各种实施例,帧为目标空间的图像。
在一些实施例中,目标空间包含多个顶点;并且多个顶点中的每者对应于目标空间的3维部分。
在一些实施例中,多个数据线程中的每者与多个顶点中的至少一者相关联;并且多个数据线程中的每者对应于帧的区域。
在一些实施例中,数据线程结果中的每者通过确定与至少一种显示特性相关联的加权值来确定,至少一种显示特性与帧的区域相关联。
在一些实施例中,显示特性至少包含与帧的区域相关联的颜色。
在多个实施例中,帧采集多个顶点中的至少一些顶点。
在各种实施例中,用户装置基于工作成果显示目标空间的3维投影。
根据一些实施例,确定工作成果包含:由后端装置从多个用户装置接收多个数据线程结果;并基于所接收到的多个数据线程结果来确定数据工作的工作成果。
在一些实施例中,发送多个数据线程中的至少一者包含:确定多个用户装置中的每者的至少一个处理能力和网络状况;并基于处理能力和网络状况中的至少一个来向多个用户装置中的每者来分配多个数据线程中的至少一者。
在一些实施例中,权利要求的方法另外包括将源数据格式化为图形处理单元(GPU)兼容的格式,其中,多个数据线程结果中的每者由与多个用户装置中的每者相关联的至少一个GPU确定。
在一些实施例中,GPU兼容的格式与着色器语言相关联。
在各种实施例中,源数据被格式化为下列元素中的至少一者:几何形状、顶点、纹理、法线和用于着色器语言的代码。
在一些实施例中,数据线程结果通过向用户装置的显示屏再现数据线程结果;并复制向显示屏再现的数据线程结果来确定。
根据一些实施例,该方法另外包括,在已向与每个用户装置相关联的显示屏再现多个数据线程结果之后,由后端装置接收多个数据线程结果。
用于处理数据的设备相对于各种实施例来描述,该设备包含但不限于:后端装置,该后端装置被配置成:接收源数据;将源数据分区为多个数据线程;向多个用户装置中的每者发送多个数据线程中的至少一者;基于多个数据线程结果来确定源数据的工作成果,多个数据线程结果中的每者由多个用户装置中的一者基于多个数据线程中的至少一者来确定;并向多个用户装置中的至少一者发送工作成果。
各种实施例涉及存储程序指令的非暂态计算机可读存储介质,在该程序指令被执行时,促使处理器:接收源数据;将源数据分区为多个数据线程;向多个用户装置中的每者发送多个数据线程中的至少一者;基于多个数据线程结果来确定源数据的工作成果,多个数据线程结果中的每者由多个用户装置中的一者基于多个数据线程中的至少一者来确定;并向多个用户装置中的至少一者发送工作成果。
附图简述
图1为示出根据各种实施例的分布式计算架构的示例的示意性框图。
图2为示出根据各种实施例的分布式数据处理方法的示例的处理流程图。
图3A为示出根据各种实施例的目标空间的透视图的示意性框图。
图3B为示出根据各种实施例的目标空间的前视图的示意性框图。
图4A为示出根据各种实施例的数据线程的示例的示意性框图。
图4B为示出根据各种实施例的线程结果的示例的示意性框图。
图5为示出根据各种实施例的数据线程分配方法的示例的处理流程图。
图6为示出根据各种实施例的数据线程分配和再分配图的示例的示意性框图。
图7为示出在一些实施例中的管理界面的示例的屏幕。
图8为示出根据各种实施例的数据处理方法的示例的处理流程图。
图9为示出根据各种实施例的面向GPU的分布式数据处理方法的示例的处理流程图。
图10为示出根据各种实施例的面向GPU的分布式数据处理方法的另一示例的处理流程图。
详细描述
在下面的各种实施例的描述中,引用了形成本说明书的一部分的附图,其中,所述附图借助于本发明可实施的特定实施例的例证来示出。应理解在不脱离本公开的各种实施例的范围的情况下,可使用其它实施例并可做出结构变化。
如本文所引用的,“用户内核”可为至少一个数据处理单元,诸如但不限于微处理器、中央数据处理单元、图形处理单元(GPU)、其它类型的处理器、它们的组合等。在具体实施例中,用户内核可为无需加载另外的软件程序或插件可经由浏览器应用直接访问的GPU内核。“用户装置”可为连接到网络(例如,任何公共或私有网络)的任何移动或非移动计算装置。在一些实施例中,用户装置可访问由后端装置所提供的服务。该服务可包含但不限于,数据传输服务、视频流传输服务、它们的组合和/或类似物。每个后端装置可包含用于处理用户装置的任务的一个或多个用户内核。
“数据线程”可指的是被分配以供用户内核处理的数据的单元。数据线程可被后端装置选择和分配给特定用户内核(或用户装置)。在一些非限制性示例中,数据线程可包含图像的一部分(例如,像素的一部分、像素、宏块等)、视频区块、被布置在视频类流中的抽象数据点、对应于它们的元数据和/或类似物。“数据块”可为包含至少一个数据线程的数据的单元。“数据工作”可为可以被分段为由用户内核处理的多个数据线程/块的任何相干的计算任务。例如,数据工作可为用于处理至少一个像素、宏块、视频数据的帧、3维投影、过滤图像、图像的对象识别和/或类似物的处理任务。
如非限制性示例所示,数据工作可为处理具有大小为1920p*1080p的图像。数据块可为在具有大小为128p*128p的图像上的区域。并且在该数据块内,每个像素可与数据线程相关联。因此,处理图像的数据工作可被划分为125个处理块,其中,每个数据块可以所述的方式在单个用户装置上的单个帧中处理(每个用户装置可处理其预约的在任何处理任务中可用的任何数据的5帧/秒至多于120帧/秒中的任一种)。对处理数据工作的预约可在网站中提供(例如,硬编码),该网站可包含连接到该网站的许多用户装置(大量的网页流量)。
本公开的实施例涉及使用web内核使能可扩展的分布式计算构架的系统和方法。带宽和web技术的突破性进展允许跨网络内的用户内核可扩展的异步并行处理架构。用户内核可为用户装置的组件,其可通过用户访问设置在网络内的服务(例如,web服务,诸如视频流传输服务)来操作。因此,分布式计算架构的处理能力随着连接到网络的用户装置的数量增加而增加(使用设置在网络内的服务)。在各种实施例中,用户内核的数量可为数百万个。
分布式计算架构的具体实施包含但不限于,大规模的图像处理、web再现、3维WebGL再现、深度学习神经网络、图像识别、图像过滤和本文所述的其它合适用户。在特定的具体实施中,本文所述的分布式计算架构可能够实时处理数据(例如,视频/图像数据),诸如以提供实时服务(例如,流传输服务)。例如,用户装置(例如,通过用户内核)可被配置成处理用于提供实时流传输服务的数据的一部分。所处理的数据(例如,工作成果)可由用户装置接收以用于提供所述的实时服务。本领域的普通技术人员应明白,工作成果可不必发送给用户装置。用户装置可以其它方式,诸如但不限于货币补偿、服务、它们的组合和/或类似物来补偿。
在各种实施例中,每个用户装置的处理能力取决于用户内核的总处理能力、用户内核的当前处理能力、网络带宽状态、它们的组合和/或类似物。在典型的实施例中,分布式计算架构可需要一小部分的用户内核的处理能力(例如,总处理能力或目前的处理能力),使得被分配给特定用户装置的分布式过程基本上不干扰用户内核的常规处理。在通常情况下,用户装置的用户将不能够注意到分布式进程在用户装置上执行。
图1为示出根据各种实施例的分布式计算架构100的示例的示意性框图。参考图1,分布式计算架构100可包含至少一个后端装置110、数据源120、多个用户装置(例如,用户装置A 140a、用户装置B 140b、…、用户装置N 140n等)。
在一些实施例中,网络130可允许在后端装置110和用户装置140a-140n之间的数据传输。在另外的实施例中,网络130也可允许在数据源120和后端装置110之间的数据传输。在另外的实施例中,网络130可允许在数据库170和后端装置110之间的数据传输。用户装置140a-140n可通过网络130彼此连接。网络130可为广域通信网络,诸如但不限于互联网或一或多个内联网、局域网(LAN)、以太网、城域网(MAN)、广域网(WAN)、它们的组合和/或类似物。在具体实施例中,网络130可表示一个或多个安全网络,其用合适的安全特征,诸如但不限于防火墙、加密或禁止未授权人员或实体访问网络通信的其它软件或硬件配置来配置。可通过网络130传输的数据可使用进一步使数据安全的每帧密钥在用户装置140a-140n的用户内核150上的着色器语言内加密和解密。
数据源120可被连接到用户装置140a-140n(例如,经由网络130或以其它方式)以用于提供由分布式计算架构100的用户装置140a-140n处理的源数据。例如,数据源120可包含任何合适的源或装置,其用于输出未被处理的数据,诸如但不限于图像/视频数据、应用数据和/或类似物。在具体实施例中,数据源120可包含用于采集视频、图像和/或音频数据的至少一个照相机。其它数据源包含但不限于货币兑换率、天气传感器数据、基因材料测序、它们的组合和/或类似物。数据源120可包含用于存储所采集的输出数据(例如,实际源数据)的数据库/服务器。
在一些实施例中,数据源120可被连接到后端装置110(例如,经由网络)。后端装置110可基于由数据源120所输出的实际数据来生成元数据(并被存储在与数据源120相关联的数据库/服务器中)。后端装置110可向用户装置140a-140n传送元数据(例如,具体指示被分区的数据块/线程)。用户装置140a-140n可从数据源120(例如,从与数据源相关联的服务器/数据库)检索实际数据以如本文所述进行处理。
在其它实施例中,数据源120可包含具有任何合适类型的图像/视频/音频采集性能的用户装置140a-140n中的至少一者(例如,智能照相机)。在此类实施例中,用户装置140a-140n中的至少一者可消费其自己的输出用于以所述的方式进行处理而无需从远程数据源120检索实际数据。尽管用户装置140a-140n中的至少一者不消费整个输出,后端装置110可生成元数据,使得其它用户装置可从用户装置140a-140n中的至少一者检索输出的至少一部分以进行处理。
后端装置110可包含至少一个处理器111、可操作地耦合到处理器111的存储器112、至少一个网络装置113、至少一个用户接口114等。在一些实施例中,后端装置110可包含用硬件或软件来配置以执行本文所述的操作的台式计算机、大型计算机、便携式计算机、平板装置、智能电话装置等。
例如,后端装置110可包含具有合适的处理能力、存储器、用户接口(例如,显示器和输入)能力和通信能力的典型台式PC或AppleTM计算机装置,其在用合适的应用软件(或其它软件)配置时,执行本文所述的操作。适合具体实施的平台包含Amazon/Debian Linux、HTML(例如,HTML5)、没有插件(诸如java或flash)的合适浏览器等。因此,特定实施例可使用通过用本文所述的合适软件方法来配置往往已存在于许多商业和组织环境中的处理器装置来实施。因此,此类实施例可用最小的附加硬件成本来实施。然而,后端装置110的其它实施例可涉及用被专门配置用于执行本文所述的操作的专用装置硬件来实施的系统和方法。
处理器111可包含任何合适的数据处理装置,诸如通用处理器(例如,微处理器)或执行所述的后端装置110的功能的数据处理装置。在替代实施方案中,处理器111可为任何常规的处理器、控制器、微控制器或状态机。处理器111也可被实施为计算装置的组合,例如DSP与微处理器的组合、多个微处理器、GPU、结合DSP内核的至少一个微处理器或任何其它此类配置。
存储器112可操作地耦合到处理器112,并且可包含用于存储用于控制处理器111和供处理器111使用以执行本文所述的操作和功能的软件和数据的任何合适的器件,其包含但不限于随机存取存储器(RAM)、只读存储器(ROM)、软盘、硬盘、加密狗或其它修理完成传感器板(RSB)连接的存储器装置等。
网络装置113可被配置成用于通过网络130来通信。网络装置113可包含接口软件、硬件或它们的组合以用于通过网络130来通信。网络装置113可包含硬件,诸如网络调制解调器、无线接收器或收发器电子器件和/或与网络130(或与联网装置)的有线或无线通信链路的软件。在具体实施例中,网络装置113可被耦合至处理器111以用于提供通信功能。网络装置113可根据典型的行业标准,诸如但不限于码分多址(CDMA)、时分多址(TDMA)、频分多址(FDMA)、长期演进(LTE)、无线保真(WiFi)、频率调制(FM)、蓝牙(BT)、近场通信(NFC)等来提供电话和其它通信。
在具体实施例中,后端装置110的用户接口114可包含至少一个显示装置。显示装置可包含提供对人可察觉的视觉信号、听觉信号、触觉信号或它们的任何组合的任何合适装置,包含但不限于触摸屏、LCD、LED、CRT、等离子体或其它合适的显示屏、音频扬声器或其它音频产生装置、它们的组合等。
在一些实施例中,后端装置110的用户接口114可包含至少一个用户输入装置,其为使用后端装置110的指定人员提供接口。用户输入装置可包含从用户接收输入的任何合适的装置,包含但不限于一或多个手动操纵器(诸如但不限于开关、按钮、触摸屏、旋钮、滑块、键盘、鼠标等)、麦克风、照相机、图像传感器、任何类型的远程连接控件等。
仍然参考图1,除了存储器112以外(或作为存储器112的备选方案),后端装置110可操作地耦合到至少一个数据库170。在一些实施例中,数据库170可通过网络130被连接到后端装置110。在其它实施例中,数据库170可以以不通过网络130的其它合适的方式被连接到后端装置110。相比于在后端装置110中的存储器112,数据库170可能够存储更大量的信息并提供更大的安全等级以防止对所存储的信息的未授权访问。数据库170可包含任何合适的电子存储装置或系统,包含但不限于随机存取存储器RAM、只读存储器ROM、软盘、硬盘、加密狗或其它RSB连接的存储器装置等。
在具体实施例中,数据库170可为由redis服务器保持的NoSql数据库,以控制改变新数据块/线程的用户装置140a-140n并优化数据块/线程。用户装置140a-140n可能够与redis服务器交互来以异步的方式存储并访问数据(例如,在元数据由数据库170和/或存储器112保持的情况下,无瓶颈;实际数据可被存储在数据源120中)。此类访问的算法可被结构化,使得没有数据重叠的危害。可包含Atomic指令以避免冲突危害。
数据库170和/或存储器112可被配置成存储来自数据源120的源数据(例如,未被处理的数据)。在一些实施例中,源数据可被存储在数据库170或存储器112中的任一者中。在其它实施例中,源数据的至少一部分可被存储在数据库170和存储器112中的一者中,而源数据的独立部分可被存储在数据库170或存储器112中的另一者中。
在另外的实施例中,数据库170和/或存储器112可被配置成存储将通过网络130被发送到用户装置140a-140n的分段数据线程。处理器111可将源数据(例如,数据工作)分区为多个数据线程。每个数据线程可被发送给用户装置140a-140n中的一者以进行处理。在各种实施例中,数据库170和/或存储器112可仅存储识别源数据所需的元数据。源数据自身可被托管在内容分发网络(CDN)或驻留在数据源120内的另一服务器/数据库上。在数据块/线程变得以所述的方式可用时,用户装置140a-140n可拖动(例如,从后端装置110请求)该数据块/线程。由于与用户装置140a-140n中的每者的每个用户内核150相关联的不相等的处理时间,这可能是有利的。另选地,后端装置110可将数据块/线程推送到用户装置140a-140n。一旦被分区,数据线程可在数据库170和/或存储器112内被存储并编索引,直到数据线程由用户装置140a-140n中的一者处理。在通常被称为用户装置140n的用户装置可能出于各种原因不能处理数据线程的情况下,数据库170和/或存储器112可存储所分配但还未被处理的数据线程直到该数据线程已被处理。在又另外的实施例中,数据库170和/或存储器112可存储从用户装置接收到的处理后的数据线程结果。
在一些实施例中,数据线程和/或数据块可在后端装置110上被存储为数据列表,该后端装置可采用NoSql服务器的形式,其中,redis服务器保持用户装置和NoSql服务器之间的异步通信。借助于NoSql服务器允许快速访问平坦化数据结构的能力,该NoSql服务器可在一些实施例中使用。后端装置110(或其至少一部分)可通过CDN被设置,或包含在后端装置110或相关的数据库170中的数据可被复制到在世界各地分布的其它数据中心以消除任何的单点失效。因此,可实现持久性存储器以用于数据处理,即使包含数据的单节点服务器变成离线状态。在各种实施例中,每个数据线程/块可仅包含用户装置140a-140n所需的最小索引信息(例如,元数据)以检索或以其它方式获得待处理的正确数据和/或输出的数据。此外,处理数据线程所必需的任何其它元数据/参数(例如,脚本、指令、参数、算法、存储输出数据的位置、它们的组合和/或类似物)可被包含在每个数据线程/块中。因此,在接收数据块/线程(其可包含指出实际数据的位置的元数据)时,用户装置140a-140n可基于在数据块/线程中的元数据检索或以其它方式访问实际数据(位于服务器/数据库/网络而不是后端装置110,例如位于数据源120)。
用户装置140a-140n中的每者(例如,关于用户装置n 140n所述)可包含至少一个处理单元160、可操作地耦合到处理单元160的用户装置存储器161、用户网络装置163、用户装置接口164和用户内核150。用户装置140a-140n可为连接到网络130的专用或通用用户装置。在通用用户装置的数量不满足处理某些计算任务的预定阈值的情况下,可添加另外的专用的用户装置(以满足预定阈值或超出该阈值)。
处理单元160可被配置成执行用户装置140a-140n的一般功能。处理单元160可为任何合适的数据处理装置,诸如通用处理器、微处理器、GPU等。在替代实施方案中,处理单元160可为任何常规的处理器、控制器、微控制器或状态机。处理单元160也可被实施为计算装置的组合,例如DSP与微处理器的组合、多个微处理器、结合DSP内核的至少一个微处理器或任何其它此类配置。在具体实施例中,处理单元160可指的是用户装置140a-140n的GPU。GPU可经由浏览器被连接到网络130(例如,互联网)而无需使用简单的HTML5的插件(例如,java或flash),如通过提高的网络性能(例如,网络速度)所实现的那样。因此,处理单元160的进程可能不为用户装置140a-140n中的每者的用户注意。
用户装置存储器161可操作地耦合到处理单元160并且可包含用于存储软件和数据的任何合适装置,该软件和数据用于控制处理单元160并供该处理单元使用以执行本文所述的操作和功能。用户装置存储器161可为RAM、ROM、软盘、硬盘、加密狗或其它RSB连接的存储器装置等。
用户网络装置163可包含接口软件、硬件或它们的组合以用于通过网络130来通信。用户网络装置163可包含网络调制解调器、无线接收器或收发器电子器件和/或提高与网络130(或与联网装置)的有线或无线通信链路的软件。在具体实施例中,用户网络装置163可被耦合至处理单元160以用于提供通信功能。用户网络装置163可根据典型的行业标准,诸如但不限于CDMA、TDMA、FDMA、LTE、WiFi、FM、BT、NFC和/或类似物来提供通信。在一些实施例中,网络130可为互联网,因为用户装置140a-140n可使用最佳的带宽按地理方式扩展。在其它实施例中,网络130可为受限的本地网络。本地网络可与其它私有网络或通用互联网相关。
在另外的实施例中,用户装置140a-140n中的每者可另外包含插件和硬件以加速GPU(例如,用户内核150)处理。另外的插件可提供对用户装置140a-140n内的较低等级的优化功能的访问。另外的硬件可提升用户内核150的性能。用户装置140a-140n也可为数据中心的头节点,其处理发送给用户装置140a-140n的数据块/线程并将该数据块/线程中继回用户装置140a-140n以中继回到后端装置110。
在具体实施例中,用户装置140a-140n的用户装置接口164可包含用于向用户显示信息(例如,文字和图形)给用户的至少一个显示装置。显示装置可包含提供对人可察觉的视觉信号、听觉信号、触觉信号或它们的任何组合的任何合适装置,包含但不限于触摸屏、LCD、LED、CRT、等离子体或其它合适的显示屏、音频扬声器或其它音频产生装置、它们的组合等。
在一些实施例中,用户装置140a-140n的用户装置接口164可包含至少一个用户输入装置,其提供用于接受用户的输入的接口。用户输入装置可包含接收来自用户的输入的任何合适的装置,包含但不限于一个或多个手动操纵器(诸如但不限于开关、按钮、触摸屏、旋钮、滑块、键盘、鼠标等)、麦克风、照相机、图像传感器和/或类似物。
处理单元150可被配置成执行如上所述的用户装置140a-140n的数据线程处理功能。在一些实施例中,用户内核150可与处理单元160相同。在其它实施例中,用户内核150可为与处理单元160分隔开的处理装置。用户内核150可为用于处理数据线程的任何合适的数据处理装置,诸如至少一个通用处理器、微处理器、GPU等。在替代实施方案中,用户内核150可为任何常规的处理器、控制器、微控制器或状态机。用户内核150也可被实施为计算装置的组合,例如DSP与微处理器的组合、多个微处理器、结合DSP内核的至少一个微处理器或任何其它此类配置。
在具体实施例中,用户装置140a-140n中的每者可为任何有线或无线计算系统或装置。在一些实施例中,用户装置140a-140n可为用硬件或软件来配置以执行本文所述的操作的台式计算机、大型计算机、便携式计算机、平板装置等。例如,用户装置140a-140n中的每者可包含具有合适的处理能力、存储器、用户接口(例如,显示器和输入)能力和通信能力的典型台式PC或AppleTM计算机装置,其在用合适的应用软件(或其它软件)配置时,执行本文所述的操作。在其它实施例中,用户装置140a-140n可包含移动智能电话(诸如但不限于iPhoneTM、AndroidTM电话等)或具有合适的处理能力的其它移动电话。典型的现代移动电话装置包含电话通信电子器件以及一些处理器电子器件、一个或多个显示装置和小键盘和/或其它用户输入装置,诸如但不限于上述的输入装置。具体的实施例采用通常被称为智能电话的移动电话,除了电话通信能力以外,该移动电话具有相对高级的处理、输入和显示能力。然而,在本发明的另外实施例中,用户装置140a-140n可包含任何合适类型的移动电话和/或其它类型的便携式电子通信装置,诸如但不限于电子智能平板装置(诸如但不限于iPadTM)、便携式计算机等。通过本机库处理的移动GPU以及非移动GPU可被实施以在相同异步网络130上通信。
在一些实施例中,由用户装置140a-140n执行的功能可以通过利用现有的硬件用最少的附加硬件成本来实施。在其它实施例中,本文所述的系统和方法可以用被特定配置用以执行本文所述的操作的专用装置硬件来实施。在制造用户装置140a-140n期间,用于功能的硬件和/或软件可被并入用户装置140a-140n中,例如以作为初始制造商的配置的一部分。此类硬件和/或软件也可在初始制造以后被添加到用户装置140a-140n(例如,将一或多个软件应用安装到用户装置140a-140n上)。
图2为示出根据各种实施例的分布式数据处理方法200的示例的处理流程图。参考图1-2,分布式数据处理方法200可用分布式计算架构100来实施。在非限制性示例中,分布式数据处理方法200可被实施以用于实施本文所述的显示阈值技术的3维实时流传输系统和方法。
一般而言,此类3维实时流传输系统和方法可指的是被配置成将3维图形构造过程分区为更小的区块(例如,数据线程)以供多个用户装置140a-140n处理(例如,由用户内核150处理)的后端装置110。后端装置110可接着从用户装置140a-140n接收该更小区块中的每者的结果(例如,数据线程结果)并计算来自数据线程结果的3维重构数据。一旦计算,3维重构数据就可被传送到用户装置140a-140n中的每者以用于再现3维视频。本领域的普通技术人员应注意,分布式数据处理方法200适用于其它类型的图像数据处理和一般数据处理。
首先在块B210,后端装置110可从关于数据工作的数据源120接收源数据。在一些实施例中,源数据可为任何未被处理的数据,诸如但不限于图像数据、视频数据、音频数据、应用数据、它们的组合和/或类似物。数据工作可定义可在源数据内定义的特定计算任务。在非限制性示例中,尽管源数据为图形(例如,视频)数据,数据工作可描绘对应于帧的源数据的部分。
接下来在B220,后端装置110可被配置成将源数据(例如,每个数据工作)分区为多个数据线程。换句话说,源数据可被划分为多个数据工作,并且每个数据工作可被分区为多个数据线程。源数据的此类划分可用于将复杂的计算任务分解为供多个用户内核150处理的更小段,从而提供更精细的粒度和更大的处理能力。在具体实施例中,源数据的单元可被存储在后端装置110、数据库170或在网络130中或不在网络130中的第三方存储装置中。源数据的单元的分区可包含获得源数据的单元的每个离散块的位置指示符(例如,URL)。该离散块(或源数据单元自身)可不在数据线程中。然而,位置指示符可作为数据线程被存储或传输。换句话说,在一些实施例中,分区涉及元数据而不是数据。在其它实施例中,离散块自身作为数据线程被存储和传输。
在非限制性示例中,视频流(源数据)可作为独立的数据工作(例如,独立的帧、每个帧为数据工作)来接收。每个帧可另外基于顶点来划分(例如,数据线程)以进行处理。顶点可为目标空间内的预定点(例如,体育馆等),其中,每个顶点可与目标空间内的可定义体积相关联。每个顶点可对应于由数字照相机(数据源120)采集的像素、多像素或宏块的一部分。在各种实施例中,数据线程可为关于由一个照相机在单帧采集的一个顶点的视频图像/视频数据的单元。
接下来在块B230,后端装置110可在数据库170、存储器112、它们的组合和/或类似物中存储多个数据线程。在给定时间可能没有许多用户内核150可用来处理每个数据线程的情况下,所有数据线程可被存储。一些数据线程可立即通过分配给可用于进行处理的用户内核150来处理。其它未分配的数据线程可被存储在数据库170或存储器112中,直到新的用户内核150变为可用(例如,通过完成先前数据线程的数据线程处理或通过变为连接到网络130)。所有数据线程可被存储为元数据,该元数据包含输入数据位置、脚本、指令、参数、算法、存储输出数据的位置、需要设置的标记、它们的组合和/或类似物。在被处理以及输出被存储时,元数据位置可被去除,以优化新的未处理数据块/线程的周期化。
在块B240,后端装置110可被配置成向在网络130内的每个可用用户装置140n发送多个数据线程中的一者,其中,每个可用用户装置140n可包含用户内核150。在各种实施例中,后端装置110可以所述的方式识别网络130内的用户装置140a-140n。在用户装置140n具有处理数据线程的自由用户内核150时,用户装置140n可被视为可用的。数据块/线程可被从后端装置110推下或由用户装置140a-140n从后端装置110拉取。后端装置110可在推的过程中向用户装置140a-140n周期性地发送数据块/线程,其中,在该用户装置可用时,每个用户装置可接收并处理所发送的数据块/线程。另选地,用户装置可存储数据块/线程以供未来处理。在其它实施例中,用户装置140a-140n中的每者可在拉的过程中向后端装置110发送接收新的数据块/线程以处理的请求(在完成数据处理时)。在用户装置140a-140n可异步访问来自后端装置110的元数据并且用户装置140a-140n中的每者可以不同速率处理的情况下,由用户装置140a-140n拉取数据块/线程可能是经济高效的。发送给后端装置140a-140n的数据可基于以所述的方式的数据块/线程的优先级列表。
后端装置110可基于用户内核150的总处理能力、用户内核150的当前处理能力、网络带宽状态、它们的组合和/或类似物向每个可用用户装置140n分配数据线程。在一些实施例中,数据线程可包含用于处理数据线程嵌入式脚本或指令,其与数据线程一起被发送给用户装置。数据线程可包含元数据/脚本的指针,或指令可被包含在数据线程中,使得实际的脚本或指令可被存储在另一服务器/数据库中而不是存储在后端装置110和数据库170中。用户装置140a-140n可基于由数据线程的元数据所指出的位置来从另一服务器/数据库检索或以其它方式访问实际脚本或指令。脚本或指令可为数据线程指定的。在其它实施例中,指令可被预存储在用户装置140a-140n的用户装置存储器161中。在一些情况下,解密密钥也可随数据块/线程被发送,以用用户内核150(GPU)存储器解密对应的数据块/线程。用户内核150可接着用用户内核150来处理数据块/线程,并再加密块结果以用于私有或DRM处理。
接下来在块B250,后端装置110可经由网络130从可用用户装置140a-140n接收数据线程结果。每个数据线程结果可对应于所发送的数据线程。在可用用户装置140a-140n处理所发送的数据线程(例如,确定数据线程结果)之后,数据线程结果可由用户装置140a-140n发送给后端装置110。在具体实施例中,用户装置140a-140n中的一者可处理关于特定顶点的图像/视频数据,该特定顶点用于以所述的方式对应于该顶点的数据线程结果(例如,加权值)。
接下来在块B260,后端装置110可基于所接收到的数据线程结果来确定每个数据工作的工作成果。例如,后端装置110可存储对应于在它们被接收时构成数据工作的数据线程的所有数据线程结果。在给定与每个用户内核150相关联的网络特性和处理能力时,构成数据工作的数据线程结果可在不同时间接收。一旦接收到所有的数据线程结果,后端装置110就可确定整个数据工作的工作成果。在其它实施例中,用户装置140a-140n可在预计有大量的输出时,按块确定工作成果。接着工作成果的各块可被压缩到可管理的流中。在特定的实施例中,顶点的加权值(例如,从各种照相机和各种帧确定的)可被聚集和计算以确定关于对应于特定顶点的颜色的显示置信度。
接下来在块B270,后端装置110可向用户装置140a-140n发送工作成果以供消费。在具体的实施例中,用户装置140a-140n可接收关于对应于目标空间中的特定顶点的颜色的加权因子(例如,工作成果)并在用户装置存储器161内存储它们。用户装置140a-140n可基于与每个顶点相关联的颜色用处理单元160和/或用户内核150来重构3维重构过程中的目标空间。因此,用户装置140a-140n通过贡献它们的处理能力的至少一部分(通过用户内核150)并消费图形处理的最终产物来参与图形处理阶段。
图3A为示出根据各种实施例的目标空间300的透视图的示意性框图。图3B为示出目标空间300的前视图的示意性框图。参考图1-3B,目标空间300可被分区为多个体积310a-310h(例如,第一体积310a、第二体积310b、...、八个体积310h)。每个体积可与顶点相关联。例如,第一体积310a可与第一顶点320a相关联,第二体积310b可与第二顶点320b相关联、...、八个体积310h可与第八顶点320h相关联。体积310a-310h中的每者可为任何合适的形状,诸如但不限于长方体、立方体等。
在目标空间300的尺寸可能是已知的情况下,体积310a-310h和/或顶点320a-320h可被预确定。在一些实施例中,对于60'*30'*10'的目标空间300,有可能有6,000,000个顶点,诸如但不限于顶点320a-320h。在给定目标空间300中的更大数量的顶点可允许细化目标空间300。
在被投影到3维背景中并显示时,顶点320a-320h中的每者可对应于像素的一部分(例如,1/16、1/8、1/4、1/2等)、多个像素、宏块等。例如,用户装置140a-140n中的每者的用户装置接口164可被配置成基于顶点320a-320h显示目标空间300的3维投影。每个顶点可与显示特性,诸如但不限于颜色、纹理、频率变换、小波变换、均值、标准偏差相关联。本文所述的各种实施例可指的是作为示例性显示特性的颜色。本领域的普通技术人员应明白,所陈述的其它显示特性也可以类似的方式来实施。
每种显示特性可基于多照相机输出来确定。例如,多个照相机可被定位在目标空间300周围。在照相机姿势(位置和取向)可能事先已知的情况下,可确定每个照相机所采集的顶点320a-320h。例如,采集目标空间300的前视图的照相机可采集前面顶点(例如,第一顶点320a、第二顶点320b、第三顶点320c和第四顶点320d)。另外的照相机可沿目标空间300的维度采集目标空间300的后视图、顶视图、底部视图和/或侧视图。因此,单个顶点可由多个照相机采集。具体地,照相机可采集与每个顶点相关联的显示特性。一种显示特性为与每个顶点相关联的颜色。
对于在目标空间300内定义的每个顶点,加权值可被确定以用于与顶点相关联的每种可能颜色(和相关联的体积)。在照相机每次以第一颜色采集顶点(例如,在图像或视频的帧中)时,第一颜色的加权值将增加一。类似地,在照相机每次以第二颜色采集顶点时,第二颜色的加权值将增加一。因此,与顶点相关联的每种颜色的加权值被确定(即,确定能够采集顶点的多个照相机中的每者所采集的顶点的颜色)。特定颜色的更高加权值指示顶点由更大量的照相机以特定颜色采集,增加与给定时刻的特定颜色相关联的顶点的置信度。在一些实施例中,鉴于颜色(例如,第一颜色)的加权值超出阈值,则顶点可被确定与第一颜色相关联。在一些实施例中,用户装置140a-140n可基于与每个顶点相关联的颜色显示目标空间300的视频投影。在另外的实施例中,不对数据处理有帮助的另外装置(例如,在处理的时间未连接到网络130)也可受益于用户装置140a-140n和后端装置110的处理,并基于与每个顶点相关联的颜色显示目标空间300的视频投影。
通过以深度视频的形式向CDN流传输工作成果,可实现目标空间300的视频投影的显示,该深度视频从外面到里面扫描目标空间300并表示目标空间300。扫描可涉及提取输出视频的每个像素并从感兴趣的立方体区域的每4-5表面将其投影到空间中。在x、y、z中的所投影的顶点值可被编码位R、G、B以向用户装置流传输。接着用户装置可将数据再编译为实时3维模型以用于以不同视角、角度和距离观看。
在另一方法中,可确定所有颜色的标准偏差。如果标准偏差低于预定阈值,则可选择颜色的均值。另一方面,尽管所有潜在颜色的标准偏差高于预定阈值,意味着顶点在相当多的照相机中(例如,数据源120)被投影为不同的颜色。因此,顶点可在目标空间300中的体积的内部而不是与颜色相关联的顶点,这是可能的。
后端装置110可从环绕目标空间300的照相机接收源数据。接下来,后端装置110可基于与目标空间300相关联的顶点将源数据分区为多个数据线程。例如,对应于给定顶点的源数据的像素的一部分、多个像素、宏块可被识别(例如,关于块B220)并与顶点一起存储(例如,关于块B230)。也与顶点(有时候通过唯一的顶点ID被识别)一起存储的为用该顶点和对应的加权值识别的颜色。
图4A为示出根据各种实施例的数据线程400的示例的示意性框图。数据线程400可为本文引用的任何数据线程。一般而言,数据线程可包含对应于源数据的元数据(例如,源数据位置、源数据的部分的特定标识、其它合适的处理参数等),该源数据与元数据单独存储。实际的源数据可在数据源120中存储。元数据的大小可比实际的源数据自身更小,因此从后端装置110移到用户装置140a-140n是更经济有效的。用户装置140a-140n自身可基于存储在数据线程中的元数据检索或以其它方式访问实际的源数据以进行处理。另选地,数据线程可包含源数据自身。
具体地,图4A示出图形处理背景下的数据线程400,其中,源数据可为图像、视频帧、它们的组合和/或类似物。参考图1-4A,数据线程400可由后端装置110生成(通过以所述的方式分区源数据)、被存储在数据库170和/或存储器112中。在一些实施例中,数据线程400可包含至少位置410、大小420、图像数据URL 430和顶点ID 440。顶点ID 440可识别目标空间300内的特定顶点(例如,第一顶点320a)。
在各种实施例中,图像数据URL 430可为地址,通过该地址,用户装置140a-140n可访问或检索对应于数据工作的源数据(例如,图像、帧和/或类似物)的一部分。在具体实施例中,图像数据URL 430可为由照相机采集的图像/帧(例如,数据工作)的统一资源定位符地址。图像/帧可作为源数据存储在数据库170、存储器112或另一服务器上。图像/帧可采集目标空间300的多个顶点,包含与顶点ID 440相关联的顶点。位置410可为在与关于顶点ID440的顶点相关联的图像/帧(如被包含在图像数据URL430中)中的位置。位置410可为像素的分数或至少一个像素。大小420指的是与顶点相关联的图像/分数的部分的大小(例如,面积)。换句话说,大小420指示与顶点相关联的位置410周围的面积。大小420可为1/16、1/8、1/4、1/2、1、2、3、4个像素和/或类似物(在从位置410的图像/帧的任何方向延伸)。在一些实施例中,大小420可对应于与每个顶点相关联的体积。例如,体积越大,出现在图像上的顶点越大。
通过远程存储整个图像,并只向用户装置140a-140n发送足够的识别信息(例如,位置410、大小420和图像数据URL 430)以用于执行数据处理,在用于传输图像/帧数据的数据大小可能大于用于传输识别信息的数据大小的情况下,带宽可被保留。在其它实施例中,数据线程400可包含图像/帧的特定部分(由位置410、大小420和图像URL 430以其它方式所识别的)和顶点ID 440。
图4B为示出根据各种实施例的线程结果460的示例的示意性框图。参考图1-4B,线程结果460可由用户装置140a-140n中的每者生成并被传送给后端装置110。线程结果460可包含至少数据线程结果470和顶点ID440。数据线程结果470可为所述的数据线程400的处理结果。在具体实施例中,数据线程结果470可包含颜色或指示与图像/帧的面积相关联的颜色的指示符。例如,面积可由数据线程400的位置410和大小420来识别。图像/帧可被包含在图像数据URL 430内。源数据可被定位在网络130内或互联网上的任何位置。
在用户装置140a-140n中的每者接收数据线程400时,用户装置140a-140n中的每者通过访问所述的图像数据URL 430并用位置410和大小420定位面积,可检索与顶点相关联的图像/帧的面积。用户装置140a-140n中的每者可随后确定与该面积相关联的显示特性(例如,颜色)。颜色可与顶点ID 440一起在线程结果460中被回送给后端装置110。后端装置110随后可根据顶点ID 440对数据线程结果470的编索引。后端装置110可增加在数据线程结果470中列出的颜色或与顶点ID 440相关联的顶点的加权值。
在各种实施例中,单个数据线程400可被一次发送给用户装置140n。在先前的数据线程400已被处理时(例如,数据线程结果460已由后端装置110接收),另一数据线程400可被发送给用户装置140n。在其它实施例中,块(即,包含多个数据线程,诸如数据线程400的数据的单元)可被发送给用户装置140a-140n以用于分布式处理。因此,在多个数据线程400被传送到用户装置140a-140n时,时间可被保留。
图5为示出根据各种实施例的数据线程分配方法500的示例的处理流程图。在各种实施例中,数据线程分配方法500可对应于图2的分布式数据处理方法200的块B240。
现参考图1-5,首先在块B510,后端装置110可识别多个可用用户装置(例如,用户装置140a-140n)。在一些实施例中,在可用用户装置例如通过网络被连接到后端装置110时,可用用户装置可被识别。在非限制性示例中,后端装置110可提供用户装置140a-140n可访问的web服务(例如,采用网站的形式)。后端装置110可生成互联网协议(IP)地址的列表,其中,每个IP地址可表示用户装置140a-140n中的至少一者。在另一非限制性示例中,后端装置110可提供认证应用,使得一旦对后端装置110的认证是成功的,则用户装置140a-140n中的每者就可被识别。数据库170和/或存储器112可维护用户装置140a-140n的列表(如被合适的标识符,诸如IP地址、登录凭证和/或类似物所识别的)。
已识别的用户装置目前不在处理由后端装置110发送的任何数据线程400时,其可被视为可用用户装置。一旦连接到后端装置110,则在用户装置140a-140n中的一个或多个在处理由后端装置110分配的数据线程400时,用户装置140a-140n中的一个或多个变成“忙碌”。
在块B520,后端装置110可用处理器111确定与每个可用用户装置相关联的处理能力和网络状况。在一些实施例中,后端装置110可确定(例如,经由脚本)或促使每个可用用户装置确定每个可用用户装置的处理能力。处理能力可指的是总处理能力、目前可用的处理能力(考虑到不同于数据线程处理的过程的处理能力消费)等等。在一些实施例中,处理能力(例如,总处理能力)可从给定用户装置140n可用的用户内核150的数量逼近。在非限制性示例中,在可用用户装置具有8个或更多个用户内核150时,其可被视为具有高的处理能力,而另一可用用户装置具有4个或更少的用户内核150时,其可被视为具有低的处理能力。在具体的实施例中,用户内核150的数量可指的是GPU内核的数量。
在一些实施例中,后端装置110可确定(例如,经由脚本)与可用用户装置中的每者相关联的网络状况(例如,总的网络带宽、可用的带宽和/或类似物)。在另外的实施例中,后端装置110也可确定与后端装置110相关联的网络状况。
接下来在块B530,后端装置110(经由处理器111)可基于与每个可用的装置相关联的处理能力和/或网络状况来分配每个可用用户装置的数据线程的数量。一般而言,在处理能力和/或网络状况较大时,被分配给给定的可用用户装置的数据线程400的数量可较大。在一些实施例中,在与第二可用用户装置相比,第一可用用户装置具有更多处理能力(例如,总的处理能力、目前的处理能力和/或类似物)时,第一可用用户装置可比第二可用用户装置分配更多的数据线程400。例如,475个数据线程可被分配给具有16个用户内核150的可用用户装置,而200个数据线程可被分配给具有4个用户内核150的可用用户装置。在替代或另外的实施例中,在与第四可用用户装置相比,第三可用用户装置具有改善的网络状况(例如,更多的带宽和/或类似物)时,第三可用用户装置可比第四可用用户装置分配更多的数据线程400。
被分配给可用用户装置的数据线程的数量可被布置在块中。包含至少一个数据线程400的块可被发送给每个可用用户装置,并且被包含在该块中的每个数据线程400的线程结果460可(作为单元一起)返回给后端装置110。
基于与可用用户装置相关联的处理能力和网络状况以所述的方式确定在给定的实例中被发送给可用用户装置的数据线程400的数量(例如,块的大小)可以允许高效的数据处理来解决数据工作。在各种实施例中,块可要求可用用户装置的用户内核150的总处理能力和/或目前处理能力的少量百分比(例如,0.5%、1%、2%、5%、10%和/或类似物),使得该块的处理对可用用户装置的用户是微不足道的。因此,复杂的计算任务,诸如3维目标空间300的实时流传输可被分布式计算架构100、分布式数据处理方法200和本文的相关公开启用。
在各种实施例中,数据源120可向后端装置110连续和/或周期性地馈送源数据以用于分区(关于块B220)和存储(关于块B230)。例如,摄像机(作为数据源120)可连续馈送待处理的视频数据(作为源数据)。因此,在先前的数据线程400被可用用户装置处理时,待处理的新数据线程460可被分区、存储和备用。
接下来在块B540,后端装置110可(用处理器111)确定至少一个数据线程460是否保持未被分配给可用用户装置。在连接到后端装置110的可用用户装置的数量可能随着时间波动的情况下,在给定时间存储在数据库170和/或存储器112中的所有数据线程400可或不可被立即分配给可用用户装置。在所有的存储数据线程400在给定时间被分配时,分布式计算架构100可拥有大量的处理能力(例如,足够数量的用户内核150变得对后端装置110可用)来几乎即刻处理源数据,该处理仅经受网络和处理延迟。另一方面,在某一时刻分配之后保持的大量数据线程400可指示源数据的不充足处理能力和更长的处理时间。
在一些实施例中,工作成果的分辨率可基于处理能力(例如,可用的用户内核150的数量)来调节。例如,在较多数量的可用的用户内核150(超出预定的阈值)被连接到网络130时,工作成果(例如,处理后的图像数据)可为较高的分辨率,这需要较多的处理能力。另一方面,在较少数量的可用的用户内核150(低于预定的阈值)被连接到网络130时,工作成果(例如,处理后的图像数据)可为较低的分辨率,这需要较少的处理能力。
鉴于不存在数据线程400保持未分配,数据线程分配方法500可在块B550终止(B540:否)。在一些示例中,在所有未解决的已分区(关于块B220)和已存储(关于块B230)数据线程400已被分配给可用用户装置时,不存在剩下的数据线程400。在一些实施例中,在数据源120不再接收源数据时,可能出现这种情况。在其它实施例中,在数据源120还未向后端装置110传送新的源数据时或在后端装置110还未分区或存储对应于新的源数据的新数据线程400时,可能出现这种情况。
在各种实施例中,在未剩下数据线程时(B540:否),后端装置110可被配置成待机用于待分区/存储的新数据线程400。在确定(例如,利用处理器111)新的数据线程400被存储时,后端装置110可诸如但不限于关于块B530所述的基于与每个可用用户装置相关联的处理能力和/或网络状况,在该时间为每个可用用户装置分配多个新的数据线程400。数据线程分配方法500可从块B530继续向前(例如,至块B530、B540、B550、B560、B570和/或B580)。
鉴于存在剩下未分配的数据线程400,后端装置110可在块B560待机用于另外的用户装置(B540:是)。后端装置110在块B570检测到至少一个另外的用户装置,例如用户装置140a-140n时,待机块B560可被终止。在一些实施例中,在忙碌的用户装置(例如,被分配处理数据线程的块的用户装置)完成处理该块并返回包含在该块中的每个数据线程400的线程结果460时,该忙碌的用户装置被检测为另外的用户装置。在另外的实施例中,在块B540剩余的剩余数据线程400之后被后端装置110(以诸如但不限于关于块B510所述的方式)识别的用户装置140n可被视为另外的用户装置。
后端装置110可用处理器111周期性地寻求以检测另外的用户装置是否存在。在未检测到另外的用户装置时,后端装置110可在块B560恢复为待机(B570:否),直到已检测到至少一个另外的用户装置。尽管以所述的方式检测到至少一个另外的用户装置,后端装置110可在块B580将检测到的另外用户装置设置为可用的装置(B570:是)。接下来,后端装置110可基于与每个可用用户装置相关联的处理能力和/或网络状况,诸如但不限于关于块B530所述的向每个可用的(例如,另外)用户装置分配数据线程400(已分区和存储的剩下的数据线程以及新的未被处理的数据线程)。
图6为示出根据各种实施例的数据线程分配和再分配图600的示例的示意性框图。在各种实施例中,数据线程分配和再分配图600可对应于图2的分布式数据处理方法200的块B240。
现参考图1-6,数据源120可包括第一照相机(例如,照相机A 610a)和第二照相机(例如,照相机B 620b)。照相机A 610a和照相机B 610b中的每者可将图像/视频数据作为源数据馈送给后端装置110以被分区和存储以进行所述处理。例如,照相机A 610a可向后端装置110发送第一帧620a和第二帧620b。第一帧620a和第二帧620b可为连续的帧。照相机B610b可向后端装置110发送第一帧'630a和第二帧'630b。第一帧'630a和第二帧'630b可为连续的帧。
第一帧620a、第二帧620b、第一帧’630a、第二帧’630b可被后端装置110的处理器111划分为多个数据线程(诸如但不限于数据线程400)。如所述,每个帧可包含多个区域。每个区域可对应于给定空间(诸如但不限于目标空间300)内的顶点(诸如但不限于顶点320a-320g)。例如,第一帧620a可包含第一线程1 622a、第一线程2 622b、第一线程3 622c和第一线程4 622d。在各种实施例中,每个帧可包含400、1,000、5,000、20,000、360,000个数据线程。出于说明目的,仅示出每个帧的4个数据线程。
数据线程(例如,第一线程1 622a-第一线程4 622d、第二线程1 624a-第二线程4624d、第一线程'1 626a-第一线程'4 626d和第二线程1 628a-第二线程4 628d)中的每者可被分配给例如关于块B510被识别的可用用户装置。第一线程1 622a可被分配给用户装置1 690a、第一线程2 622b可被分配给用户装置2 690b、…以及第二线程’4可被分配给用户装置16 690p。应明白,各种大小的块(例如,包含各种数量的数据线程)可被分配给不同的用户装置。为了简化起见,示出一个数据线程被分配给迥然不同的用户装置。
第二线程2 624b可被分配(初始)给用户装置6 690f以进行处理。在一些实施例中,被分配给可用用户装置(例如,用户装置6 690f)的数据线程400的处理可能出于各种原因,诸如但不限于网络故障、后端装置110的有效断开、处理故障、不成功的数据线程400或结果线程的传输(例如,数据线程结果470)、它们的组合和/或类似物而失败。后端装置110可检测此类故障并向另一用户装置(例如,用户装置17 690q)再分配第二线程2 624b以进行处理。
在一些实施例中,在对应于用于给定照相机(例如,照相机A 610a)的时间之前接收的数据线程400可(由后端装置110的处理器111)优先于在以后时间的相同照相机或另一照相机(例如,照相机B 610b)的帧。使一个数据线程400优先于另一数据线程是指一个数据线程400被分配给可用用户装置,而只有在另外的用户装置可用时,另一数据线程400被分配给另一用户装置。换句话说,在先前帧的数据线程(例如,第一线程1 622a)和后面帧的数据线程(例如,第二线程1 624a)待机并待被分配给用户装置时,先前帧的数据线程400可被首先分配给可用用户装置。例如,只有在用户装置1 690a在分配时间可用时,第一线程1622a(而不是第二线程1 624a)可被分配给用户装置1 690a。在以后的时间用户装置5 690e变为可用时,第二线程1 624a可被分配给用户装置5 690e。
在一些实施例中,在对应于给定照相机之前接收到的帧的失败数据线程400可相对于对应于相同或不同照相机的帧的数据线程更优先(由后端装置110的处理器111)。在具体实施例中,失效的数据线程400只可比还未被处理的(相同或不同照相机的)后续帧的数据线程400优先。
因此,多个数据线程400(或块)可通过多个用户装置140a-140n(或用户内核150)异步并行处理。每个数据线程400/块可被用户装置140n处理,而与用于其它数据线程400/块的其它用户装置140a-140n的处理无关。在用户装置140n变得可用于处理时,任何用户装置140n可以处理任何数据线程400。应指出,基于时间(例如,帧的顺序排序)和处理状态(例如,失败的数据线程可利用可用用户装置来处理以控制流传输延迟)的对数据线程的分配优先级可被实施以如所述优化处理。
与分布式数据处理系统和方法相关联的优点也包含处理能力的自由扩展。分布式数据处理系统的处理能力可取决于连接到后端装置110(例如,其可为异步NoSql元数据服务器)的用户装置140a-140n的数量。在更多的用户装置140a-140n被连接到后端装置110时,处理能力得以放大,反之亦然。
在一些实施例中,在用户装置(例如,用户装置140a-140n)处的数据处理可被执行(例如,作为在web浏览器中的触发器)而无需特殊插件,从而简化数据处理。例如,用户装置140a-140n中的每者可为支持HTML5的web客户端,其可以所述的方式执行数据处理而无需使用插件。在一些实施例中,可消除将用户装置140a-140n连接到后端装置110以及检索未处理数据的所有障碍。不需要下载软件来进行处理。与总处理能力或目前可用的处理能力相比,数据处理需要用户装置140a-140n的最小处理能力。在各种实施例中,数据线程400/块的数据处理对使用用户装置140a-140n的用户的体验基本没有影响(如果有的话)。
图7为示出在一些实施例中的管理界面700的示例屏幕。管理界面700可由后端装置110的用户接口114显示给操作后端装置110的指定人员。通过管理界面700,指定人员可监测分布式数据处理(例如,图2的分布式数据处理方法200、图5的数据线程分配方法500、图8的数据处理方法800、它们的组合和/或类似物)。
参考图1-7,管理界面700可被配置为由后端装置110的用户接口114的显示装置显示的窗口界面。管理界面700可至少包含装置表格710和数据工作图720。装置表格710和/或数据工作图720可以任何合适的位置、大小、取向在管理界面700内布置。管理界面700可包含选项,以在连接到网络130的可用用户装置140a-140n可能不足以处理计算任务(例如,源数据)时,从第三方内核(诸如用户内核150)供应商购买另外的用户装置(诸如用户装置140a-140n)。
装置表格710可列出连接到后端装置110的多个用户装置(例如,用户装置140a-140n)。换句话说,装置表格710可显示如关于块B510被识别的可用用户装置。每个可用用户装置可在单独的条目(例如,行),诸如但不限于第一条目740a、第二条目740b、第三条目740c、第四条目740d和第五条目740e中列出。可在装置表格710中显示另外的条目。
每个可用用户装置可通过唯一的标识,诸如但不限于在IP地址栏715中列出的IP地址来识别。例如,条目740a-740e中的每者可包含在IP地址栏715中识别的对应IP地址。每个IP地址可与用户装置中的两者或多者相关联。对于条目740a-740e中的每者,内核的总数在根据一些实施例的总内核栏730中显示。用户装置中的每者可与至少一个内核相关联。例如,与第一条目740a(具有IP地址75.82.189.xx)相关联的用户装置可包含32个内核。在另一示例中,与第五条目740e(具有IP地址79.61.525.xx)相关联的用户装置可仅包含4个内核。
与每个IP地址相关联的执行时间(如在执行时间栏735中显示的)可在装置表格710中显示。在一些实施例中,执行时间可为处理所分配数据线程中的一者所需的平均时间。因此,与每个IP地址相关联的执行时间可取决于处理能力(例如,较高的处理能力可与较快的执行时间相关联)。例如,与第一条目740a(具有IP地址75.82.189.xx)相关联的用户装置可能需要25.2ms来执行所分配的每个数据线程。在另一示例中,与第五条目740e(具有IP地址79.61.525.xx)相关联的用户装置可能需要41.7ms来执行所分配的每个数据线程。在其它实施例中,执行时间可能要考虑网络状况。例如,执行时间可从数据线程通过后端装置110的传输到线程结果的接收所测量的时间,从而考虑了网络传输延迟。
在一些实施例中,装置表格710可包含由后端装置110处理的多个数据线程和/或由后端装置110分配对应IP地址的多个数据线程。例如,与第一条目740a(具有IP地址75.82.189.xx)相关联的用户装置可被分配475个数据线程来进行处理,所有数据线程已被处理。在另一示例中,与第五条目740e(具有IP地址79.61.525.xx)相关联的用户装置可被分配100个数据线程来进行处理,10个数据线程已被处理。
在一些实施例中,装置表格710可包含在FPS栏755中指示的帧每秒(FPS),该FPS栏对应于在IP地址栏715中列出的每个IP地址。FPS指示消费工作结果的性能,其由后端装置110基于每个可用用户装置的线程结果460来确定。工作结果可被传送至用户装置140a-140n以用于消费。工作结果可为与实时3维流传输的目标空间(例如,目标空间300)内的每个顶点(例如,顶点320a-320h)相关联的加权值。提高处理能力和网络状况可产生更高的FPS,反之亦然。
数据工作图720可示出源数据和/或数据工作。在一些实施例中,数据工作可为处理图形数据。具体地,在数据工作图720中示出的数据工作是为了处理包含采集的数据750的帧795。如所述,每个数据工作可被分段为多个数据线程(例如,数据线程760-775)。每个数据线程可与帧795内的迥然不同的区域相关联。
在另外的实施例中,管理接口700可包含图和图表,其图形化示出关于数据工作的总数、时间、内核的数量、可用/总线用户装置的数量、它们的组合和/或类似物的已处理数据工作。
图8为示出根据各种实施例的数据处理方法800的示例的处理流程图。数据处理方法800可由用户装置(例如,用户装置140a-140n)来执行。参考图1-8,用户装置140n可在块B810连接到后端服务器110。在各种实施例中,通过评估由后端装置110托管的网站或通过登录到后端装置110,用户装置140n可(经由用户网络装置163)连接到后端装置110。换句话说,在用户装置140n已被后端装置110根据块B510识别时,用户装置140n可被连接到后端装置110。
接下来在块B820,用户装置140n可接收包含至少一个数据线程460的数据块,该数据块被设置为当前数据块。在一些实施例中,后端装置110可以所述的方式向用户装置140a-140n定期推送数据块/线程。在其它实施例中,用户装置140a-140n中的每者可在拉取的过程中向后端装置110发送接收新的数据块/线程以处理的请求(在完成数据处理时)。发送给后端装置140a-140n的数据可基于以所述的方式分配优先级的数据块/线程的列表。
接下来在块B830,用户装置140n可被配置成处理当前的数据块。在一些实施例中,处理当前的数据块可包含确定与帧的区域相关联的颜色的加权值,该区域对应于在目标空间300内的顶点(例如,顶点320a-320h)。接下来在块B840,用户装置140n可向后端服务器110发送块结果。块结果可包含至少一个数据线程结果470。
接下来在块B850,用户装置140n可确定是否已从后端装置110接收另外的数据块。在用户装置140n还未从后端装置110接收另外的数据块时,用户装置140n可在块B860待机(B850:否)。另一方面,鉴于用户装置140n从后端装置110已经接收至少一个另外数据块,用户装置140n可被配置成在块B880(B850:否)将该另外数据块设置为将在块B830进行处理的当前数据块。
在块B810连接到后端装置110之后,用户装置140n可从后端装置110接收第一工作结果以用于在块B895消费。第一工作结果可基于由不是用户装置140n的用户装置(例如,用户装置140a、用户装置140b、...、用户装置140n-1)输出的块结果。例如,在用户装置n 140n被连接到后端装置之前,第一工作结果可基于先前由其它用户装置处理的数据线程/块来确定。
在块B840向后端服务器110发送块结果之后,用户装置140n可从后端装置110接收第二工作结果以用于在块B890消费。第二工作结果可基于由用户装置(例如,用户装置140a、用户装置140b、...、用户装置140n-1)以及用户装置140n输出的块结果。
在用户装置140n未接收用于处理的任何数据块而在块B860待机时,用户装置140n可从后端装置110接收第三工作结果以用于在块B870消费。第三工作结果可基于由不是用户装置140n的用户装置(例如,用户装置140a、用户装置140b、...、用户装置140n-1)输出的块结果。
工作结果(例如,与顶点320a-320h相关联的加权值)可被用于确定目标空间300的3维投影以用于通过用户装置接口164输出实时3维视频。
图9为示出根据各种实施例的面向GPU的分布式数据处理方法900的示例的处理流程图。参考图1-9,面向GPU的分布式数据处理方法900可为分布式数据处理方法200、数据处理方法800和/或本文所述的相关系统和方法的特定具体实施。例如,面向GPU的分布式数据处理方法900可对应于数据处理方法800的块B830。面向GPU的分布式数据处理方法900可利用用户装置,诸如但不限于用户装置140a-140n来实施。在面向GPU的分布式数据处理方法900的具体实施例中,至少一个GPU可被实施为用户装置的用户内核150。
首先在块B910,用户装置(经由其处理单元160或其GPU内核)可识别对应于(例如,在块B830)所接收到的数据块的源数据的至少一部分,源数据被格式化为GPU兼容的格式以用于由用户装置的GPU来处理。源数据可根据GPU兼容的格式(由后端装置110或由数据源120)编码或进行格式化以用于由用户装置的GPU来处理。例如,着色器语言标准可被用于GPU处理。源数据可被编码或以其它方式格式化为元素,诸如但不限于几何形状、顶点、纹理、法线、用于着色器语言自身的代码和/或类似物。一旦被变换,源数据就可被流传输或以其它方式发送到着色器中以用于GPU处理。在具体实施例中,源数据(例如,图像或视频的帧)可被格式化为纹理(与其它元素相比)以用于进行快速GPU处理(例如,以120fps)。
数据块可包含至少一个数据线程,每个数据线程可包含对应于源数据(例如,图像或视频的帧)的元数据(例如,实际源数据的位置、源数据的部分的特定标识符、处理参数和/或类似物)。基于源数据的位置(例如,URL数据)和关于该数据线程的源数据的部分的标识符(例如,图像/帧的区域的坐标),用户装置可从数据源120定位和检索用于处理的源数据的相关部分。一旦在用户装置接收到着色器格式(或其它合适的GPU兼容格式)的源数据,可出现这种情况。
接下来在块B920,用户装置可用至少一个GPU来处理GPU兼容格式(例如,采用所述的着色器语言)的源数据的至少一个部分(在块B910中识别的)。一般而言,处理可涉及包含数学函数的字符串的任何处理,其可利用用于矩阵数学和低级函数的OpelGL优化管路的优点以有效的方式完成。
在一些具体的实施例中,此类处理可涉及将2维图像(其在着色器语言中被格式化为纹理或其它合适的元素)投影为在目标空间(例如,目标空间300)内定义的一组顶点(例如,顶点320a-320h)。例如,目标空间的一组全部顶点或其一部分(例如,整组顶点的子集、顶点的子集可以合适的方式布置成诸如直线、平面、体积等)可用数据块/线程或单独经由至用户装置的其它数据单元来设置。用户装置可将所接收到的至少一个顶点投影到由作为数据块/线程所发送的元数据所识别的帧/图像的区域。
在其它或另外的具体实施例中,用户装置可用其GPU来确定对应于至少一个顶点的帧/图像的区域的显示特性。借助于所示的非限制性示例,用户装置可被配置成对相对于目标像素的环绕的像素的数量求平均(其可为由数据线程识别的图像的区域)以输出作为目标像素的颜色的均值。
接下来在块B930,用户装置可用至少一个GPU向用户装置的用户接口164(例如,用户接口164的显示装置)再现(例如,在块B920)处理的结果。在完成处理之后,GPU可向用户装置的屏幕再现该结果。接下来在块B940,用户装置可复制再现的结果并向后端装置110或另一远程存储回送该再现结果以用于以所述的方式聚集任何计算工作成果。因此,所处理的结果可很容易和快速地从GPU和用户装置送出。
图10为示出根据各种实施例的面向GPU的分布式数据处理方法1000的另一示例的处理流程图。参考图1-10,面向GPU的分布式数据处理方法1000可为分布式数据处理方法200和/或本文所述的相关系统和方法的特定具体实施。例如,面向GPU的分布式数据处理方法1000可对应于分布式数据处理方法200的块B240和B250。面向GPU的分布式数据处理方法1000可用后端装置110来实施。在面向GPU的分布式数据处理方法1000的具体实施例中,至少一个GPU可被实施为用户装置的用户内核150。
首先在块B1010,后端装置110(或数据源120或另一装置)可提供采用GPU兼容的格式的源数据以用于由多个GPU进行分布式处理。每个GPU可与用户装置相关联。例如,着色器语言标准可被用于对GPU处理进行编程。源数据可被编码或以其它方式格式化为元素,诸如但不限于几何形状、顶点、纹理、法线和用于着色器语言自身的代码。一旦被变换,源数据就可被流传输或以其它方式发送到着色器中以用于GPU处理。在具体实施例中,源数据可被转换为纹理(与其它元素相比)以用于进行快速GPU处理(例如,以120fps)。
接下来在块B1020,后端装置110可以诸如但不限于在块B240中的方式向多个GPU中的每者发送对应于源数据的至少一部分的至少一个数据块。至少一个数据块可包含至少一个数据线程,每个数据线程可包含对应于源数据(例如,图像或视频的帧)的元数据(例如,源数据的位置、源数据的部分的特定标识符、处理参数和/或类似物)。基于源数据的位置(例如,URL数据)和关于该数据线程的源数据的部分的标识符(例如,图像的区域的坐标),用户装置可定位和检索用于处理的源数据的相部分。一旦在用户装置接收到着色器格式的源数据,可出现这种情况。
接下来在块B1030,后端装置110可从多个GPU中的每者接收结果,每个结果以诸如但不限于块B250的方式被再现给与多个GPU中的每者相关联的用户接口164。用户装置可用至少一个GPU以诸如但不限于关于块B920所述的方式来处理GPU兼容格式(例如,采用所述的着色器语言)的源数据的至少一个部分(在块B910中识别的)。接着GPU可以关于B930所述的方式向用户接口再现结果并以在块B940所述的方式将该结果复制并传送到后端装置110。
异步计算web架构的各种具体实施可与图像/视频处理(例如,过滤图像、图像中的面部识别、3维投影等)、基因数据处理、货币套利数据、天气数据、顶点数据、化学公式或分布式计算任务所需的其它随机数据相关。换句话说,源数据可为任何并行数据集。在一些实施例中,不同的数据块可利用用户装置140a-140n的地理位置分布的优点以支持大数据的问题的解决方案。
在一些另外的实施例中,分布式计算处理架构100可被实施以解决货币兑换套利算法(例如,使用贝尔曼福特最短路径算法,其确定在采用货币汇率的日志时的无限循环周期)。在一些实施例中,用户装置140a-140n中的每者可与货币相关联。关联货币(可采用数据块/线程的形式的数据)可由后端装置110基于与用户装置140a-140n中的每者相关联的地理位置(即,用户装置140a-140n中的每者可被分配用在该地理位置的货币)来分配。因此,在用户装置140a-140n检测对应于所分配的货币的无限循环周期时,其可能更接近可以最高效交易所分配的货币的金融机构。例如,用户装置可在金融机构中或邻近金融机构。用户装置140a-140n可使用浏览器被连接到后端装置110或使用后台的分布式计算架构100连接到社交网络以进行数据处理,这对于用户装置140a-140n的用户是未察觉的。因此,在网络130的带宽能力增加时,此分布式计算架构100可扩大集中的套利超级计算机的规模。分布式计算架构100(例如,后端装置110)可用社交网络(如网络130)来实施。
在一些另外的实施例中,原始的视频/图像数据(例如,如源数据)可被扩展和编码到并行重叠段(例如,在块B210接收到的、在块B220分区的、在块B230存储的和在块B240发送的)中,每个段可被视为将由用户装置140a-140n中的单独一者处理的数据块/线程。因此,任何数据块/线程可在任何编码系统可以完成编码整个视频/图像之前完成处理(例如,在块B250-B260)。因此,原始的视频/图像数据的所有段可被立即、几乎同时完成。具有大量的用户装置140a-140n(例如,社交网络站点)的服务器可提供前所未有的处理能力。
在一些另外的实施例中,基因序列数据可被接收(例如,在块B210)、分区(例如,在块B220)和存储(例如,在块B230)为数据块/线程。数据块/线程可被发送给用户装置140a-140n(例如,在块B240)以用于进行处理(例如,在块B250)。具体地,基因序列数据可基于基因类别来划分(在块B220)以用于并行处理。搜索窗口可跨DNA的串提供并被发送到分布式计算架构100中以用于自动分类。
在其它另外的实施例中,存储在社交网络上的图像可随着时间缓慢处理以自动识别任何随机角落或特征,接着向用户装置140a-140n发送以在足够数量的角落或特征已在一起被识别形成对象和人时识别该角落或特征。随着时间推移,所有对象和人被分布式计算网络100自动学习,其不断地由其用户的输入教导。识别处理可由社交网络几乎无成本地实现,因为识别处理由连接到网络130(例如,社交网络)的用户装置140a-140n完成。
上述参考图1-8的各种实施例包含各种处理或任务的性能。在各种实施例中,此类处理或任务可通过从计算机可读存储介质读取的计算机代码的执行来实施。例如,在各种实施例中,一个或多个计算机可读存储介质存储一个或多个计算机程序,在一个或多个计算机程序由处理器执行时,促使处理器执行关于在上述实施例中的处理器所述的处理或任务。而且,在各种实施例中,一个或多个计算机可读存储介质存储一个或多个计算机程序,在一个或多个计算机程序由装置执行时,促使计算机执行关于在上述实施例中提到的装置所述的处理或任务。在各种实施例中,一个或多个计算机可读存储介质存储一个或多个计算机程序,在一个或多个计算机程序由数据库执行时,促使该数据库执行关于在上述实施例中的数据库所述的处理或任务。
因此,各实施例包含程序产品,该程序产品包含用于执行或具有存储在其上面的计算机或机器可执行指令或数据结构的计算机可读或机器可读介质。此类计算机可读存储介质可以为例如通过通用或专用计算机或带有处理器的机器可存取的任何可用介质。借助于示例,此类计算机可读存储介质可以包含半导体存储器、闪存、硬盘、诸如光盘(CD)或数字多功能盘(DVD)的光盘、磁存储、随机存取存储器(RAM)、只读存储器(ROM)和/或类似物。这些类型的存储器的组合也被包含在计算机可读存储介质的范围内。计算机可执行程序代码可包含,例如促使计算机或处理机器执行某些功能、计算、行为等的指令和数据。
本文所公开的实施例在所有方面被视为说明性的而非限制性的。本公开不以任何方式局限于本文描述的实施例。在不脱离本公开的精神和范围的情况下,可以对上述实施例做出许多修改和变化。落在权利要求的含义和等效范围内的各种修改和变化旨在落入该公开的范围内。

Claims (20)

1.一种用于处理数据的方法,所述方法包括:
由后端装置接收源数据;
由所述后端装置将所述源数据分区为多个数据线程;
由所述后端装置向多个用户装置中的每者发送所述多个数据线程中的至少一者;并且
由所述后端装置基于多个数据线程结果来确定所述源数据的工作成果,所述多个数据线程结果中的每者由所述多个用户装置中的一者基于所述多个数据线程中的所述至少一者确定。
2.根据权利要求1所述的方法,其中:
所述源数据为视频数据;并且
所述数据工作包括用于所述视频数据的帧的图像处理。
3.根据权利要求2所述的方法,其中:
将所述源数据分区为所述多个数据线程包括:基于与所述帧和多个区域相关联的元数据将所述帧分区为所述多个区域,所述多个区域中的每个区域对应于所述多个数据线程中的一者。
4.根据权利要求2所述的方法,其中,将所述源数据分区为所述多个数据线程包括基于所述源数据的像素来分区所述源数据。
5.根据权利要求2所述的方法,其中,所述帧为目标空间的图像。
6.根据权利要求5所述的方法,其中:
所述目标空间由多个顶点组成;并且
所述多个顶点中的每者对应于所述目标空间的3维部分。
7.根据权利要求6所述的方法,其中:
所述多个数据线程中的每者与所述多个顶点中的至少一者相关联;并且
所述多个数据线程中的每者对应于所述帧的区域。
8.根据权利要求7所述的方法,其中,所述数据线程结果中的每者通过确定与至少一种显示特性相关联的加权值来确定,所述至少一种显示特性与所述帧的所述区域相关联。
9.根据权利要求8所述的方法,其中,所述显示特性至少包括与所述帧的所述区域相关联的颜色。
10.根据权利要求6所述的方法,其中,所述帧采集所述多个顶点中的至少一些顶点。
11.根据权利要求6所述的方法,其中,所述用户装置基于所述工作成果显示所述目标空间的3维投影。
12.根据权利要求1所述的方法,其中,确定所述工作成果包括:
由所述后端装置从所述多个用户装置接收所述多个数据线程结果;并且
基于所接收到的所述多个数据线程结果来确定所述数据工作的所述工作成果。
13.根据权利要求1所述的方法,其中,发送所述多个数据线程中的至少一者包括:
确定所述多个用户装置中的每者的处理能力和网络状况中的至少一者;并且
基于所述处理能力和网络状况中的至少一者向所述多个用户装置中的每者分配所述多个数据线程中的至少一者。
14.根据权利要求1所述的方法,还包括将所述源数据格式化为图形处理单元(GPU)兼容的格式,其中,所述多个数据线程结果中的每者由与所述多个用户装置中的每者相关联的至少一个GPU确定。
15.根据权利要求14所述的方法,其中,所述GPU兼容的格式与着色器语言相关联。
16.根据权利要求15所述的方法,其中,所述源数据被格式化为下列元素中的至少一者:几何形状、顶点、纹理、法线和用于着色器语言的代码。
17.根据权利要求1所述的方法,其中,所述数据线程结果通过以下操作来确定:
向所述用户装置的显示屏再现所述数据线程结果;以及
复制向所述显示屏再现的所述数据线程结果。
18.根据权利要求17所述的方法,还包括:在所述多个数据线程结果已向与每个用户装置相关联的显示屏再现之后,由所述后端装置接收所述多个数据线程结果。
19.一种用于处理数据的设备,所述设备包括:
后端装置,所述后端装置被配置成:
接收源数据;
将所述源数据分区为多个数据线程;
向多个用户装置中的每者发送所述多个数据线程中的至少一者;
基于多个数据线程结果来确定所述源数据的工作成果,所述多个数据线程结果中的每者由所述多个用户装置中的一者基于所述多个数据线程中的所述至少一者确定;并且
向所述多个用户装置中的至少一者发送所述工作成果。
20.一种存储程序指令的非暂态计算机可读存储介质,在所述程序指令被执行时,促使处理器:
接收源数据;
将所述源数据分区为多个数据线程;
向多个用户装置中的每者发送所述多个数据线程中的至少一者;
基于多个数据线程结果来确定所述源数据的工作成果,所述多个数据线程结果中的每者由所述多个用户装置中的一者基于所述多个数据线程中的所述至少一者确定;并且
向所述多个用户装置中的至少一者发送所述工作成果。
CN201580020841.1A 2014-03-12 2015-03-09 用于可扩展的异步计算架构的系统和方法 Pending CN106663081A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201461952055P 2014-03-12 2014-03-12
US61/952,055 2014-03-12
US14/537,768 US9417911B2 (en) 2014-03-12 2014-11-10 Systems and methods for scalable asynchronous computing framework
US14/537,768 2014-11-10
PCT/US2015/019511 WO2015138347A1 (en) 2014-03-12 2015-03-09 Systems and methods for scalable asynchronous computing framework

Publications (1)

Publication Number Publication Date
CN106663081A true CN106663081A (zh) 2017-05-10

Family

ID=54068987

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201580021123.6A Pending CN106663330A (zh) 2014-03-12 2015-03-09 用于三维重建在网络上的大量分发的系统和方法
CN201580021389.0A Pending CN106537458A (zh) 2014-03-12 2015-03-09 用于基于顶点重构三维模型的系统和方法
CN201580020841.1A Pending CN106663081A (zh) 2014-03-12 2015-03-09 用于可扩展的异步计算架构的系统和方法

Family Applications Before (2)

Application Number Title Priority Date Filing Date
CN201580021123.6A Pending CN106663330A (zh) 2014-03-12 2015-03-09 用于三维重建在网络上的大量分发的系统和方法
CN201580021389.0A Pending CN106537458A (zh) 2014-03-12 2015-03-09 用于基于顶点重构三维模型的系统和方法

Country Status (4)

Country Link
US (4) US9417911B2 (zh)
EP (3) EP3117402A1 (zh)
CN (3) CN106663330A (zh)
WO (3) WO2015138347A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109819178A (zh) * 2017-11-21 2019-05-28 虹软科技股份有限公司 一种用于帧处理的方法和装置

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9417911B2 (en) * 2014-03-12 2016-08-16 Live Planet Llc Systems and methods for scalable asynchronous computing framework
US9462239B2 (en) * 2014-07-15 2016-10-04 Fuji Xerox Co., Ltd. Systems and methods for time-multiplexing temporal pixel-location data and regular image projection for interactive projection
US10554713B2 (en) * 2015-06-19 2020-02-04 Microsoft Technology Licensing, Llc Low latency application streaming using temporal frame transformation
US10482331B2 (en) * 2015-11-20 2019-11-19 GM Global Technology Operations LLC Stixel estimation methods and systems
JP6842618B2 (ja) 2015-12-14 2021-03-17 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 3dマップの作成
US10204444B2 (en) * 2016-04-28 2019-02-12 Verizon Patent And Licensing Inc. Methods and systems for creating and manipulating an individually-manipulable volumetric model of an object
US10623662B2 (en) 2016-07-01 2020-04-14 Snap Inc. Processing and formatting video for interactive presentation
US10622023B2 (en) * 2016-07-01 2020-04-14 Snap Inc. Processing and formatting video for interactive presentation
US10325403B2 (en) * 2016-08-24 2019-06-18 Google Llc Image based rendering techniques for virtual reality
EP3565259A1 (en) * 2016-12-28 2019-11-06 Panasonic Intellectual Property Corporation of America Three-dimensional model distribution method, three-dimensional model receiving method, three-dimensional model distribution device, and three-dimensional model receiving device
JP6835207B2 (ja) * 2017-03-23 2021-02-24 日本電気株式会社 運用管理サーバ、開発運用支援システム、それらの方法及びプログラム
US10491666B2 (en) * 2017-04-03 2019-11-26 Sony Interactive Entertainment America Llc Systems and methods for using a distributed game engine
US10475483B2 (en) 2017-05-16 2019-11-12 Snap Inc. Method and system for recording and playing video using orientation of device
WO2019023376A1 (en) * 2017-07-28 2019-01-31 Siemens Healthcare Diagnostics Inc. METHODS AND APPARATUS FOR QUANTIFYING DEEP LEARNING VOLUME
US10600142B2 (en) * 2017-11-02 2020-03-24 Advanced Micro Devices, Inc. Compression and decompression of indices in a graphics pipeline
CN107918948B (zh) * 2017-11-02 2021-04-16 深圳市自由视像科技有限公司 4d视频渲染方法
US10504248B2 (en) * 2018-03-30 2019-12-10 Microsoft Technology Licensing, Llc Machine learning applied to textures compression or upscaling
CN109242972B (zh) * 2018-08-14 2022-11-04 重庆大学 一种基于顶点特征的双法向网格模型光顺方法
CN109461198B (zh) * 2018-11-12 2023-05-26 网易(杭州)网络有限公司 网格模型的处理方法及装置
CN111954032A (zh) * 2019-05-17 2020-11-17 阿里巴巴集团控股有限公司 视频处理方法、装置、电子设备及存储介质
US11463680B2 (en) * 2019-11-01 2022-10-04 Faro Technologies, Inc. Using virtual landmarks during environment scanning
CN110726643A (zh) * 2019-11-18 2020-01-24 辽宁机电职业技术学院 一种用于钻石密度测试的激光探测系统及探测方法
CN111240627A (zh) * 2020-01-15 2020-06-05 北京小米移动软件有限公司 遥控器、投屏接收组件、电视、投屏系统及投屏方法
US20230067109A1 (en) * 2021-08-30 2023-03-02 Apple Inc. Performance islands for cpu clusters
US20230388543A1 (en) * 2022-05-25 2023-11-30 Tencent America LLC Temporal prediction based vertex position compression

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5850352A (en) 1995-03-31 1998-12-15 The Regents Of The University Of California Immersive video, including video hypermosaicing to generate from multiple video views of a scene a three-dimensional video mosaic from which diverse virtual video scene images are synthesized, including panoramic, scene interactive and stereoscopic images
WO2001031497A1 (en) 1999-10-22 2001-05-03 Activesky, Inc. An object oriented video system
US6525731B1 (en) * 1999-11-09 2003-02-25 Ibm Corporation Dynamic view-dependent texture mapping
US7405734B2 (en) * 2000-07-18 2008-07-29 Silicon Graphics, Inc. Method and system for presenting three-dimensional computer graphics images using multiple graphics processing units
US20040062433A1 (en) * 2001-03-16 2004-04-01 Munsell William Paul, Jr. Method to approximate section properties of mechnical elements through data obtained from digital images
US20040217956A1 (en) 2002-02-28 2004-11-04 Paul Besl Method and system for processing, compressing, streaming, and interactive rendering of 3D color image data
US7075541B2 (en) * 2003-08-18 2006-07-11 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
GB2405776B (en) 2003-09-05 2008-04-02 Canon Europa Nv 3d computer surface model generation
US7447331B2 (en) 2004-02-24 2008-11-04 International Business Machines Corporation System and method for generating a viewable video index for low bandwidth applications
US7750914B2 (en) 2004-08-26 2010-07-06 Intel Corporation Subdividing geometry images in graphics hardware
US7777741B2 (en) 2005-03-04 2010-08-17 Aiseek Ltd. Techniques for accurately determining visibility of objects from multiple viewpoints in a three-dimensional (3D) environment
US7768517B2 (en) * 2006-02-21 2010-08-03 Nvidia Corporation Asymmetric multi-GPU processing
WO2007148355A1 (en) 2006-06-22 2007-12-27 Stmicroelectronics S.R.L. A method and system for video decoding by means of a graphic pipeline, computer program product therefor
US8154554B1 (en) * 2006-07-28 2012-04-10 Nvidia Corporation Unified assembly instruction set for graphics processing
US7990397B2 (en) * 2006-10-13 2011-08-02 Leica Geosystems Ag Image-mapped point cloud with ability to accurately represent point coordinates
US7755631B1 (en) * 2006-10-24 2010-07-13 Nvidia Corporation Transposition structures and methods to accommodate parallel processing in a graphics processing unit (“GPU”)
US9015301B2 (en) 2007-01-05 2015-04-21 Digital Doors, Inc. Information infrastructure management tools with extractor, secure storage, content analysis and classification and method therefor
US8655052B2 (en) * 2007-01-26 2014-02-18 Intellectual Discovery Co., Ltd. Methodology for 3D scene reconstruction from 2D image sequences
EP1995673A1 (en) * 2007-05-21 2008-11-26 Archi. Con.Des Inventions (Uk) Limited Computer-aided design apparatus
EP2168035A1 (en) * 2007-06-27 2010-03-31 International Business Machines Corporation IBM System and method for providing a composite display
US8619877B2 (en) 2007-10-11 2013-12-31 Microsoft Corporation Optimized key frame caching for remote interface rendering
US8760450B2 (en) 2007-10-30 2014-06-24 Advanced Micro Devices, Inc. Real-time mesh simplification using the graphics processing unit
US8330763B2 (en) * 2007-11-28 2012-12-11 Siemens Aktiengesellschaft Apparatus and method for volume rendering on multiple graphics processing units (GPUs)
US8253732B2 (en) * 2008-01-03 2012-08-28 International Business Machines Corporation Method and system for remote visualization client acceleration
EP2300991B1 (en) * 2008-07-24 2012-11-14 Thomson Licensing Image processing device, method, and system
US9270783B2 (en) * 2008-12-06 2016-02-23 International Business Machines Corporation System and method for photorealistic imaging workload distribution
US8798965B2 (en) 2009-02-06 2014-08-05 The Hong Kong University Of Science And Technology Generating three-dimensional models from images
US8553040B2 (en) * 2009-06-30 2013-10-08 Apple Inc. Fingerprinting of fragment shaders and use of same to perform shader concatenation
US8843983B2 (en) * 2009-12-10 2014-09-23 Google Inc. Video decomposition and recomposition
WO2012027478A1 (en) 2010-08-24 2012-03-01 Jay Moorthi Method and apparatus for clearing cloud compute demand
US8917283B2 (en) * 2011-03-23 2014-12-23 Adobe Systems Incorporated Polygon processing techniques in procedural painting algorithms
US9147268B2 (en) * 2011-06-28 2015-09-29 Siemens Aktiengesellschaft Subtraction of projection data in medical diagnostic imaging
US20130265459A1 (en) * 2011-06-28 2013-10-10 Pelican Imaging Corporation Optical arrangements for use with an array camera
US9288505B2 (en) * 2011-08-11 2016-03-15 Qualcomm Incorporated Three-dimensional video with asymmetric spatial resolution
US9087401B1 (en) 2012-07-16 2015-07-21 Google Inc. Method of annotation across different locations
KR102245648B1 (ko) * 2012-09-10 2021-04-29 에이매스, 아이엔씨. 복수의 기기를 이용한 다차원의 환경 데이터 캡쳐
US9417911B2 (en) * 2014-03-12 2016-08-16 Live Planet Llc Systems and methods for scalable asynchronous computing framework

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109819178A (zh) * 2017-11-21 2019-05-28 虹软科技股份有限公司 一种用于帧处理的方法和装置

Also Published As

Publication number Publication date
US20180307531A1 (en) 2018-10-25
US20150261571A1 (en) 2015-09-17
EP3117333A1 (en) 2017-01-18
WO2015138353A1 (en) 2015-09-17
EP3117402A1 (en) 2017-01-18
US20150262410A1 (en) 2015-09-17
EP3117401A1 (en) 2017-01-18
US10042672B2 (en) 2018-08-07
CN106663330A (zh) 2017-05-10
US9672066B2 (en) 2017-06-06
US20150262420A1 (en) 2015-09-17
WO2015138355A1 (en) 2015-09-17
CN106537458A (zh) 2017-03-22
US9417911B2 (en) 2016-08-16
WO2015138347A1 (en) 2015-09-17

Similar Documents

Publication Publication Date Title
CN106663081A (zh) 用于可扩展的异步计算架构的系统和方法
US11716266B2 (en) Network security monitoring and correlation system and method of using same
CN105701025B (zh) 一种内存回收方法及装置
CN108810554A (zh) 虚拟场景的场景图像传输方法、计算机设备及存储介质
CN104350495B (zh) 在全景显示中管理对象以导航电子表格
CN103210320A (zh) 用于基于位置的服务中的位置隐私的虚拟信息
CN102414692A (zh) 副本数据的动态安置
US20140149590A1 (en) Scaling computing clusters in a distributed computing system
CN105378702A (zh) 包括空间事件地图的协作系统
CN102254017A (zh) 数据可视化的智能默认
CN106850589A (zh) 一种管控云计算终端和云服务器运作的方法和装置
CN106464719A (zh) 被管理无线分发网络中的内容发现
CN102591700A (zh) 提供基于角色的应用体验
CN107077348A (zh) 跨设备的经分割的应用呈现
EP3324283B1 (en) Content control apparatus, content control program, and content control method
CN110515748A (zh) 一种消息处理的方法及相关装置
CN106464718A (zh) 被管理无线分发网络中的内容递送优先化
CN107257986A (zh) 动态内容显示时间调整
CN108604204A (zh) 在网络环境中自动选择并且分发在计算装置上执行的应用的记录
CN108733496A (zh) 事件处理方法和装置
US20220368778A1 (en) System and method for managing and distributing informational content across disparate systems
CN105637471B (zh) 用于对存储环境进行监测和控制的方法及设备
CN105610698B (zh) 事件结果的处理方法和装置
CN110008261B (zh) 外部变化检测
CN105103528A (zh) 具有成本效益的移动连接协议

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20170510