Task processing method, device, program product, computer equipment and medium
By transmitting the alarm task while the task processor is waiting to process the task, the high-frequency working state is maintained, which solves the problem of low processing efficiency caused by the sleep state of the task transmitter and realizes efficient processing of the task processor.
Patent Information
- Application Number
- CN202210885674.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2022-07-26
- Publication Date
- 2025-09-16
- Estimated Expiration
- 2042-07-26
AI Technical Summary
The task transmitter enters a sleep state while waiting for the task processor to execute the task, resulting in a slow task launch speed, which in turn affects the processing efficiency of the task processor.
By calling the task transmitter to transmit computing tasks and alarm tasks to the task processor, and maintaining a high-frequency working state before the alarm task is completed, the task transmitter is ensured to continue working until the task processor completes the task.
The processing efficiency of the task processor is improved, ensuring that the task transmitter does not enter a sleep state while waiting for the processor to complete the task, maintaining high-frequency operation, and improving the speed and throughput of task processing.
Smart Images

Figure CN115237565B_ABST
Abstract
Description
Technical Field
[0001] The present application relates to the field of computer technology, and in particular to a task processing method, apparatus, program product, computer equipment, and medium. Background Art
[0002] The end device may have a task transmitter and a task processor. As the name implies, the task transmitter is used to transmit tasks to be processed to the task processor, while the task processor is used to process the tasks transmitted by the task transmitter.
[0003] In existing applications, the task transmitter may enter a sleep state while waiting for the task processor to execute the task, and the subsequent awakening of the task transmitter is very slow, resulting in the task transmitter sending subsequent tasks to the task processor at a slow speed, which in turn causes the task processor to be unable to quickly process the tasks that need to be processed. Summary of the Invention
[0004] The present application provides a task processing method, apparatus, program product, computer device, and medium, which can improve the efficiency of a task processor in executing computing tasks in a computing scenario.
[0005] On the one hand, the present application provides a task processing method, the method comprising:
[0006] Invoke a task transmitter to transmit a first computing task and a first alarm task for the first computing task to a task processor; the first computing task refers to any computing task in a computing scenario;
[0007] Calling a task processor to execute a first computing task;
[0008] If the first computing task is completed, the task processor is called to execute the first alarm task; the task transmitter maintains the working state of the first frequency before the first alarm task is completed; the first frequency is greater than or equal to the first frequency threshold;
[0009] If the first alarm task is executed, the task transmitter is called to continue to transmit the second computing task and the second alarm task for the second computing task to the task processor at the first frequency, and the task processor is called to continue processing the second computing task and the second alarm task; the second computing task refers to the next computing task of the first computing task in the computing scenario.
[0010] In one aspect, the present application provides a task processing device, which includes:
[0011] A first calling module is used to call a task transmitter to transmit a first computing task and a first alarm task of the first computing task to a task processor; the first computing task refers to any computing task in a computing scenario;
[0012] A second calling module is used to call the task processor to execute the first computing task;
[0013] a third calling module, configured to call the task processor to execute the first alarm task if the first computing task is completed; the task transmitter maintains the working state of the first frequency before the first alarm task is completed; the first frequency is greater than the first frequency threshold;
[0014] The fourth calling module is used to call the task transmitter to continue to transmit the second computing task and the second alarm task of the second computing task to the task processor at the first frequency if the first alarm task is executed; and call the task processor to continue to process the second computing task and the second alarm task; the second computing task refers to the next computing task of the first computing task in the computing scenario.
[0015] Optionally, the first computing task has multiple subtasks; and the manner in which the first calling module calls the task transmitter to transmit the first computing task and the first alarm task for the first computing task to the task processor includes:
[0016] Invoke the task transmitter to transmit the subtasks of the first computing task to the task processor in sequence;
[0017] After the task transmitter is called to transmit the last subtask of the first computing task to the task processor, the task transmitter is called to transmit the first alarm task to the task processor.
[0018] Optionally, the second calling module calls the task processor to execute the first computing task, including:
[0019] The task processor is called to execute the subtasks of the first computing task in sequence according to the order in which the subtasks of the first computing task are received; if all the subtasks of the first computing task are completed, the first computing task is completed;
[0020] If the first computing task is completed, the third calling module calls the task processor to execute the first alarm task, including:
[0021] If the last subtask of the first computing task is completed by the task processor, the task processor is called to execute the first alarm task.
[0022] Optionally, before the first alarm task is completed refers to a period from when the task transmitter transmits the last subtask of the first computing task to the task processor to when the first alarm task is completed.
[0023] Optionally, the above device is further used for:
[0024] Call the task transmitter to query the task processor for the execution result of the first alarm task;
[0025] If the execution result of the first alarm task is found, it is determined that the first alarm task is completed;
[0026] In the process of performing a round-robin query on the execution result of the first alarm task, the task transmitter maintains the working state of the first frequency.
[0027] Optionally, the first alarm task carries a target random number generated by a task transmitter, and the first alarm task refers to a task of writing the target random number at a target memory address; the above-mentioned device is further configured to:
[0028] Call the task launcher to query the target random number at the target memory address in turn;
[0029] If the target random number is found at the target memory address, it is determined that the first alarm task is completed; the existence of the target random number at the target memory address is the execution result of the first alarm task.
[0030] Optionally, the above device is further used for:
[0031] If the processing load of the first computing task in the task processor meets the load supplement condition for the task processor, calling the task transmitter to transmit the load supplement task to the task processor;
[0032] The second calling module calls the task processor to execute the first computing task, including:
[0033] The task processor is called to execute the load supplement task and the first computing task in parallel at a second frequency; the second frequency is greater than or equal to a second frequency threshold.
[0034] Optionally, the load of the task processor executing the load supplement task and the first computing task in parallel is greater than or equal to the critical load of the task processor for frequency reduction. If the load of the task processor executing the task is greater than or equal to the critical load for frequency reduction, the task processor maintains the working state of the second frequency.
[0035] Optionally, the first computing task has multiple subtasks, and the subtasks of the first computing task include the target subtask;
[0036] If the processing load of the first computing task in the task processor meets the load supplement condition for the task processor, the apparatus calls the task transmitter to transmit the load supplement task to the task processor, including:
[0037] Predicting the target load of the task processor to execute the target subtask;
[0038] If the target load is less than the frequency reduction critical load, determining that the processing load of the target subtask in the task processor meets the load supplement condition;
[0039] Calling the task transmitter to transmit the load supplement task for the target subtask to the task processor;
[0040] The second calling module calls the task processor to execute the load supplement task and the first computing task in parallel at the second frequency, including:
[0041] The task processor is called to execute the load supplement task and the target subtask in parallel at a second frequency.
[0042] Optionally, the above device is further used for:
[0043] Determine a supplementary load for the task processor according to the target load and the frequency reduction critical load;
[0044] Determine the load replenishment task based on the supplementary load.
[0045] Optionally, the computing scenario is an optimization scenario for multiple video frames, and each video frame corresponds to a computing task; the computing task corresponding to any video frame refers to a task of optimizing any video frame;
[0046] The above device is also used for:
[0047] The task processor is called to transmit the calculation result of the calculation task corresponding to each frame of video to the task transmitter; the calculation result of the calculation task corresponding to any frame of video by the task processor refers to the optimized video image after the task processor optimizes any frame of video;
[0048] The task launcher is called to display the optimized video image of each frame of the video on the display interface.
[0049] In one aspect, the present application provides a computer device including a memory and a processor, wherein the memory stores a computer program. When the computer program is executed by the processor, the processor executes the method in one aspect of the present application.
[0050] In one aspect, the present application provides a computer-readable storage medium storing a computer program. The computer program includes program instructions. When the program instructions are executed by a processor, the processor executes the method in the above aspect.
[0051] According to one aspect of the present application, a computer program product or computer program is provided, comprising computer instructions stored in a computer-readable storage medium. A processor of a computer device reads the computer instructions from the computer-readable storage medium and executes the computer instructions, causing the computer device to perform the method provided in various optional embodiments such as the above-mentioned aspect.
[0052] This application can call a task transmitter to transmit a first computing task and a first alarm task of the first computing task to a task processor; the first computing task refers to any computing task in a computing scenario; and call the task processor to execute the first computing task; if the first computing task is completed, the task processor can also be called to execute the first alarm task; the task transmitter maintains the working state of the first frequency before the first alarm task is completed; the first frequency is greater than the first frequency threshold; if the first alarm task is completed, the task transmitter can be called to continue to transmit the second computing task and the second alarm task of the second computing task to the task processor at the first frequency, and call the task processor to continue processing the second computing task and the second alarm task; the second computing task refers to the next computing task of the first computing task in the computing scenario. It can be seen from this that the method proposed in the present application uses the first alarm task to prevent the task transmitter from reducing its frequency (such as reducing it to below the first frequency threshold) while waiting for the task processor to complete the execution of the first computing task. As a result, the task transmitter can continue to transmit the second computing task to the task processor at a high frequency (such as the first frequency). The task transmitter transmits tasks to the task processor at a faster frequency, which also enables the task processor to process the tasks transmitted by the task transmitter as quickly as possible with less idle time, thereby improving the efficiency of the task processor in processing tasks. BRIEF DESCRIPTION OF THE DRAWINGS
[0053] In order to more clearly illustrate the technical solutions in the present application or the prior art, the following briefly introduces the drawings required for use in the embodiments or the description of the prior art. Obviously, the drawings described below are only some embodiments of the present application. For ordinary technicians in this field, other drawings can be obtained based on these drawings without any creative work.
[0054] Figure 1 This is a schematic diagram of a network architecture provided by an embodiment of the present application;
[0055] Figure 2 This is a schematic diagram of a task processing scenario provided by this application;
[0056] Figure 3 This is a flowchart of a task processing method provided by this application;
[0057] Figure 4 This is a schematic diagram of a task processing scenario provided by this application;
[0058] Figure 5 This is a schematic diagram of a mission launch scenario provided by this application;
[0059] Figure 6 This is a flowchart of another task processing method provided by this application;
[0060] Figure 7 This is a schematic diagram of a task parallel processing scenario provided by this application;
[0061] Figure 8 This is a schematic diagram of another scenario of task parallel processing provided by this application;
[0062] Figure 9 This is a flowchart of a task processing provided by this application;
[0063] Figure 10a-Figure 10b This is a schematic diagram of an experiment for task processing provided by this application;
[0064] Figure 11 This is a structural diagram of a task processing device provided by this application;
[0065] Figure 12 This is a structural diagram of a computer device provided by this application. DETAILED DESCRIPTION
[0066] The following will be combined with the accompanying drawings to clearly and completely describe the technical solutions in this application. Obviously, the embodiments described are only some of the embodiments of this application, not all of them. Based on the embodiments in this application, all other embodiments obtained by ordinary technicians in this field without making any creative efforts are within the scope of protection of this application.
[0067] This application relates to artificial intelligence-related technologies. Artificial Intelligence (AI) refers to theories, methods, technologies, and application systems that use digital computers or machines controlled by digital computers to simulate, extend, and expand human intelligence, perceive the environment, acquire knowledge, and use knowledge to achieve optimal results. In other words, artificial intelligence is a comprehensive technology in computer science that attempts to understand the essence of intelligence and produce a new type of intelligent machine that can respond in a manner similar to human intelligence. Artificial intelligence is the study of the design principles and implementation methods of various intelligent machines, enabling them to have the functions of perception, reasoning, and decision-making.
[0068] Artificial intelligence (AI) technology is a comprehensive discipline encompassing a wide range of fields, encompassing both hardware and software technologies. Foundational AI technologies generally include sensors, specialized AI chips, cloud computing, distributed storage, big data processing, operating / interaction systems, and mechatronics. AI software technologies primarily encompass computer vision, speech processing, natural language processing, and machine learning / deep learning.
[0069] The artificial intelligence involved in this application may refer to a computing task that needs to be processed, which may be an AI task. For example, the AI task may be a task of optimizing video images through a model.
[0070] First of all, it should be noted that this application can display a prompt interface or pop-up window before collecting relevant user data (such as the user's video screen during a video call) and during the process of collecting relevant user data. The prompt interface or pop-up window is used to remind the user that its relevant data is currently being collected, so that this application only starts to execute the relevant steps of obtaining user-related data after obtaining the user's confirmation operation on the prompt interface or pop-up window. Otherwise (that is, when the user's confirmation operation on the prompt interface or pop-up window is not obtained), the relevant steps of obtaining user-related data are terminated, that is, the user's relevant data is not obtained. In other words, all user data collected by this application are collected with the user's consent and authorization, and the collection, use and processing of relevant user data need to comply with the relevant laws, regulations and standards of relevant countries and regions.
[0071] See Figure 1 , Figure 1 This is a schematic diagram of the network architecture provided by this application. Figure 1 As shown, the network architecture may include a server 200 and a terminal device cluster, and the terminal device cluster may include one or more terminal devices, and the number of terminal devices is not limited here. Figure 1 As shown, the multiple terminal devices may specifically include terminal device 1, terminal device 2, terminal device 3, ..., terminal device k; Figure 1 As shown, terminal device 1, terminal device 2, terminal device 3, ..., terminal device k can all be connected to the server 200 through a network, so that each terminal device can exchange data with the server 200 through the network connection.
[0072] like Figure 1 The server 200 shown can be a standalone physical server, a server cluster or distributed system consisting of multiple physical servers, or a cloud server that provides basic cloud computing services such as cloud services, cloud databases, cloud computing, cloud functions, cloud storage, network services, cloud communications, middleware services, domain name services, security services, CDN, and big data and artificial intelligence platforms. The terminal device can be a smart terminal such as a smartphone, tablet computer, laptop computer, desktop computer, smart TV, etc. The following describes the embodiments of the present application in detail using the communication between terminal device 1, terminal device 2 and server 200 as an example.
[0073] Please also see Figure 2 , Figure 2This is a schematic diagram of a task processing scenario provided by this application. Data can be exchanged between terminal device 1 and terminal device 2. Terminal device 1 can send the calculation results of a computing task to terminal device 2 via server 200, and terminal device 2 can display and output the calculation results provided by terminal device 1, as described below.
[0074] For example, terminal device 1 and terminal device 2 can perform online video communication, and a computing task of terminal device 1 can be a task of optimizing (such as beautification or image quality enhancement, etc.) a video screen (which can be understood as a video frame, which can be an image, and the video screen is a screen captured by terminal device 1) during the video call with terminal device 2. Therefore, terminal device 1 can give the calculation result of the computing task (such as the optimized video screen) to terminal device 2, so that terminal device 2 can display the optimized video screen in the video call interface. Server 200 can be a background server for video communication between terminal devices (such as the background server of the communication application used for video communication).
[0075] Specifically, the terminal device 1 may have a task transmitter and a task processor. As the name implies, the task transmitter may be used to transmit computing tasks to the task processor, and the task processor may be used to process the computing tasks transmitted by the task transmitter.
[0076] Therefore, ① during data exchange (e.g., online video communication) between terminal device 1 and terminal device 2, the task transmitter can transmit computing task 1 at a high frequency to the task processor. This computing task 1 can be a task for optimizing any video image captured by terminal device 1 during video communication with terminal device 2. Furthermore, ② after transmitting computing task 1 to the task processor, the task transmitter also transmits an alarm task for computing task 1 to the task processor, so that the task processor can execute the alarm task for computing task 1 after completing processing of computing task 1.
[0077] ③ After the task transmitter transmits computing task 1 to the task processor, it needs to wait for the task processor to complete the execution of computing task 1 before it continues to transmit the next computing task of computing task 1 to the task processor. For example, the next computing task may be a task for optimizing the next video screen of the video screen that needs to be optimized by computing task 1. Therefore, during the period from when the task transmitter transmits computing task 1 to the task processor to when the task processor is waiting for the task processor to complete the execution of computing task 1, the task transmitter can continuously query the task processor for the execution result of the alarm task for computing task 1 in turn, so that the task transmitter will not enter the sleep state or the frequency reduction state while waiting for the task processor to complete the execution of computing task 1. That is, the task transmitter can continue to maintain a high-frequency working state while waiting for the task processor to complete the execution of computing task 1.
[0078] ④ If the task processor's execution result for the alarm task of computing task 1 is queried, it indicates that the task processor has completed the execution of computing task 1, and the task transmitter can continue to quickly transmit the next computing task of computing task 1 to the task processor in a high-frequency working state.
[0079] Through the above process, ⑤ after the task processor completes the execution of computing task 1, it can obtain the computing result of computing task 1; ⑥ the task processor can give the computing result of computing task 1 to the task transmitter; ⑦ the task transmitter can output the computing result (such as the optimized video picture of a certain video picture) on the video call interface between terminal device 1 and terminal device 2 (the interface in terminal device 1), and can give the computing result of computing task 1 to server 200, and server 200 can then give the computing result of computing task 1 to terminal device 2, and then terminal device 2 can output the computing result of computing task 1 (such as the optimized video picture of a certain video picture) on the video call interface between terminal device 1 and terminal device 2.
[0080] By adopting the solution provided in this application, in a computing scenario that requires real-time task processing (such as a video call scenario), the task transmitter can continuously and rapidly transmit several computing tasks in the computing scenario to the task processor in sequence at a high frequency, so that the task processor can also receive the several computing tasks as soon as possible and process them as quickly as possible, thereby improving the processing efficiency of computing tasks in the computing scenario.
[0081] See Figure 3 , Figure 3 This is a flowchart of a task processing method provided by this application. Figure 3 As shown, the method may include:
[0082] Step S101, calling a task transmitter to transmit a first computing task and a first alarm task for the first computing task to a task processor; the first computing task refers to any computing task in a computing scenario.
[0083] Optionally, the execution subject in this application can be a computer device, which can be a terminal device, or can be other devices (such as other end devices), depending on the actual application scenario. The computer device can have a task transmitter and a task processor.
[0084] The task transmitter may be a device for transmitting tasks to the task processor, and the task processor may be a device for processing (e.g., executing) the tasks transmitted by the task transmitter. For example, the task transmitter may be a central processing unit (CPU), and the task processor may be a graphics processing unit (GPU).
[0085] In addition to rendering the page elements that need to be displayed, the CPU can also send other tasks to the GPU, allowing the GPU to share more task processing with the CPU. For example, the CPU can also send tasks such as face detection and recognition, super-resolution processing of images, beautification of video or images, and OCR (text recognition) to the GPU. The following description will be made using the terminal device as an example of the execution subject in the embodiment of this application.
[0086] The task processor can be used to coordinate and distribute computing tasks generated in the terminal device. Therefore, if a computing task in a computing scenario is triggered in the terminal device, and the computing scenario has multiple computing tasks, the terminal device can call the task transmitter to transmit the first computing task and the alarm task for the first computing task to the task processor. The alarm task for the first computing task can be called the first alarm task. The first alarm task can be understood as the alarm task of the task transmitter. The first alarm task can be used to prevent the task transmitter from entering a sleep state or a frequency reduction state while waiting for the task processor to complete processing the computing task. For details, please refer to the following description.
[0087] The first computing task may be any computing task in a computing scenario.
[0088] For example, the computing scenario may be an optimization scenario for multiple frames of video, where each frame of video corresponds to a computing task, and the computing task corresponding to any frame of video may refer to a task of optimizing the any frame of video. Optimizing the video may refer to beautifying the faces in the video (such as face slimming, eye enlargement, whitening, skin smoothing, etc.), optimizing the overall video (such as increasing brightness, color contrast, or adding filters, etc.), or optimizing specific objects in the video (such as edge sharpening, etc.). In this scenario, the first computing task may be the task of optimizing any frame of the multiple frames of video.
[0089] Optionally, the multiple video frames in the above computing scenario can be multiple video frames during an online video call. These multiple video frames are the video frames of the user during the video call. Therefore, in this computing scenario, the real-time optimization requirements for each video frame are relatively high. When the online video call ends, the computing scenario ends, and the last computing task in the computing scenario is to optimize the last video frame captured by the terminal device during the online video call.
[0090] Optionally, the first computing task may have multiple subtasks. When the terminal device calls the task transmitter to transmit the first computing task to the task processor, it may call the task transmitter to transmit the subtasks of the first computing task to the task processor in sequence.
[0091] After the terminal device calls the task transmitter to transmit the last subtask of the first computing task to the task processor, it can call the task transmitter to transmit the first alarm task to the task processor, so that the task processor can execute the first alarm task in sequence after executing the last subtask of the first computing task.
[0092] It is understood that the first alarm task will only be executed if the first computing task is completed in the task processor, and if the last subtask of the first computing task is completed in the task processor, it can be considered that all subtasks of the first computing task have been completed, that is, the entire first computing task is considered to have been completed. If the last subtask of the first computing task is completed in the task processor, the terminal device can call the task processor to execute the first alarm task.
[0093] In other words, the first alarm task may be an alarm task for determining whether the task processor has completed execution of the first computing task. For details, please refer to the following description.
[0094] For example, if the first computing task is to optimize a frame of video using an optimization model, then the multiple subtasks included in the first computing task can refer to tasks that perform operations on the video using multiple operators (which can be called optimization operators) included in the optimization model. There is an operation order between the multiple operators, and the terminal device can call the task transmitter to sequentially transmit the various subtasks of the first computing task to the task processor according to the operation order between the multiple operators. One operator corresponds to a subtask of the first computing task. Performing computational optimization on the video using one operator is a subtask of the first computing task. For example, one operator can be a convolution operator, etc.
[0095] It can be understood that if the task transmitter has just started to transmit tasks to the task transmitter, and the above-mentioned first computing task is the first computing task in the computing scenario, then since the working frequency of the task transmitter needs to be slowly increased, the task transmitter can first transmit at a lower frequency when sending the subtask of the first computing task, and then slowly increase to the first frequency (which can be understood as a higher frequency) and maintain the first frequency for transmission. Subsequently, the frequency of the task transmitter when transmitting computing tasks after the first computing task to the task processor can also be maintained at the first frequency for transmission.
[0096] Step S102: calling a task processor to execute a first computing task.
[0097] Optionally, the terminal device may call the task processor to execute the subtasks of the first computing task transmitted by the acquired task transmitter in sequence (e.g., in the order in which the subtasks are received, or in the order in which multiple operators are operated). The task processor may immediately execute each subtask of the first computing task upon acquiring the subtask. When all subtasks of the first computing task are completed, the first computing task may be considered to be completed.
[0098] For example, if the multiple subtasks of the first computing task refer to multiple operators of the optimization model, then calling the task processor to execute the subtasks of the first computing task can mean calling the task processor to perform superimposed operations on the video screen through the various operators of the first computing task. The process of performing operations on the video screen through operators is the process of optimizing the video screen.
[0099] For example, the first computing task may sequentially include subtask 1 for computing the video screen through operator 1, subtask 2 for computing the video screen through operator 2, and subtask 3 for computing the video screen through operator 3. Therefore, the terminal device may call the task transmitter to sequentially transmit subtask 1, subtask 2, and subtask 3 to the task processor, so that the task processor may first execute subtask 1 (i.e., computing the video screen through operator 1), then execute subtask 2 (i.e., computing the result of computing the video screen through operator 1 through operator 2), and finally execute subtask 3 (i.e., computing the result of computing the video screen through operator 2 through operator 3). Finally, after executing subtask 3, the optimized video screen of the video screen obtained by optimizing the video screen may be obtained. That is, upon completing the execution of the first computing task, the optimized video screen of the video screen corresponding to the first computing task may be obtained.
[0100] See Figure 4 , Figure 4 This is a scenario diagram of a task processing provided by this application. Figure 4 As shown, the task transmitter can first obtain multiple subtasks of the first computing task (including task 1, task 2, task 3, task 4, task 5, ... in sequence), and the task transmitter can transmit each subtask of the first computing task to the task processor in sequence. The task processor can have a command queue, and the task processor can place the subtasks received from the task transmitter in the command queue.
[0101] Subsequently, the task processor can take out each subtask from the command queue in turn for execution, such as taking out task 1 first and executing task 1; then taking out task 2 and executing task 2; then taking out task 3 and executing task 3; then, taking out task 4 and executing task 4; then, taking out task 5 and executing task 5, and so on. Finally, after executing all subtasks of the first computing task, the calculation result of the first computing task can be obtained.
[0102] Step S103: If the first computing task is completed, the task processor is called to execute the first alarm task; the task transmitter maintains the working state of the first frequency before the first alarm task is completed; the first frequency is greater than or equal to the first frequency threshold.
[0103] Optionally, if the first computing task is completed in the task processor, that is, the last subtask of the first computing task is completed in the task processor, the task processor may be called to execute the first alarm task.
[0104] Among them, the task transmitter can maintain the working state of the first frequency until the first alarm task is executed. The first frequency can be greater than or equal to the first frequency threshold. The first frequency threshold can be set according to the actual application scenario. The first frequency threshold can be the minimum frequency for the task transmitter to work efficiently. The frequency greater than or equal to the first frequency threshold can be called the first frequency. In other words, the first frequency refers to the frequency greater than or equal to the first frequency threshold.
[0105] Optionally, before the first alarm task is completed, it may refer to the time period from when the task transmitter transmits the last subtask of the first computing task to the task processor to when the first alarm task is completed (which may be referred to as the target time period), that is, the task transmitter may be in the working state of the first frequency throughout the target time period. The task transmitter remaining in the working state of the first frequency indicates that the task transmitter will not enter a sleep state or a frequency reduction state. The frequency reduction state may refer to a working state in which the task transmitter is frequency-reduced to a lower frequency (such as a frequency less than the first frequency threshold).
[0106] Among them, it can be understood that the task transmitter has its own scheduling rules, which are specifically reflected in: the task transmitter can maintain the working state of the first frequency during the period of transmitting each subtask of the first computing task to the task processor, and when the task transmitter transmits the last subtask of the first computing task to the task processor, the task transmitter needs to wait for the task processor to execute the first computing task until the task processor completes the execution of the first computing task. During the waiting period (such as during the above-mentioned target period), for energy efficiency considerations, the task transmitter will quickly enter a sleep state or a low-frequency working state, and after the next computing task is followed, the task transmitter wakes up very slowly. During the wake-up process, the task transmitter transmits tasks (such as subtasks of the next computing task) to the task processor very slowly. The transmitted tasks cannot meet the high throughput requirements of the GPU, and the GPU will be in a "hungry" state. At this time, the GPU may also enter a reduced-frequency working state due to the small amount of tasks to be processed, which will double cause the task processor to process tasks very slowly.
[0107] Therefore, during the target time period (i.e., from the time when the task transmitter transmits the last subtask of the first computing task to the task processor to the time when the first alarm task is completed (i.e., the first computing task is completed)), the task transmitter can continuously query the task processor for the execution result of the first alarm task in sequence. If the execution result of the first alarm task is not found, the query will continue (such as querying every time period, which time period can be 1ms or other time period); and if the execution result of the first alarm task is found, the task transmitter can determine that the task processor has completed the execution of the first alarm task, that is, the task processor has completed the execution of the first computing task.
[0108] Among them, since the task transmitter can continuously query the task processor for the execution result of the first alarm task in sequence during the target period, the task transmitter will not enter the sleep state or reduce the frequency to a low frequency state to work during the target period (that is, during the period of sequential query of the execution result of the first alarm task).
[0109] Optionally, the first alarm task transmitted by the task transmitter to the task processor may carry a random number generated by the task transmitter (which may be referred to as a target random number). Therefore, the first alarm task may refer to a task of writing the target random number at a target memory address.
[0110] The target memory address may be any memory address specified by the task transmitter. Alternatively, the target memory address may be a temporary memory address that can be destroyed if the task transmitter confirms that the first alarm task has been completed.
[0111] Therefore, the task transmitter continuously queries the task processor for the execution result of the first alarm task in turn, which may mean that the task transmitter continuously queries the target random number at the target memory address in turn. If the task transmitter queries the target random number at the target memory address, it can be determined that the first alarm task has been completed, and the target random number written to the target memory address can be the execution result of the first alarm task.
[0112] If the target random number is not found at the target memory address, it indicates that the first alarm task has not been completed.
[0113] Step S104, if the first alarm task is completed, the task transmitter is called to continue to transmit the second computing task and the second alarm task for the second computing task to the task processor at the first frequency, and the task processor is called to continue processing the second computing task and the second alarm task; the second computing task refers to the next computing task of the first computing task in the computing scenario.
[0114] Optionally, if the task transmitter finds that the first alarm task has been completed, then since the task transmitter is still operating at the first frequency, the terminal device can call the task transmitter to continue to transmit the subtasks of the second computing task and the alarm task for the second computing task to the task processor at the first frequency. The alarm task for the second computing task can be called the second alarm task. The second computing task can be the next computing task of the first computing task in the computing scenario. For example, if the first computing task is a task for optimizing a certain frame of video in a plurality of frames of video, the second computing task can be a task for optimizing the next frame of video after the certain frame of video in the plurality of frames of video.
[0115] Among them, the process of the terminal device calling the task processor to process the second computing task and the second alarm task is the same as the process of calling the task processor to process the first computing task and the first alarm task. Through the above process, each computing task in the computing scenario can be executed according to the principle described above. One computing task corresponds to one alarm task. The alarm task corresponding to one computing task is to prevent the task transmitter from entering a sleep state or a low-frequency working state before waiting for the task processor to complete the execution of the computing task, that is, to enable the task transmitter to maintain the first frequency working state before waiting for the task processor to complete the execution of the computing task (such as the target period), and then enable the task transmitter to maintain the first frequency state (which can be understood as a high-frequency state) to transmit the next computing task of the current computing task to the task processor, which allows the task processor to process the tasks transmitted by the transmitter as soon as possible, improve the efficiency of the task processor in processing tasks, and improve the utilization rate of the task processor.
[0116] See Figure 5 , Figure 5 This is a schematic diagram of a mission launch scenario provided by this application. Figure 5 As shown, there may be several consecutive computing tasks in the computing scenario, and the several consecutive computing tasks may include computing task 1, computing task 2, computing task 3, ... in sequence.
[0117] Among them, computing task 1 can include multiple subtasks, which can include subtask 11, subtask 12, subtask 13,...; computing task 2 can also include multiple subtasks, which can include subtask 21, subtask 22, subtask 23,...; computing task 3 can also include multiple subtasks, which can include subtask 31, subtask 32, subtask 33,...
[0118] Each computing task can have a corresponding alarm task (optionally, the last computing task in the computing scenario may not have an alarm task), wherein the alarm task of computing task 1 can be alarm task 1, which can be sent to the task processor after the task transmitter sends the last subtask of computing task 1 to the task processor, and the task processor can execute the alarm task 1 after completing the execution of computing task 1; the alarm task of computing task 2 can be alarm task 2, which can be sent to the task processor after the task transmitter sends the last subtask of computing task 2 to the task processor, and the task processor can execute the alarm task 2 after completing the execution of computing task 2; the alarm task of computing task 3 can be alarm task 3, which can be sent to the task processor after the task transmitter sends the last subtask of computing task 3 to the task processor, and the task processor can execute the alarm task 3 after completing the execution of computing task 3.
[0119] It can be understood that, during the period from the time the task transmitter transmits the last subtask of computing task 1 to the task processor to the time the task processor completes processing computing task 1, the task transmitter can continue to query the task processor for the execution result of alarm task 1 in turn, so that the task transmitter can maintain the working state of the first frequency during the period from the time the task transmitter transmits the last subtask of computing task 1 to the task processor to the time the task processor completes processing computing task 1, and will not enter the sleep state or the reduced frequency working state, so that after querying the execution result of alarm task 1, the task transmitter can continue to quickly transmit computing task 2 to the task processor at the first frequency working state.
[0120] Similarly, during the period from the time the task transmitter sends the last subtask of computing task 2 to the task processor to the time the task processor completes processing computing task 2, the task transmitter can continue to query the task processor for the execution result of alarm task 2 in turn, so that the task transmitter can maintain the working state of the first frequency during the period from the time the task transmitter sends the last subtask of computing task 2 to the task processor to the time the task processor completes processing computing task 2, and will not enter the sleep state or the reduced frequency working state, so that after querying the execution result of alarm task 2, the task transmitter can continue to quickly send computing task 3 to the task processor at the first frequency working state.
[0121] Similarly, during the period from the time the task transmitter sends the last subtask of computing task 3 to the task processor to the time the task processor completes processing computing task 3, the task transmitter can continue to query the task processor for the execution result of alarm task 3 in turn, so that the task transmitter can maintain the working state of the first frequency during the period from the time the task transmitter sends the last subtask of computing task 3 to the task processor to the time the task processor completes processing computing task 3, and will not enter the sleep state or the reduced frequency working state, so that after querying the execution result of alarm task 3, the task transmitter can continue to quickly send the next computing task of computing task 3 (such as computing task 4) to the task processor at the first frequency working state, and so on, until the last computing task of the computing scene.
[0122] Furthermore, if the computing scenario involves optimizing multiple frames of video, then after the task processor completes each computing task in the computing scenario, the terminal device can call the task processor to transmit the computational results of the computational tasks corresponding to each frame of video to the computational transmitter (e.g., to the CPU). The computational results of the computational tasks corresponding to any frame of video by the task processor are the optimized video images after the task processor optimizes that frame of video.
[0123] Then, the terminal device can call the task transmitter to display the optimized video picture of each frame of video picture on the display interface (such as the video call interface described below). For example, if user A turns on the beauty video call function during a video call with user B through terminal device 1 and user B's terminal device 2, then user A's terminal device 1 can collect multiple frames of video pictures of the video call between user A and user B (which can be obtained frame by frame in sequence), and one frame of user A's video picture corresponds to a computing task. Terminal device 1 can optimize the video pictures of user A's multiple frames of video call through the above process to obtain the optimized video pictures of each frame of user A's video picture, and then the terminal device 1 can display the optimized video pictures of each frame of user A's video picture on the video call interface, and terminal device 1 can also transmit the optimized video pictures of each frame of user A's video picture to terminal device 2, so that terminal device 2 can also display the optimized video pictures of each frame of user A's video picture on the video call interface.
[0124] Similarly, if user B also turns on the beauty video call function, then user B's terminal device 2 can collect multiple frames of video images of the video call between user B and user A (which can be obtained frame by frame in sequence). One frame of video image of user B corresponds to a computing task. Terminal device 2 can optimize the multiple frames of video images during the video call of user B through the above process to obtain optimized video images of each frame of video image of user B. Then, the optimized video images of each frame of video image of user B can be displayed in the video call interface in terminal device 2. In addition, terminal device 2 can also transmit the optimized video images of each frame of video image of user B to terminal device 1, so that terminal device 1 can also display the optimized video images of each frame of video image of user B on the video call interface.
[0125] This application can be applied to computing scenarios with high real-time requirements, so that the task transmitter can quickly send the computing tasks in the computing scenario to the task processor, and then the task processor can also quickly execute the computing tasks sent by the task transmitter, thereby improving the processing efficiency of computing tasks in the computing scenario.
[0126] This application can call a task transmitter to transmit a first computing task and a first alarm task of the first computing task to a task processor; the first computing task refers to any computing task in a computing scenario; and call the task processor to execute the first computing task; if the first computing task is completed, the task processor can also be called to execute the first alarm task; the task transmitter maintains the working state of the first frequency before the first alarm task is completed; the first frequency is greater than the first frequency threshold; if the first alarm task is completed, the task transmitter can be called to continue to transmit the second computing task and the second alarm task of the second computing task to the task processor at the first frequency, and call the task processor to continue processing the second computing task and the second alarm task; the second computing task refers to the next computing task of the first computing task in the computing scenario. It can be seen from this that the method proposed in the present application uses the first alarm task to prevent the task transmitter from reducing its frequency (such as reducing it to below the first frequency threshold) while waiting for the task processor to complete the execution of the first computing task. As a result, the task transmitter can continue to transmit the second computing task to the task processor at a high frequency (such as the first frequency). The task transmitter transmits tasks to the task processor at a faster frequency, which also enables the task processor to process the tasks transmitted by the task transmitter as quickly as possible with less idle time, thereby improving the efficiency of the task processor in processing tasks.
[0127] See Figure 6 , Figure 6 This is a flow chart of another task processing method provided by this application. Figure 6 The described method can be combined with the above Figure 3 The methods described are combined and used simultaneously. Figure 6 The corresponding application embodiment describes how to keep the task processor at a high frequency and perform high-efficiency work to improve the utilization of the task processor. Figure 6 As shown, the method may include:
[0128] Step S201 : predicting the target load of the task processor in processing the target subtask.
[0129] Optionally, if the processing load of the first computing task in the task processor meets the load supplementation conditions for the task processor, the terminal device can call the task transmitter to transmit the load supplementation task to the task processor, so that the task processor can execute the load supplementation task and the first computing task in parallel at a second frequency (such as executing the load supplementation task and the subtasks of the first computing task in parallel, because the task processor usually executes the subtasks of the first computing task in sequence).
[0130] Among them, the second frequency can be greater than or equal to the second frequency threshold, and the second frequency threshold can be determined according to the actual application scenario. The second frequency domain threshold is the minimum frequency for the task processor to maintain high efficiency and high utilization to work, and the second frequency domain can be a frequency greater than or equal to the second frequency threshold. The load of the task processor in parallel executing the load supplement task and the first computing task must be greater than or equal to the frequency reduction critical load of the task processor. If the load of the task processor executing the task is greater than or equal to the frequency reduction critical load, the task processor can maintain the second frequency working state (which can be understood as maintaining a high-frequency working state). If the load of the task processor executing the task is less than the frequency reduction critical load, then for energy efficiency considerations, to prevent the task processor from running idle, the task processor will usually automatically reduce the frequency to a lower frequency to work.
[0131] In other words, the frequency reduction critical load is the minimum load that allows the task processor to maintain high frequency, high efficiency and high utilization. The frequency reduction critical load can be determined according to the actual application scenario. For different task processors, the frequency reduction critical load may be different.
[0132] In summary, it can be understood that if some or all of the subtasks in the first computing task need to be executed efficiently and quickly, the load of the task processor when executing the subtasks that need to be executed efficiently and quickly needs to be greater than or equal to the above-mentioned frequency reduction critical load, so that the task processor will not be frequency-reduced to a lower frequency to work. At this time, the task processor can efficiently and quickly execute the subtasks that need to be executed efficiently and quickly. Among them, the way to make the load of the task processor when executing the subtasks that need to be executed efficiently and quickly greater than or equal to the above-mentioned frequency reduction critical load is to increase the load of the task processor when executing the subtasks that need to be executed efficiently and quickly through load supplementation tasks, so that the increased load can be greater than or equal to the frequency reduction critical load.
[0133] Among them, the subtasks that need to be executed efficiently and quickly can be determined according to the actual application scenario and there is no restriction on this.
[0134] The above process may specifically include:
[0135] The first computing task may have multiple subtasks, and the multiple subtasks may include one or more subtasks that take a long time and need to be executed efficiently and quickly. In this application, the load on the task processor can be increased for the one or more subtasks that need to be executed efficiently and quickly. For example, the subtask that needs to be executed efficiently and quickly may be a subtask in the first computing task that operates on the video screen through the convolution operator. Among them, since the convolution operator is a computationally intensive operator, the operation of the convolution operator is relatively complex and time-consuming. Therefore, the subtask that needs to be loaded (such as the target subtask) may be a subtask that operates on the video screen through the convolution operator.
[0136] Therefore, optionally, the target subtask can be the subtask with the smallest load among several subtasks that need to be executed efficiently and quickly in the first computing task (such as a subtask that needs to calculate the video screen through several convolution operators). The subtask with the smallest load is used to uniformly increase the load for the task processor when executing several subtasks that need to be executed efficiently and quickly. The increased load can meet the conditions for the task processor to not reduce the frequency to a low frequency for operation. For details, please refer to the following description.
[0137] Among them, the task transmitter usually has an estimation strategy for the load of each subtask (that is, letting the task processor execute the load of each subtask). For example, the strategy may include: estimating the load size of each subtask based on multiple indicators of each subtask. The multiple indicators include but are not limited to at least one of the following: the task type of each subtask, the operator calculation amount of each subtask (such as for the convolution operator, the number of convolution kernels and the dimension of the convolution kernel, etc.). Usually, the load of subtasks of the convolution operator type is greater than the load of subtasks of other operator types. The load of subtasks of the convolution operator type with more convolution kernels and larger convolution kernel dimensions will usually be greater.
[0138] Therefore, for the several subtasks (which can be part or all) that need to be performed efficiently and quickly in the first computing task, the task transmitter can predict the load size between each subtask in the several subtasks, and use the subtask with the smallest load as the above-mentioned target subtask. If there are multiple subtasks with the smallest load predicted, then one of the subtasks with the smallest load can be randomly selected as the target subtask. It can be understood that since the specific prediction of the load of each subtask requires a certain amount of work, the workload of adding load to the task processor can be greatly saved by using the target subtask to uniformly increase the load for each subtask that needs to be executed efficiently and quickly.
[0139] Optionally, the task transmitter can also pre-specifically estimate the load of the task processor executing the target subtask (which can be called the target load). When estimating (i.e., predicting), the task transmitter can also have a corresponding estimation strategy. For example, it can also make an estimate based on the task type of the target subtask and the operator computation amount of the target subtask to estimate the target load of the target subtask.
[0140] Alternatively, the load of the target subtask executed by the task processor may be directly tested, such as using a simulator with performance similar to that of the task processor to execute the target subtask once to obtain the target load of the target subtask.
[0141] Step S202 : If the target load is less than the frequency reduction critical load, it is determined that the processing load of the target subtask in the task processor meets the load supplement condition.
[0142] Optionally, if the above target load is less than the critical load for frequency reduction, it indicates that the target subtask needs to be load supplemented, which means that the processing load of the target subtask in the task processor meets the above load supplement condition, and the load supplement condition can be that the load of the subtask is less than the critical load for frequency reduction.
[0143] If the target load is less than the critical load for frequency reduction, it means that the load of the task processor when executing the target subtask is less than the critical load for frequency reduction. Therefore, when the task processor executes the target subtask alone, it will reduce the frequency to a lower frequency to work, which will cause the task processor to process the target subtask slowly and the utilization rate of the task processor will also be low.
[0144] Therefore, if the target load is less than the frequency reduction critical load, it is necessary to increase the load of the task processor when executing the target subtask, as described below.
[0145] Step S203: calling the task transmitter to transmit the load supplement task for the target subtask to the task processor.
[0146] Optionally, if the target load is less than the critical load for frequency reduction, the terminal device can call the task transmitter to transmit a load supplement task for the target subtask to the task processor, so that the task processor can execute the load supplement task and the target subtask in parallel at the above-mentioned second frequency, and the load of the task processor executing the load supplement task and the target subtask in parallel is greater than or equal to the above-mentioned critical load for frequency reduction.
[0147] Optionally, the task transmitter can obtain a supplementary load for the task processor based on the target load and the frequency reduction critical load. For example, the value of the supplementary load can be equal to the frequency reduction critical load minus the target load. Furthermore, the task transmitter can use the supplementary load to obtain a load supplement task for the target subtask. The load of the load supplement task (i.e., the load on the task processor executing the load supplement task) can be equal to or slightly greater than the supplementary load.
[0148] Among them, the load supplement task can be composed of assignment operations, or the load supplement task can also be composed of several groups of multiplication and addition operations. Among them, the load of the assignment operation is usually smaller, and the load of the multiplication and addition operation is larger. Therefore, the value of the supplementary load can be used to choose how to generate the load supplement task.
[0149] It should be noted that the load of the task processor performing an assignment operation or a multiplication and addition operation is known and may have been tested in advance. Therefore, a load supplement task with a load similar to the supplementary load can be accurately obtained through the assignment operation or the multiplication and addition operation. The load supplement task can be a task that performs several assignment operations or a task that performs several multiplication and addition operations.
[0150] Among them, the task of assignment operation may refer to the task of writing a fixed value at a specified memory address, and the task of multiplication and addition operation may refer to the task of performing multiplication and addition operations on specific values and writing the results of the multiplication and addition operations to a specified memory address.
[0151] Among them, the load of each subtask that needs to be executed efficiently and quickly (which can be called an evaluation subtask that needs to be load predicted) is usually less than the critical load for frequency reduction. Therefore, the task transmitter can also use the load supplement task for the target subtask as the load supplement task for each subtask that needs to be executed efficiently and quickly, and can continuously transmit the load supplement task to the task processor, so that the task processor can continuously execute the various subtasks that need to be executed efficiently and quickly and the load supplement task in parallel. Since the load supplement task is added according to the target subtask with the smallest load among the subtasks that need to be executed efficiently and quickly, and the load of the task processor executing the load supplement task and the target subtask in parallel is greater than or equal to the above-mentioned critical load for frequency reduction, the load of the task processor executing the load supplement task and any subtask that needs to be executed efficiently and quickly in parallel is greater than or equal to the above-mentioned critical load for frequency reduction.
[0152] Therefore, the task processor will not reduce its frequency to a lower level when executing each subtask that needs to be executed efficiently and quickly, so that the task processor can execute each subtask that needs to be executed efficiently and quickly.
[0153] Optionally, if the load of the load supplement task is larger, it will occupy too many resources of the task processor, which will in turn reduce the task execution efficiency of the task processor. Therefore, if the above-mentioned supplementary load is large, the load of the generated load supplement task can be appropriately made smaller than the supplementary load. At this time, even if the task processor will reduce to a lower frequency to work due to insufficient load (such as less than the critical load for frequency reduction) when executing a small part of the subtasks in the first computing task, for most of the subtasks of the first computing task, it still maintains the second frequency working state for execution, which is also reasonable, which ensures the overall execution efficiency of the first computing task.
[0154] For example, a supplementary load threshold may be set. If the supplementary load is less than or equal to the supplementary load threshold, a load supplementation task may be generated based on the supplementary load, such that the load of the load supplementation task is the same as or similar to the supplementary load. If the supplementary load is greater than the supplementary load threshold, a load supplementation task may be generated based on the supplementary load threshold, such that the load of the load supplementation task is the same as or similar to the supplementary load threshold, thereby achieving the purpose of appropriately increasing the load on the task processor and ensuring the global efficiency and utilization of the task processor in executing the entire first computing task.
[0155] It is understandable that the operations performed by the above-mentioned task transmitter and task processor are actually also executed by the terminal device.
[0156] Among them, the above-mentioned strategy of increasing the load for each subtask of the first computing task can be used according to the actual application scenario. The above is only an example. By increasing the load for each subtask, the task processor can be kept working at a higher frequency (such as the second frequency) to execute each subtask efficiently and quickly, and improve the utilization of the task processor.
[0157] See Figure 7 , Figure 7 This is a scenario diagram of task parallel processing provided by this application. Figure 7 As shown, the main task may be a computing task to be processed in a computing scenario, and the computing task may include several subtasks, such as subtask 1, subtask 2, subtask 3, ... .
[0158] The task transmitter can not only transmit subtasks of the main task to the task processor, but also transmit load supplement tasks to the task processor. The task processor can have multiple command queues (Command Queue). The task processor can place the received subtasks of the main task in one command queue (such as command queue 1), and can place the received load supplement tasks in another command queue (such as command queue 2). The task processor can execute tasks in one command queue serially, but can execute tasks in different command queues in parallel.
[0159] Therefore, the task processor can execute the subtasks of the main task and the load supplementation tasks in parallel, so that when the task processor executes part or all of the subtasks of the main task, it will not drop to a lower frequency working state for execution, but will maintain a high frequency working state for execution, so that the task processor can execute the main task as a whole at a faster speed and higher utilization.
[0160] Further, see Figure 8 , Figure 8 This is another scenario diagram of task parallel processing provided by this application. Figure 8 As shown, the subtasks of any computing task may include the computing task corresponding to convolution operator 1 (such as using convolution operator 1 to optimize the video screen), the computing task corresponding to convolution operator 2, ..., the computing task corresponding to convolution operator n, where n is a positive integer and the value of n is determined according to the actual application scenario.
[0161] The operation tasks corresponding to the above-mentioned convolution operator 1, the operation tasks corresponding to the convolution operator 2, ..., and the operation tasks corresponding to the convolution operator n can be sub-tasks that need to be executed efficiently and quickly. The task transmitter can not only transmit the operation tasks corresponding to the convolution operator 1, the operation tasks corresponding to the convolution operator 2, ..., and the operation tasks corresponding to the convolution operator n to the task processor, but also transmit load supplement tasks to the task processor. Therefore, while the task processor is processing the operation tasks corresponding to the convolution operator 1 (such as using the convolution operator 1 to perform optimization operations on the video screen), the operation tasks corresponding to the convolution operator 2, ..., and the operation tasks corresponding to the convolution operator n, the task processor can synchronously and parallelly process the load supplement tasks, so that during the execution of the operation tasks corresponding to the convolution operator 1 to the convolution operator n, the task processor can ensure that most or all of the operation tasks corresponding to the convolution operator 1 to the convolution operator n can be executed efficiently and quickly.
[0162] Optionally, the implementation method may be that when the task transmitter transmits the operation task corresponding to the convolution operator 1 to the task processor, it may write an instruction, which may be that when executing the operation task corresponding to the convolution operator 1 and subsequent subtasks, the load supplement task can be synchronously taken out from the command queue where the load supplement task is located, and the load supplement task can be executed in parallel.
[0163] In addition, when the task transmitter transmits the calculation task corresponding to the convolution operator n to the task processor, it can also write an instruction (this instruction can overwrite the above instruction corresponding to the convolution operator 1). This instruction can be to stop taking out the load replenishment task from the command queue where the load replenishment task is located after executing the calculation task corresponding to the convolution operator n.
[0164] The above method is only an example, and the specific method for implementing parallel execution of tasks can also be set according to the actual application scenario. This method can achieve that while the task processor is executing the calculation tasks corresponding to convolution operators 1 to n, it can also continuously and synchronously execute the load replenishment task, allowing the task processor to continuously and rapidly execute the calculation tasks corresponding to convolution operators 1 to n at a high frequency.
[0165] By using the method described above, the task processor can execute computing tasks and load supplement tasks in parallel, so that the task processor can maintain a high-frequency working state during most of the time or the entire process of executing the computing task. Keeping the task processor in a high-frequency working state can also speed up the execution efficiency of the computing tasks and improve the utilization of the task processor.
[0166] See Figure 9 , Figure 9 This is a flowchart of a task processing process provided by this application. Figure 9 As shown, the process may include:
[0167] s1: The task transmitter can initialize the computing task to obtain multiple subtasks contained in the computing task. The multiple subtasks can be computing tasks corresponding to AI operators (such as operators of the model), and the number of the multiple subtasks can be N.
[0168] s2: The task transmitter can obtain the algorithm input (i=0, i.e., the count starts at 0 when transmitting a subtask). i is used to determine the number of AI operators that have been launched in the current computing task (i.e., the number of subtasks that have been launched), that is, the task transmitter can obtain the AI operators that need to be launched. i++ means that each time the computing task corresponding to an AI operator is launched, i is incremented by 1. When i is equal to 0, it indicates that the first subtask of the computing task needs to be launched. When i is equal to 1, it indicates that the second subtask of the computing task needs to be launched. And so on. When i is equal to N-1, it indicates that the Nth subtask (i.e., the last subtask) of the computing task needs to be launched.
[0169] s3: Determine whether i is less than N. If so, execute step s4 below. If not, execute step s5 below. In addition, after sending the last subtask of the computing task to the GPU, the CPU can also send the alarm task of the computing task to the GPU.
[0170] s4: The CPU can send the computing tasks corresponding to the acquired AI operators to the GPU, allowing the GPU to execute the computing tasks corresponding to the acquired AI operators.
[0171] s5: While waiting for the GPU to complete the execution of the computing task, the CPU can try to obtain the execution result of the GPU's alarm task for the computing task.
[0172] s6: If the CPU obtains the execution result of the alarm task, it can execute the following step s7; if it does not obtain the execution result of the alarm task, it can loop through the above step s5.
[0173] s7: After obtaining the calculation results of the computing task by the GPU, the task launcher can perform subsequent processing, such as output display on the interface, or other processing, which can be determined according to the specific computing tasks of the computing scenario.
[0174] s8: Determine whether the current calculation scenario has ended. If not, then re-execute step s2 to start the next calculation task. At this time, i needs to be reset to 0. If it has ended, then the current process ends.
[0175] Further, see Figure 10a-Figure 10b , Figure 10a-Figure 10bThis is a schematic diagram of a task processing experiment provided by this application. This application conducted experiments on three models, each of which can contain multiple operators. The computational tasks corresponding to each operator can be subtasks of the computational task. The three models include a business model (such as the optimization model mentioned above), the open source MobileNetV1 (a lightweight network), and SqueezeNet1.1 (a lightweight network).
[0176] like Figure 10a As shown, when the optimization model is experimented, the processing time of the calculation task using the method of the present application is 5.4ms (milliseconds), and the processing time of the calculation task without using the method of the present application is 12.2ms. When the MobileNetV1 model is experimented, the processing time of the calculation task using the method of the present application is 7.1ms (milliseconds), and the processing time of the calculation task without using the method of the present application is 12.1ms. And, when the SqueezeNet1.1 model is experimented, the processing time of the calculation task using the method of the present application is 4.8ms (milliseconds), and the processing time of the calculation task without using the method of the present application is 11.8ms. It can be seen that the effect of using the method provided by the present application on the above three models is very significant, which can achieve a performance improvement of about 50%, greatly shortening the processing time of the calculation task.
[0177] For example Figure 10b As shown, in Figure 10b In the test, the GPU was tested using matrix multiplication operators of different specifications. Q, P, and O are used to represent the specifications of the matrix multiplication operator used. Q, P, and O can be integers. The specifications of the matrix multiplication operator used can be a matrix of Q*O dimensions and a matrix of O*P dimensions. A matrix of Q*O dimensions multiplied by a matrix of O*P dimensions can obtain a matrix of Q*P dimensions. Figure 10b In the figure, the horizontal axis represents the specifications of the matrix multiplication operator used, and the vertical axis represents the utilization of the GPU peak computing power.
[0178] Depend on Figure 10b The experimental results show that the method provided by this application can greatly improve the utilization rate of the GPU by about 15% compared with not using the method provided by this application.
[0179] The above experimental results show that the method provided by this application can not only improve the processing efficiency of GPU for computing tasks, but also improve the utilization rate of GPU.
[0180] See Figure 11 , Figure 11This is a structural diagram of a task processing device provided by the present application. The task processing device can be a computer program (including program code) running on a computer device. For example, the task processing device is an application software. The task processing device can be used to execute the corresponding steps of the method provided in the embodiment of the present application. Figure 11 As shown, the task processing device 1 may include: a first calling module 11 , a second calling module 12 , a third calling module 13 and a fourth calling module 14 .
[0181] A first calling module 11 is configured to call a task transmitter to transmit a first computing task and a first alarm task of the first computing task to a task processor; the first computing task refers to any computing task in a computing scenario;
[0182] A second calling module 12 is used to call the task processor to execute the first computing task;
[0183] The third calling module 13 is configured to call the task processor to execute the first alarm task if the first computing task is completed; the task transmitter maintains the working state of the first frequency before the first alarm task is completed; the first frequency is greater than the first frequency threshold;
[0184] The fourth calling module 14 is used to call the task transmitter to continue to transmit the second computing task and the second alarm task of the second computing task to the task processor at the first frequency if the first alarm task is executed; and call the task processor to continue to process the second computing task and the second alarm task; the second computing task refers to the next computing task of the first computing task in the computing scenario.
[0185] Optionally, the first computing task has multiple subtasks; the first calling module 11 calls the task transmitter to transmit the first computing task and the first alarm task for the first computing task to the task processor, including:
[0186] Invoke the task transmitter to transmit the subtasks of the first computing task to the task processor in sequence;
[0187] After the task transmitter is called to transmit the last subtask of the first computing task to the task processor, the task transmitter is called to transmit the first alarm task to the task processor.
[0188] Optionally, the second calling module 12 calls the task processor to execute the first computing task in the following manner:
[0189] The task processor is called to execute the subtasks of the first computing task in sequence according to the order in which the subtasks of the first computing task are received; if all the subtasks of the first computing task are completed, the first computing task is completed;
[0190] If the first computing task is completed, the third calling module 13 calls the task processor to execute the first alarm task, including:
[0191] If the last subtask of the first computing task is completed by the task processor, the task processor is called to execute the first alarm task.
[0192] Optionally, before the first alarm task is completed refers to a period from when the task transmitter transmits the last subtask of the first computing task to the task processor to when the first alarm task is completed.
[0193] Optionally, the device 1 is further used for:
[0194] Call the task transmitter to query the task processor for the execution result of the first alarm task;
[0195] If the execution result of the first alarm task is found, it is determined that the first alarm task is completed;
[0196] In the process of performing a round-robin query on the execution result of the first alarm task, the task transmitter maintains the working state of the first frequency.
[0197] Optionally, the first alarm task carries a target random number generated by a task transmitter, and the first alarm task refers to a task of writing the target random number at a target memory address; the apparatus 1 is further configured to:
[0198] Call the task launcher to query the target random number at the target memory address in turn;
[0199] If the target random number is found at the target memory address, it is determined that the first alarm task is completed; the existence of the target random number at the target memory address is the execution result of the first alarm task.
[0200] Optionally, the device 1 is further used for:
[0201] If the processing load of the first computing task in the task processor meets the load supplement condition for the task processor, calling the task transmitter to transmit the load supplement task to the task processor;
[0202] The second calling module calls the task processor to execute the first computing task, including:
[0203] The task processor is called to execute the load supplement task and the first computing task in parallel at a second frequency; the second frequency is greater than or equal to a second frequency threshold.
[0204] Optionally, the load of the task processor executing the load supplement task and the first computing task in parallel is greater than or equal to the critical load of the task processor for frequency reduction. If the load of the task processor executing the task is greater than or equal to the critical load for frequency reduction, the task processor maintains the working state of the second frequency.
[0205] Optionally, the first computing task has multiple subtasks, and the subtasks of the first computing task include the target subtask;
[0206] If the processing load of the first computing task in the task processor meets the load supplement condition for the task processor, the method of the apparatus 1 calling the task transmitter to transmit the load supplement task to the task processor includes:
[0207] Predicting the target load of the task processor to execute the target subtask;
[0208] If the target load is less than the frequency reduction critical load, determining that the processing load of the target subtask in the task processor meets the load supplement condition;
[0209] Calling the task transmitter to transmit the load supplement task for the target subtask to the task processor;
[0210] The second calling module 12 calls the task processor to execute the load supplement task and the first computing task in parallel at the second frequency, including:
[0211] The task processor is called to execute the load supplement task and the target subtask in parallel at a second frequency.
[0212] Optionally, the device 1 is further used for:
[0213] Determine a supplementary load for the task processor according to the target load and the frequency reduction critical load;
[0214] Determine the load replenishment task based on the supplementary load.
[0215] Optionally, the computing scenario is an optimization scenario for multiple video frames, and each video frame corresponds to a computing task; the computing task corresponding to any video frame refers to a task of optimizing any video frame;
[0216] The above device 1 is also used for:
[0217] The task processor is called to transmit the calculation result of the calculation task corresponding to each frame of video to the task transmitter; the calculation result of the calculation task corresponding to any frame of video by the task processor refers to the optimized video image after the task processor optimizes any frame of video;
[0218] The task launcher is called to display the optimized video image of each frame of the video on the display interface.
[0219] According to one embodiment of the present application, Figure 3 The steps involved in the task processing method shown can be represented by Figure 11 The task processing device 1 shown in FIG. Figure 3 The step S101 shown in FIG. Figure 11 The first calling module 11 is executed, Figure 3 The step S102 shown in FIG. Figure 11 The second calling module 12 is executed; Figure 3 The step S103 shown in FIG. Figure 11 The third call module 13 is executed, Figure 3 The step S104 shown in FIG. Figure 11 The fourth calling module 14 is executed.
[0220] This application can call a task transmitter to transmit a first computing task and a first alarm task of the first computing task to a task processor; the first computing task refers to any computing task in a computing scenario; and call the task processor to execute the first computing task; if the first computing task is completed, the task processor can also be called to execute the first alarm task; the task transmitter maintains the working state of the first frequency before the first alarm task is completed; the first frequency is greater than the first frequency threshold; if the first alarm task is completed, the task transmitter can be called to continue to transmit the second computing task and the second alarm task of the second computing task to the task processor at the first frequency, and call the task processor to continue processing the second computing task and the second alarm task; the second computing task refers to the next computing task of the first computing task in the computing scenario. It can be seen from this that the device proposed in the present application uses the first alarm task to prevent the task transmitter from reducing its frequency (such as reducing it to below the first frequency threshold) while waiting for the task processor to complete the execution of the first computing task. As a result, the task transmitter can continue to transmit the second computing task to the task processor at a high frequency (such as the first frequency). The task transmitter transmits tasks to the task processor at a faster frequency, which also enables the task processor to process the tasks transmitted by the task transmitter as quickly as possible with less idle time, thereby improving the efficiency of the task processor in processing tasks.
[0221] According to one embodiment of the present application, Figure 11The various modules in the task processing device 1 shown can be individually or all combined into one or several units to constitute, or one (or some) of the units can be further divided into multiple functionally smaller sub-units to achieve the same operation without affecting the realization of the technical effects of the embodiments of the present application. The above modules are divided based on logical functions. In actual applications, the functions of a module can also be implemented by multiple units, or the functions of multiple modules can be implemented by one unit. In other embodiments of the present application, the task processing device 1 may also include other units. In actual applications, these functions can also be implemented with the assistance of other units, and can be implemented by the collaboration of multiple units.
[0222] According to one embodiment of the present application, the program can be executed by running on a general computer device such as a computer including a central processing unit (CPU), a random access memory (RAM), a read-only memory (ROM) and other processing elements and storage elements. Figure 3 A computer program (including program code) for each step involved in the corresponding method shown in Figure 11 The task processing device 1 shown in the embodiment of the present application is used to implement the task processing method of the embodiment of the present application. The above computer program can be recorded on a computer readable recording medium, for example, and loaded into the above computing device through the computer readable recording medium and run therein.
[0223] See Figure 12 , Figure 12 This is a schematic diagram of the structure of a computer device provided by this application. Figure 12 As shown, the computer device 1000 may include: a processor 1001, a network interface 1004 and a memory 1005. In addition, the computer device 1000 may also include: a user interface 1003, and at least one communication bus 1002. The communication bus 1002 is used to realize the connection and communication between these components. The user interface 1003 may include a display screen (Display), a keyboard (Keyboard), and the user interface 1003 may optionally include a standard wired interface and a wireless interface. The network interface 1004 may optionally include a standard wired interface and a wireless interface (such as a WI-FI interface). The memory 1005 may be a high-speed RAM memory, or a non-volatile memory (non-volatile memory), such as at least one disk memory. The memory 1005 may optionally also be at least one storage device located away from the aforementioned processor 1001. As Figure 12 As shown, the memory 1005 as a computer storage medium may include an operating system, a network communication module, a user interface module, and a device control application program.
[0224] exist Figure 12 In the computer device 1000 shown, the network interface 1004 can provide network communication functions; the user interface 1003 is mainly used to provide an interface for user input; and the processor 1001 can be used to call the device control application stored in the memory 1005 to achieve:
[0225] Invoke a task transmitter to transmit a first computing task and a first alarm task for the first computing task to a task processor; the first computing task refers to any computing task in a computing scenario;
[0226] Calling a task processor to execute a first computing task;
[0227] If the first computing task is completed, the task processor is called to execute the first alarm task; the task transmitter maintains the working state of the first frequency before the first alarm task is completed; the first frequency is greater than or equal to the first frequency threshold;
[0228] If the first alarm task is executed, the task transmitter is called to continue to transmit the second computing task and the second alarm task for the second computing task to the task processor at the first frequency, and the task processor is called to continue processing the second computing task and the second alarm task; the second computing task refers to the next computing task of the first computing task in the computing scenario.
[0229] It should be understood that the computer device 1000 described in the embodiment of the present application can execute the above Figure 3 The description of the above task processing method in the corresponding embodiment can also be performed Figure 11 The description of the task processing device 1 in the corresponding embodiment will not be repeated here. In addition, the description of the beneficial effects of adopting the same method will not be repeated here either.
[0230] In addition, it should be pointed out that the present application also provides a computer-readable storage medium, and the computer-readable storage medium stores a computer program executed by the task processing device 1 mentioned above, and the computer program includes program instructions. When the processor executes the program instructions, it can execute the above-mentioned task processing device 1. Figure 3 The description of the task processing method in the corresponding embodiment will therefore not be repeated here. In addition, the description of the beneficial effects of using the same method will not be repeated here. For technical details not disclosed in the computer storage medium embodiment involved in this application, please refer to the description of the method embodiment of this application.
[0231] As an example, the above program instructions may be deployed on a computer device for execution, or deployed on multiple computer devices located at one location for execution, or executed on multiple computer devices distributed at multiple locations and interconnected by a communication network. Multiple computer devices distributed at multiple locations and interconnected by a communication network may constitute a blockchain network.
[0232] The computer-readable storage medium may be the task processing device provided in any of the aforementioned embodiments or the internal storage unit of the computer device, such as the hard disk or memory of the computer device. The computer-readable storage medium may also be an external storage device of the computer device, such as a plug-in hard disk, a smart media card (SMC), a secure digital (SD) card, a flash card, etc. equipped on the computer device. Furthermore, the computer-readable storage medium may also include both the internal storage unit of the computer device and an external storage device. The computer-readable storage medium is used to store the computer program and other programs and data required by the computer device. The computer-readable storage medium may also be used to temporarily store data that has been output or is to be output.
[0233] The present application provides a computer program product or computer program, which includes computer instructions stored in a computer-readable storage medium. A processor of a computer device reads the computer instructions from the computer-readable storage medium, and the processor executes the computer instructions, so that the computer device performs the above-mentioned Figure 3 The description of the above-mentioned task processing method in the corresponding embodiment will not be repeated here. In addition, the description of the beneficial effects of adopting the same method will not be repeated here. For technical details not disclosed in the computer-readable storage medium embodiment involved in this application, please refer to the description of the method embodiment of this application.
[0234] The terms "first", "second", etc. in the description, claims, and drawings of the embodiments of the present application are used to distinguish different objects, rather than to describe a specific order. In addition, the terms "comprising" and any variations thereof are intended to cover non-exclusive inclusions. For example, a process, method, apparatus, product, or device comprising a series of steps or units is not limited to the listed steps or modules, but may optionally include steps or modules not listed, or may optionally include other step units inherent to these processes, methods, apparatuses, products, or devices.
[0235] Those skilled in the art will appreciate that the units and algorithm steps of each example described in conjunction with the embodiments disclosed herein can be implemented in electronic hardware, computer software, or a combination of the two. In order to clearly illustrate the interchangeability of hardware and software, the composition and steps of each example have been generally described in terms of function in the above description. Whether these functions are performed in hardware or software depends on the specific application and design constraints of the technical solution. Professional and technical personnel can use different methods to implement the described functions for each specific application, but such implementation should not be considered to be beyond the scope of this application.
[0236] The methods and related devices provided by the embodiments of the present application are described with reference to the method flow charts and / or structural diagrams provided by the embodiments of the present application. Specifically, each process and / or block in the method flow charts and / or structural diagrams, as well as the combination of processes and / or blocks in the flow charts and / or block diagrams, can be implemented by computer program instructions. These computer program instructions can be provided to a processor of a general-purpose computer, a special-purpose computer, an embedded processor, or other programmable data processing device to generate a machine, so that the instructions executed by the processor of the computer or other programmable data processing device generate instructions for implementing the steps in the process. Figure 1 Schematic diagram of one or more processes and / or structures Figure 1 These computer program instructions can also be stored in a computer-readable memory that can guide a computer or other programmable data processing device to work in a specific way, so that the instructions stored in the computer-readable memory produce a product including the instruction device, which implements the function specified in the process. Figure 1 Schematic diagram of one or more processes and / or structures Figure 1 These computer program instructions can also be loaded onto a computer or other programmable data processing device, so that a series of operation steps are executed on the computer or other programmable device to produce a computer-implemented process, thereby providing instructions for implementing the process in the process. Figure 1 The flow or flows and / or structures illustrate the steps of the functions specified in one block or multiple blocks.
[0237] The above disclosure is only a preferred embodiment of the present application, and certainly cannot be used to limit the scope of rights of the present application. Therefore, equivalent changes made according to the claims of the present application are still within the scope covered by the present application.
Claims
1. A task processing method, characterized in that: The method comprises: Calling a task transmitter to transmit a first computing task and a first alarm task for the first computing task to a task processor; the first computing task refers to any computing task in a computing scenario, and the first alarm task is a task used to determine whether the task processor has completed execution of the first computing task; Calling the task processor to execute the first computing task; If the first computing task is completed, calling the task processor to execute the first alarm task; the task transmitter maintains a working state of a first frequency before the first alarm task is completed; the first frequency is greater than or equal to a first frequency threshold; If the first alarm task is completed, the task transmitter is called to continue to transmit the second computing task and the second alarm task for the second computing task to the task processor at the first frequency, and the task processor is called to continue processing the second computing task and the second alarm task; the second computing task refers to the next computing task of the first computing task in the computing scenario, and the second alarm task is used to determine whether the task processor has completed the execution of the second computing task.
2. The method according to claim 1, characterized in that The first computing task has a plurality of subtasks; the calling task transmitter transmits the first computing task and a first alarm task for the first computing task to the task processor, including: Calling the task transmitter to transmit the subtasks of the first computing task to the task processor in sequence; After calling the task transmitter to transmit the last subtask of the first computing task to the task processor, calling the task transmitter to transmit the first alarm task to the task processor.
3. The method according to claim 2, characterized in that The calling the task processor to execute the first computing task includes: calling the task processor to execute the subtasks of the first computing task in sequence according to the order in which the subtasks of the first computing task are received; if all subtasks of the first computing task are completed, the first computing task is completed; If the first computing task is completed, calling the task processor to execute the first alarm task includes: If the last subtask of the first computing task is completed by the task processor, the task processor is called to execute the first alarm task.
4. The method according to claim 2, characterized in that Before the first alarm task is completed refers to a period from when the task transmitter transmits the last subtask of the first computing task to the task processor to when the first alarm task is completed.
5. The method according to claim 1, wherein The method further comprises: Calling the task transmitter to query the execution result of the task processor for the first alarm task in turn; If the execution result of the first alarm task is queried, it is determined that the first alarm task is completed; In the process of performing round-robin query on the execution result of the first alarm task, the task transmitter maintains the working state of the first frequency.
6. The method according to claim 5, characterized in that The first alarm task carries the target random number generated by the task transmitter, and the first alarm task refers to a task of writing the target random number at a target memory address; The method further comprises: Calling the task transmitter to sequentially query the target random number at the target memory address; If the target random number is found at the target memory address, it is determined that the first alarm task is completed; the presence of the target random number at the target memory address is the execution result of the first alarm task.
7. The method according to claim 1, characterized in that The method further comprises: If the processing load of the first computing task in the task processor meets the load supplement condition for the task processor, calling the task transmitter to transmit the load supplement task to the task processor; The calling the task processor to execute the first computing task includes: The task processor is called to execute the load supplement task and the first computing task in parallel at a second frequency; the second frequency is greater than or equal to a second frequency threshold.
8. The method according to claim 7, characterized in that The load of the task processor executing the load supplement task and the first computing task in parallel is greater than or equal to the frequency reduction critical load of the task processor. If the load of the task processor executing the task is greater than or equal to the frequency reduction critical load, the task processor maintains the working state of the second frequency.
9. The method according to claim 8, characterized in that The first computing task has multiple subtasks, and the subtasks of the first computing task include a target subtask; If the processing load of the first computing task in the task processor meets the load supplement condition for the task processor, calling the task transmitter to transmit the load supplement task to the task processor includes: Predicting a target load for the task processor to execute the target subtask; If the target load is less than the frequency reduction critical load, determining that the processing load of the target subtask in the task processor meets the load supplement condition; Invoking the task transmitter to transmit the load supplement task for the target subtask to the task processor; The calling the task processor to execute the load supplement task and the first computing task in parallel at a second frequency includes: The task processor is called to execute the load supplement task and the target subtask in parallel at the second frequency.
10. The method according to claim 9, characterized in that The method further comprises: Determining a supplementary load for the task processor according to the target load and the frequency reduction critical load; The load supplementation task is determined according to the supplementary load.
11. The method according to claim 1, wherein The computing scenario is an optimization scenario for multiple video frames, and each video frame corresponds to a computing task; the computing task corresponding to any video frame refers to a task of optimizing the video frame; The method further comprises: The task processor is called to transmit the calculation result of the calculation task corresponding to each frame of the video picture to the task transmitter; the calculation result of the calculation task corresponding to any frame of the video picture by the task processor refers to the optimized video picture after the task processor optimizes the any frame of the video picture; The task transmitter is called to display the optimized video image of each frame of the video image on the display interface.
12. A task processing device, characterized in that: The device comprises: a first calling module, configured to call a task transmitter to transmit a first computing task and a first alarm task for the first computing task to a task processor; the first computing task refers to any computing task in a computing scenario, and the first alarm task is a task for determining whether the task processor has completed execution of the first computing task; A second calling module, configured to call the task processor to execute the first computing task; a third calling module, configured to call the task processor to execute the first alarm task if the first computing task is completed; the task transmitter maintains a working state of a first frequency before the first alarm task is completed; and the first frequency is greater than a first frequency threshold; The fourth calling module is used to call the task transmitter to continue to transmit the second computing task and the second alarm task of the second computing task to the task processor at the first frequency if the first alarm task is completed, and call the task processor to continue to process the second computing task and the second alarm task; the second computing task refers to the next computing task of the first computing task in the computing scenario, and the second alarm task is used to determine whether the task processor has completed the execution of the second computing task.
13. A computer program product comprising a computer program / instruction, which implements the steps of the method according to any one of claims 1 to 11 when executed by a processor.
14. A computer device, characterized in that: The method comprises a memory and a processor, wherein the memory stores a computer program, and when the computer program is executed by the processor, the processor executes the steps of the method according to any one of claims 1 to 11.
15. A computer-readable storage medium, characterized in that The computer-readable storage medium stores a computer program, and the computer program is suitable for being loaded by a processor and executing the method according to any one of claims 1 to 11.
Citation Information
Patent Citations
Fine grain performance resource management of computer systems
CN102906696A
Batch data processing method and apparatus, computer device and storage medium
WO2020228177A1