Distributed rendering method and apparatus

By determining the computing power requirements of rendering tasks and optimizing the execution order, the problem of low utilization of computing resources in traditional distributed rendering is solved, and the throughput of rendering tasks is improved.

CN114968521BActive Publication Date: 2026-02-10MEIPING MEIWU (SHANGHAI) TECH CO LTD
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
CN202210557461.3
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2022-05-20
Publication Date
2026-02-10
Estimated Expiration
2042-05-20

AI Technical Summary

Technical Problem

Traditional distributed rendering scheduling algorithms result in low utilization of computing resources and low throughput of rendering tasks.

Method used

By obtaining the attributes of the rendering task and the computing power requirements of the required rendering model, the computing power requirements of the rendering task are determined, and distributed task scheduling is performed based on this information to optimize the execution order of the rendering task and allocate computing resources reasonably.

Benefits of technology

It improved the utilization of computing resources, reduced the fragmentation of computing resources, and increased the throughput of rendering tasks.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114968521B_ABST
    Figure CN114968521B_ABST
Patent Text Reader

Abstract

The application provides a distributed rendering method and device. The method of the application realizes estimation of the computing power requirement information of the rendering task by considering various factors influencing the overall computing power requirement of the rendering task, such as the attribute of the rendering task and the computing power requirement of the model to be rendered, can improve the accuracy of the computing power requirement information of the rendering task, and can accurately reflect the required computing power of different rendering tasks; based on the computing power requirement information of the rendering task, the distributed task scheduling processing is performed on the rendering task, and the execution order of the rendering task is optimized; according to the optimized execution order, the computing resources are allocated to the rendering task, and the allocated rendering task is executed by scheduling the computing resources, which can reduce the fragmentation of the computing resources, reduce the idle and waste of the computing resources, improve the utilization rate of the computing resources, and thus improve the throughput of the rendering task.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This application relates to computer technology, and more particularly to a distributed rendering method and device. Background Technology

[0002] In fields such as home decoration and geological exploration, there is a need to display high-definition / ultra-high-definition images and more detailed source data. Therefore, after creating a design, it is usually necessary to render the design to observe the actual effect. Distributed rendering can improve rendering speed and reduce waiting time.

[0003] Currently, traditional distributed rendering scheduling algorithms allocate computing resources to rendering tasks sequentially according to the order in which they are submitted, resulting in low utilization of computing resources and low throughput of rendering tasks. Summary of the Invention

[0004] This application provides a distributed rendering method and device to solve the problems of low utilization of computing resources and low throughput of rendering tasks during distributed rendering.

[0005] On the one hand, this application provides a distributed rendering method, including:

[0006] Obtain the rendering task to be processed, and determine the computing power requirement information of the rendering task based on the attributes of the rendering task and the computing power requirement of the model to be rendered.

[0007] The rendering tasks are distributed task scheduling processes are performed based on the computing power requirements of the rendering tasks to determine the execution order of the rendering tasks.

[0008] According to the execution order of the rendering tasks, computing resources are allocated to the rendering tasks, and the computing resources are scheduled to execute the allocated rendering tasks to obtain the rendering results.

[0009] On the other hand, this application provides a distributed rendering apparatus, including:

[0010] The rendering pre-inspection module is used to obtain the rendering task to be processed and determine the computing power requirement information of the rendering task based on the attributes of the rendering task and the computing power requirement of the model to be rendered.

[0011] The task scheduling module is used to perform distributed task scheduling processing on the rendering tasks according to the computing power requirement information of the rendering tasks, and to determine the execution order of the rendering tasks.

[0012] The task scheduling module is also used to allocate computing resources to the rendering tasks according to the execution order of the rendering tasks, and schedule the computing resources to execute the allocated rendering tasks to obtain rendering results.

[0013] On the other hand, this application provides an electronic device, including: a processor, and a memory communicatively connected to the processor;

[0014] The memory stores computer-executed instructions;

[0015] The processor executes computer execution instructions stored in the memory to implement the method described above.

[0016] The distributed rendering method and device provided in this application estimate the overall computing power requirement of a rendering task by considering various factors that influence the overall computing power requirement of the rendering task, such as the attributes of the rendering task and the computing power requirements of the model to be rendered. This improves the accuracy of the computing power requirement information for the rendering task, ensuring that the determined computing power requirement information for each rendering task accurately reflects the amount of computing power required to execute different rendering tasks. Based on the computing power requirement information of the rendering task, distributed task scheduling is performed to optimize the execution order of the rendering tasks. According to the optimized execution order, computing resources are allocated to the rendering tasks, and the computing resources are scheduled to execute the allocated rendering tasks. This reduces the fragmentation of computing resources, minimizes idle and wasted computing resources, improves the utilization rate of computing resources, and thus increases the throughput of the rendering tasks. Attached Figure Description

[0017] The accompanying drawings, which are incorporated in and form part of this specification, illustrate embodiments consistent with this application and, together with the description, serve to explain the principles of this application.

[0018] Figure 1 A system architecture diagram on which the distributed rendering method provided in this application is based;

[0019] Figure 2 A flowchart illustrating a human-computer interaction method based on tabular data, provided as an exemplary embodiment of this application;

[0020] Figure 3 A flowchart of a distributed rendering method provided for an exemplary embodiment of this application;

[0021] Figure 4 An overall framework diagram of distributed rendering provided for an exemplary embodiment of this application;

[0022] Figure 5 A flowchart illustrating a method for estimating the computing power requirements of a rendering task, provided as an exemplary embodiment of this application;

[0023] Figure 6 A schematic diagram of the structure of a distributed rendering apparatus provided in an exemplary embodiment of this application;

[0024] Figure 7A schematic diagram of the structure of a distributed rendering apparatus provided in another exemplary embodiment of this application;

[0025] Figure 8 This is a schematic diagram of the structure of an electronic device provided in an example embodiment of this application.

[0026] The accompanying drawings illustrate specific embodiments of this application, which will be described in more detail below. These drawings and descriptions are not intended to limit the scope of the concept in any way, but rather to illustrate the concept of this application to those skilled in the art through reference to particular embodiments. Detailed Implementation

[0027] Exemplary embodiments will now be described in detail, examples of which are illustrated in the accompanying drawings. When the following description relates to the drawings, unless otherwise indicated, the same numbers in different drawings denote the same or similar elements. The embodiments described in the following exemplary embodiments do not represent all embodiments consistent with this application. Rather, they are merely examples of apparatuses and methods consistent with some aspects of this application as detailed in the appended claims.

[0028] First, let me explain the terms used in this application:

[0029] Distributed rendering: is a network rendering technology that can distribute the rendering of a single frame image across multiple computers (or multiple CPUs).

[0030] A compute instance is an instance for which compute resources are allocated to a task. Typically, compute resources in a resource pool are divided into compute instances of a certain size, and compute resources are allocated to tasks on a unit basis. In this embodiment, when allocating compute resources to rendering tasks, one compute instance is allocated to each rendering task.

[0031] To address the problems of severe fragmentation of computing resources, low utilization of computing resources, and low throughput of rendering tasks when using traditional distributed rendering methods, this application provides a distributed rendering method. This method determines the computing power requirements of a rendering task based on its attributes and the computing power requirements of the model to be rendered. It then performs distributed task scheduling based on these requirements to determine the execution order of the rendering tasks. Based on this execution order, it allocates computing resources to the rendering tasks and schedules these resources to execute the assigned tasks, thus obtaining the rendering results. By considering the attributes of the rendering tasks and the key factors affecting the computing power requirements of the model, it can accurately predict the computing power requirements of each task. Finally, it integrates and arranges the rendering tasks according to their computing power requirements, optimizing the execution order. Based on this optimized execution order, it allocates computing resources to the rendering tasks and executes them. This approach reduces the fragmentation of computing resources, improves the utilization of computing resources, and increases the throughput of rendering tasks.

[0032] For example, the distributed rendering method provided in this application can be applied to Figure 1 The system architecture is shown below. Figure 1 As shown, the system architecture includes: terminals and servers.

[0033] The server can be a cluster of rendering platforms or a server cluster deployed in the cloud. This server stores a distributed task scheduling algorithm. Through pre-defined computational logic, the server can perform various computational functions, including estimating the computational requirements of rendering tasks, distributing and scheduling (orchestrending execution order) of rendering tasks, allocating computing resources, and executing rendering tasks, to obtain the rendering result. For example, the rendering result can be provided directly to the terminal by the server, or indirectly to the terminal via other devices. For instance, the rendering result can be stored on a second server, which provides a download address to the terminal, allowing the second terminal to download the rendering result from the second server.

[0034] The terminal can specifically be a hardware device with network communication, computing and information display functions, including but not limited to smartphones, tablets, desktop computers, and Internet of Things devices.

[0035] Through communication with the server, the terminal can generate corresponding rendering tasks based on the user's design scheme and submit these tasks to the server. After receiving the submitted rendering tasks, the server determines the computational requirements based on the task's attributes and the computational power demands of the model to be rendered. Based on these requirements, the server performs distributed task scheduling to determine the execution order of the rendering tasks. According to this execution order, the server allocates computing resources to the tasks and schedules them to execute, thus obtaining the rendering results. The server provides the rendering results to the terminal directly or indirectly.

[0036] The distributed rendering method provided in this application can be applied to the rendering of 3D scenes and 3D models, and can be specifically applied to fields such as home decoration design and online games that require the rendering of 3D scenes and 3D models.

[0037] For example, taking the application in the field of home decoration design, a user (home decoration designer) can use design software on a terminal to complete a design scheme. Based on the camera position and orientation of the scene to be rendered determined by the user, the terminal generates rendering scene data and submits a rendering task to the server. The server allocates computing resources for the rendering task, calls the allocated computing resources to execute the rendering task, obtains the rendering result, and provides the rendering result to the terminal. The user can obtain the rendering result through the terminal.

[0038] For example, taking the application in the field of online games, a user (game scene designer) can use design software on a terminal to complete the design scheme of the game scene. Based on the camera position and orientation of the scene to be rendered, the terminal generates rendering scene data and submits a rendering task to the server. The server allocates computing resources for the rendering task, calls the allocated computing resources to execute the rendering task, obtains the rendering result, and provides the rendering result to the terminal. The user can obtain the rendering result through the terminal.

[0039] For example, taking the application in the field of online games as an example, during the operation of the game, when the terminal needs to display a game scene, it sends a request to the server. Based on the request, the server generates a corresponding rendering task according to the rendering scene data of the game scene. The server allocates computing resources for the rendering task, calls the allocated computing resources to execute the rendering task, obtains the rendering result, and provides the rendering result to the terminal, which then displays the rendering result.

[0040] The technical solution of this application and how the technical solution of this application solves the above-mentioned technical problems are described in detail below with specific embodiments. These specific embodiments can be combined with each other, and the same or similar concepts or processes may not be described again in some embodiments. The embodiments of this application will now be described with reference to the accompanying drawings.

[0041] Figure 2 This document provides a flowchart of a human-computer interaction method based on tabular data, as an exemplary embodiment of this application. Specifically, the tabular data-based human-computer interaction method provided in this embodiment can be applied to the cluster server of the aforementioned rendering platform. Figure 2 As shown, the specific steps of this method are as follows:

[0042] Step S201: Obtain multiple rendering tasks to be processed, and determine the computing power requirement information of each rendering task based on the attributes of each rendering task and the computing power requirement of the model to be rendered.

[0043] Among them, the rendering tasks to be processed are those submitted to the server and whose computing power requirements have not yet been determined.

[0044] In this embodiment, before performing distributed task scheduling on the rendering tasks submitted to the server, the computing power requirement information for each rendering task is first estimated. This computing power requirement information reflects the amount of computing power required to execute the rendering task; for example, it could be an estimated rendering time required to execute the task.

[0045] The attributes of a rendering task include rendering parameters such as resolution, whether it is super-resolution rendering, whether it is panoramic rendering, rendering quality settings, and hardware performance baseline. These rendering parameters reflect the rendering quality of the rendering task and are important factors affecting the rendering time and computing power required for the rendering task.

[0046] Rendering quality settings can include image selection, image filtering, color mapping, lighting settings, etc. For example, lighting settings can include natural or artificial lighting, whether to use custom lighting, single light source or complex light source, etc.

[0047] Hardware performance baseline refers to a pre-set reference benchmark for computing instance specifications. The computing instance specifications based on a unified reference benchmark are used to estimate the computing power requirements of each rendering task, ensuring that the computing power requirements of different rendering tasks are comparable. Even if the accuracy of the estimated computing power requirements of each rendering task is not very high, it can still accurately reflect the relationship between the computing power requirements of different rendering tasks, ensuring that distributed task scheduling can effectively optimize the execution order of rendering tasks.

[0048] The number of models to be rendered in a rendering task, as well as the computational power requirement for rendering a single model, are important factors affecting the overall computational power requirement of the rendering task. When estimating the computational power requirement of a rendering task, it is necessary to consider various factors that affect the overall computational power requirement of the rendering task, such as the attributes of the rendering task and the computational power requirement of the models to be rendered. This can improve the accuracy of the computational power requirement information for the rendering task, and ensure that the determined computational power requirement information for each rendering task accurately reflects the amount of computational power required to execute different rendering tasks.

[0049] Step S202: Based on the computing power requirements of each rendering task, perform distributed task scheduling on the multiple rendering tasks to be processed to determine the execution order of the rendering tasks.

[0050] After determining the computing power requirements of each rendering task, a distributed task scheduling algorithm can be used to perform distributed task scheduling on multiple rendering tasks to be processed based on the computing power requirements of the rendering tasks, and to arrange and determine the execution order of the rendering tasks, thereby optimizing the execution order of the rendering tasks.

[0051] Optionally, when determining the execution order of rendering tasks, based on the computing power requirements of the rendering tasks, other factors that are usually considered when arranging the order of rendering tasks, such as the correlation information between rendering tasks, can also be combined to perform distributed task scheduling processing on the rendering tasks to be processed, and determine the execution order of the rendering tasks.

[0052] For example, when a user's terminal generates a rendering task, it can break down a task into multiple rendering tasks based on the task's complexity, rendering parameters, etc. These multiple rendering tasks are related to the same task requirements. The terminal submits multiple related rendering tasks to the server. The server executes each rendering task separately and feeds back the rendering result of each rendering task to the user terminal. The user terminal integrates the rendering results of multiple rendering tasks to obtain the overall rendering result.

[0053] For example, if a user selects super-resolution rendering when setting rendering parameters, multiple rendering tasks may be generated when generating rendering tasks. These multiple rendering tasks belong to sub-tasks under the same task requirement and have a relationship.

[0054] Optionally, when determining the execution order of rendering tasks, distributed task scheduling can be performed on multiple rendering tasks to be processed based on the computing power requirements of the rendering tasks and the correlation information between the rendering tasks to determine the execution order of the rendering tasks. If at least one of the multiple rendering tasks with a correlation has already been executed, the rendering tasks with a correlation with the already executed rendering task can be appropriately advanced to be executed with priority.

[0055] Optionally, when determining the execution order of rendering tasks, the rendering tasks can be divided into two categories based on whether they are related to the already executed rendering tasks. The rendering tasks that are related to the already executed rendering tasks are arranged before the other category of rendering tasks. The same category of rendering tasks are then sorted according to the computing power requirement information.

[0056] Optionally, when determining the execution order of rendering tasks, a comprehensive score for each rendering task can be calculated based on whether it is related to already executed rendering tasks and the computational power requirements of those tasks. For rendering tasks related to already executed tasks, a higher computational power requirement results in a higher comprehensive score; for rendering tasks not related to already executed tasks, a higher computational power requirement results in a higher comprehensive score; for rendering tasks with the same computational power requirements, the comprehensive score of a rendering task related to already executed tasks is higher than the comprehensive score of a rendering task not related to already executed tasks. The execution order of rendering tasks is then determined based on the comprehensive score of the rendering tasks.

[0057] For example, if there are dependencies between certain rendering tasks, such as task A depending on task B, then when determining the execution order of the rendering tasks, the execution order of task B should be before that of task A.

[0058] Step S203: According to the execution order of the rendering tasks to be processed, allocate computing resources to each rendering task, and schedule the computing resources to execute the allocated rendering tasks to obtain the rendering results.

[0059] After performing distributed task scheduling on the rendering tasks based on their computing power requirements, determining the execution order of multiple rendering tasks to be processed, and optimizing the execution order of the rendering tasks, computing resources are allocated to each rendering task in turn according to the optimized execution order, and the computing resources are scheduled to execute the allocated rendering tasks to obtain the rendering results.

[0060] Compared to the order in which rendering tasks are submitted, allocating computing resources to rendering tasks based on the optimized execution order and scheduling these resources to execute the assigned tasks can reduce idle and wasted computing resources, improve the efficiency and performance of distributed rendering, and increase the throughput of rendering tasks.

[0061] For example, computing resources can be divided into multiple computing instances according to pre-defined instance specifications. When allocating computing resources for each rendering task, a computing instance is allocated to each rendering task and locked so that the rendering task exclusively uses the computing instance during execution.

[0062] In this embodiment, based on various factors affecting the overall computing power requirement of the rendering task, such as the attributes of the rendering task and the computing power requirement of the model to be rendered, the computing power requirement information of the rendering task is estimated. This improves the accuracy of the computing power requirement information of the rendering task, ensuring that the determined computing power requirement information of each rendering task accurately reflects the amount of computing power required to execute different rendering tasks. Based on the computing power requirement information of the rendering task, distributed task scheduling is performed on the rendering task to optimize the execution order of the rendering task. According to the optimized execution order, computing resources are allocated to the rendering task, and the computing resources are scheduled to execute the allocated rendering task. This reduces the fragmentation of computing resources, reduces the waste of idle computing resources, improves the utilization rate of computing resources, and thus improves the throughput of the rendering task.

[0063] Figure 3 This document provides a flowchart of a distributed rendering method as an exemplary embodiment of the present application. Based on the above method embodiment, this embodiment employs two queues to store rendering tasks. The first queue is a rendering task queue, used to store user-submitted rendering tasks in the order they were submitted. The second queue is a distributed task scheduling queue, used to store rendering tasks to be executed in the execution order determined by the distributed task scheduling mechanism.

[0064] For example, submitted rendering tasks are inserted at the end of the rendering task queue. The server consumes rendering tasks from the queue, performs computational demand determination based on the attributes of each task and the computational requirements of the model to be rendered, determines the computational demand information for each task, and stores each task and its computational demand information in a task data table. At regular intervals, the server can perform distributed task scheduling on rendering tasks not yet inserted into the distributed task scheduling queue, determining the execution order of these tasks; and insert all or some of the rendering tasks into the distributed task scheduling queue according to the execution order. Rendering tasks inserted into the distributed task scheduling queue then enter a waiting period for computational resource allocation and execution.

[0065] like Figure 3 As shown, the specific steps of this method are as follows:

[0066] Step S301: Obtain multiple rendering tasks to be processed from the rendering task queue. Based on the attributes of each rendering task and the computing power requirements of the model to be rendered, perform computing power requirement determination processing to determine the computing power requirement information of each rendering task. Store each rendering task and the computing power requirement information of the rendering task in the task data table.

[0067] In this embodiment, the rendering task queue is used to store submitted rendering tasks in the order they were submitted. The task data table can store the submission time of the rendering task, the corresponding functional module information, the task specification information, the task attributes, the camera position and orientation, the rendering scene data information, etc.

[0068] The task specification information can be the size of the data in the design proposal submitted by the user. The larger the task specification, the greater the computing power required for rendering. The corresponding functional module information is used to distinguish rendering tasks of different functional modules. Different functional modules can be modules within the same rendering platform used to implement different rendering functions, or different functional modules can refer to different rendering platforms.

[0069] For rendering tasks submitted to the rendering task queue, the server consumes each task one by one, obtaining the task's attributes and rendering scene data. Based on the camera's position and orientation, the model within the visible range of the rendering scene data can be determined, yielding the model required for the rendering task. Based on the required model and the rendering parameters in the task's attributes, the server can determine the computational requirements of the rendering task, estimating its computational needs.

[0070] After determining the computing power requirements for each rendering task, the rendering task and its computing power requirements are stored in the task data table.

[0071] Optionally, the computing power requirement information of the rendering task can be stored as an attribute of the rendering task, so that the computing power requirement information of the rendering task can be easily obtained when retrieving the attributes of the rendering task later.

[0072] Step S302: At each first time interval, for the first rendering task that has not yet been inserted into the distributed task scheduling queue in the data table, perform distributed task scheduling processing on the first rendering task according to the computing power requirement information of each first rendering task to determine the execution order of the first rendering task.

[0073] The first rendering task refers to a rendering task that has not yet been added to the distributed task scheduling queue.

[0074] In this embodiment, at each first time interval, for all first rendering tasks in the task data table that have not yet been added to the distributed task scheduling queue, a distributed task scheduling process is performed based on the computing power requirement information of the first rendering tasks to arrange and determine the execution order of the first rendering tasks.

[0075] For example, the computing power requirement information of the first rendering task can be the estimated rendering duration of the first rendering task. When performing distributed task scheduling processing on the first rendering task based on the computing power requirement information of the first rendering task, any existing distributed task scheduling algorithm based on the required duration of the task can be used to improve the task throughput, which will not be elaborated here.

[0076] By performing distributed task scheduling on rendering tasks that have not yet been inserted into the distributed task scheduling queue, based on the computing power requirements of the rendering tasks, it is possible to prioritize the processing of rendering tasks with lower computing power requirements when there are insufficient remaining computing resources. This can reduce the fragmentation of computing resources, improve the utilization of computing resources, and thus increase the throughput of rendering tasks.

[0077] In addition, the first duration can be set and adjusted according to the needs of the actual application scenario, and no specific limit is made here.

[0078] Step S303: According to the execution order of the first rendering tasks to be processed, insert the first number of first rendering tasks into the distributed task scheduling queue in the order of execution. The first number is determined according to the number of computing resources that are currently idle in the cluster.

[0079] After determining the execution order of all rendering tasks not yet added to the distributed task scheduling queue during distributed task scheduling, the top N rendering tasks are inserted into the queue sequentially according to their execution order. Subsequent distributed task scheduling processes do not require processing of the already inserted tasks; instead, they focus on all rendering tasks not yet added to the queue.

[0080] Where N is a first quantity. The first quantity can be determined based on the number of computing resources currently idle in the cluster. For example, the first quantity can be equal to the number of computing resources currently idle in the cluster.

[0081] In addition, the first quantity can be increased or decreased by a certain amount based on the number of computing resources that are currently idle in the cluster. The first quantity can be set and adjusted according to the needs of the actual application scenario, and no specific limit is made here.

[0082] Optionally, for rendering tasks inserted into the distributed scheduling queue, the rendering tasks inserted into the distributed scheduling queue are marked in the task data table to distinguish them from rendering tasks that have not yet been added to the distributed scheduling queue.

[0083] Optionally, when determining the execution order of multiple rendering tasks (such as the first rendering task mentioned above), based on the computing power requirements of the rendering tasks, other factors that are usually considered when arranging the order of rendering tasks, such as the correlation information between rendering tasks, can also be combined to perform distributed task scheduling processing on the rendering tasks to be processed, and determine the execution order of the rendering tasks.

[0084] For example, when a user's terminal generates a rendering task, it can break down a task into multiple rendering tasks based on the task's complexity, rendering parameters, etc. These multiple rendering tasks are related to the same task requirements. The terminal submits multiple related rendering tasks to the server. The server executes each rendering task separately and feeds back the rendering result of each rendering task to the user terminal. The user terminal integrates the rendering results of multiple rendering tasks to obtain the overall rendering result.

[0085] For example, if a user selects super-resolution rendering when setting rendering parameters, multiple rendering tasks may be generated when generating rendering tasks. These multiple rendering tasks belong to sub-tasks under the same task requirement and have a relationship.

[0086] Optionally, when determining the execution order of rendering tasks, distributed task scheduling can be performed on multiple rendering tasks to be processed based on the computing power requirements of the rendering tasks and the correlation information between the rendering tasks to determine the execution order of the rendering tasks. If at least one of the multiple rendering tasks with a correlation has already been executed, the rendering tasks with a correlation with the already executed rendering task can be appropriately advanced to be executed with priority.

[0087] Optionally, when determining the execution order of rendering tasks, the rendering tasks can be divided into two categories based on whether they are related to the already executed rendering tasks. The rendering tasks that are related to the already executed rendering tasks are arranged before the other category of rendering tasks. The same category of rendering tasks are then sorted according to the computing power requirement information.

[0088] Optionally, when determining the execution order of multiple rendering tasks, a comprehensive score for each rendering task can be calculated based on whether it is related to already executed rendering tasks and the computational power requirements of those tasks. For rendering tasks related to already executed tasks, a higher computational power requirement results in a higher comprehensive score; for rendering tasks not related to already executed tasks, a higher computational power requirement results in a higher comprehensive score; for rendering tasks with the same computational power requirements, the comprehensive score of a rendering task related to already executed tasks is higher than the comprehensive score of a rendering task not related to already executed tasks. The execution order of the rendering tasks is then determined based on their comprehensive scores.

[0089] For example, if there are dependencies between certain rendering tasks, such as task A depending on task B, then when determining the execution order of the rendering tasks, the execution order of task B should be before that of task A.

[0090] Step S304.

[0091] In this embodiment, for rendering tasks that have been inserted into the distributed task scheduling queue, the server allocates computing resources in sequence, schedules the computing resources to obtain rendering-related resources such as rendering scene data and model data of the allocated rendering tasks, executes the allocated rendering tasks, and obtains the rendering results.

[0092] Specifically, the server sequentially retrieves a rendering task from the distributed task scheduling queue, designates the currently retrieved rendering task as the target rendering task, locks and allocates computing resources for the target rendering task, at which point the computing resources enter a non-idle state. The server schedules the allocated computing resources to execute the target rendering task and obtains the rendering result of the target rendering task.

[0093] For example, the process of allocating computing resources for a target rendering task includes:

[0094] Determine if there is an idle compute instance. If there is, assign an idle compute instance to the target rendering task. If there is no idle compute instance, re-determine if there is an idle compute instance every second time interval until an idle compute instance is found, then assign an idle compute instance to the target rendering task.

[0095] In this embodiment, by setting up a rendering task queue and a distributed task scheduling queue, submitted rendering tasks are inserted at the end of the rendering task queue. The server consumes rendering tasks from the rendering task queue, performs computational demand determination processing based on the attributes of each rendering task and the computational power requirements of the model to be rendered, determines the computational power requirement information of each rendering task, and stores each rendering task and its computational power requirement information in a task data table. Every first time interval, the server performs distributed task scheduling on the rendering tasks in the data table that have not yet been inserted into the distributed task scheduling queue, determines the execution order of the rendering tasks not yet inserted into the distributed task scheduling queue, and inserts all or part of the rendering tasks into the distributed task scheduling queue according to the execution order. The server sequentially retrieves a rendering task from the distributed task scheduling queue, takes the currently retrieved rendering task as the target rendering task, allocates computing resources to the target rendering task, and schedules the allocated computing resources to execute the target rendering task, obtaining the rendering result of the target rendering task.

[0096] In one optional implementation, if it is determined that there are no idle computing resources and the cluster meets the conditions for expanding computing resources, the server can send an expansion request to the computing platform to add one or more idle computing resources to the cluster, thereby expanding the computing resources used to perform rendering tasks.

[0097] In this embodiment, the timing for capacity expansion can also be preset. For example, capacity expansion can be performed at a fixed time each day. Alternatively, capacity expansion can be performed based on the number of rendering tasks waiting in the distributed task scheduling queue, even if there are currently idle computing resources, when the number of rendering tasks waiting in the distributed task scheduling queue reaches a threshold.

[0098] Alternatively, one method for expanding computing resources may be:

[0099] If the current time is during peak rendering period, a first expansion request is sent to the computing platform. The first expansion request is used to instruct the computing platform to expand the computing resources of the cluster to the maximum number of computing resources in the cluster. If the current time is not during peak rendering period, a second expansion request is sent to the computing platform. The second expansion request is used to instruct the computing platform to expand the computing resources of the cluster to the maximum number of computing resources in the cluster.

[0100] The upper limit of the number of computing resources in the cluster refers to the maximum number of computing resources (i.e., computing instances) that can be created in the cluster of the rendering platform to perform rendering tasks, which can be determined according to the hardware configuration of the cluster.

[0101] The second quantity is less than the upper limit of computing resources. It is a minimum quantity of computing resources and can be determined based on the number of rendering tasks during off-peak hours in the actual application scenario. Using the second quantity of computing resources to execute rendering tasks can usually meet the latency and throughput requirements of rendering task execution.

[0102] In addition, peak rendering times can be set and adjusted according to the needs of actual application scenarios, and no specific limitations are made here.

[0103] This scaling method significantly reduces the number of scaling requests, lowers the time cost of scaling, avoids scaling affecting the efficiency of rendering tasks, and improves overall rendering efficiency and throughput by increasing the number of computing resources to the maximum limit of the cluster during off-peak rendering periods and increasing the computing resources to the maximum limit of the cluster during peak rendering periods.

[0104] Alternatively, another way to expand computing resources is:

[0105] Based on the number of rendering tasks to be rendered in the distributed task scheduling queue, a third expansion request is sent to the computing platform. The first expansion request is used to instruct the computing platform to add a third number of computing resources to the cluster, wherein the third number is determined according to the number of rendering tasks to be rendered.

[0106] For example, the third quantity can be equal to the number of rendering tasks waiting to be rendered in the distributed task scheduling queue. When scaling up, the corresponding number of computing resources can be scaled up at once according to the number of rendering tasks waiting to be rendered. This can reduce the number of times to request scaling up, reduce the time cost of scaling up, avoid scaling up from affecting the efficiency of rendering tasks, and improve the overall rendering efficiency and throughput.

[0107] For example, the third quantity can be determined based on the number of rendering tasks to be rendered, and can be increased or decreased by a certain amount based on the number of rendering tasks to be rendered.

[0108] For example, you can set a range for the number of rendering tasks to be rendered, with different ranges corresponding to different expansion quantities. When expanding, the corresponding expansion quantity is determined based on the range in which the number of rendering tasks to be rendered currently falls, and this expansion quantity is used as the third quantity.

[0109] For example, a range of the number of rendering tasks to be rendered can be set, with different ranges corresponding to different scaling ratios. When scaling up, the corresponding scaling ratio is determined based on the range of the number of rendering tasks to be rendered. The target number of computing resources after scaling up is the product of the maximum number of computing resources in the cluster and the corresponding scaling ratio. The third number is the difference between this target number and the number of computing resources currently in the cluster.

[0110] For example, when the number of rendering tasks to be rendered in the distributed task scheduling queue is greater than or equal to the number of waiting tasks threshold, a third expansion request can be sent to the computing platform based on the number of rendering tasks to be rendered in the distributed task scheduling queue.

[0111] In this scaling method, the amount of computing resources to be scaled up is dynamically adjusted according to the number of rendering tasks waiting in the distributed task scheduling queue. This allows for on-demand scaling of computing resources based on the number of waiting rendering tasks, which can reduce the number of scaling requests, lower the time cost of scaling up, avoid scaling up from affecting the efficiency of rendering tasks, and save unnecessary computing resources in the cluster.

[0112] Alternatively, another way to expand computing resources is:

[0113] A fourth expansion request is sent to the computing platform. The first expansion request was used to instruct the computing platform to add a computing resource to the cluster.

[0114] For example, the server can send a fourth expansion request to the computing platform through the application programming interface (API) provided by the computing platform for expanding a computing resource, which can be called the expansion API, so that the computing platform adds a computing resource to the cluster.

[0115] It should be noted that, in this embodiment, regardless of the expansion method used, the specifications of the increased computing resources are determined based on the specifications of the computing instance executing the rendering task in the current application scenario, ensuring that the needs of the rendering task are met. For example, the increased computing resources can be computing resources of fixed specifications.

[0116] In an optional implementation of this embodiment, rendering tasks are sequentially obtained from the distributed task scheduling queue. When allocating computing resources to the currently obtained target rendering task, rendering tasks that exceed specification limits or whose waiting time exceeds the configured waiting time threshold are abandoned.

[0117] Specifically, rendering tasks are sequentially retrieved from the distributed task scheduling queue. If the amount of scene data for the currently retrieved rendering task is less than or equal to the data amount threshold, and the waiting time for the currently retrieved rendering task is less than or equal to the waiting time threshold, then computing resources are allocated to the currently retrieved target rendering task.

[0118] If it is determined that the amount of scene data for the currently acquired rendering task is greater than the data amount threshold, or the waiting time for the currently acquired rendering task is greater than the waiting time threshold, then the execution of the currently acquired rendering task will be abandoned. That is, no further processing, including the allocation and execution of computing resources, will be performed on the currently acquired rendering task.

[0119] The specification of a rendering task can be the size of the scene data. A rendering task exceeding the specification limit can be one where the scene data size is less than or equal to a data size threshold. The data size threshold can be determined based on the actual or estimated data size of the scene data in the current application scenario, and is not specifically limited here.

[0120] The waiting time for a rendering task refers to the time elapsed from the time the rendering task was submitted to the current time. The data for rendering tasks stored in the task data table can include the submission time of the rendering task. The waiting time for the rendering task can be determined based on the submission time and the current time. The waiting time threshold can be set and adjusted according to the needs of the actual application scenario, and no specific limitation is made here.

[0121] In practical applications, if the specifications of a rendering task exceed the limitations, the task is considered unsuitable for the current application scenario and is abandoned. For example, if the current application scenario involves rendering a standard apartment layout design, and a user submits a design for a large shopping mall, the mall's design will not be rendered because its specifications exceed the limitations of a standard apartment layout design.

[0122] Optionally, to further reduce unnecessary processing, when consuming rendering tasks in the rendering task queue, it can be determined whether the amount of scene data for the rendering task exceeds a data volume threshold. If the amount of scene data for the rendering task exceeds the data volume threshold, there is no need to estimate the computing power requirement information for the rendering task, and the subsequent processing of the rendering task can be abandoned. If the amount of scene data for the rendering task is less than or equal to the data volume threshold, the computing power requirement information for the rendering task is stored in the task data table.

[0123] In this embodiment, by setting specification limits and / or waiting time thresholds for rendering tasks, the execution of rendering tasks that exceed specification limits or waiting time thresholds can be abandoned, thereby reducing unnecessary rendering processes and improving the overall throughput of distributed rendering.

[0124] For example, Figure 4 This embodiment provides an overall framework diagram for distributed rendering, as follows: Figure 4As shown, the distributed rendering framework comprises four modules: rendering tasks, a statistical database, rendering pre-checking, task scheduling, and elastic scaling. The statistical database stores the final rendering time of all rendering tasks, including detailed rendering parameters, reference rendering time and weights for individual models, etc. The weights of each model can be updated based on the data stored in the statistical database. For submitted rendering tasks, rendering pre-checking determines the computational power requirements based on the rendering model's parameters, required model weights, and reference rendering time. During task scheduling, distributed task scheduling is performed based on the computational power requirements of the rendering tasks to determine the execution order and allocate tasks appropriately to the required computing instances. Additionally, statistical data such as rendering task execution time can be recorded in the statistical database. When idle computing resources are insufficient, elastic scaling can be performed to increase the number of computing instances available to execute rendering tasks, preventing rendering tasks from failing due to insufficient computing instances.

[0125] In this embodiment, by estimating the computing power requirements of rendering tasks, flexibly expanding computing resources, and combining distributed task scheduling, a balance between the computing performance and rendering cost of large-scale rendering tasks can be achieved. This can truly solve the contradiction between computing resources and rendering needs, address the problems of uneven distribution of computing resources and waste of idle resources, and improve the overall efficiency and throughput of distributed rendering.

[0126] Figure 5 This is a flowchart illustrating a method for estimating the computing power requirements of a rendering task, provided as an exemplary embodiment of this application. Based on any of the above method embodiments, such as... Figure 5 As shown, for any rendering task, the computing power requirement information of the rendering task is determined based on the attributes of the rendering task and the computing power requirement of the model to be rendered. This can be achieved through the following steps:

[0127] Step S500: For each rendering task, obtain the attributes of the rendering task and the rendering scene data.

[0128] The attributes of a rendering task include rendering parameters such as resolution, whether it's super-resolution rendering, whether it's panoramic rendering, rendering quality settings, and hardware performance baseline. These parameters reflect the rendering quality of the task and are crucial factors affecting its rendering time and required computing power. Additionally, rendering task attributes may also include information such as submission time.

[0129] Rendering quality settings can include image selection, image filtering, color mapping, lighting settings, etc. For example, lighting settings can include natural or artificial lighting, whether to use custom lighting, single light source or complex light source, etc.

[0130] Hardware performance baseline refers to a pre-set reference benchmark for computing instance specifications. The computing instance specifications based on a unified reference benchmark are used to estimate the computing power requirements of each rendering task, ensuring that the computing power requirements of different rendering tasks are comparable. Even if the accuracy of the estimated computing power requirements of each rendering task is not very high, it can still accurately reflect the relationship between the computing power requirements of different rendering tasks, ensuring that distributed task scheduling can effectively optimize the execution order of rendering tasks.

[0131] Rendering scene data refers to the data of the 3D scene to be rendered in the rendering task. It is generated based on the design scheme of the 3D scene, the specified camera position and orientation. The design scheme includes multiple models added to the scene; a model refers to a 3D model formed by one or more objects in the 3D scene. For example, in a home design scheme, models of sofas, tables, beds, chandeliers, etc., can be added to a room.

[0132] Through the following steps S501-S503, based on the rendering scene data of the rendering task, obtain the weight and reference rendering time of the model to be rendered in the rendering task. A higher weight for the model to be rendered indicates higher computational power required for rendering.

[0133] Step S501: Determine the models to be rendered in the rendering task based on the rendering scene data of the rendering task.

[0134] In this step, firstly, for the current rendering task, all models contained in the current rendering task are obtained to get the model to be rendered.

[0135] Step S502: Obtain the weights and reference rendering time of the model to be rendered from the statistical database.

[0136] In this embodiment, the weights and reference rendering times of each model can be predetermined, and the weights and reference rendering times of each model can be stored in a statistical database. When performing distributed rendering of a rendering task, the weights and reference rendering times of the model to be rendered can be obtained directly from the statistical database.

[0137] For example, when a model is submitted to a rendering platform, the rendering platform's server determines the model's weights and reference rendering time, and stores them in a statistics database.

[0138] In this step, if the weight and / or reference rendering time of a certain model to be rendered are not stored in the statistical database, the server of the rendering platform can determine the weight and / or reference rendering time of the model to be rendered in real time and store it in the statistical database.

[0139] Specifically, the server can determine the model's weights based on the model's attribute information and store these weights in a statistical database. The model's weights reflect the complexity or quality of the model rendering; a higher weight indicates greater complexity or quality, and also requires more computational power for rendering.

[0140] Optionally, the model weights can be estimated and determined based on the core principles of the global illumination renderer, combined with statistical methods.

[0141] For example, the weights of a model can be determined based on attributes that affect the complexity or quality of model rendering, such as the number of faces exposed by the model and the model's materials.

[0142] Furthermore, the server can render the model to be rendered based on the configured fast rendering quality standard, determine the reference rendering time of the model to be rendered, and store the reference rendering time of the model to be rendered in the statistical database.

[0143] Among them, the fast rendering quality standard is a lower quality standard. Based on the low quality standard, the rendering time of the model is used to quickly render the model using a specific specification of computing instance. This serves as the reference rendering time for the model. Although it cannot accurately predict the actual rendering time of the model, it can accurately reflect the relationship between the rendering times required for different models by using the same quality standard and computing instances of the same specification as the reference rendering time. In other words, it can accurately determine the level of computing power required for rendering different models.

[0144] Furthermore, the fast rendering quality standards and specific specifications of the compute instances can be set and adjusted according to actual needs, and are not specifically limited here. For example, the specific specifications of the compute instances can be determined based on the specifications of the compute instances used to perform rendering tasks in the current rendering platform, and are not specifically limited here. For instance, the specific specifications of the compute instances can be consistent with or close to the specifications of the compute instances used to perform rendering tasks in the current rendering platform.

[0145] Optionally, when there is a certain amount of data, the weights of the models can be determined by back-calculating the weights of each model based on the core principles of the global illumination renderer and the actual rendering time, and then updated by combining statistical methods.

[0146] In this embodiment, by persistently storing the model's weights and reference rendering time in a statistical database, the weights and reference rendering time of the same model can be directly read from the statistical database when needed in the future, which can improve the overall efficiency and throughput of distributed rendering.

[0147] In one optional implementation, after allocating computing resources to rendering tasks according to their execution order, scheduling the computing resources to execute the allocated rendering tasks, and obtaining the rendering results, the server can also store the actual rendering time of each rendering task. For example, the actual rendering time of each rendering task can be stored in a statistical database.

[0148] At regular intervals, based on the actual rendering time of each rendering task executed within that time period and the weights of the models in the rendering tasks, the actual rendering time of each model in the rendering task can be calculated in reverse. Based on the actual rendering time of each model, the weights and reference rendering times of each model in the statistical database are updated to improve the accuracy of the model weights and reference rendering times.

[0149] For example, the actual rendering time of the model can be deduced from the actual rendering time of multiple rendering tasks and the model's weights.

[0150] For example, for each model, if the actual rendering time of the model is greater than the reference rendering time, the weight of the model can be increased; if the actual rendering time of the model is less than the reference rendering time, the weight of the model can be decreased.

[0151] For example, for each model, the reference rendering time of the model in the statistical database can be updated based on the actual rendering time of the model derived from the inverse model, so as to improve the accuracy of the reference rendering time of the model.

[0152] Step S503: Based on the camera position and orientation in the rendering scene data, determine whether the model to be rendered is within the camera's field of view, and adjust the weight of the model to be rendered based on whether the model is within the camera's field of view.

[0153] In practical applications, a rendering task may include multiple models. These models may appear in the visible range of the rendering scene, either fully or partially. By adjusting the weights of the models that appear in the visible range, the weights of the models that appear in the visible range can be increased, thereby improving the accuracy of the model weights.

[0154] In this step, for the current rendering task, based on the camera position and orientation in the rendering scene data of the rendering task, it is determined whether each model to be rendered in the rendering task is within the camera's field of view, and the weight of the models that are within the field of view is increased, and / or the weight of the models that are not within the field of view is decreased.

[0155] For example, a first coefficient can be set to increase the weight of the model within the visible range. The first coefficient is greater than 1. In this step, the weight of the model appearing within the visible range is multiplied by the first coefficient to increase the weight of the model appearing within the visible range.

[0156] For example, a second coefficient can be set to reduce the weight of models that are not in the visible range. The second coefficient is less than 1. In this step, the weight of the models that are not in the visible range is multiplied by the second coefficient to reduce the weight of the models that are not in the visible range.

[0157] For example, a third coefficient can be set simultaneously to increase the weight of models within the visible range and a fourth coefficient to decrease the weight of models not within the visible range, where the third coefficient is greater than 1 and the fourth coefficient is less than 1. In this step, the weight of models within the visible range is multiplied by the third coefficient, and the weight of models not within the visible range is multiplied by the fourth coefficient, thereby increasing the weight of models within the visible range and decreasing the weight of models not within the visible range.

[0158] Step S504: Determine the computing power requirement information corresponding to the rendering parameters based on the rendering parameters in the rendering task's attributes.

[0159] In this embodiment, the rendering parameters in the rendering task's attributes are important factors affecting the overall computing power requirement of the rendering task. When estimating the computing power requirement of the rendering task, the computing power requirement information corresponding to the rendering parameters can be determined based on the rendering parameters in the rendering task's attributes. For example, the computing power requirement information corresponding to the rendering parameters can be the estimated rendering time corresponding to the rendering parameters.

[0160] For example, rendering parameters may include resolution, whether to render at super-resolution, whether to render a panoramic view, rendering quality settings, hardware performance baseline, etc. Rendering parameters reflect the rendering quality of the rendering task and are important factors affecting the rendering time and computing power required for the rendering task.

[0161] Rendering quality settings can include image selection, image filtering, color mapping, lighting settings, etc. For example, lighting settings can include natural or artificial lighting, whether to use custom lighting, single light source or complex light source, etc.

[0162] Hardware performance baseline refers to a pre-set reference benchmark for computing instance specifications. The computing instance specifications based on a unified reference benchmark are used to estimate the computing power requirements of each rendering task, ensuring that the computing power requirements of different rendering tasks are comparable. Even if the accuracy of the estimated computing power requirements of each rendering task is not very high, it can still accurately reflect the relationship between the computing power requirements of different rendering tasks, ensuring that distributed task scheduling can effectively optimize the execution order of rendering tasks.

[0163] In addition, in this step, the specific rendering parameters to determine the corresponding computing power requirements can be selected based on the degree to which each rendering parameter affects the rendering quality in the actual application scenario. One or more rendering parameters with a greater impact on rendering quality can be selected, and no specific limitation is made here.

[0164] For example, each rendering parameter has a corresponding coefficient, and the coefficients of different rendering parameters can be different. Based on the coefficients of each rendering parameter, the rendering parameters are weighted and summed to determine the computing power requirement information corresponding to the rendering parameters.

[0165] Among them, the coefficients corresponding to the rendering parameters reflect the severity of the impact of the rendering parameters on the rendering quality. The larger the corresponding coefficient, the more severe the impact of the rendering parameters on the rendering quality, and the greater the impact on the computing power required for rendering.

[0166] The coefficients corresponding to each rendering parameter can be estimated and configured based on the core principles of the global illumination renderer, combined with statistical methods. With sufficient data, the coefficients of each rendering parameter can also be deduced from the actual rendering time, and updated through a fitting method.

[0167] Step S505: Determine the computing power requirements of the rendering task based on the weight of the model to be rendered, the reference rendering time, and the computing power requirements corresponding to the rendering parameters.

[0168] After determining the weights and reference rendering durations of the models to be rendered in the rendering task, as well as the computing power requirements corresponding to the rendering parameters, the reference rendering durations of the models to be rendered are weighted and summed to obtain the computing power requirements corresponding to the models. The computing power requirements corresponding to the models are then weighted and summed with the computing power requirements corresponding to the rendering parameters to obtain the computing power requirements of the rendering task, providing a reference for the computing power requirements of the rendering tasks when arranging the rendering task order.

[0169] The weights of the computing power requirements for the model and the computing power requirements for the rendering parameters can be configured and adjusted based on actual application scenarios and experience; no specific limitations are made here.

[0170] In this embodiment, when estimating the computing power requirements of a rendering task, the reference rendering time of all models in the rendering task and the computing power requirements corresponding to the rendering parameters are accumulated. Weights are also set between different models and between models and rendering parameters. This allows for the comprehensive estimation of various factors affecting the overall computing power requirements of the rendering task, such as the rendering parameters in the rendering task's attributes and the computing power requirements of the models to be rendered. This improves the accuracy of the computing power requirements and ensures that the determined computing power requirements of each rendering task accurately reflect the amount of computing power required to execute different rendering tasks.

[0171] Figure 6 This is a schematic diagram of a distributed rendering apparatus provided as an exemplary embodiment of this application. The distributed rendering apparatus provided in this embodiment can execute the processing flow provided in the distributed rendering method embodiment. Figure 6 As shown, the distributed rendering device 60 includes a rendering pre-check module 61 and a task scheduling module 62.

[0172] Specifically, the rendering pre-inspection module 61 is used to obtain the rendering task to be processed and determine the computing power requirement information of the rendering task based on the attributes of the rendering task and the computing power requirement of the model to be rendered.

[0173] The task scheduling module 62 is used to perform distributed task scheduling processing on rendering tasks based on the computing power requirements of the rendering tasks, and to determine the execution order of the rendering tasks.

[0174] The task scheduling module 62 is also used to allocate computing resources to the rendering tasks according to the execution order of the rendering tasks, and schedule the computing resources to execute the allocated rendering tasks to obtain the rendering results.

[0175] The apparatus provided in this application embodiment can be specifically used to perform the above-described... Figure 2 The specific functions and technical effects of the solutions provided in the corresponding method embodiments will not be elaborated here.

[0176] In this embodiment, based on various factors affecting the overall computing power requirement of the rendering task, such as the attributes of the rendering task and the computing power requirement of the model to be rendered, the computing power requirement information of the rendering task is estimated. This improves the accuracy of the computing power requirement information of the rendering task, ensuring that the determined computing power requirement information of each rendering task accurately reflects the amount of computing power required to execute different rendering tasks. Based on the computing power requirement information of the rendering task, distributed task scheduling is performed on the rendering task to optimize the execution order of the rendering task. According to the optimized execution order, computing resources are allocated to the rendering task, and the computing resources are scheduled to execute the allocated rendering task. This reduces the fragmentation of computing resources, reduces the waste of idle computing resources, improves the utilization rate of computing resources, and thus improves the throughput of the rendering task.

[0177] In an optional embodiment, when acquiring the rendering task to be processed and determining the computing power requirement information of the rendering task based on the attributes of the rendering task and the computing power requirement of the model to be rendered, the rendering pre-inspection module is further configured to:

[0178] Retrieve rendering tasks from the rendering task queue, determine the computing power requirements of each rendering task based on its attributes and the computing power requirements of the model to be rendered, and store each rendering task and its computing power requirements in the task data table.

[0179] In an optional embodiment, when determining the computing power requirement information for each rendering task by performing computing power requirement determination processing based on the attributes of each rendering task and the computing power requirement of the model to be rendered, the rendering pre-inspection module is further configured to:

[0180] For each rendering task, based on the rendering scene data of the rendering task, obtain the weight and reference rendering time of the model to be rendered in the rendering task. The larger the weight of the model to be rendered, the higher the computing power required for rendering the model. Based on the rendering parameters in the attributes of the rendering task, determine the computing power requirement information corresponding to the rendering parameters. Based on the weight and reference rendering time of the model to be rendered, as well as the computing power requirement information corresponding to the rendering parameters, determine the computing power requirement information of the rendering task.

[0181] In one optional embodiment, the rendering scene data includes the camera position and orientation in the scene to be rendered corresponding to the rendering task, and the attribute information of the model in the scene to be rendered. When obtaining the weights and reference rendering duration of the model to be rendered in the rendering task based on the rendering scene data of the rendering task, the rendering pre-detection module is further used for:

[0182] Based on the rendering scene data of the rendering task, determine the models to be rendered included in the rendering task; obtain the weights and reference rendering times of the models to be rendered from the statistical database; determine whether the models to be rendered are within the camera's field of view based on the camera position and orientation in the rendering scene data, and adjust the weights of the models to be rendered based on whether they are within the camera's field of view.

[0183] In one alternative embodiment, such as Figure 7 As shown, the distributed rendering device 70 may further include: a data processing module 63, used to: determine the weight of the model to be rendered based on the attribute information of the model to be rendered before obtaining the weight and reference rendering time of the model to be rendered from the statistical database, and store the weight of the model to be rendered in the statistical database; render the model to be rendered based on the configured fast rendering quality standard, determine the reference rendering time of the model to be rendered, and store the reference rendering time of the model to be rendered in the statistical database.

[0184] In an optional embodiment, after allocating computing resources to the rendering tasks according to the execution order of the rendering tasks, scheduling the computing resources to execute the allocated rendering tasks, and obtaining the rendering results, the data processing module 63 is further configured to: store the actual rendering time of the rendering tasks; calculate the actual rendering time of each model in the rendering tasks according to the actual rendering time of the rendering tasks and the weights of the models in the rendering tasks; and update the weights and reference rendering times of each model in the statistical database according to the actual rendering time of each model.

[0185] In an optional embodiment, when determining the computing power requirement information of the rendering task based on the weights of the model to be rendered, the reference rendering duration, and the computing power requirement information corresponding to the rendering parameters, the rendering pre-detection module is further configured to:

[0186] Based on the weights of the model to be rendered, the reference rendering time of the model is weighted and summed to obtain the computing power requirement information corresponding to the model; the computing power requirement information corresponding to the model is weighted and summed with the computing power requirement information corresponding to the rendering parameters to obtain the computing power requirement information for the rendering task.

[0187] In an optional embodiment, when performing distributed task scheduling processing on rendering tasks based on the computing power requirements of the rendering tasks to determine the execution order of the rendering tasks, the task scheduling module is further configured to:

[0188] At each first time interval, for the first rendering task that has not yet been inserted into the distributed task scheduling queue in the data table, the distributed task scheduling process is performed on the first rendering task according to the computing power requirement information of the first rendering task to determine the execution order of the first rendering task.

[0189] In an optional embodiment, at each first time interval, for the first rendering task that has not yet been inserted into the distributed task scheduling queue in the data table, the first rendering task is processed by distributed task scheduling based on the computing power requirement information of the first rendering task. After determining the execution order of the first rendering task, the task scheduling module is further used to:

[0190] Based on the execution order of the multiple rendering tasks to be processed, a first number of rendering tasks are inserted into the distributed task scheduling queue in the order of execution. The first number is determined based on the number of computing resources that are currently idle in the cluster.

[0191] In an optional embodiment, when allocating computing resources to rendering tasks according to the execution order of the rendering tasks, and scheduling the computing resources to execute the allocated rendering tasks to obtain the rendering results, the task scheduling module is further configured to:

[0192] Rendering tasks are retrieved sequentially from the distributed task scheduling queue. Computational resources are allocated to the currently retrieved target rendering task, and the computational resources are scheduled to execute the allocated rendering task to obtain the rendering result.

[0193] In one alternative embodiment, such as Figure 7 As shown, the distributed rendering device 70 may also include: a flexible expansion module 64.

[0194] The elastic scaling module 64 is used to: before allocating computing resources for the currently acquired target rendering task, if it is determined that there are no idle computing resources and the cluster meets the conditions for scaling up computing resources, send a scaling request to the computing platform to add one or more idle computing resources to the cluster.

[0195] In an optional embodiment, the flexible expansion module 64 is further configured to:

[0196] If the current time is during peak rendering period, a first expansion request is sent to the computing platform. The first expansion request is used to instruct the computing platform to expand the computing resources of the cluster to the point where the number of computing resources is equal to the maximum number of computing resources in the cluster. If the current time is not during peak rendering period, a second expansion request is sent to the computing platform. The second expansion request is used to instruct the computing platform to expand the computing resources of the cluster to the point where the number of computing resources is equal to a second number, which is less than the maximum number of computing resources.

[0197] Alternatively, based on the number of rendering tasks to be rendered in the distributed task scheduling queue, a third expansion request is sent to the computing platform. The first expansion request is used to instruct the computing platform to add a third number of computing resources in the cluster, wherein the third number is determined based on the number of rendering tasks to be rendered.

[0198] Alternatively, a fourth expansion request can be sent to the computing platform, where the first expansion request instructs the computing platform to add a computing resource to the cluster.

[0199] In an optional embodiment, when sequentially retrieving rendering tasks from the distributed task scheduling queue and allocating computing resources to the currently retrieved target rendering task, the task scheduling module is further configured to:

[0200] Rendering tasks are sequentially retrieved from the distributed task scheduling queue. If the amount of scene data for the currently retrieved rendering task is less than or equal to the data amount threshold, and the waiting time for the currently retrieved rendering task is less than or equal to the waiting time threshold, then computing resources are allocated to the currently retrieved target rendering task. If the amount of scene data for the currently retrieved rendering task is greater than the data amount threshold, or the waiting time for the currently retrieved rendering task is greater than the waiting time threshold, then the currently retrieved rendering task is abandoned.

[0201] The apparatus provided in this application embodiment can be specifically used to execute the solution provided in any of the above method embodiments. The specific functions and technical effects that can be achieved will not be elaborated here.

[0202] In this embodiment, by estimating the computing power requirements of rendering tasks, flexibly expanding computing resources, and combining distributed task scheduling, a balance between the computing performance and rendering cost of large-scale rendering tasks can be achieved. This can truly solve the contradiction between computing resources and rendering needs, address the problems of uneven distribution of computing resources and waste of idle resources, and improve the overall efficiency and throughput of distributed rendering.

[0203] Figure 8 This is a schematic diagram of the structure of an electronic device provided in an example embodiment of this application. Figure 8 As shown, the electronic device 80 includes a processor 801 and a memory 802 communicatively connected to the processor 801, the memory 802 storing computer execution instructions.

[0204] The processor executes computer execution instructions stored in the memory to implement the solution provided in any of the above method embodiments. The specific functions and technical effects that can be achieved will not be elaborated here.

[0205] This application also provides a computer-readable storage medium storing computer-executable instructions. When executed by a processor, the computer-executable instructions are used to implement the solution provided in any of the above method embodiments. The specific functions and technical effects to be achieved are not described here.

[0206] This application also provides a computer program product, which includes a computer program stored in a readable storage medium. At least one processor of the electronic device can read the computer program from the readable storage medium. The at least one processor executes the computer program to cause the electronic device to perform the solution provided in any of the above method embodiments. The specific functions and technical effects that can be achieved are not described here.

[0207] Furthermore, in some of the processes described in the above embodiments and accompanying drawings, multiple operations appear in a specific order. However, it should be clearly understood that these operations may not be executed in the order they appear herein, or may be executed in parallel. The sequence numbers are merely used to distinguish different operations, and the sequence number itself does not represent any execution order. Additionally, these processes may include more or fewer operations, and these operations may be executed sequentially or in parallel. It should be noted that the descriptions such as "first," "second," etc., in this document are used to distinguish different messages, devices, modules, etc., and do not represent a sequential order, nor do they limit "first" and "second" to different types. "Multiple" means two or more, unless otherwise explicitly specified.

[0208] Other embodiments of this application will readily occur to those skilled in the art upon consideration of the specification and practice of the invention disclosed herein. This application is intended to cover any variations, uses, or adaptations of this application that follow the general principles of this application and include common knowledge or customary techniques in the art not disclosed herein. The specification and examples are to be considered exemplary only, and the true scope and spirit of this application are indicated by the following claims.

[0209] It should be understood that this application is not limited to the precise structure described above and shown in the accompanying drawings, and various modifications and changes can be made without departing from its scope. The scope of this application is limited only by the appended claims.

Claims

1. A distributed rendering method, characterized in that, include: Obtain multiple rendering tasks to be processed, and determine the computing power requirement information of each rendering task based on the attributes of each rendering task and the computing power requirement of the model to be rendered. Based on the computing power requirement information of each rendering task, the plurality of rendering tasks are distributed task scheduling processing is performed to determine the execution order of the plurality of rendering tasks. According to the execution order of the multiple rendering tasks, computing resources are allocated to each rendering task, and the computing resources are scheduled to execute the allocated rendering tasks to obtain the rendering results. Based on the attributes of each rendering task and the computational power requirements of the model to be rendered, the computational power requirements of each rendering task are determined, including: For each rendering task, the model to be rendered included in the rendering task is determined based on the rendering scene data of the rendering task. Obtain the weights and reference rendering time of the model to be rendered from the statistical database; Based on the camera position and orientation in the rendering scene data, it is determined whether the model to be rendered is within the camera's field of view, and the weight of the model to be rendered is adjusted accordingly; the larger the weight of the model to be rendered, the higher the computing power required to render the model. The computing power requirement information of the rendering task is determined based on the weight of the model to be rendered, the reference rendering time, and the computing power requirement information corresponding to the attributes of the rendering task.

2. The method according to claim 1, characterized in that, The acquisition of multiple rendering tasks to be processed includes: Retrieve multiple rendering tasks to be processed from the rendering task queue; The method further includes: Each rendering task and its computing power requirements are stored in the task data table.

3. The method according to claim 2, characterized in that, The method further includes: Based on the rendering parameters in the attributes of the rendering task, determine the computing power requirement information corresponding to the rendering parameters.

4. The method according to claim 1, characterized in that, Before obtaining the weights and reference rendering time of the model to be rendered from the statistical database, the process also includes: Based on the attribute information of the model to be rendered, the weight of the model to be rendered is determined, and the weight of the model to be rendered is stored in the statistical database; The model to be rendered is rendered based on the configured fast rendering quality standard, the reference rendering time of the model to be rendered is determined, and the reference rendering time of the model to be rendered is stored in the statistical database.

5. The method according to claim 4, characterized in that, After allocating computing resources to each of the multiple rendering tasks according to their execution order, and scheduling the computing resources to execute the allocated rendering tasks to obtain the rendering results, the method further includes: Store the actual rendering time for each of the aforementioned rendering tasks; For each rendering task, the actual rendering time of each model in the rendering task is calculated based on the actual rendering time of the rendering task and the weight of the model in the rendering task. Based on the actual rendering time of each model, update the weight and reference rendering time of each model in the statistical database.

6. The method according to claim 3, characterized in that, The step of determining the computing power requirement information of the rendering task based on the weights and reference rendering time of the model to be rendered, and the computing power requirement information corresponding to the rendering parameters, includes: Based on the weights of the model to be rendered, the reference rendering time of the model to be rendered is weighted and summed to obtain the computing power requirement information corresponding to the model. The computing power requirement information corresponding to the model and the computing power requirement information corresponding to the rendering parameters are weighted and summed to obtain the computing power requirement information of the rendering task.

7. The method according to claim 2, characterized in that, The step of performing distributed task scheduling processing on the plurality of rendering tasks based on the computing power requirement information of each rendering task, and determining the execution order of the plurality of rendering tasks, includes: At each first time interval, for the first rendering task that has not yet been inserted into the distributed task scheduling queue in the data table, the first rendering task is processed by distributed task scheduling based on the computing power requirement information of the first rendering task to determine the execution order of the first rendering task.

8. The method according to claim 7, characterized in that, At each first time interval, for the first rendering task that has not yet been inserted into the distributed task scheduling queue in the data table, after determining the execution order of the first rendering task by performing distributed task scheduling processing on the first rendering task according to the computing power requirement information of each first rendering task, the process further includes: According to the execution order of the plurality of rendering tasks, a first number of rendering tasks are inserted into the distributed task scheduling queue in the order of execution, wherein the first number is determined based on the number of computing resources that are currently idle in the cluster.

9. The method according to claim 8, characterized in that, The step of allocating computing resources to each of the multiple rendering tasks according to their execution order, and scheduling the computing resources to execute the allocated rendering tasks to obtain rendering results includes: Rendering tasks are sequentially retrieved from the distributed task scheduling queue. Computing resources are allocated to the currently retrieved rendering task, and the computing resources are scheduled to execute the allocated rendering task to obtain the rendering result.

10. The method according to claim 9, characterized in that, Before allocating computing resources to the currently acquired rendering task, the process also includes: If it is determined that there are no idle computing resources and the cluster meets the conditions for expanding computing resources, an expansion request is sent to the computing platform to add one or more idle computing resources to the cluster.

11. The method according to claim 10, characterized in that, Sending a capacity expansion request to the computing platform includes: If the current time is during a peak rendering period, a first expansion request is sent to the computing platform. The first expansion request is used to instruct the computing platform to expand the computing resources of the cluster to a number equal to the upper limit of the number of computing resources of the cluster. If the current time is not during a peak rendering period, a second expansion request is sent to the computing platform. The second expansion request is used to instruct the computing platform to expand the computing resources of the cluster to a number equal to a second number, where the second number is less than the upper limit of the number of computing resources. or, Based on the number of rendering tasks to be rendered in the distributed task scheduling queue, a third expansion request is sent to the computing platform. The first expansion request is used to instruct the computing platform to add a third number of computing resources to the cluster, wherein the third number is determined based on the number of rendering tasks to be rendered. or, A fourth expansion request is sent to the computing platform, wherein the first expansion request is used to instruct the computing platform to add a computing resource in the cluster.

12. The method according to claim 8, characterized in that, Rendering tasks are sequentially retrieved from the distributed task scheduling queue, and computing resources are allocated to the currently retrieved rendering task, including: Rendering tasks are obtained sequentially from the distributed task scheduling queue; If it is determined that the amount of scene data of the currently acquired rendering task is less than or equal to the data amount threshold, and the waiting time of the currently acquired rendering task is less than or equal to the waiting time threshold, then computing resources are allocated to the currently acquired rendering task. If it is determined that the amount of scene data for the currently acquired rendering task is greater than the data amount threshold, or the waiting time for the currently acquired rendering task is greater than the waiting time threshold, then the execution of the currently acquired rendering task is abandoned.

13. An electronic device, characterized in that, include: A processor, and a memory communicatively connected to the processor; The memory stores computer-executed instructions; The processor executes computer execution instructions stored in the memory to implement the method as described in any one of claims 1-12.

14. A computer-readable storage medium, characterized in that, The computer-readable storage medium stores computer-executable instructions, which, when executed by a processor, are used to implement the method as described in any one of claims 1-12.

15. A computer program product, characterized in that, The computer program product includes a computer program that, when executed by a processor, is used to implement the method as described in any one of claims 1-12.

Citation Information

Patent Citations

  • Intelligent scheduling method, device, apparatus and storage medium for distributed rendering

    CN109242945A

  • Resource scheduling method, device, terminal and storage medium

    CN110532100A

  • Task scheduling method and device suitable for distributed rendering

    CN112015533A

  • Method, system and device for dynamically adjusting number of computing containers and storage medium

    CN112463290A