一种基于云算链的渲染方法、系统及存储介质与流程

文档序号:22968641发布日期:2020-11-19 21:46阅读:134来源:国知局
一种基于云算链的渲染方法、系统及存储介质与流程

本发明涉及计算机图像处理技术领域,尤其是一种基于云算链的渲染方法、系统及存储介质。



背景技术:

渲染在电脑绘图中是指用软件从模型生成图像的过程。渲染模型是用严格定义的语言或者数据结构对于三维物体的描述,它包括几何、视点、纹理以及照明信息。

在现有技术中,通常采用的是由单台计算机完成渲染,其需要经过一端长时间且占用大部分的计算资源,导致无法同步进行其他生产活动;其次,在面对高强度计算类型任务时,还会采用集中式的计算方式,中央计算机需要执行所有的运算,因此,当终端很多时,会导致响应速度变慢;如果终端用户有不同的任务要求,要对每个用户的程序和资源做单独的配置,在集中式系统上实现起来比较困难,而且效率低下。此外,在现有技术中的一些渲染农场中,单纯采用渲染任务均衡分配的方式,在不考虑各个终端的性能状态以及是否有其他任务占用计算资源的情况下,同样也会对渲染农场中的单个的终端节点造成计算资源调用上的压力。



技术实现要素:

有鉴于此,为至少部分解决上述技术问题之一,本发明实施例目的在于提供一种高效的基于云算链的渲染方法,以及可以对应实现基于云算链的渲染的系统以及渲染节点的存储介质和服务器节点的存储介质。

第一方面,本发明的提供了一种基于云算链的渲染方法,包括以下步骤:

向服务器节点发出渲染任务请求;

获取并行执行的渲染任务块,渲染任务块是由服务器节点根据渲染任务请求,将获取的待渲染任务进行分配所得到的;待渲染任务的文件包括视频文件和图像文件;

根据渲染任务块进行渲染,得到渲染结果;

抽取若干渲染结果进行整合,返回整合后的渲染结果至服务器节点。

此外,在本发明的一些实施例中,方法还包括以下步骤:获取根据渲染任务块进行渲染所消耗的算力资源,根据消耗的算力资源生成实际工作量证明;实际工作量证明为未在执行渲染任务情况下计算资源所能够完成的工作量。

第二方面,本发明的提供了另一种基于云算链的渲染方法,包括以下步骤:

获取渲染节点的渲染任务请求、待渲染任务以及并行度,根据并行度将待渲染任务进行分割得到若干并行执行的渲染任务块;渲染任务的文件包括视频文件和图像文件;

根据渲染任务请求以及渲染节点的性能参数将渲染任务块分配至若干渲染节点;渲染节点的状态参数包括渲染节点的可支配渲染算力、存储空间以及宽带环境;

获取第一渲染结果,对第一渲染结果进行校验得到第二渲染结果,输出第二渲染结果;第一渲染结果是由渲染节点由渲染节点抽取若干所述渲染结果进行整合,返回的整合后的渲染结果。

在本发明的一些实施例中,方法还包括以下步骤:

对渲染节点进行性能测试,记录性能测试结果;

获取渲染节点性能在全网的渲染节点性能中的相对位置;

根据性能测试结果和相对位置生成执行任务块的渲染时间,并更新渲染节点的性能参数。

在本发明的一些实施例中,该方法还包括以下步骤:当未获取得到第一渲染结果,确定渲染失败并基于动态重分配机制将渲染任务块分配至新的渲染节点。

在本发明的一些实施例中,获根据并行度将待渲染任务进行分割得到若干并行执行的渲染任务块这一步骤,其具体包括以下步骤:

获取待渲染任务的文件中像素总和为第一像素数目;根据第一像素数目和以及并行度确定第二像素数目,第二像素数目为分割后的渲染任务块中的像素总和;

当分割后得到的渲染任务块中的像素数目小于第二像素数目,对渲染任务块进行像素填补,直至渲染任务块中的像素数目等于第二像素数目。

在一些实施例中,根据渲染任务请求以及渲染节点的性能参数对渲染任务块分配至若干渲染节点这一步骤;其具体包括:

确定渲染任务块占用的渲染算力资源;

根据渲染任务块占用的渲染算力资源进行渲染节点性能匹配,并确定发送频率;

根据渲染节点的性能匹配的结果和发送频率将任务块分配至若干渲染节点。

第三方面,本发明的技术方案还提供一种基于云算链的渲染系统,,包括渲染节点和服务器节点:

其中,渲染节点,用于向服务器节点发出渲染任务请求;获取并行执行的渲染任务块,渲染任务块是由服务器节点根据渲染任务请求,将获取的待渲染任务进行分配所得到的;待渲染任务的文件包括视频文件和图像文件;并根据渲染任务块进行渲染,得到渲染结果;抽取若干渲染结果进行整合,返回整合后的渲染结果至服务器节点。

其中,服务器节点,获取渲染节点的渲染任务请求、待渲染任务以及待渲染任务的并行度,根据并行度将待渲染任务进行分割得到若干并行执行的渲染任务块;渲染任务的文件包括视频文件和图像文件;根据渲染任务请求以及渲染节点的性能参数将渲染任务块分配至若干渲染节点;渲染节点的状态参数包括渲染节点的可支配渲染算力、存储空间以及宽带环境;并获取第一渲染结果,对所述第一渲染结果进行校验得到第二渲染结果,输出第二渲染结果;第一渲染结果是由渲染节点返回的整合后的渲染结果。

第四方面,本发明的技术方案还提供另一种基于云算链的渲染系统,其包括:

至少一个处理器;

至少一个存储器,用于存储至少一个程序;

当至少一个程序被至少一个处理器执行,使得至少一个处理器实现第一方面或第二方面中的一种基于云算链的渲染方法。

第五方面,本发明的技术方案还提供了一种存储介质,其中存储有处理器可执行的程序,处理器可执行的程序在由处理器执行时用于实现如第一方面或第二方面中的方法。

本发明的优点和有益效果将在下面的描述中部分给出,其他部分可以通过本发明的具体实施方式了解得到:

本发明依据渲染节点主动提出渲染任务请求,将待渲染的任务拆分后产生的大量渲染任务块分发至网络中各个的渲染节点,利用云算链中渲染节点的空闲的算资源,为高强度的渲染任务提供强大的去中心化的渲染能力,渲染任务的处理效率更高;同时通过渲染节点的主动请求和分发匹配机制,使得计算任务的分发更为合理,进一步实现无差异的渲染节点自治。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例一种云算链系统的示意图;

图2为本发明实施例一种基于云算链的渲染节点执行的步骤流程图;

图3为本发明实施例一种基于云算链的服务器节点执行的步骤流程图。

具体实施方式

下面详细描述本发明的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。对于以下实施例中的步骤编号,其仅为了便于阐述说明而设置,对步骤之间的顺序不做任何限定,实施例中的各步骤的执行顺序均可根据本领域技术人员的理解来进行适应性调整。

云算链是一种分布式计算网络,用于处理无法通过单台计算机完成的高强度计算类型任务。在云算链中,可以将多种类智能设备的闲置算力接入去中心化计算网络,结合大量算法和工程优化,实现在计算任务中的应用。第一方面,如图1所示,本实施例中的云算链(cloudcomputingchain),属于“分级去中心化结构”的分布式计算网络,每个不同模块定义为不同的级;在同级中,实现完全去中心化;多级混合时,为多中心化结构。云算链采用客户机-服务器架构(client-serverarchitecture),计算资源提供方(computingresourceprovider)是客户机角色包括分布式渲染节点和分布式存储节点,服务器节点(servicenode)是服务器角色。当渲染节点处于空闲状态时会主动上传该节点的空闲状态至同级的服务器节点,服务器节点会根据计算资源的性能特征匹配并分发相应的任务块。另外,云算链也可直接将完成划分的渲染任务块预先存储至云算链的分布式存储节点中,分布式渲染节点在接收到服务器的调度指令后从分布式存储节点下载渲染任务块的数据。在分布式网络拓扑结构下,渲染算力的资源提供方和服务器节点可随时并入或脱离网络。

在第二方面,参照图2,实施例提供的一种基于云算链的渲染方法,其包括步骤s101-s104,由云算链中的渲染节点执行:

s101、向服务器节点发出渲染任务请求;在实施例的云算链中,各级中的分布式渲染节点根据节点自身的算力资源的闲置情况,向服务器节点发送该渲染节点的闲置情况以及节点的性能状况;或者在渲染节点正执行计算量较小的任务,有充足的可分配的算力资源提供至云算链,以作为后续服务器节点进行渲染任务块分发匹配的依据。

s102、获取并行执行的渲染任务块,其中,渲染任务块是由服务器节点根据任务请求,将获取得到的计算量庞大的渲染任务文件进行分配所得到的;待渲染任务的文件包括视频文件和图像文件。

s103、根据渲染任务块进行渲染,得到渲染结果;例如渲染节点完成某一帧动画视频的渲染,首先通过三维几何模型、三维动画定义信息以及相应的材质信息。通过几何变换,投影变换,透视变换和窗口剪裁,再通过获取的材质与光影信息,生成该视频帧的图像。图像渲染结束后,会把该视频帧的图像信息输出到渲染节点本地的图像文件或视频文件,或者是通过渲染节点的帧缓存器中进行该帧图像的预览。

s104、抽取若干个渲染结果进行整合,返回整合后的结果至服务器节点;即将渲染完成后的图像进行拼接组合并回传至服务器节点。

第三方面,参照图3,本发明实施例提供了另一种基于云算链的渲染方法,将待渲染任务提交至云算链,将其划分成大量的并行执行的渲染任务块,将任务块分发至分布式渲染节点、经过节点的渲染,以及各节点渲染结果的整合以及校验等过程后,最终得到完成渲染后的图像或视频。其具体步骤包括s201-s203,由云算链中的服务器节点完成和执行:

s201、获取渲染节点的渲染任务请求、待渲染任务待渲染任务的并行度,根据并行度将待渲染任务进行分割得到若干并行执行的渲染任务块;具体地,待渲染任务可以是单张的图片或视频文件,例如将待渲染的视频任务提交至云算链,云算链首先进行视频文件的逐帧划分,分析得到任务的类型以及任务的具体内容,根据任务的类型和内容匹配相应的分割算法以及预设的并行度将逐帧的图像渲染任务划分成为多个像素区块,即为并行执行的渲染任务块。并且,在实施例的云算链中,提供了基础分割算法支持,也可以基于cccapi自行开发或调用适用于不同任务的分割算法,例如:支持cgi渲染类型任务的分割算法。

在一些实施例中,步骤s201可进一步包括步骤s2011和步骤s2012:

s2011、获取待渲染任务的文件中像素总和为第一像素数目;根据第一像素数目和以及待渲染任务的并行度确定第二像素数目,第二像素数目为分割后的渲染任务块中的像素总和。具体地,在进行渲染任务的分割处理之前,可以对每个任务块中包含的像素数目进行设定,根据设定的像素数目以及并行度,对渲染任务进行分割,其中并行度即为选择的渲染节点的数目。

s2012、当分割后得到的渲染任务块中的像素数目小于第二像素数目,对渲染任务块进行像素填补,直至渲染任务块中的像素数目等于第二像素数目;具体地,在分割的过程中当出现任务块中分割的像素不足预设的像素数目时,对缺少的像素点,由灰度像素点进行填充。

s202、根据渲染任务请求以及渲染节点的性能参数对渲染任务块分配至若干渲染节点。具体地,由服务器节点将待渲染任务处理拆分后产生的大量渲染任务块分发至网络中各个可用的渲染节点,保证最优化分配;为确保最优分配,在服务器节点进行任务块分配的过程中,依据服务器节点接收到的来自渲染节点的任务请求,以及对应渲染节点的性能参数作为分发匹配的主要标准。其中,渲染节点的性能参数包括:渲染节点的可支配渲染算力、存储空间以及宽带环境等参数的综合指标。

更为具体地,在一些实施例中步骤s202还包括步骤s2021-s2023:

s2021、在进行任务块的分配前,由服务器节点对各个渲染任务块所需要占用的算力资源进行预估。

s2022、根据渲染任务块占用的渲染算力资源进行渲染节点性能匹配,并确定任务块的发送频率。

s2023、根据渲染节点性能匹配的结果和发送频率将任务块分配至若干渲染节点。

具体地,云算链中的服务器节点对划分后的任务块所需要占用的算力资源进行预估,然后根据云算链中各个渲染节点当前的算力占用情况以及状态性能参数进行匹配,并根据节点的算力占用情况调整任务块的传输频率。除此之外,实施例还可以通过识别记录云算链中全部渲染节点的硬件信息,为避免由于硬件差异造成的计算结果差异,可设定将同一任务拆分后生成的多个任务块发送至网络中同类型硬件设备进行计算。作为可选的实施方式,服务器节点可根据人工智能算法的分配模型,将考虑任务种类、任务块计算量、节点算力、节点网络情况、节点历史稳定性、节点活跃度等多维度参数;通过深度学习完成任务块的分发匹配。

s203、获取第一渲染结果,并将第一渲染结果进行拼接得到第二渲染结果,输出第二渲染结果;第一渲染结果是由渲染节点完成校验证后的结果。

具体地,从云算链中同级的渲染节点中,随机抽取序列连续的渲染任务块完成后的图像进行拼接整合后,验证其渲染过程是否满足验证规则。实施例中验证的规则包括有:其一、在云算链中,根据渲染任务块执行渲染任务的渲染节点数目不小于第一阈值;其二、根据渲染任务块执行渲染任务,生成渲染图像结果的数目,不小于第二阈值;第一阈值为预设的渲染节点数目;第二阈值为预设渲染图像结果的数目。例如,在一实施例中,对于计算结果正确性,提供的结果验证条件需满足两个规则:第一、同一个渲染任务块发送至不少于a(a≥3)个空闲状态的渲染节点;第二、同一个渲染任务块有不少于b的计算结果成功返回。可根据具体地应用场景定义a和b的值,也可以将权限开放给计算资源消费方。再例如:在cg渲染任务中,定义a=5,b=51%,即当同一个任务块有来自3个渲染节点的结果成功返回并比对验证成功后,该任务块结果被标注为“成功-待整合”。此外,根据不同任务内容的渲染任务块,对渲染结果的校验规则进行扩展,校验规则还可以设置单个渲染节点中任务块被执行迭代的次数等等。本实施例中的云算链还可以基于api对其应用使用的算法进行开发部署。

并且,在一些实施例中,服务器节点采用实际工作量证明(proof-of-practical-work)机制,对渲染节点所完成的计算工作进行记录,生成对应的记录文件进行保存。不同于目前常见的挖矿应用,智能设备闲置时的计算资源用于真实世界中完成的产生实际价值的具体计算任务,将该计算任务的实际价值进行记录,即为实际工作量证明,实施例中采用实际工作量证明机制;例如,某个终端设备在一端时间周期内,完成生产任务,并产生大小为a的实际价值,那么,云算链则根据时间周期和a的值计算该终端的单位时间所产生的价值,即记为该终端的实际工作证明;将同一个任务块分发至不少于3个渲染节点,并在满足匹配条件的渲染节点中随机分发,不同渲染节点对同一渲染任务完成渲染后得到的任务结果将进入验证过程。为防止虚假上报任务计算时间和节点的性能情况,实施例中云算链启用基准点(benchmark)动态调校机制;基于不同benchmark对渲染节点性能测试的记录,掌握单个设备性能在云算链全网渲染节点设备性能中的相对位置,以此为基准对任务块计算时间合理性进行判断,同时对于渲染节点性能参数进行不定时测试及更新。

在云算链的一些实施方式中,还采用冗余计算(redundantcomputing)和动态重分配(dynamicredistribution)技术确保所有任务渲染的完整性;其中,动态重分配机制可实现将渲染节点的任务块重新分配至其他算力资源空闲的渲染节点。冗余计算机制保证一个渲染任务块发送至n个渲染节点进行计算,对于不同类型的任务,冗余节点数量可通过自定义的方式确定。例如:某个渲染节点在规定时间内没有成功提交其任务块的渲染成果,则认定该节点渲染失败;同时动态重分配机制将被激活,将该节点的渲染任务块将分配至新的渲染节点。

此外,云算链作为新型去中心化超级计算网络,具备极强的协议属性,可运行于联盟链之上,迅速融合区块链的交易记账、加密、及智能合约等技术。同时,面向开发者社区开放标准化api接口,为各类上层应用提供强大的去中心化计算资源。

根据图2以及图3的内容,以完整的动画影视渲染的任务为例,将动画视频文件以及渲染任务提交至云算链,并确定渲染工作中需要的渲染节点数目,同时根据渲染任务将待渲染的视频文件进行逐帧分解,进一步对逐帧图片进行拆解,如步骤s201的描述得到若干可并行执行的待渲染任务块,并通过步骤s202将其分发至预设数目的闲置的分布式渲染节点,交由渲染节点完成如步骤s101-s104的渲染工作,由各个渲染节点完成渲染任务块的结果校验后,将结果返回至服务器节点,再由服务器节点完成验证以及逐帧渲染文件结果的逐帧拼接,如步骤s203的描述,输出得到完成渲染后的视频文件。

第四方面,本发明实施例还提供了其他基于云算链的渲染系统,其系统中的核心要素包括渲染节点和服务器节点:

其中,渲染节点用于向服务器节点发出任务请求;获取并行执行的任务块,任务块是由服务器根据任务请求,将获取的计算任务进行分割所得到的;根据任务块执行渲染任务,生成计算结果;对计算结果进行验证,返回验证后的结果。

服务器节点用于获取计算任务以及渲染节点的任务请求,将计算任务分割得到若干并行执行的任务块;根据任务请求以及渲染节点的性能参数对任务块分配至若干渲染节点;渲染节点的状态参数包括渲染节点的计算能力、存储空间以及宽带环境。获取计算结果,并将计算结果进行整合,输出整合后的计算结果,计算结果是由渲染节点根据任务块执行计算任务,并完成验证后的计算结果。

在一些系统实施例中,包括多个服务器节点,系统通过容错机制保证单个服务器节点故障不会对任务整体执行造成严重影响,正常运行的服务器节点将动态接管故障节点的任务,避免单点故障(spof)的发生。

在第二方面和第三方面的方法实施例中的内容均适用于本系统的实施例中,本系统实施例所具体实现的功能与上述方法实施例相同,并且达到的有益效果与上述方法实施例所达到的有益效果也相同。

第五方面,本发明实施例还提供一种基于云算链的渲染系统,其包括至少一个处理器;至少一个存储器,用于存储至少一个程序;当至少一个程序被至少一个处理器执行,使得至少一个处理器实现如图2或图3中所示的一种基于云算链的渲染方法。

本发明实施例还提供了一种存储介质内存储有程序,程序被处理器执行如图2或图3所示的方法。

从上述具体地实施过程,可以总结出,本发明所提供的技术方案相较于现有技术存在以下优点或优势:

1.本发明基于云算链完成视频或图像文件渲染,调用更多线程计算资源,渲染速度加倍,大大缩减了渲染工作所耗费的时间。

2.本发明提供的技术方案,结合集中式计算网络的优势和分布式计算网络的优势,在同级中,实现完全去中心化;多级混合时,为多中心化结构;既保证了高效率、高性能以及良好的容错性能和扩展性能,又能工避免数据的安全性问题和共享的风险问题。

在一些可选择的实施例中,在方框图中提到的功能/操作可以不按照操作示图提到的顺序发生。例如,取决于所涉及的功能/操作,连续示出的两个方框实际上可以被大体上同时地执行或所述方框有时能以相反顺序被执行。此外,在本发明的流程图中所呈现和描述的实施例以示例的方式被提供,目的在于提供对技术更全面的理解。所公开的方法不限于本文所呈现的操作和逻辑流程。可选择的实施例是可预期的,其中各种操作的顺序被改变以及其中被描述为较大操作的一部分的子操作被独立地执行。

此外,虽然在功能性模块的背景下描述了本发明,但应当理解的是,除非另有相反说明,功能和/或特征中的一个或多个可以被集成在单个物理装置和/或软件模块中,或者一个或多个功能和/或特征可以在单独的物理装置或软件模块中被实现。还可以理解的是,有关每个模块的实际实现的详细讨论对于理解本发明是不必要的。更确切地说,考虑到在本文中公开的装置中各种功能模块的属性、功能和内部关系的情况下,在工程师的常规技术内将会了解该模块的实际实现。因此,本领域技术人员运用普通技术就能够在无需过度试验的情况下实现在权利要求书中所阐明的本发明。还可以理解的是,所公开的特定概念仅仅是说明性的,并不意在限制本发明的范围,本发明的范围由所附权利要求书及其等同方案的全部范围来决定。

其中,功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。

计算机可读介质的更具体地示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。

以上是对本发明的较佳实施进行了具体说明,但本发明并不限于上述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1