Executable object processing method, electronic equipment and computer readable medium

By dividing executable objects into executable object groups and scheduling based on synchronization information, the creation and synchronization overhead problems during large-scale tasks or thread processing in traditional methods are solved, and the execution performance is improved.

CN119248428APending Publication Date: 2025-01-03SANECHIPS TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202310754248.6
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2023-06-25
Publication Date
2025-01-03

AI Technical Summary

Technical Problem

Traditional task-by-thread creation, synchronization, communication and scheduling methods are difficult to effectively reduce task or thread creation overhead, synchronization overhead and scheduling overhead, especially when dealing with large batches of tasks or threads.

Method used

By dividing executable objects in the same set into executable object groups, synchronizing between executable object groups based on the synchronization information of pre-order data, simplifying the synchronization handshake process, and using synchronization information to facilitate the ability of executable object groups within the executable object group Execute objects for scheduling.

Benefits of technology

Reduces the scheduling waiting time of a single executable object and improves overall execution performance.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119248428A_ABST
    Figure CN119248428A_ABST
Patent Text Reader

Abstract

The invention provides an executable object processing method, electronic equipment and a computer readable medium. The executable object processing method comprises the following steps: creating an executable object group according to data processed by executable objects; wherein the executable objects in the same executable object group process the data in the same set; generating scheduling information of the executable object groups according to the dependency relationship among the executable object groups; wherein the scheduling information comprises a preorder data list of the executable object group; generating synchronization information corresponding to the preorder data in the preorder data list; acquiring synchronization information corresponding to preorder data in a preorder data list in the scheduling information of the executable object group; and scheduling the executable objects in the executable object group according to the synchronization information corresponding to the preorder data.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The embodiments of the present application relate to the field of computer technology, and in particular to an executable object processing method, an electronic device, and a computer-readable medium. Background Art

[0002] As computer technology, chip design technology, software technology, network technology, etc. continue to develop in the direction of pursuing higher performance and lower processing latency, single-task or single-thread processing is gradually being replaced by multi-task or multi-thread concurrent processing. When the number of concurrently executed tasks or threads is small, the synchronization, communication, and dynamic or static scheduling of all tasks or threads are not complicated, and the overhead is also small. However, with the continuous development of graphics and image processing, artificial intelligence, and high-performance scientific computing, the fields of computer technology, chip design technology, software technology, and network technology all need to schedule large batches of tasks or threads. The traditional creation, synchronization, communication, and scheduling of tasks or threads one by one, as well as the scheduling of simple task pools or thread pools, have been unable to effectively reduce the creation overhead, synchronization overhead, and scheduling overhead of tasks or threads. Summary of the invention

[0003] Embodiments of the present application provide an executable object processing method, an electronic device, and a computer-readable medium.

[0004] In a first aspect, an embodiment of the present application provides an executable object processing method, comprising: creating an executable object group based on data processed by the executable object; wherein the executable objects in the same executable object group process data in the same set; generating scheduling information of the executable object group based on the dependency relationship between the executable object groups; wherein the scheduling information comprises: a list of predecessor data of the executable object group; generating synchronization information corresponding to the predecessor data in the predecessor data list; obtaining synchronization information corresponding to the predecessor data in the predecessor data list in the scheduling information of the executable object group; and scheduling the executable objects in the executable object group according to the synchronization information corresponding to the predecessor data.

[0005] In a second aspect, an embodiment of the present application provides an executable object processing device, comprising: a creation module, used to create an executable object group based on the data processed by the executable object; wherein the executable objects in the same executable object group process the data in the same set; a generation module, used to generate scheduling information of the executable object group based on the dependency relationship between the executable object groups; wherein the scheduling information includes: a list of predecessor data of the executable object group; generating synchronization information corresponding to the predecessor data in the predecessor data list; a scheduling module, used to obtain the synchronization information corresponding to the predecessor data in the predecessor data list in the scheduling information of the executable object group; and scheduling the executable objects in the executable object group according to the synchronization information corresponding to the predecessor data.

[0006] In a third aspect, an embodiment of the present application provides an electronic device, comprising: at least one processor; a memory, wherein at least one program is stored in the memory, and when the at least one program is executed by the at least one processor, any one of the above-mentioned executable object processing methods is implemented.

[0007] In a fourth aspect, an embodiment of the present application provides a computer-readable medium having a computer program stored thereon, wherein the computer program implements any of the above-mentioned executable object processing methods when executed by a processor.

[0008] The executable object processing method provided in the embodiment of the present application divides the executable objects that process data in the same set into an executable object group, creates executable objects in groups, compresses the executable object creation process, realizes synchronization between executable object groups based on the synchronization information of the preceding data, simplifies the synchronization handshake process in the related technology, schedules the executable objects in the executable object group based on the synchronization information, reduces the scheduling waiting time of a single executable object, and improves the overall execution performance. BRIEF DESCRIPTION OF THE DRAWINGS

[0009] Figure 1 A flowchart of an executable object processing method provided by an embodiment of the present application;

[0010] Figure 2 A schematic diagram of the dependency relationship between two executable object groups in an embodiment of the present application;

[0011] Figure 3 A block diagram of the composition of an executable object processing device provided by another embodiment of the present application;

[0012] Figure 4 A block diagram of the composition of an electronic device provided in accordance with another embodiment of the present application. DETAILED DESCRIPTION

[0013] In order to enable those skilled in the art to better understand the technical solution of the present application, the executable object processing method, electronic device, and computer-readable medium provided by the present application are described in detail below in conjunction with the accompanying drawings.

[0014] Example embodiments will be described more fully below with reference to the accompanying drawings, but the example embodiments may be embodied in different forms and should not be construed as limited to the embodiments set forth herein. On the contrary, the purpose of providing these embodiments is to make this application thorough and complete and to enable those skilled in the art to fully understand the scope of this application.

[0015] In the absence of conflict, the embodiments of the present application and the features therein may be combined with each other.

[0016] As used herein, the term "and / or" includes any and all combinations of at least one of the associated listed items.

[0017] The terms used herein are only used to describe specific embodiments and are not intended to limit the present application. As used herein, the singular forms "a", "an" and "the" are also intended to include the plural forms, unless the context clearly indicates otherwise. It will also be understood that when the terms "comprising" and / or "made of" are used in this specification, the presence of the features, wholes, steps, operations, elements and / or components is specified, but the presence or addition of at least one other feature, whole, step, operation, element, component and / or its group is not excluded.

[0018] Unless otherwise defined, all terms (including technical and scientific terms) used herein have the same meaning as commonly understood by those of ordinary skill in the art. It will also be understood that terms such as those defined in commonly used dictionaries should be interpreted as having a meaning consistent with their meaning in the context of the relevant art and this application, and will not be interpreted as having an idealized or overly formal meaning unless explicitly defined herein.

[0019] Although the embodiments of the present application are proposed based on the problems existing in the creation, synchronization, communication and scheduling processes of tasks or threads, the embodiments of the present application are not only applicable to tasks or threads, but to all executable objects, where the executable objects can be any one of tasks, threads, processes, jobs, etc.; the embodiments of the present application are also not only applicable to the creation, synchronization, communication and scheduling processes of executable objects, but to all processing processes of executable objects, where the processing processes include at least one of creation, synchronization, communication and scheduling.

[0020] In some exemplary embodiments, a process refers to a program that can participate in concurrent execution.

[0021] In some exemplary embodiments, a thread refers to a relatively independent execution flow in a process.

[0022] In some exemplary embodiments, a task refers to an activity performed by software.

[0023] In some exemplary embodiments, a job refers to a collection of information processing tasks that a user requires a computer system to complete for the user.

[0024] Figure 1 A flowchart of an executable object processing method provided by one embodiment of the present application.

[0025] First, refer to Figure 1 An embodiment of the present application provides an executable object processing method, including:

[0026] Step 100: Create an executable object group according to the data processed by the executable objects; wherein the executable objects in the same executable object group process the data in the same set.

[0027] In some exemplary embodiments, the executable object may be any one of a task, a thread, a process, a job, and the like.

[0028] In some exemplary embodiments, the data in the same set may be any one of the position information or pixel values ​​of part or all pixels of an image, part or all image frames in a video stream, part or all messages in a data packet, etc.

[0029] In some exemplary embodiments, the created executable object group may be one group, or two groups or more than two groups, depending on actual conditions.

[0030] Step 101, generating scheduling information of the executable object group according to the dependency relationship between the executable object groups; wherein the scheduling information includes: a list of preceding data of the executable object group; generating synchronization information corresponding to the preceding data in the list of preceding data.

[0031] In some exemplary embodiments, a dependency relationship between two executable object groups means that the data input into one of the executable object groups for corresponding processing is the data output by the other executable object group, where the data output by the other executable object group is the preceding data of one of the executable object groups and the successor data of the other executable object group. For example, the three executable object groups are TGroup0, TGroup1 and TGroup2, the data output by TGroup0 is Data0, the data output by TGroup1 is Data1, TGroup1 performs corresponding data processing on Data0 to obtain Data1, and TGroup2 performs corresponding data processing on Data1, then, there is a dependency relationship between TGroup0 and TGroup1, and there is a dependency relationship between TGroup1 and TGroup2. For TGroup1, Data0 is the preceding data and Data1 is the successor data; for TGroup2, Data1 is the preceding data.

[0032] In some exemplary embodiments, as shown in Table 1, the scheduling information of the executable object group further includes at least one of the following: a successor data list of the executable object group, a current processing status of the executable object group, and a final completion status of the executable object group.

[0033] In some exemplary embodiments, the current state of the executable object group is used to indicate the number of executable objects in the executable object group that have been executed. Taking 16 bits as an example, 0x0000 indicates that no executable object has been executed, and 0xFFFF indicates that all executable objects in all groups have been executed.

[0034] In some exemplary embodiments, the final completion status of the executable object group is used to indicate whether all executable objects in the executable object group have been executed. When the final completion status is a first numerical value or a first character, it indicates that all executable objects in the executable object group have been executed; when the final completion status is a second numerical value or a second character, it indicates that not all executable objects in the executable object group have been executed. For example, when the final completion status is 1, it indicates that all executable objects in the executable object group have been executed; when the final completion status is 0, it indicates that not all executable objects in the executable object group have been executed.

[0035] Table 1

[0036]

[0037] In some exemplary embodiments, the synchronization information corresponding to the preamble data can be stored in a register corresponding to the preamble data, or in a storage space corresponding to the preamble data in a memory, or in a cache space corresponding to the preamble data.

[0038] In some exemplary embodiments, the preceding data may be one-dimensional data, or two-dimensional data.

[0039] In some exemplary embodiments, a data in the preceding data refers to data processed by an executable object in the executable object group that processes the preceding data, and is also data output by an executable object in the executable object group that outputs the preceding data. Figure 2 As shown, the data output by executable object group TGroup0 is the pre-order data of executable object group TGroup1, the data output by executable object Thread0 of executable object group TGroup0 is the pre-order data of executable object Thread0 of executable object group TGroup1, the data output by executable object Thread1 of executable object group TGroup0 is the pre-order data of executable object Thread1 of executable object group TGroup1, the data output by executable object Thread2 of executable object group TGroup0 is the pre-order data of executable object Thread2 of executable object group TGroup1, and the data output by executable object Thread3 of executable object group TGroup0 is the pre-order data of executable object Thread3 of executable object group TGroup1. The dependency relationship between other executable objects in two executable object groups is similar and will not be repeated here.

[0040] In some exemplary embodiments, as shown in Table 2, the synchronization information corresponding to the preceding data includes: the current processing status of the preceding data.

[0041] In some exemplary embodiments, as shown in Table 2, the synchronization information corresponding to the preceding data also includes at least one of the following: the final completion status of the preceding data, the number of executable objects in the executable object group that outputs the preceding data, the macro state information of the preceding data, and the multi-dimensional organization information of the preceding data.

[0042] In some exemplary embodiments, the current processing status of the preceding data indicates the amount of data in the preceding data that has been completed. Taking 16 bits as an example, 0x0000 indicates that no data has been completed, and 0xFFFF indicates that all data in the preceding data has been completed. When the final completion status is the first numerical value or the first character, it indicates that all data in the preceding data has been completed; when the final completion status is the second numerical value or the second character, it indicates that not all data in the preceding data has been completed. For example, when the final completion status is 1, it indicates that all data in the preceding data has been completed; when the final completion status is 0, it indicates that not all data in the preceding data has been completed.

[0043] In some exemplary embodiments, the data in the preceding data has been completed means that the executable object group that outputs the preceding data has already output the data from the executable object group.

[0044] In some exemplary embodiments, the final completion status of the preceding data indicates whether all data in the preceding data has been completed.

[0045] In some exemplary embodiments, the macro state of the preceding data may be at least one of ready, waiting, blocked, executing, and the like.

[0046] In some exemplary embodiments, the multi-dimensional organization information of the preceding data includes: the access form and the size of each dimension of the preceding data, and Table 2 is explained by taking the preceding data of 4 dimensions as an example.

[0047] In some exemplary embodiments, the access form is used to indicate the access order of each dimension of the preceding data. For example, for 4-dimensional data, the 4 dimensions are B, C, H, and W, and the access order of the 4 dimensions can be defined by the access form.

[0048] Table 2

[0049]

[0050] In Table 2, Tsize is the number of executable objects in the executable object group that outputs the preceding data, and Bsize, Csize, Hsize, and Wsize are the sizes of these four dimensions, respectively.

[0051] In some exemplary embodiments, when the scheduling information of an executable object group includes a successor data list of the executable object group, after generating the scheduling information of the executable object group according to the dependency relationship between the executable object groups, the method further includes: generating synchronization information corresponding to the successor data in the successor data list; wherein the synchronization information corresponding to the successor data includes: the current processing status of the successor data.

[0052] In some exemplary embodiments, the synchronization information corresponding to the successor data can be stored in a register corresponding to the successor data, or in a storage space corresponding to the successor data in a memory, or in a cache space corresponding to the successor data.

[0053] In some exemplary embodiments, the subsequent data may be one-dimensional data, or two-dimensional data or two-dimensional data.

[0054] In some exemplary embodiments, a data in the subsequent data refers to data processed by an executable object in the executable object group that processes the subsequent data, and is also data output by an executable object in the executable object group that outputs the subsequent data.

[0055] In some exemplary embodiments, as shown in Table 2, the synchronization information corresponding to the successor data also includes at least one of the following: the final completion status of the successor data, the number of executable objects in the executable object group that outputs the successor data, the macro state information of the successor data, and the multi-dimensional organization information of the successor data.

[0056] In some exemplary embodiments, the current processing status of the subsequent data indicates the number of completed data in the subsequent data. Taking 16 bits as an example, 0x0000 indicates that no data is completed, and 0xFFFF indicates that all data in the subsequent data is completed. When the final completion status is the first value or the first character, it indicates that all data in the subsequent data is completed; when the final completion status is the second value or the second character, it indicates that not all data in the subsequent data is completed. For example, when the final completion status is 1, it indicates that all data in the subsequent data is completed; when the final completion status is 0, it indicates that not all data in the subsequent data is completed.

[0057] In some exemplary embodiments, the data in the successor data being completed means that the executable object group that outputs the successor data has already output the data from the executable object group.

[0058] In some exemplary embodiments, the final completion status of the successor data indicates whether all data in the successor data has been completed.

[0059] In some exemplary embodiments, the macro state of the subsequent data may be at least one of ready, waiting, blocked, executing, and the like.

[0060] In some exemplary embodiments, the multi-dimensional organization information of the subsequent data includes: the access form and the size of each dimension of the subsequent data, and Table 2 is explained by taking the example that the preceding data is 4-dimensional.

[0061] In some exemplary embodiments, the access form is used to indicate the access order of each dimension of the subsequent data. For example, for 4-dimensional data, the 4 dimensions are B, C, H, and W, and the access order of the 4 dimensions can be defined by the access form.

[0062] In some exemplary embodiments, after creating an executable object group according to data processed by the executable object, the method further includes: allocating an executable object scheduler to the executable object group; and storing scheduling information of the executable object group in the executable object scheduler.

[0063] In some exemplary embodiments, it is necessary to generate scheduling information for each executable object group.

[0064] In some exemplary embodiments, an executable object scheduler may be assigned to each executable object group, and the scheduling efficiency of the executable objects may be improved by having all executable object schedulers work in parallel.

[0065] In some exemplary embodiments, one executable object scheduler may be assigned to two or more executable object groups, so that the scheduling efficiency of the executable objects can be improved by having all executable object schedulers work in parallel.

[0066] Step 102 , obtaining synchronization information corresponding to the preceding data in the preceding data list in the scheduling information of the executable object group; and scheduling the executable objects in the executable object group according to the synchronization information corresponding to the preceding data.

[0067] In some exemplary embodiments, the executable object scheduler may execute the steps of obtaining synchronization information corresponding to the preceding data in the preceding data list in the scheduling information of the executable object group; and scheduling the executable objects in the executable object group according to the synchronization information corresponding to the preceding data.

[0068] In some exemplary embodiments, executable object schedulers of different executable object groups may work in parallel to implement parallel scheduling of executable objects in different executable object groups.

[0069] In some exemplary embodiments, scheduling executable objects within an executable object group based on synchronization information corresponding to preceding data includes: for each executable object within the executable object group, judging whether data in the preceding data that needs to be input into the executable object for processing by the executable object has been completed based on the current processing status of the preceding data; and executing the executable object if data in the preceding data that needs to be input into the executable object for processing by the executable object has been completed.

[0070] In some exemplary embodiments, when data in the preceding data that needs to be input into the executable object for processing by the executable object is not completed, the step of determining whether the data in the preceding data that needs to be input into the executable object for processing by the executable object is completed based on the current processing status of the preceding data is continued.

[0071] In some exemplary embodiments, the executable objects in the executable object group may be one-dimensional, or two-dimensional, or more than two-dimensional.

[0072] In the case where the executable objects in the executable object group are one-dimensional, the executable objects in the executable object group are executed in the order of the executable object numbers from small to large or from large to small. For example, if the executable object group includes 10 executable objects, namely Th0, Th1, Th2, Th3, Th4, Th5, Th6, Th7, Th8, and Th9, then they can be executed in the order from Th0 to Th9.

[0073] When the executable objects in the executable object group are two-dimensional or more, the executable objects in the executable object group are executed in order of the different dimensions, and the executable objects in the same dimension are executed in order of the executable object numbers from small to large or from large to small. For example, the executable object group includes 2 dimensions, the first dimension includes 10 executable objects, and the second dimension includes 2 executable objects, which is the so-called 2 rows and 10 columns, or 10 rows and 2 columns. Then, for 2 rows and 10 columns, the way of executing the 10 executable objects in the first row first and then executing the 10 executable objects in the second row is the way of executing rows first and columns later.

[0074] The execution process of executable objects in other dimensions is similar and will not be described in detail.

[0075] In some exemplary embodiments, the number of dimensions of the executable object group is the same as the number of dimensions of the preceding data of the executable object group.

[0076] In some exemplary embodiments, the number of executable objects of the target dimension in the executable object group is the same as the number of data of the target dimension in the preceding data of the executable object group, and the executable objects of the target dimension and the data of the target dimension correspond one to one; wherein, the target dimension is any dimension of the executable object group or the preceding data of the executable object group.

[0077] In some exemplary embodiments, Figure 2The dependency relationship shown in FIG. 1 determines whether the data in the preceding data that needs to be input into the executable object for processing by the executable object has been completed based on the current processing status of the preceding data. The determination includes: when the number of completed data indicated by the current processing status of the preceding data is greater than the number of executable objects that have been executed in the executable object group, determining that the data that needs to be input into the executable object for processing by the executable object has been completed; when the number of completed data indicated by the current processing status of the preceding data is less than or equal to the number of executable objects that have been executed in the executable object group, determining that the data that needs to be input into the executable object for processing by the executable object is not completed.

[0078] The determination methods of other dependencies may be determined according to the actual situation.

[0079] In some exemplary embodiments, after executing the executable object, the method further includes: modifying scheduling information of the executable object group and synchronization information corresponding to the successor data in the successor data list of the executable object group.

[0080] In some exemplary embodiments, the current processing state of the executable object group in the scheduling information of the executable object group may be increased by 1, and the current processing state of the subsequent data in the synchronization information corresponding to the subsequent data may be increased by 1.

[0081] In some exemplary embodiments, the final completion status of the executable object group in the scheduling information of the executable object group can also be modified to a first value or a first character to indicate that all executable objects in the executable object group have been executed, and the final completion status of the successor data in the synchronization information corresponding to the successor data can be modified to a first value or a first character to indicate that all data in the successor data has been completed.

[0082] In some exemplary embodiments, after scheduling the executable objects in the executable object group according to the synchronization information corresponding to the preceding data, the method further includes: determining whether all the executable objects in the executable object group have been executed; if all the executable objects in the executable object group have been executed, determining whether all the successor data in the successor data list have been completed; if all the successor data in the successor data list have been completed, destroying the executable object group.

[0083] In some exemplary embodiments, it is possible to determine whether the subsequent data has been fully completed based on the final completion status of the subsequent data in the synchronization information corresponding to the subsequent data. Specifically, when the final completion status of the subsequent data is a first value or a first character, it is determined that the subsequent data has been fully completed; when the final completion status of the subsequent data is a second value or a second character, it is determined that the subsequent data has not been fully completed.

[0084] In some exemplary embodiments, after destroying the executable object group, the method further includes: deleting the target data and releasing the register or storage space of the target data when all executable object groups with the target data as successor data are destroyed.

[0085] The executable object processing method provided in the embodiment of the present application divides the executable objects that process data in the same set into an executable object group, creates executable objects in groups, compresses the executable object creation process, realizes synchronization between executable object groups based on the synchronization information of the preceding data, simplifies the synchronization handshake process in the related technology, schedules the executable objects in the executable object group based on the synchronization information, reduces the scheduling waiting time of a single executable object, and improves the overall execution performance.

[0086] Figure 3 A block diagram of the composition of an executable object processing device provided in another embodiment of the present application.

[0087] Second, refer to Figure 3 Another embodiment of the present application provides an executable object processing device, including: a creation module 301, used to create an executable object group according to the data processed by the executable object; wherein the executable objects in the same executable object group process the data in the same set; a generation module 302, used to generate scheduling information of the executable object group according to the dependency relationship between the executable object groups; wherein the scheduling information includes: a list of preceding data of the executable object group; generating synchronization information corresponding to the preceding data in the preceding data list; a scheduling module 303, used to obtain the synchronization information corresponding to the preceding data in the preceding data list in the scheduling information of the executable object group; and scheduling the executable objects in the executable object group according to the synchronization information corresponding to the preceding data.

[0088] In some exemplary embodiments, the scheduling module 303 is also used to: assign an executable object scheduler to the executable object group; store the scheduling information of the executable object group in the executable object scheduler; obtain synchronization information corresponding to the preceding data in the preceding data list in the scheduling information of the executable object group through the executable object scheduler; and schedule the executable objects in the executable object group according to the synchronization information corresponding to the preceding data.

[0089] In some exemplary embodiments, the scheduling information of the executable object group further includes at least one of the following: a successor data list of the executable object group, a current processing status of the executable object group, and a final completion status of the executable object group.

[0090] In some exemplary embodiments, the generation module 302 is also used to: when the scheduling information of the executable object group includes a successor data list of the executable object group, generate synchronization information corresponding to the successor data in the successor data list; wherein the synchronization information corresponding to the successor data includes: the current processing status of the successor data.

[0091] In some exemplary embodiments, the synchronization information corresponding to the successor data also includes at least one of the following: the final completion status of the successor data, the number of executable objects in the executable object group that outputs the successor data, the macro state information of the successor data, and the multi-dimensional organization information of the successor data.

[0092] In some exemplary embodiments, the scheduling module 303 is also used to: determine whether all executable objects in the executable object group have been executed; if all executable objects in the executable object group have been executed, determine whether all successor data in the successor data list have been completed; if all successor data in the successor data list have been completed, destroy the executable object group.

[0093] In some exemplary embodiments, the synchronization information corresponding to the preceding data includes: a current processing status of the preceding data.

[0094] In some exemplary embodiments, the synchronization information corresponding to the preceding data also includes at least one of the following: the final completion status of the preceding data, the number of executable objects in the executable object group that outputs the preceding data, the macro state information of the preceding data, and the multi-dimensional organization information of the preceding data.

[0095] In some exemplary embodiments, the scheduling module 303 is specifically used to implement scheduling of executable objects within the executable object group according to synchronization information corresponding to the preceding data in the following manner: for each executable object within the executable object group, determine whether the data in the preceding data that needs to be input into the executable object for processing by the executable object has been completed according to the current processing status of the preceding data; if the data in the preceding data that needs to be input into the executable object for processing by the executable object has been completed, execute the executable object.

[0096] The specific implementation process of the above executable object processing device is the same as the specific implementation process of the executable object processing method in the above-mentioned embodiment, which will not be repeated here.

[0097] Thirdly, refer to Figure 4 Another embodiment of the present application provides an electronic device, including: at least one processor 401; a memory 402, wherein at least one program is stored in the memory 402, and when the at least one program is executed by the at least one processor 401, any one of the above-mentioned executable object processing methods is implemented.

[0098] In some exemplary embodiments, the electronic device further includes: one or more I / O interfaces 403 connected between the processor 401 and the memory 402 , and configured to implement information interaction between the processor 401 and the memory 402 .

[0099] Among them, the processor 401 is a device with data processing capabilities, including but not limited to a central processing unit (CPU); the memory 402 is a device with data storage capabilities, including but not limited to random access memory (RAM, more specifically SDRAM, DDR, etc.), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), flash memory (FLASH); the I / O interface (read-write interface) 403 is connected between the processor 401 and the memory 402, and can realize information interaction between the processor 401 and the memory 502, including but not limited to a data bus (Bus), etc.

[0100] In some embodiments, the processor 401 , the memory 402 , and the I / O interface 403 are connected to each other via a bus 404 , and further connected to other components of the computing device.

[0101] In a fourth aspect, another embodiment of the present application provides a computer-readable medium having a computer program stored thereon, and when the computer program is executed by a processor, any one of the above-mentioned executable object processing methods is implemented.

[0102] It will be appreciated by those skilled in the art that all or some of the steps, systems, and functional modules / units in the methods disclosed above may be implemented as software, firmware, hardware, and appropriate combinations thereof. In hardware implementations, the division between the functional modules / units mentioned in the above description does not necessarily correspond to the division of physical components; for example, a physical component may have multiple functions, or a function or step may be performed by several physical components in cooperation. Some or all physical components may be implemented as software executed by a processor, such as a central processing unit, a digital signal processor, or a microprocessor, or implemented as hardware, or implemented as an integrated circuit, such as an application-specific integrated circuit. Such software may be distributed on a computer-readable medium, which may include a computer storage medium (or non-transitory medium) and a communication medium (or temporary medium). As known to those skilled in the art, the term computer storage medium includes volatile and non-volatile, removable and non-removable media implemented in any method or technology for storing information (such as computer-readable instructions, data structures, program modules, or other data). Computer storage media include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tapes, magnetic disk storage or other magnetic storage, or any other medium that can be used to store the desired information and can be accessed by a computer. In addition, it is well known to those skilled in the art that communication media typically contain computer-readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism, and may include any information delivery media.

[0103] Example embodiments have been disclosed herein, and although specific terms are employed, they are used and should be interpreted only in a general illustrative sense and not for limiting purposes. In some instances, it will be apparent to those skilled in the art that, unless otherwise expressly noted, features, characteristics, and / or elements described in conjunction with a particular embodiment may be used alone or in combination with features, characteristics, and / or elements described in conjunction with other embodiments. Therefore, those skilled in the art will appreciate that various changes in form and detail may be made without departing from the scope of the present application as set forth in the appended claims.

Claims

1. A method for processing an executable object, comprising: Creating an executable object group according to the data processed by the executable objects; wherein the executable objects in the same executable object group process the data in the same set; Generate scheduling information of the executable object group according to the dependency relationship between the executable object groups; wherein the scheduling information includes: a list of preceding data of the executable object group; generate synchronization information corresponding to the preceding data in the preceding data list; Acquire synchronization information corresponding to the preceding data in the preceding data list in the scheduling information of the executable object group; and schedule the executable objects in the executable object group according to the synchronization information corresponding to the preceding data.

2. The method for processing executable objects according to claim 1, after creating the executable object group according to the data processed by the executable object, the method further comprises: Allocating an executable object scheduler to the executable object group; storing scheduling information of the executable object group in the executable object scheduler; The step of obtaining synchronization information corresponding to the preceding data in the preceding data list in the scheduling information of the executable object group by the executable object scheduler; The step of scheduling the executable objects in the executable object group according to the synchronization information corresponding to the preceding data.

3. The method for processing executable objects according to claim 1, wherein the scheduling information of the executable object group further includes at least one of the following: A list of subsequent data of the executable object group, a current processing status of the executable object group, and a final completion status of the executable object group.

4. The method for processing executable objects according to claim 3, wherein, when the scheduling information of the executable object group includes a list of successor data of the executable object group, after generating the scheduling information of the executable object group according to the dependency relationship between the executable object groups, the method further comprises: Generate synchronization information corresponding to the successor data in the successor data list; wherein the synchronization information corresponding to the successor data includes: a current processing status of the successor data.

5. The executable object processing method according to claim 4, wherein the synchronization information corresponding to the subsequent data further comprises at least one of the following: The final completion status of the successor data, the number of executable objects in the executable object group that outputs the successor data, the macro state information of the successor data, and the multi-dimensional organization information of the successor data.

6. The method for processing executable objects according to claim 4, after scheduling the executable objects in the executable object group according to the synchronization information corresponding to the preceding data, the method further comprises: Determining whether all the executable objects in the executable object group have been executed; When all the executable objects in the executable object group have been executed, determining whether all the subsequent data in the subsequent data list have been completed; When all the successor data in the successor data list are completed, the executable object group is destroyed.

7. The executable object processing method according to any one of claims 1 to 6, wherein: The synchronization information corresponding to the preceding data includes: a current processing status of the preceding data.

8. The executable object processing method according to claim 7, wherein the synchronization information corresponding to the preceding data further comprises at least one of the following: The final completion status of the preceding data, the number of executable objects in the executable object group that outputs the preceding data, the macroscopic status information of the preceding data, and the multi-dimensional organization information of the preceding data.

9. The executable object processing method according to any one of claims 1 to 6, wherein: The step of scheduling the executable objects in the executable object group according to the synchronization information corresponding to the preceding data includes: For each executable object in the executable object group, determine whether the data in the preceding data that needs to be input into the executable object for processing by the executable object has been completed based on the current processing status of the preceding data; if the data in the preceding data that needs to be input into the executable object for processing by the executable object has been completed, execute the executable object.

10. An executable object processing device, comprising: A creation module, used to create an executable object group according to the data processed by the executable object; wherein the executable objects in the same executable object group process the data in the same set; A generating module, configured to generate scheduling information of the executable object group according to the dependency relationship between the executable object groups; wherein the scheduling information includes: a list of preceding data of the executable object group; and generating synchronization information corresponding to the preceding data in the preceding data list; The scheduling module is used to obtain synchronization information corresponding to the preceding data in the preceding data list in the scheduling information of the executable object group; and schedule the executable objects in the executable object group according to the synchronization information corresponding to the preceding data.

11. An electronic device, comprising: at least one processor; A memory, wherein at least one program is stored in the memory, and when the at least one program is executed by the at least one processor, the executable object processing method according to any one of claims 1 to 9 is implemented.

12. A computer-readable medium having a computer program stored thereon, wherein the computer program, when executed by a processor, implements the executable object processing method according to any one of claims 1 to 9.