Design execution device, design execution system, and design execution method
The design execution system addresses inefficiencies in orchestrating applications across multiple edges by using edge specification nodes and summary information to generate execution order data, improving the orchestration and execution process.
Patent Information
- Application Number
- JP2023100241
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2023-06-19
- Publication Date
- 2025-01-07
AI Technical Summary
Existing systems for designing and executing applications on distributed nodes do not adequately consider changes in control loop logic and processing across multiple edges, leading to inefficiencies in orchestration and execution.
A design execution system that utilizes edge specification nodes, node strings, and summary information to generate execution order data, facilitating the design and execution of processes across multiple edges, ensuring proper sequencing and data sharing.
Enables efficient design and execution of systems spanning multiple edges by providing clear execution order and data sharing mechanisms, enhancing the orchestration process and reducing redundancy.
Smart Images

Figure 2025000404000001_ABST
Abstract
Description
[Technical field]
[0001] The present invention relates to a design execution apparatus, a design execution system, and a design execution method for designing and executing a target system. [Background technology]
[0002] As background technology of the present technical field, Patent Document 1 discloses various systems and methods for implementing a software-defined industrial system. For example, an orchestration system of distributed nodes can execute an application including modules implemented in the distributed nodes. In response to a node failure, the modules can be relocated to a replacement node. In an example, a self-describing control application and a software module are provided in the context of an orchestratable distributed system. The self-describing control application can be executed by an orchestrator or similar control device to generate a control system application using a module manifest. For example, an edge control node of an industrial system can include a system-on-chip including a microcontroller (MCU) for converting IO data. The system-on-chip includes a central processing unit (CPU) in an initial stopped state, which can be changed to a running state in response to a start signal. [Prior art documents] [Patent documents]
[0003] [Patent Document 1] Special Publication No. 2021-503639 Summary of the Invention [Problem to be solved by the invention]
[0004] In order to execute an application including modules implemented in distributed nodes, the technology described in Patent Document 1 generates an orchestration plan that specifies necessary function blocks and requirements of computation points for executing those function blocks. Each of these function blocks represents a control loop logic and an application component. Therefore, the technology of Patent Document 1 does not take into consideration changing the processing in units of processing within the control loop logic and the application component and executing them on distributed nodes.
[0005] The present invention can facilitate the design of an execution sequence across a plurality of edges. [Means for solving the problem]
[0006] A design execution system according to one aspect of the invention disclosed in the present application is a design execution system that executes a design object using a group of edges, the system comprising: a design unit that generates execution order data using a group of nodes each including summary information identifying a process that does not actually realize a function, in which a first edge designating node that designates a first edge of the group of edges, a first node series indicating a series of first processes handled by the first edge of the group of nodes, a second edge designating node that designates a second edge of the group of edges, and a second node series indicating a series of second processes handled by the second edge of the group of nodes, in that order; and a generation unit that generates configuration information including a first summary information group in which the first edge executes the series of first processes and thereby sequentially inherits the summary information of each of the first node series, and a second summary information group in which the second edge executes the series of second processes, in accordance with the execution order data generated by the design unit.
[0007] A design execution method which is one aspect of the invention disclosed in the present application is a design execution method for executing a design object using a group of edges, wherein a first edge among the group of edges executes a series of first processes based on execution order data which specifies that the first edge is responsible for executing a series of first processes in a group of processes having a specified execution order, and a second edge among the group of edges is responsible for executing a series of second processes in the group of processes which follow the series of first processes, and stores a group of first processing results of the series of first processes in a shared section accessible by the group of edges, and the second edge sequentially retrieves, from the shared section, unselected first processing results from the group of first processing results stored in the shared section based on the execution order data, and executes the series of second processes. Effect of the Invention
[0008] According to the representative embodiment of the present invention, it is possible to facilitate the design of an execution order across a plurality of edges. Problems, configurations and effects other than those described above will become apparent from the following description of the embodiment. [Brief description of the drawings]
[0009] [Figure 1] FIG. 1 is an explanatory diagram of an example of a system configuration of a design execution system according to a first embodiment. [Diagram 2] FIG. 2 is a block diagram showing an example of the hardware configuration of a computer. [Diagram 3] FIG. 3 is a block diagram of an example of a functional configuration of the design execution system according to the first embodiment. As shown in FIG. [Figure 4] FIG. 4 is a diagram illustrating a detailed system design method performed by the design unit according to the first embodiment. [Diagram 5] FIG. 5 is an explanatory diagram of an example of generating configuration information according to the first embodiment. [Figure 6] FIG. 6 is a diagram of an example of configuration information according to the first embodiment. [Figure 7] FIG. 7 is an explanatory diagram of an example of conversion of configuration information according to the first embodiment. [Figure 8] FIG. 8 is a diagram of an example of conversion of the start position of the configuration information according to the first embodiment. [Figure 9] FIG. 9 is an explanatory diagram of an example of conversion of configuration information according to the first embodiment. [Figure 10] FIG. 10 is a diagram of an example of the master system according to the first embodiment. [Figure 11] FIG. 11 is a diagram illustrating a first execution example of the worker system according to the first embodiment. [Figure 12] FIG. 12 is a diagram illustrating a second execution example of the worker system according to the first embodiment. [Figure 13] FIG. 13 is a flowchart of an example of a processing procedure of the design execution system according to the first embodiment. [Figure 14] FIG. 14 is a flowchart illustrating a detailed example of the process steps of the configuration information conversion (step S1312) illustrated in FIG. [Figure 15] FIG. 15 is a flowchart of an example of a process procedure for processing by the execution unit according to the first embodiment. [Figure 16] FIG. 16 is a flowchart of a detailed process procedure example of the pub process (steps S1503 and S1515) according to the first embodiment. [Figure 17] FIG. 17 is a flowchart of a detailed example of a procedure of the Sub-processing (steps S1511 and S1521) according to the first embodiment. [Figure 18] FIG. 18 is an explanatory diagram of an example of the structure of data registered in the management database in the shared unit according to the first embodiment. [Figure 19] FIG. 19 is an execution timing chart of each edge when the system under design is executed by the design unit according to the first embodiment. [Figure 20] FIG. 20 is a block diagram of an example of a functional configuration of the design execution system according to the second embodiment. As illustrated in FIG. [Figure 21] FIG. 21 is a block diagram of an example of a functional configuration of a design execution system according to the third embodiment. As illustrated in FIG. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0010] Hereinafter, an embodiment of the present invention will be described with reference to the drawings. The following examples are illustrative for explaining the present invention, and are omitted and simplified as appropriate for clarity of explanation. The present invention can be implemented in various other forms. Unless otherwise specified, each component may be singular or plural.
[0011] In order to facilitate understanding of the invention, the position, size, shape, range, etc. of each component shown in the drawings may not represent the actual position, size, shape, range, etc. Therefore, the present invention is not necessarily limited to the position, size, shape, range, etc. disclosed in the drawings.
[0012] As examples of various information, the various information may be described using expressions such as "table," "list," and "queue," but the various information may be expressed using data structures other than these. For example, various information such as "XX table," "XX list," and "XX queue" may be expressed as "XX information." When describing identification information, expressions such as "identification information," "identifier," "name," "ID," and "number" are used, but these are mutually interchangeable.
[0013] When there are multiple components having the same or similar functions, they may be described by using the same reference numerals with different subscripts, or when there is no need to distinguish between these multiple components, the subscripts may be omitted.
[0014] In the embodiments, a process performed by executing a program may be described. Here, a computer executes the program using a processor (e.g., CPU, GPU), and performs the process defined by the program while using a storage resource (e.g., memory) and an interface device (e.g., communication port), etc. Therefore, the subject of the process performed by executing the program may be the processor. Similarly, the subject of the process performed by executing the program may be a controller, device, system, computer, or node having a processor. The subject of the process performed by executing the program may be a calculation unit, and may include a dedicated circuit that performs a specific process. Here, the dedicated circuit is, for example, an FPGA (Field Programmable Gate Array), an ASIC (Application Specific Integrated Circuit), or a CPLD (Complex Programmable Logic Device), etc.
[0015] The program may be installed in the computer from a program source. The program source may be, for example, a program distribution server or a computer-readable storage medium. When the program source is a program distribution server, the program distribution server may include a processor and a storage resource for storing the program to be distributed, and the processor of the program distribution server may distribute the program to be distributed to other computers. In addition, in the embodiment, two or more programs may be realized as one program, and one program may be realized as two or more programs. EXAMPLES
[0016] <Figure 1 Design Execution System> 1 is an explanatory diagram showing an example of a system configuration of a design execution system according to a first embodiment. The design execution system 100 is composed of one or more computers, and includes, for example, a server 110, a master 131, and one or more workers 132. The server 110, the master 131, and the workers 132 are communicatively connected via a network 120 such as the Internet, a local area network (LAN), or a wide area network (WAN). The server 110 is a computer that creates and manages functions processed by the master 131 and the workers 132. The master 131 and the workers 132 are collectively referred to as an edge 130.
[0017] The design execution system 100 has a function group creation function, a system design function, a deployment function, and a system execution function. The function group creation function creates functions required for system design for each processing unit through operations by a user who uses the design execution system 100. The system design function designs a system to be designed that an individual user wants to realize using multiple edges 130 by combining functions selected from a function group obtained by the function group creation function, and generates configuration information for the system to be designed. The deployment function deploys functions for each edge 130 according to the configuration information. Deploying refers to setting an executable file, which is a function, in a state where it can be used at the deployment destination. The system execution function executes the system to be designed using the deployed functions according to the configuration information.
[0018] As long as the function group creation function, the system design function, and the deployment function are implemented in the design execution system 100, they may be implemented in either the server 110 or the master 131. For example, the server 110 may implement the function group creation function, and the master 131 may implement the system execution function and the deployment function.
[0019] Alternatively, the server 110 may implement a function group creation function, a system design function, and a deployment function, and the master 131 and the worker 132 may implement a system execution function. In this case, each of the master 131 and the worker 132 may simply receive functions related to the system to be designed from the server 110 and execute the system to be designed using the received functions.
[0020] A computer that implements the function group creation function is called a function group creation device, and a computer that implements at least the system execution function of the function group creation function and the system execution function is called a design execution device. In addition, a client-server type design execution system 100 is shown as an example in Fig. 1, but a stand-alone type system design execution device may also be used. In addition, there is no limit to the number of workers 132, and the master 131 can also serve as the function of the worker 132.
[0021] For convenience of explanation, in the first embodiment, a design execution system 100 will be described as an example in which the server 110 is a function group creation device that implements a function group creation function, the master 131 is a design execution device that implements a system design function and a system execution function, and the worker 132 is a design execution device that implements a system execution function. Note that the master 131 and the worker 132 may transmit information to a browser of an external device (not shown) (which may be the server 110) that can communicate with them via the network 120, and may be remotely operated on the browser of the external device.
[0022] <Figure 2 Example of computer hardware configuration> FIG. 2 is a block diagram showing an example of a hardware configuration of a computer (server 110, master 131, worker 132). The computer 200 has a processor 201, a storage device 202, a processing device 203, an input device 204, an output device 205, and a communication interface (communication IF) 206. The processor 201, the storage device 202, the processing device 203, the input device 204, the output device 205, and the communication IF 206 are connected by a bus 207. The processor 201 controls the computer 200. The storage device 202 is a working area for the processor 201. The storage device 202 is a non-transient or temporary recording medium that stores various programs and data. Examples of the storage device 202 include a ROM (Read Only Memory), a RAM (Random Access Memory), a HDD (Hard Disk Drive), and a flash memory.
[0023] The processing device 203 is an accelerator that accelerates a specific function, and specifically, for example, a graphics processing unit (GPU), an artificial intelligence (AI) chip, an application specific integrated circuit (ASIC), or a field programmable gate array (FPGA).
[0024] The input device 204 inputs data. Examples of the input device 204 include various sensors such as a keyboard, a mouse, a touch panel, a numeric keypad, a scanner, and a camera. The output device 205 outputs data. Examples of the output device 205 include a display, a printer, and a speaker. The communication IF 206 connects to the network 120 and transmits and receives data. Note that the processor 201 may be composed of multiple processors.
[0025] <Figure 3: Example of functional configuration of the design execution system 100> 3 is a block diagram showing an example of a functional configuration of the design execution system 100 according to the first embodiment. The server 110 includes a function group creation unit 301 and a registry 302. The master 131 includes a design unit 310, a generation unit 311, a management unit 312, a sharing unit 313, a storage unit 314, an execution unit 315, a control unit 316, a processing device 317, and a conversion unit 318.
[0026] The worker 132 includes a storage unit 321, an execution unit 322, a control unit 323, and a processing device 324. The processing device 317 and the processing device 324 are similar to the processing device 203, and are given different numbers to indicate that they are held as different processing devices for each edge 130.
[0027] Specifically, these are realized, for example, by causing the processor 201 to execute a program stored in the storage device 202 shown in Fig. 2, or by the storage device 202. First, an example of the functional configuration on the server 110 side will be described.
[0028] The function group creation unit 301, as a function group creation function, creates a function group required for system design by a user who uses the design execution system 100, and outputs the created function group to a registry 302. Each function of the function group is containerized and created together with an executable environment in the form of a program such as a class or function, or as a library for black-boxing the contents of processing. The registry 302 holds the function set created by the function set creator 301 .
[0029] Here, for some of the functions among the function groups (for example, function group 1010, function group 1110, function group 1210), it is possible to select the processing device 317 or the processing device 324 when processing in the master 131 or the worker 132, respectively, and the processing speed is increased depending on the selected processing device 317 or the processing device 324. Hereinafter, this function is referred to as a "specific speed-up function."
[0030] Next, a description will be given of an example of the functional configuration of the master 131. As one of the configuration information generation functions, the design unit 310 uses a graphical user interface to design a system to be designed to be executed by the master 131 and the worker 132 by connecting nodes having functional overview information, and outputs system information that specifies the execution order of processes realized by functions corresponding to the nodes specified in the design to the generation unit 311 as execution order data.
[0031] Functional overview information is information that does not have a functional entity, but is used to identify what processing the functional entity will perform. If it is possible to identify what processing will be performed, for example, a numerical value defined in advance within the design execution system 100 may be used as the functional overview information.
[0032] The generating unit 311 generates configuration information 531 that defines the function outline information according to the execution order from the system information, and outputs the configuration information 531 to the converting unit 318 .
[0033] The conversion unit 318 converts the generated configuration information 531 so that processing can be arranged for each edge 130, generates converted configuration information 950 (described later in FIG. 9), and outputs it to the management unit 312. Details of the processing by the design unit 310 will be described later in FIG. 4, details of the configuration information generation by the generation unit 311 will be described later in FIG. 5 and FIG. 6, and details of the processing by the conversion unit 318 will be described later in FIG. 7, FIG. 8, and FIG. 9.
[0034] The management unit 312 outputs an execution command for a process corresponding to a specified node to the execution units 315 and 322 in accordance with the conversion configuration information 950. The management unit 312 also outputs a start command for starting a data sharing function between the edges 130 and the conversion configuration information 950 to the sharing unit 313.
[0035] At this time, since the start command is output in accordance with the conversion configuration information 950, the start command is not output to the execution units 315, 322 mounted on the edge 130 that is not described in the conversion configuration information 950.
[0036] Furthermore, when the only edge 130 described in the conversion configuration information 950 is the master 131, no data communication occurs between the master 131 and the worker 132, so there is no need to output a start command to the sharing unit 313.
[0037] The sharing unit 313 starts up in accordance with a start command from the management unit 312, and holds conversion configuration information 950 output from the management unit 312. The sharing unit 313 has a data sharing function for sharing data between the edges 130, a file sharing function for sharing files between the edges 130, and a communication function for communicating start-up signals between the edges 130.
[0038] For example, in the sharing unit 313, data sharing between the edges 130 is realized by a management database, file sharing between the edges 130 is realized by using a shared storage function or a database capable of sharing data, and communication of a start signal between the edges 130 is realized by using a message broker. However, data sharing between the edges 130, file sharing between the edges 130, and communication of a start signal between the edges 130 are not limited to these. Details of the sharing unit 313 will be described later with reference to Figures 7, 16, 17, and 18.
[0039] <Master 131> Of the functions held in the registry 302, a specified function group is deployed to the holding unit 314 under the control of the execution unit 315. The holding unit 314 can hold the function group once deployed even after the processing of the execution unit 315 ends. This eliminates the need to deploy the function group once deployed again to the holding unit 314, and when the function group once deployed is to be used again, the holding unit 314 outputs the corresponding held function group to the execution unit 315. This eliminates the need to redeploy the function group once deployed, making it possible to shorten the processing time and simplify the system startup after design.
[0040] The execution unit 315 deploys a specified set of functions from the set of functions held in the registry 302 based on the system information described in the conversion configuration information 950 acquired from the sharing unit 313 to the holding unit 314. After the functions have been deployed to the holding unit 314, the execution unit 315 instantiates the system information described in the conversion configuration information 950 held in the sharing unit 313 for the corresponding functions in the set of functions in accordance with a start command from the management unit 312, and executes the system under design.
[0041] When the realized system under design includes a specific speed-up function, the execution unit 315 selects a processing device 317 in accordance with the realized specific speed-up function, and executes processing in the processing device 317 via the control unit 316. Details of the processing related to the execution unit 315 will be described later with reference to FIG.
[0042] When a specific speed-up function is included in the system under design that is instantiated by the execution unit 315, the control unit 316 controls the processing device 317 to execute the specific speed-up function.
[0043] The processing device 317 executes the processing of the specific high-speed function under the control of the control unit 316. The details of the execution unit 315, the control unit 316, and the processing device 317 will be described later with reference to FIG.
[0044] The implementation format of each processing unit in the master 131 is not limited. For example, the design unit 310, generation unit 311, conversion unit 318, and management unit 312 may be containerized, and the sharing unit 313, storage unit 314, execution unit 315, control unit 316, and processing device 317 may be implemented on the master 131 without being containerized. The implementation format of each processing unit is not limited.
[0045] <Worker 132> Next, a description will be given of an example of a functional configuration of the worker 132. Among the functions held in the registry 302, a specified set of functions is deployed to the holding unit 321 under the control of the execution unit 322. The holding unit 321 can hold the function set once deployed even after the processing of the execution unit 322 is completed.
[0046] As a result, there is no need to deploy a function group once deployed again in the storage unit 321, and when a function group once deployed is to be used again, the storage unit 321 outputs the corresponding stored function group to the execution unit 322. As a result, there is no need to redeploy a function group once deployed, and it is possible to shorten the processing time and simplify the start-up of the system under design after it has been designed.
[0047] The execution unit 322 deploys a specified set of functions from the set of functions held in the registry 302 to the holding unit 321 according to the system information described in the conversion configuration information 950 acquired from the sharing unit 313. After the functions are deployed to the holding unit 321, the execution unit 322 materializes the system information described in the conversion configuration information 950 held in the sharing unit 313 for the corresponding functions in the set of functions according to a start command from the management unit 312, and executes the system to be designed. If the materialized system to be designed includes a specific speed-up function, the execution unit 322 selects a processing device 324 that performs processing according to the materialized specific speed-up function, and executes the processing in the processing device 324 via the control unit 323. Details of the processing related to the execution unit 315 will be described later with reference to Figs. 11 and 12.
[0048] When a specific speed-up function is included in the system under design that is instantiated by the execution unit 322, the control unit 323 controls the processing device 324 to execute the specific speed-up function.
[0049] The processing device 324 executes the processing of the specific speed-up function under the control of the control unit 323. Details of the execution unit 322, the control unit 323, and the processing device 324 will be described later with reference to FIG.
[0050] <Figure 4 Design Department 310> 4 is an explanatory diagram showing a detailed system design method by the design unit 310 according to the first embodiment. The design unit 310 provides an interface that can be accessed and operated by inputting a specified address from a web browser 400. By enabling access and operation via the web browser 400 in this way, it becomes possible for other masters 131 and workers 132 other than the master 131 having the design unit 310 to access it, and remote design is also possible. However, the interface of the design unit 310 is not limited to this, and for example, it may be distributed as an installable tool, and system design may be performed through a dedicated interface screen.
[0051] The design unit 310 has a palette 401 that holds a group of nodes used in system design, and a workspace 402 that is a work area for designing the system, and displays them on a web browser 400. The palette 401 and workspace 402 are accessible from the server 110, the master 131, and the worker 132.
[0052] The palette 401 is classified according to the functional overview of the nodes. Specifically, for example, a classification called input function 410 holds nodes related to inputs, such as a camera input 411 and a video input 412.
[0053] The camera input 411 is a node that holds general functional information regarding imaging of a camera that can be connected to the master 131 and the worker 132.
[0054] Video input 412 is a node that holds functional overview information for playing back images of captured moving images continuously on a frame-by-frame basis.
[0055] The processing function 420 includes nodes related to processing, namely, person detection 421, skeleton detection 422, and object detection 423.
[0056] Person detection 421 is a node having function overview information for acquiring the position and size of a person from within an acquired image, and outputting coordinate information for enclosing the detected person in a rectangle.
[0057] Skeleton detection 422 is a node that holds general information about a function of detecting the position of a person's skeleton from within an acquired image as coordinate information within the image.
[0058] Object Detection 423 is a node having general function information for acquiring the position and size of a pre-specified object from the acquired image, and outputting information about the detected object and coordinate information for enclosing the detected object in a rectangle.
[0059] The output function 430 includes a result drawing 431 and an execution node 432 related to output.
[0060] The result drawing 431 is a node that holds function outline information for drawing an image acquired by the input function 410 with the result of execution by the processing function 420 added thereto.
[0061] The execution node 432 is the last node to be connected to the system under design by the design unit 310 in the first embodiment, and the details of the operation of the execution node 432 will be described later with reference to FIG.
[0062] The orchestration function 440 has an orchestration-related node called edge specification 441. The edge specification 441 is a node that has function overview information that specifies which master 131 or worker 132 each subsequent node will use to process.
[0063] Unless a subsequent node is specified again by the edge specification 441, the edge 130 specified by the previous edge specification 441 executes the process specified by the subsequent node. For this reason, for example, if multiple processing functions 420 nodes follow the edge specification 441, all processing functions 420 following the edge specification 441 are executed by the edge 130 specified by the previous edge specification 441. Details of the operation of the edge specification 441 will be described later with reference to FIG. 5 and subsequent figures.
[0064] The nodes contained in the palette 401 described above, the format in which the nodes are held for each functional overview, and the functional overviews to be classified are not limited to these, and may be freely defined by the vendor providing the design unit 310 and may be configured to be able to be added and deleted.
[0065] A user who designs a system to be designed operates the input device 204 of the master 131 to place required nodes from a palette 401 in a work space 402 and connect the nodes according to a processing flow desired by the user. Below, as an example, a system will be described in which there are three edges 130, such as one master 131 and two workers 132, and the edges 130 operate in conjunction with each other. In order to distinguish between the two workers 132, they will be referred to as workers 132a and 132b.
[0066] First, we will explain the details of each operation of the three edges 130. The master 131 detects the position of a person from an image captured by a camera, detects person coordinate information for surrounding the detected person with a rectangle, and outputs the image captured by the camera and the detected person coordinate information to the worker 132a via the sharing unit 313.
[0067] The worker 132a acquires an image and person coordinate information from the master 131 via the sharing unit 313, and detects the skeleton position of the person from the image as skeleton coordinate information in the image. After that, the worker 132a acquires the position and size of a pre-specified object from the image, and detects information on the detected object and coordinate information for enclosing the detected object in a rectangle as object detection information. After that, the worker 132a outputs the image and person coordinate information acquired from the master 131, and the skeleton coordinate information and object detection information detected by the worker 132a to the worker 132b via the sharing unit 313.
[0068] The worker 132b acquires the image, the person coordinate information, the skeleton coordinate information, and the object detection information from the worker 132a via the sharing unit 313, and renders the person coordinate information, the skeleton coordinate information, and the object detection information on an image.
[0069] When designing an interlocking system to be designed using these three edges 130, the user operates the input device 204 to place camera input 461, person detection 462, edge specification 463, skeleton detection 464, object detection 465, edge specification 466, result drawing 467, and execution node 468 in the workspace 402, and connects the nodes (camera input 461, person detection 462, edge specification 463, skeleton detection 464, object detection 465, edge specification 466, result drawing 467, execution node 468) with vectors 471 to 477 in accordance with the processing order.
[0070] This generates system information 490 that defines the execution order of processes that are realized by the functions corresponding to the nodes specified in the design.
[0071] Here, detailed settings for each node can be made for each node using detailed setting screens 481 to 488. The detailed setting screens 481 to 488 are displayed by designating with the input device 204, for example.
[0072] The detailed setting screen 481 is a screen for setting the detailed function of the camera input 461, and the resolution and frame rate of the camera for shooting are set.
[0073] The detail setting screen 482 is a screen for setting details of the function of the person detection 462, and a DNN (Deep Neural Network) to be used for the person detection 462 and a device for performing DNN calculations are set.
[0074] The detailed setting screen 483 is a screen for setting the details of the function of the edge specification 463, and sets the host name (item: Edge, set value: worker 132a) and IP address (item: IP, set value: 192.168.1.1) of the edge 130 that processes the subsequent nodes (skeleton detection 464, object detection 465), and redundant edge information (item: SubEdge, set value: worker 132c) to be used for recovery when the processing of the edge 130 stops. The worker 132c is a worker 132 different from the worker 132a and the worker 132b.
[0075] In the redundant edge information, the item: SubEdge specifies that the attribute of the edge 130 described in the setting value is a redundant edge. In the detailed setting screen 483, the "worker 132c" in the edge 130 is a redundant edge.
[0076] Specifically, for example, in the detailed setting screen 483, the worker 132a described in the setting value of the item: Edge is the edge 130 to which a certain function is deployed, and when an error occurs during operation, the management unit 312 of the master 131 detects the error of the worker 132a by an error signal from the worker 132a, which is the source of the error. In this case, the execution unit 315 of the master 131 deploys the function to the worker 132c, which is a redundant edge. As a result, the worker 132c operates in place of the worker 132a. The error signal may be generated by the execution unit 315 of the master 131 not only from the worker 132a, which is the source of the error, but also, for example, when communication from the worker 132a is interrupted.
[0077] In the example of the detailed setting screen 483, when the management unit 312 of the master 131 detects an error in the worker 132a, the execution unit 315 of the master 131 deploys the skeleton detection 464 and the object detection 465 after the edge specification 463 to the worker 132c. As a result, the worker 132c takes over the results of the camera input 461 and the person detection 462 in place of the worker 132a and executes the skeleton detection 464 and the object detection 465.
[0078] The detailed setting screen 484 is a screen for setting the details of the skeleton detection 464 function, and the DNN to be used for the skeleton detection 464 and the device that performs the DNN calculation are set.
[0079] The detail setting screen 485 is a screen for setting details of the function of object detection 465, and the DNN to be used for object detection 465 and the device that performs the DNN calculation are set.
[0080] The detailed settings screen 486 is a screen for setting the details of the edge specification 466 function, and like the detailed settings screen 483, the host name (item: Edge, setting value: Worker 132b) and IP address (item: IP, setting value: 192.168.1.2) of the edge 130 that will process the subsequent node (result drawing 467), and redundant edge information (item: SubEdge, setting value: Worker 132c) to be used for recovery when processing of the edge 130 stops are set.
[0081] The detailed setting screen 488 is a screen for setting the details of the function of the execution node 468, and the IP address of the edge 130 in which the shared unit 313 is installed is set. The values set on the detailed setting screen 488 are not limited to these, and for example, values common to the system under design are set.
[0082] The setting values in the detailed setting screens 481 to 488 can be changed by operating the input device 204.
[0083] As described above, by connecting nodes on the work space 402 , the design unit 310 generates system information 490 , and the generation unit 311 generates configuration information from this system information 490 .
[0084] 4, for example, camera inputs 411 and 461 are used to assign different numbers to nodes held in palette 401 and nodes placed in workspace 402 even if the node names are the same. This is to distinguish between the nodes held in palette 401 and the nodes placed in workspace 402, which contain detailed setting values after instantiating the nodes in order to be used in the system under design, and the difference in the function overview information held by the nodes.
[0085] <Figure 5 Example of configuration information generation> 5 is an explanatory diagram showing an example of generation of integrated function summary information according to the first embodiment. Each node (camera input 461, person detection 462, edge designation 463, skeleton detection 464, object detection 465, edge designation 466, result drawing 467, execution node 468) constituting the system information 490 has function summary information 501 to 508 for identifying what kind of processing the node performs, rather than the actual function. The function summary information 501 to 508 also includes information set on the detail setting screens 481 to 488.
[0086] The generation unit 311 outputs the function summary information 501 to 507 of each node to the subsequent node. For example, the camera input 461 outputs the function summary information 501 to the person detection 462.
[0087] At this time, the subsequent node outputs integrated function summary information, which includes the function summary information of the node in the function summary information acquired from the previous node, to the subsequent node. For example, the person detection 462 outputs integrated function summary information 542 to the edge specification 463. The integrated function summary information 542 includes the function summary information 502 of the person detection 462 in the function summary information 501 acquired from the camera input 461.
[0088] Moreover, the edge designation 463 outputs the integrated function overview information 543 to the skeleton detection 464. The integrated function overview information 543 includes the function overview information 503 indicating the edge designation 463 in the integrated function overview information 542 (function overview information 501, function overview information 502) acquired from the person detection 462. The nodes after the skeleton detection 504 also perform the same process.
[0089] The skeleton detection 464 outputs the integrated function summary information 544 to the object detection 465. The integrated function summary information 544 includes the function summary information 504 of the skeleton detection 464 in the integrated function summary information 543 acquired from the edge specification 463.
[0090] The object detection 465 outputs the integrated function summary information 545 to the edge specification 466. The integrated function summary information 545 includes the function summary information 505 of the object detection 465 in the integrated function summary information 544 acquired from the skeleton detection 464.
[0091] The edge specification 466 outputs the integrated function summary information 546 to the result drawing 507. The integrated function summary information 546 includes the function summary information 506 of the edge specification 466 in the integrated function summary information 545 acquired from the object detection 465.
[0092] The result drawing 507 outputs the integrated function overview information 547 to the execution node 468. The integrated function overview information 547 includes the function overview information 507 of the result drawing 467 in the integrated function overview information 546 acquired from the edge specification 466.
[0093] Also, each node assigns an ID to the function summary information. For example, the ID of the function summary information 300 of the starting node (camera input 461) that has no previous node is set to "1", and the subsequent node reads the maximum value of the ID described in the function summary information or integrated function summary information received from the previous node, and assigns the value incremented from the read ID value as the ID of the node.
[0094] Therefore, the ID of the function summary information 502 of the person detection 462 is "2". However, the method of assigning IDs may be such that there are no duplicate values among the nodes constituting the system under design, and the ID value of the node is not limited to a value incremented from the value of the previous ID. Therefore, in this example, the ID of the function summary information 503 of the edge specification 463, the ID of the function summary information 506 of the edge specification 466, and the ID of the function summary information 508 of the execution node 468 are all set to unique values.
[0095] The relationship between the edge designation 463 and the edge designation 466 and the edges 130 to which each piece of function summary information is assigned will be described. The edge designations 463 and 466 designate which edge 130 each subsequent node uses for processing. For this reason, the integrated function summary information 512 (function summary information 504, function summary information 505) is assigned to the worker 132a designated by the edge designation 463, and the integrated function summary information 513 (function summary information 507) is assigned to the worker 132b designated by the edge designation 466.
[0096] Since the function summary information 501 and 502 without an edge designation in the preceding stage is assigned to the master 131 having the design section 310 , the integrated function summary information 511 (the function summary information 501 and the function summary information 502 ) is assigned to the master 131 .
[0097] The user may add, to the system information 490, an edge specification that specifies any one of the edges 130 in the preceding stage of the camera input 461 that corresponds to the function summary information 501 that does not have an edge specification in the preceding stage.
[0098] The execution node 468 is the last node to be connected in the system to be designed by the design unit 310 in the first embodiment, and the integrated function overview information 547 acquired by the execution node 468 includes the function overview information 501 to 507 of all nodes designed by the design unit 310.
[0099] The function overview information 508 is function overview information related to the execution node 468, and sets values common to the system to be designed by the design unit 310. Integrated function overview information 531 obtained by adding the function overview information 508 to the integrated function overview information 547 acquired by the execution node 468 becomes configuration information generated by the generation unit 311. Hereinafter, the integrated function overview information 531 will be referred to as configuration information 531, and the function overview information 501 to 508 will be referred to as configuration information 501 to 508.
[0100] <Figure 6 Example of configuration information 531> 6 is an explanatory diagram illustrating an example of the configuration information 531 according to the first embodiment. The configuration information 531 is composed of integrated function summary information 601 to 603 and configuration information 508. The integrated function summary information 601 includes the configuration information 501 and the configuration information 502. The integrated function summary information 602 includes the configuration information 503, the configuration information 504, and the configuration information 505. The integrated function summary information 603 includes the configuration information 506 and the configuration information 507. The configuration information 531 includes the integrated function summary information 601, the integrated function summary information 602, the integrated function summary information 603, and the configuration information 508.
[0101] <Figure 7 Example of conversion of configuration information 531> 7 is an explanatory diagram of an example of conversion of configuration information according to the embodiment 1. FIG. 7 illustrates an example of converting the configuration information 531 using the edge designations 463 and 466.
[0102] The edge designations 463 and 466 designate which edge 130 processes the configuration information 501 to 508. Since the design execution system 100 executes processing by linking a plurality of edges 130, if the edges 130 to be processed are different in the edge designation 463 and the edge designation 466, data communication between the edges 130 is required.
[0103] For this reason, Pub (publishers) 701, 703 are required as transmitting nodes indicating a process for realizing a function of transmitting data before the edge designations 463, 466, and Sub (subscribers) 702, 704 are required as receiving nodes indicating a process for realizing a function of receiving data after the edge designations 463, 466. Therefore, the conversion unit 318 performs internal conversion of the system information 490 (execution order data) by the edge designations 463, 466.
[0104] Specifically, for example, for edge specification 463, conversion unit 318 places Pub 701, which processes the data transmission system, in the front stage, and places Sub 702, which processes the data reception system, in the rear stage.
[0105] In the web browser 400, the items in the detail settings screen 711 of Pub 701 are automatically set based on the information set by the conversion unit 318 on the detail settings screen 483 of the edge specification 463 and the information set on the detail settings screen 488 of the execution node 468.
[0106] Specifically, for example, the conversion unit 318 extracts the host name "worker 132a" of the edge 130 that will perform the subsequent processing from the detailed setting screen 483 of the edge specification 463, and sets it as SubEdge of the detailed setting screen 711, and extracts the IP address "192.168.1.1" of the edge 130 (worker 132a) that will perform the subsequent processing, and sets it as SubEdgeIP of the detailed setting screen 711.
[0107] Furthermore, the conversion unit 318 extracts the IP address "192.168.1.0" of the edge 130 (in this example, the master 131 (see FIG. 3)) on which the sharing unit 313 is installed from the detailed setting screen 488, and sets it as the BrokerIP on the detailed setting screen 711. The sharing unit 313 is an area for performing data communication between the edges 130, and specifically includes, for example, a shared storage 731, a management database 732, and a message broker 733.
[0108] The shared storage 731 is used for writing and reading image data. The management database 732 is used for writing and reading data related to processing results and task scheduling at each edge 130. The message broker 733 is used for synchronization to communicate processing start signals between the edges 130. The procedure for data communication between the edges 130 using the sharing unit 313 will be described later.
[0109] The configuration information 501 (camera input 461) and the configuration information 502 (human detection 462) that do not have edge designations 463, 466 in the preceding stages are assigned to the master 131 having the design unit 310. For this reason, the conversion unit 318 sets the host name of the master 131, “Master 131”, to the PubEdge of the detailed setting screen 712, and sets the IP address of the master 131, “192.168.1.0”, to the PubEdgeIP of the detailed setting screen 712.
[0110] Furthermore, the conversion unit 318 extracts the IP address “192.168.1.0” of the edge 130 in which the shared unit 313 is installed from the detailed setting screen 488 , and sets it as the BrokerIP on the detailed setting screen 712 .
[0111] In the web browser 400, the items in the detail settings screen 713 of Pub 703 are automatically set based on the information set by the conversion unit 318 on the detail settings screen 486 of the edge specification 466 and the information set on the detail settings screen 488 of the execution node 468.
[0112] Specifically, for example, the conversion unit 318 extracts the host name "Worker 132b" of the edge 130 that will perform the subsequent processing from the detailed setting screen 486 of the edge specification 466 and sets it as SubEdge of the detailed setting screen 713, and extracts the IP address "192.168.1.2" of the edge 130 that will perform the subsequent processing and sets it as SubEdgeIP of the detailed setting screen 713.
[0113] Furthermore, the conversion unit 318 extracts the IP address “192.168.1.0” of the edge 130 in which the shared unit 313 is installed from the detailed setting screen 488 , and sets it as the BrokerIP on the detailed setting screen 713 .
[0114] In addition, in the web browser 400, the items in the detail settings screen 714 of Sub 704 are automatically set based on the information set in the detail settings screen 488 of the execution node 468 and the information set in the detail settings screen 483 of the edge specification 463 in the previous stage or earlier.
[0115] Specifically, for example, the conversion unit 318 extracts the host name "worker 132a" of the edge 130 performing the previous processing from the detailed settings screen 483 of the edge specification 463 and sets it as PubEdge on the detailed settings screen 714, and extracts the IP address "192.168.1.1" of the edge 130 performing the previous processing and sets it as SubEdgeIP on the detailed settings screen 714.
[0116] Furthermore, the conversion unit 318 extracts the IP address “192.168.1.0” of the edge 130 in which the shared unit 313 is installed from the detailed setting screen 488 , and sets it as the BrokerIP on the detailed setting screen 714 .
[0117] <Figure 8 Example of conversion of the start position of configuration information 531> Fig. 8 is an explanatory diagram illustrating an example of conversion of the start position of the configuration information 531 according to the first embodiment. Fig. 8 illustrates an example of internal conversion of the integrated function summary information 601 by the conversion unit 318. The integrated function summary information 601 before conversion is converted to a configuration 801. The integrated function summary information 601 is the start position of the configuration information 531, and there is no edge specification preceding it.
[0118] For this reason, the conversion unit 318 performs conversion to add edge-designated summary information 811 to the integrated function summary information 601 based on the information of the master 131, and generates a configuration 801. The summary information of the edge-designated summary information 811 is summary information that designates the master 131 as the edge 130. In addition, the conversion unit 318 sets the function summary information 501, 502 of the node following the added edge-designated summary information 811 as the value for the "cprocess" (child process) key.
[0119] <Figure 9 Example of conversion of configuration information 531> 9 is an explanatory diagram showing an example of conversion of the configuration information 531. The configuration information 531 after conversion by the conversion unit 318 is assumed to be conversion configuration information 950. The conversion configuration information 950 includes conversion integration function overview information 901, conversion integration function overview information 902, and conversion integration function overview information 903.
[0120] An example of conversion from the configuration 801 to the conversion integration function summary information 901 will be described. The conversion unit 318 inserts the set Pub 701 and the information in the detailed setting screen 711 as the configuration 911 by the edge specification 463, and converts the configuration 801 shown in Fig. 8 into the conversion integration function summary information 901. The ID of the configuration 911 is assigned the ID "11" assigned to the function summary information 503 of the subsequent edge specification 463. As a result, the configuration 801 is converted into the conversion integration function summary information 901.
[0121] An example of conversion from the integrated function summary information 602 to the conversion integration function summary information 902 will be described. The integrated function summary information 602 has edge designation summary information 811 not at the start position of the configuration information 531 but in the preceding conversion integration function summary information 901. Therefore, the conversion unit 318 generates an edge designation 921 that designates the worker 132a designated by SubEdge in the configuration 911 as the edge 130, and inserts it into the integrated function summary information 602. The edge designation 921 is information that designates the worker 132a as the edge 130.
[0122] Furthermore, the conversion unit 318 generates a configuration 922 based on the Sub 702 set from the edge specification 463 and the information in the detail setting screen 712. Furthermore, the conversion unit 318 generates a configuration 923 based on the Pub 703 set from the edge specification 466 and the information on the detail setting screen 713.
[0123] The conversion unit 318 sets the configuration 922, configuration information 504, configuration information 505, and configuration 923, which are nodes from the node following the edge specification 463 to the node where the edge specification 466 or the execution node 468 is placed, as the value for the “cprocess” (child process) key in the edge specification 921. As a result, the integrated function summary information 602 is converted to the converted integrated function summary information 902.
[0124] An example of conversion from the integrated function summary information 603 to the conversion integration function summary information 903 will be described. In the integrated function summary information 603, an edge designation 921 exists not at the start position of the configuration information 531 but in the preceding conversion integration function summary information 902. Therefore, the conversion unit 318 generates an edge designation 931 that designates the worker 132b designated by SubEdge in the configuration 923 as the edge 130, and inserts it into the integrated function summary information 603. The edge designation 931 is information that designates the worker 132b as the edge 130.
[0125] Furthermore, the conversion unit 318 generates a configuration 932 based on the Sub 704 set from the edge specification 466 and the information in the detailed setting screen 714 .
[0126] The conversion unit 318 sets the configuration 932, which is the node following the edge specification 466 until the next edge specification or execution node 468 is placed, and the configuration information 507 as a value for the "cprocess" (child process) key in the edge specification 931. This converts the integrated function summary information 603 to converted integrated function summary information 903. In this manner, the configuration information 531 is converted. The converted configuration information 531 is set as converted configuration information 950.
[0127] This allows the user to easily set data linkage between the edges 130 when distributing and processing the system designed by the design unit 310 across a plurality of edges 130.
[0128] <Figure 10 Example of system execution for Master 131> Fig. 10 is an explanatory diagram illustrating an example of system execution of the master 131 according to the embodiment 1. Fig. 10 illustrates detailed processing related to system execution of the registry 302, the management unit 312, the sharing unit 313, the storage unit 314, the execution unit 315, the control unit 316, and the processing device 317.
[0129] The management unit 312 outputs the conversion configuration information 950 to the sharing unit 313 , and outputs an execution command for processing in accordance with the conversion configuration information 950 to the execution unit 315 .
[0130] The execution unit 315 of the master 131 identifies conversion integration function summary information from the conversion configuration information 950 in which the host name for the Edge key defined by the edge specification matches the host name of the edge 130 (in this example, the master 131) in which the execution unit 315 is located.
[0131] 9, the edge designation with the host name (Edge) being "Master 131" is the edge designation summary information 811. Therefore, the execution unit 315 extracts the function set 1010 that realizes the configuration information 501, 502, 911 defined by "cprocess" in the conversion integration function summary information 901 that includes the edge designation summary information 811 from the function set held in the registry 302.
[0132] Specifically, for example, the execution unit 315 extracts a camera input class 1011 as an entity of a function (camera input 461) that realizes configuration information 501, extracts a person detection class 1012 as an entity of a function (person detection 462) that realizes configuration information 502, and extracts an initialization class 1013 as an entity of a function (Pub701) that realizes configuration 911, and stores them in the storage unit 314.
[0133] The storage unit 314 maintains the storage of the function set 1010 unless a deletion process is performed. Therefore, if the function set 1010 necessary for processing according to the conversion configuration information 950 is stored in advance in the storage unit 314, retrieval of the function set 1010 from the registry 302 can be omitted.
[0134] When the execution unit 315 extracts a function group from the registry 302, it may extract a function group according to the conversion configuration information 950, or it may extract all of the function groups held in the registry 302 at once, or it may divide the function groups held in the registry 302 into several groups and extract the function groups in units of the divided groups.
[0135] The storage unit 314 stores a function group 1010 acquired from the registry 302. The function group 1010 stores the entities of functions corresponding to all nodes stored in the palette 401 in the design unit 310 (for example, a camera input class 1011, a human detection class 1012, and an initialization class 1013).
[0136] The execution unit 315 identifies conversion integration function overview information 901 from the function group 1010 stored in the storage unit 314, in which the host name for the Edge key defined by the edge specification in the conversion configuration information 950 matches the host name of the edge 130 in which the execution unit 315 is located.
[0137] Specifically, for example, the execution unit 315 identifies and instantiates the configuration information 501, 502, and 911 defined by "cprocess" in the conversion integration function summary information 901. The execution unit 315 lists the instantiated functions (camera input 461, person detection 462, and Pub 701) in the order of processing execution, for example, as in a first list 1021, and executes, in a second list 1022, processing related to the functions listed in the first list 1021.
[0138] If the realized functions (camera input 461, human detection 462, Pub701) include a specific speed-up function, the execution unit 315 selects a device to process according to the realized specific speed-up function, and executes the processing in the processing device 317 via the control unit 316.
[0139] For example, the configuration information 502 of the person detection 462 in the conversion configuration information 950 has a description of "Device:GPU" indicating a specific speed-up function. In accordance with this description, the execution unit 315 selects the GPU as the processing device 317 only for the processing of the person detection 462, and outputs the processing content and information specifying the processing device 317 to the control unit 316 when processing the person detection 462. The control unit 316 executes the processing of the person detection 462 on the GPU, which is the specified processing device 317, based on the acquired information, and outputs the processing result of the person detection 462 to the execution unit 315.
[0140] <Figure 11 System execution example 1 of Worker 132> Fig. 11 is an explanatory diagram illustrating a system execution example 1 of the worker 132 according to the embodiment 1. Fig. 11 illustrates detailed processing related to system execution of the registry 302, the management unit 312, the sharing unit 313, the storage unit 321, the execution unit 322, the control unit 323, and the processing device 324 in the worker 132a.
[0141] The management unit 312 of the master 131 outputs the conversion configuration information 950 to the sharing unit 313, and outputs an execution command for processing in accordance with the conversion configuration information 950 to the execution unit 322 of the worker 132a.
[0142] The execution unit 322 of the worker 132a identifies conversion integration function summary information from the conversion configuration information 950 in which the host name for the Edge key defined by the edge specification matches the host name of the edge 130 in which the execution unit 322 is located (in this example, the worker 132a).
[0143] 9, the edge specification in which the host name (Edge) is "worker 132a" is the edge specification 921. Therefore, the execution unit 322 of the worker 132a extracts the function set 1110 that realizes the configurations 922, 504, 505, and 923 defined by "cprocess" in the conversion integration function summary information 902 including the edge specification 921 from the function set held in the registry 302.
[0144] Specifically, for example, the execution unit 322 of worker 132a extracts Sub class 1111 as the entity of the function (Sub702) that realizes configuration 922, extracts skeleton detection class 1112 as the entity of the function (skeleton detection 464) that realizes configuration information 504, extracts object detection class 1113 as the entity of the function (object detection 465) that realizes configuration information 505, and extracts Pub class 1114 as the entity of the function (Pub703) that realizes configuration 923, and stores them in the storage unit 321 of worker 132a.
[0145] Unless a deletion process is performed, the storage unit 321 of the worker 132a maintains the storage of the function set 1110. Therefore, if the function set 1110 required for processing according to the conversion configuration information 950 is stored in advance in the storage unit 321 of the worker 132a, retrieval of the function set 1110 from the registry 302 can be omitted.
[0146] When the execution unit 322 of the worker 132a retrieves a function group from the registry 302, it may retrieve a function group according to the conversion configuration information 950, or it may retrieve all of the function groups held in the registry 302 at once, or it may divide the function groups held in the registry 302 into several groups and retrieve the function groups in units of the divided groups.
[0147] The storage unit 321 of the worker 132a stores a function set 1110 acquired from the registry 302. The function set 1110 stores the entities of functions corresponding to all nodes stored in the palette 401 in the design unit 310 (for example, a Sub class 1111, a skeleton detection class 1112, an object detection class 1113, and a Pub class 1114).
[0148] The execution unit 322 of the worker 132a identifies conversion integration function overview information 902 from the function group 1110 acquired in the storage unit 321 of the worker 132a, in which the host name for the Edge key defined by the edge specification in the conversion configuration information 950 matches the host name of the edge 130 where the execution unit 322 is located.
[0149] Specifically, for example, selects and instantiates configurations 922, 504, 505, and 923 defined by "cprocess" in the conversion integration function summary information 902. The execution unit 322 of the worker 132a lists the instantiated functions (Sub 702, skeleton detection 464, object detection 465, and Pub 703) in the order of processing execution, for example, as in a first list 1121, and executes, in a second list 1122, processing related to the functions listed in the first list 1121.
[0150] If a specific speed-up function is included in the realized functions (Sub702, skeleton detection 464, object detection 465, Pub703), the execution unit 322 of the worker 132a selects a device to process according to the realized specific speed-up function, and executes the processing on the processing device 324 of the worker 132a via the control unit 323 of the worker 132a.
[0151] For example, the configuration information 504 of the skeleton detection 464 in the conversion configuration information 950 has a description of "Device:GPU" indicating a specific speed-up function. The execution unit 322 of the worker 132a selects the GPU as the processing device 324 only for the processing of the skeleton detection 464 in accordance with this description, and outputs the processing content and the information specifying the processing device 324 to the control unit 323 when processing the skeleton detection 464. The control unit 323 executes the processing of the skeleton detection 464 on the GPU, which is the specified processing device 324, based on the acquired information, and outputs the processing result of the skeleton detection 464 to the execution unit 322 of the worker 132a.
[0152] <Figure 12 System execution example 2 of Worker 132> Fig. 12 is an explanatory diagram illustrating a second system execution example of the worker 132 according to the first embodiment. Fig. 11 illustrates detailed processing related to system execution of the registry 302, the management unit 312, the sharing unit 313, the storage unit 321, the execution unit 322, the control unit 323, and the processing device 324 in the worker 132b.
[0153] The management unit 312 of the master 131 outputs the conversion configuration information 950 to the sharing unit 313, and outputs an execution command for processing in accordance with the conversion configuration information 950 to the execution unit 322 of the worker 132b.
[0154] The execution unit 322 of the worker 132b identifies conversion integration function summary information from the conversion configuration information 950 in which the host name for the Edge key defined by the edge specification matches the host name of the edge 130 in which the execution unit 322 is located (in this example, the worker 132a).
[0155] 9, the edge specification in which the host name (Edge) is "worker 132b" is the edge specification 931. Therefore, the execution unit 322 of the worker 132b extracts the function set 1210 that realizes the configuration 932, 507 defined in "cprocess" in the conversion integration function summary information 903 including the edge specification 931 from the function set held in the registry 302.
[0156] Specifically, for example, the execution unit 322 of worker 132b extracts Sub class 1211 as the entity of the function (Sub 704) that realizes configuration 932, and extracts result drawing class 1212 as the entity of the function (result drawing 467) that realizes configuration information 507, and stores them in the storage unit 321 of worker 132b.
[0157] Unless a deletion process is performed, the storage unit 321 of the worker 132b maintains the storage of the function set 1210. Therefore, if the function set 1210 required for processing according to the conversion configuration information 950 is stored in advance in the storage unit 321 of the worker 132b, retrieval of the function set 1110 from the registry 302 can be omitted.
[0158] When the execution unit 322 of the worker 132b retrieves a function group from the registry 302, it may retrieve a function group according to the conversion configuration information 950, or it may retrieve all of the function groups held in the registry 302 at once, or it may divide the function groups held in the registry 302 into several groups and retrieve the function groups in units of the divided groups.
[0159] The storage unit 321 of the worker 132b stores a function set 1210 acquired from the registry 302. The function set 1210 stores the entities of the functions corresponding to all the nodes stored in the palette 401 of the design unit 310 (for example, a Sub class 1211 and a result drawing class 1212).
[0160] The execution unit 322 of the worker 132b identifies conversion integration function overview information 902 from the function group 1210 acquired in the storage unit 321 of the worker 132b, in which the host name for the Edge key defined by the edge specification in the conversion configuration information 950 matches the host name of the edge 130 in which the execution unit 322 is located.
[0161] Specifically, for example, the execution unit 322 of the worker 132b selects and instantiates the configurations 932, 507 defined by "cprocess" in the conversion integration function summary information 903. The execution unit 322 of the worker 132b lists the instantiated functions (Sub 704, result drawing 467) in the order of processing execution, for example, as in a first list 1221, and executes, in a second list 1222, processing related to the functions listed in the first list 1221.
[0162] If the specific speed-up function is included in the materialized function (Sub704, result drawing 467), the execution unit 322 of the worker 132b selects a device for processing according to the materialized specific speed-up function, and executes the processing in the processing device 324 of the worker 132b via the control unit 323 of the worker 132b. However, since the specific speed-up function is not included in the materialized function (Sub704, result drawing 467), the execution unit 322 of the worker 132b cannot select a device for processing according to the materialized specific speed-up function.
[0163] <Figure 13 Example of processing procedure of the design execution system 100> 13 is a flowchart showing an example of a processing procedure of the design execution system 100 according to the first embodiment. In the function group creation, the server 110 creates a function group required for system design by the function group creation unit 301, and stores the created function group in the registry 302 (step S1300). In the function group creation, the master 131 and the worker 132 create all the function groups to be used in the system to be designed by using a graphical user interface provided by the design unit 310.
[0164] In the configuration information generation, the master 131 uses the design unit 310 as one of the configuration information generation functions to connect nodes having function summary information using a graphical user interface to design the system to be designed (step S1310). The master 131 uses the generation unit 311 to generate configuration information 531 from the system to be designed (step S1311). The master 131 uses the conversion unit 318 to convert the generated configuration information 531 so that processing can be arranged for each system to be designed, generates converted configuration information 950, and outputs it to the management unit 312 (step S1312). The detailed process of configuration information conversion (step S1312) will be described later with reference to FIG. 14.
[0165] During system execution, the master 131, via the management unit 312, outputs to the execution units 315, 322 an execution command for processing corresponding to the specified node in accordance with the conversion configuration information 950, and also outputs to the sharing unit 313 an activation command and the conversion configuration information 950 to activate the data sharing function between the edges 130 (step S1320).
[0166] In response to an execution command, the execution units 315 and 322 deploy a specified set of functions (set of functions 1010, set of functions 1110, set of functions 1210) from the set of functions held in the registry 302 to the holding units 314 and 321 in accordance with the system information 490 described in the conversion configuration information 950 acquired from the sharing unit 313 (step S1321).
[0167] After the functions are deployed to the storage unit 314, the execution units 315 and 322 read the system information 490 described in the conversion configuration information 950 stored in the shared unit 313 in accordance with a start command from the management unit 312 (step S1322) and instantiate the corresponding functions in the function group (step S1323). The execution units 315 and 322 then execute the system under design (step S1324). The details of the process execution (step S1324) will be described later with reference to FIG. 15.
[0168] To execute the system, function group creation and configuration information generation are executed, and conversion configuration information 950 must be deployed in the shared unit 313 and the function group must be deployed in the storage unit 314. However, if the conversion configuration information 950 is stored in the shared unit 313 and the function group is deployed in the storage unit 314, it is not necessary to execute configuration information generation and function group creation every time the system is executed. In other words, if functions are deployed in the storage unit 314 and the conversion configuration information 950 is stored in the shared unit 313, it is possible to execute only the system execution alone.
[0169] For example, when the execution unit 315 executes the design, it is not necessary to start up Node-RED, which constitutes the design unit 310, and press a start button. Then, for example, the execution unit 315 starts execution by simply turning on the power of the design execution device.
[0170] Furthermore, function group creation and function generation may be executed only when there is a change in the conversion configuration information 950 held by the shared unit 313 and the function group held by the holding unit 314, respectively. By executing the processes of function group creation and system execution in a series of steps, the user can obtain an environment in which the system to be designed can be executed immediately on the graphical interface.
[0171] In this manner, according to the first embodiment, a system to be designed is designed using a graphical user interface through user operation, configuration information 531 is generated from the system to be designed, which is converted into converted configuration information 950, and the system to be designed is executed in accordance with the generated converted configuration information 950. This makes it possible to instantly execute the system to be designed from a system design platform provided by the graphical user interface by linking functions corresponding to each node specified in the design in a group of multiple nodes constituting the system to be designed.
[0172] In particular, by dividing the process into stages - a process for retaining the necessary function group, a process for designing the system to be designed and then generating configuration information 531 and converting it into conversion configuration information 950, and a process for executing the system to be designed from the generated conversion configuration information 950 and the function group - it is possible to execute system design and system execution in a single flow. It is also possible to execute system execution separately, making it possible to obtain a design execution system that simultaneously realizes ease of system design and embedded implementation.
[0173] <Figure 14 Example of configuration information conversion processing procedure> Fig. 14 is a flowchart showing a detailed example of the processing procedure of the configuration information conversion (step S1312) shown in Fig. 13. The conversion unit 318 specifies the master 131 for the configuration information 531 (step S1411). In the first embodiment, the master 131 is specified by the edge specification 441 as the edge 130 that executes the system to be designed.
[0174] For this reason, it is necessary to place an edge designation 441 at the beginning of configuration information 531 generated from the system to be designed set by design unit 310 in order to designate the edge 130 that will execute the process. Therefore, conversion unit 318 checks whether edge designation 441 is placed at the beginning of the system to be designed. If edge designation 441 is not placed, conversion unit 318 reflects information on master 131 where design unit 310 is located in edge designation 441, and inserts edge designation 441 at the beginning of configuration information 531. Details of step S1411 will be described later.
[0175] Next, the conversion unit 318 extracts positions where edge designations 441 are incorporated other than the first edge designation 441 from the configuration information 531 (step S1412), and detects edge information specified by the edge designation 441 set before the extracted edge designation 441 (hereinafter referred to as previous edge information) (step S1413).
[0176] The conversion unit 318 then incorporates the configuration information in the latter part of the extracted edge specification 441 as a value for the key "cprocess" in the edge specification 441 (step S1414). Pub is set in front of the detected edge specification 441 other than the first edge specification 441, and Sub is set at the beginning of the value for "cprocess" (step S1415). The detailed processing of step S1415 will be described later.
[0177] The conversion unit 318 outputs the configuration information 531 thus converted to the management unit 312 as converted configuration information 950. Note that the edge designation information extraction in step S1412 extracts all edge designations 441 other than the first edge designation included in the configuration information 531, and the subsequent processes from step S1413 to step S1415 are executed for all the extracted edge designations 441.
[0178] A detailed process procedure for the master designation in step S1411 will be described. The conversion unit 318 judges whether the leading node in the configuration information 531 generated from the system under design by the design unit 310 is the edge designation 441 (step S1421). If the leading node is the edge designation 441 (step S1421: Yes), the master edge designation process in step S1411 ends and the process proceeds to step S1412.
[0179] On the other hand, if the top node is not the edge specification 441 (step S1421: No), the process proceeds to step S1422 (step S1421). In this case, the conversion unit 318 reflects the information of the master 131 where the design unit 310 is located in the edge specification 441, inserts the edge specification 441 at the top of the configuration information 531 (step S1422), and proceeds to step S1412.
[0180] A detailed process procedure for the Pub / Sub setting in step S1415 will be described. The conversion unit 318 sets Pub before the detected edge specification 441 other than the leading edge specification 441 (step S1431), and sets Sub to the beginning of the value for "cprocess" of the edge specification 441 (step S1432). After this, the process proceeds to step S1416.
[0181] <Figure 15 Example of processing procedure for processing by the execution unit> Fig. 15 is a flowchart showing a detailed example of the process procedure of the process execution (step S1324) shown in Fig. 13. In Fig. 15, the process execution (step S1324) is explained by dividing it into the execution unit 315 of the master 131, the execution unit 322 of the worker 132a, and the execution unit 322 of the worker 132b.
[0182] First, the processing by the execution unit 315 of the master 131 will be described with reference to a flowchart 1500. The execution unit 315 of the master 131 identifies conversion integration function summary information 901 in which the host name for the Edge key defined by the edge specification in the conversion configuration information 950 matches the host name "master 131" of the edge 130 where the execution unit 315 is located. Then, the execution unit 315 of the master 131 extracts, from the function group held in the registry 302, a function group 1010 that realizes the configuration information 501, 502, 911 defined by "cprocess" in the identified conversion integration function summary information 901.
[0183] Specifically, for example, the execution unit 315 extracts a camera input class 1011 as the entity of the function (camera input 461) that realizes the configuration information 501, extracts a person detection class 1012 as the entity of the function (person detection 462) that realizes the configuration information 502, and extracts an initialization class 1013 as the entity of the function (Pub701) that realizes the configuration 911, and instantiates them in the storage unit 314.
[0184] The execution unit 315 acquires an image from the camera using the camera input class 1011 (step S1501), detects a person appearing in the acquired image using the person detection class 1012 (step S1502), and executes Pub processing using the initialization class 1013 (step S1503). Specifically, for example, the execution unit 315 outputs to the sharing unit 313 the acquired image, the person detection result, a processing command to the edge 130 that performs the subsequent processing, and a start command to the edge 130 that performs the subsequent processing.
[0185] Then, the execution unit 315 judges whether the image to be acquired is the last one by the camera input class 1011 (step S1504). Specifically, for example, the execution unit 315 judges whether an end signal indicating that the image acquired by the camera input is the last one is included. If an end signal is included, it is the last image, and if not, it is not the last image.
[0186] If it is not the last image (step S1504: No), the process returns to step S1501. If it is the last image (step S1504: Yes), the execution unit 315 outputs the end signal to the sharing unit 313 (step S1505). This ends the process of the execution unit 315 in the master 131. Details of the Pub process (step S1503) will be described later with reference to FIG. 16.
[0187] Next, the process performed by the execution unit 322 of the worker 132a will be described with reference to a flowchart 1510.
[0188] The execution unit 322 of the worker 132a identifies conversion integration function summary information 902 in which the host name for the Edge key defined by the edge specification in the conversion configuration information 950 matches the host name "worker 132a" of the edge 130 in which the execution unit 322 is located. Then, the execution unit 322 of the worker 132a extracts, from the function set held in the registry 302, a function set 1110 that realizes the configurations 922, 504, 505, 923 defined by "cprocess" in the identified conversion integration function summary information 902.
[0189] Specifically, for example, the execution unit 322 of worker 132a extracts Sub class 1111 as the entity of the function (Sub702) that realizes configuration 922, extracts skeleton detection class 1112 as the entity of the function (skeleton detection 464) that realizes configuration information 504, extracts object detection class 1113 as the entity of the function (object detection 465) that realizes configuration information 505, and extracts Pub class 1114 as the entity of the function (Pub703) that realizes configuration 923, and instantiates them in the storage unit 321 of worker 132a.
[0190] The execution unit 322 of the worker 132a executes the Sub-processing by the Sub-class 1111 (step S1511). Specifically, for example, the execution unit 322 of the worker 132a receives an event signal from the sharing unit 313 of the master 131. The execution unit 322 of the worker 132a determines whether the received event signal is a start command or an end signal. If it is a start signal, the execution unit 322 of the worker 132a obtains the corresponding processing command and image, and proceeds to step S1513 (step S1511).
[0191] If the received event signal is an end signal (step S1512: Yes), the process proceeds to step S1516. Details of the Sub process (step S1511) will be described later with reference to FIG.
[0192] The execution unit 322 of the worker 132a detects the skeleton of a person appearing in the acquired image by the skeleton detection class 1112 (step S1513). The execution unit 322 of the worker 132a detects an object appearing in the acquired image by the object detection class 1113 (step S1514).
[0193] The execution unit 322 of the worker 132a executes the Pub process by the Pub class 1114 (step S1515). Specifically, for example, the execution unit 315 outputs the acquired image, the skeleton detection result, the object detection result, a processing command to the edge 130 that performs the subsequent processing, and a start command to the edge 130 that performs the subsequent processing to the sharing unit 313, and returns to the process of step S1511.
[0194] In step S1516, the execution unit 322 of the worker 132a outputs an end signal indicating that the image acquisition is the last, to the sharing unit 313. This ends the processing of the execution unit 322 of the worker 132a. Details of the Pub process (step S1503) will be described later with reference to FIG.
[0195] Next, the process performed by the execution unit 322 of the worker 132b will be described with reference to a flowchart 1520.
[0196] The execution unit 322 of the worker 132b identifies conversion integration function summary information 903 in which the host name for the Edge key defined by the edge specification in the conversion configuration information 950 matches the host name "worker 132b" of the edge 130 where the execution unit 322 is located. Then, the execution unit 322 of the worker 132b extracts, from the function sets held in the registry 302, the function set 1210 that realizes the configurations 932, 507 defined by "cprocess" in the identified conversion integration function summary information 903.
[0197] Specifically, for example, the execution unit 322 of worker 132b extracts Sub class 1211 as the entity of the function (Sub702) that realizes configuration 932, extracts result drawing class 1212 as the entity of the function (result drawing 467) that realizes configuration information 507, and extracts object detection class 1212 as the entity of the function (object detection 465) that realizes configuration information 505, and instantiates them in the storage unit 321 of worker 132b.
[0198] The execution unit 322 of the worker 132b executes the Sub process by the Sub class 1211 (step S1521). Specifically, for example, the execution unit 322 of the worker 132b receives an event signal from the sharing unit 313 and determines whether the received event signal is a start command or an end signal. If it is a start signal, the execution unit 322 of the worker 132b obtains the corresponding processing command and image, and proceeds to step S1513 (step S1521).
[0199] If the received event signal is an end signal (step S1522: Yes), the process proceeds to step S1525. Details of the Sub process (step S1521) will be described later with reference to FIG.
[0200] The execution unit 322 of the worker 132b obtains the person detection result, skeleton detection result, and object detection result for the obtained image from the sharing unit 313, superimposes and draws each result on the obtained image (step S1523), and returns to step S1521.
[0201] In step S1525, the execution unit 322 of the worker 132b outputs an end signal indicating that the image acquisition is the last, to the shared unit 313. This ends the processing of the execution unit 322 in the worker 132b.
[0202] <Figure 16 Pub process (steps S1503, S1515)> 16 is a flowchart showing a detailed example of a processing procedure of the Pub process (steps S1503 and S1515) according to the first embodiment. In the Pub process (steps S1503 and S1515), the execution units 315 and 322 register the results of the processes executed in each edge 130 in the management database 732 in the shared unit 313 (step S1601), store the acquired images in the shared storage 731 in the shared unit 313 (step S1602), and output a start command to the edge 130 that performs the subsequent process as an event signal to the message broker 733 in the shared unit 313 (step S1603). Details of the management database 732 will be described with reference to FIG. 18.
[0203] <Figure 17 Sub-processing (Steps S1511, S1521)> 17 is a flowchart showing a detailed example of the processing procedure of the Sub processing (steps S1511, S1521) according to the first embodiment. In the Sub processing, the execution unit 322 receives an event signal (a start command or an end signal) from a message broker in the shared unit 313 (step S1611). It is desirable to receive a message from the message broker in a push format according to the output of a message to the message broker performed in the Pub processing (steps S1503, S1515), but a polling format in which the Sub processing side accesses the message broker at regular intervals to search for messages may also be used, and the method of receiving a message from the message broker is not limited.
[0204] The execution unit 322 determines whether the event signal received from the message broker is an end signal (step S1612). If the event signal is an end signal (step S1612: Yes), the execution unit 322 ends the Sub process, and if the event signal is not an end signal (step S1612: No), the execution unit 322 proceeds to the process of step S1613.
[0205] The execution unit 322 searches for the relevant information from the management database in the shared unit 313 and obtains it as details of the next processing to be performed (step S1613), and obtains the image to be processed described in the obtained details of the processing from the shared storage in the shared unit 313 (step S1614).
[0206] <Figure 18 Example of data structure of management database of shared part 313> 18 is a diagram illustrating an example of the structure of data registered in the management database 732 in the shared unit 313 according to the first embodiment. The management database 732 has "Image" and "Inference" as a table 1801 in which a key 1802 is a field and a value 1803 is a field value.
[0207] "Image" has id, pc_name, frame_no, and file_name as keys 1802. id is unique identification information for each acquired image. pc_name is the name of the edge 130 from which the image was acquired. frame_no is a sequential number from the first frame when the acquired image is a component of a series of moving images in the time direction. file_name is the file name when the acquired image is saved in the shared storage of the shared section 313.
[0208] When registering image data in management database 732, the ID should be a value that does not overlap with any ID already registered in management database 732. The ID may be set using a function of management database 732 or may be set within the Pub process at the time of registration; there are no limitations on the method of setting the ID.
[0209] "Inference" holds id, image_id, ReqDev, inf_condition, and data as keys 1802. id is unique identification information for each result of processing at each edge 130. image_id is unique identification information for each image that was the subject of processing registered in "Image". ReqDev is the host name of the subsequent edge 130 when continuing processing at the subsequent edge 130. inf_condition is data indicating whether the processing has been completed. data indicates the processing result at each edge 130.
[0210] Note that "Image" and "Inference" each have an id, but the id is a unique value held by each table 1801 and indicates a different value. On the other hand, the "Image" id and the "Inference" image_id are related information, and if you want to check the information of the image that was processed for the processing results registered in "Inference," you can obtain information about the image that was processed by searching for the "Image" id with the "Inference" image_id. For this reason, it is expected that there may be multiple "Inference" processing results for an image with a given "Image" id.
[0211] <Figure 19 Example of timing chart when the system is running> FIG. 19 is an execution timing chart of each edge 130 when the design unit 310 according to the first embodiment executes the system to be designed. The execution unit 315 of the master 131 repeatedly executes camera input 461 → person detection 462 → Pub 701 until an end signal is received, the execution unit 322 of the worker 132a repeatedly executes Sub 702 → skeleton detection 464 → object detection 465 → Pub 703 until an end signal is received, and the execution unit 322 of the worker 132b repeatedly executes Sub 704 → result drawing 467 until an end signal is received. In FIG. 19, a branch number is added to the end of the code of each process. The branch number indicates the frame number of the image input by the camera input 461 in ascending order. When the timing of the process is not distinguished by the branch number, the branch number is omitted.
[0212] (Master 131) The execution unit 315 of the master 131 repeatedly executes camera input 461→person detection 462→Pub 701. In Pub 701, the execution unit 315 of the master 131 registers ImageKey data 1971-1973 in the ImageKey table 1960 of the management database 732 of the shared unit 313 (step S1602).
[0213] That is, the execution unit 315 of the master 131 registers the image obtained by the camera input 461 in the filename of the ImageKey table 1960 by Pub 701. Specifically, for example, in the case of Pub 701-1, M1.jpg is registered in the ImageKey data 1971, in the case of Pub 701-2, M2.jpg is registered in the ImageKey data 1972, and in the case of Pub 701-3, M3.jpg is registered in the ImageKey data 1973.
[0214] In Pub 701, the execution unit 315 of the master 131 registers the InferenceKey data 1981 to 1983 in the InferenceKey table 1962 of the management database 732 of the shared unit 313. Specifically, for example, for Pub 701-1, the InferenceKey data 1981 is registered, for Pub 701-2, the InferenceKey data 1982 is registered, and for Pub 701-3, the InferenceKey data 1983 is registered.
[0215] More specifically, for example, the execution unit 315 of the master 131 assigns a unique ID to each of the InferenceKey data 1981-1983, associates the image_id with the ID of the ImageKey data 1971-1973, sets the worker 132a to ReqDev (request destination device) by referring to configuration 911, and registers the results of person detection 462, "person 1," "person 2," and "person 3," in data, respectively.
[0216] However, the value of inf_condition of the InferenceKey data 1981 to 1983 at the end of Pub701-1 is "req," which indicates that a processing request is being issued to the worker 132a.
[0217] In addition, the data value of InferenceKey data 1981 at the end of Pub701-1 is registered as “Person 1”, which is the result of person detection 462-1. However, since skeleton detection 464-1 and object detection 465-1 have not been performed by worker 132a at this point, “Skeleton 1”, which is the result of skeleton detection 464-1, and “Object 1”, which is the result of object detection 465-1, have not been registered.
[0218] In addition, the data value of InferenceKey data 1981 at the end of Pub701-2 is registered as “Person 2”, which is the result of person detection 462-2. However, at this point, skeleton detection 464-2 and object detection 465-2 have not been performed by worker 132a, so the results of skeleton detection 464-2 and object detection 465-2 have not been registered.
[0219] In addition, the data value of InferenceKey data 1981 at the end of Pub701-3 is registered as “Person 3”, which is the result of person detection 462-3. However, at this point, skeleton detection 464-3 and object detection 465-3 have not been performed by worker 132a, so the results of skeleton detection 464-3 and object detection 465-3 have not been registered.
[0220] The same applies to Pub701-4 and subsequent processes unless an end signal is received.
[0221] (Worker 132a) Sub 702-1 starts execution at approximately the same time as camera input 461-1. In Sub 702-1, the execution unit 322 of worker 132a receives a start command from the message broker 733 (steps S1611 and S1612) and executes a search using the value of worker 132a in ReqDev (request destination device) of the InferenceKey table 1962 of the management database 732 (step S1613).
[0222] At the time of execution of Sub702-1, InferenceKey data 1981 is registered in the InferenceKey table 1962, and the value of inf_condition is req. Therefore, the execution unit 322 of the worker 132a obtains "Person 1", which is the value of data, from the InferenceKey data 1981. Note that at the time of execution of Sub702-1, "Skeleton 1" and "Object 1" have not yet been registered in the InferenceKey data 1981, and therefore are not obtained.
[0223] Also, in Sub702-1, the execution unit 322 of the worker 132a identifies the ImageKey data 1971 with an id that matches the image_id "1" of the corresponding InferenceKey data 1981, and retrieves the image to be processed, "M1.jpg", identified by its filename, from the shared storage 731 (step S1614).
[0224] After Sub702-1, the execution unit 322 of the worker 132a executes skeleton detection 464-1 and object detection 465-1 for the processing target image "M1.jpg".
[0225] In Pub703-1, the execution unit 322 of the worker 132a registers "skeleton 1" which is the result of skeleton detection 464-1 and "object 1" which is the result of object detection 465-1 in data of the InferenceKey data 1981 (step S1601). Also, in Pub703-1, the execution unit 322 of the worker 132a outputs an activation command for the edge 130 (in this example, the worker 132b) which performs the subsequent processing to the sharing unit 313 (step S1603).
[0226] The same applies to Sub702-2 and onwards unless an end signal is received.
[0227] (Worker 132b) Sub 704-1 starts execution at approximately the same time as Sub 702-2. In Sub 704-1, worker 132b receives a start command from message broker 733 (steps S1611 and S1612) and executes a search using the value of worker 132b in ReqDev of InferenceKey table 1962 of management database 732 (step S1613).
[0228] At the time of execution of Sub704-1, Pub701-1 and 701-2 of the master 131 have been executed. Therefore, InferenceKey data 1981 and 1982 are registered in the InferenceKey table 1962, and the inf_condition value is req. Also, at the time of execution of Sub704-1, Pub703-1 of the worker 132a has been executed, so "Skeleton 1" and "Object 1" have also been registered in the InferenceKey data 1981.
[0229] Therefore, the execution unit 322 of the worker 132b obtains the data values “Person 1”, “Skeleton 1”, and “Object 1” from the InferenceKey data 1981, and obtains the data value “Person 2” from the InferenceKey data 1982.
[0230] Also, in Sub704-1, the execution unit 322 of worker 132b identifies ImageKey data 1971, 1972 with ids that match the image_ids "1" and "2" of the corresponding InferenceKey data 1981, 1982, and retrieves the images to be processed, "M1.jpg" and "M2.jpg", identified by their filenames, from the shared storage 731 (step S1614).
[0231] After Sub704-1, in result drawing 467-1, the execution unit 322 of worker 132b draws the person detection result "Person 1", the skeleton detection result "Skeleton 1", and the object detection result "Object 1" by superimposing them on the image to be processed "M1.jpg", and draws the person detection result "Person 2" by superimposing it on the image to be processed "M1.jpg".
[0232] The same applies to Sub704-2 and onwards unless an end signal is received.
[0233] The ImageKey table 1960 of the management database 732 at time T will be described. Since the camera input 461 has been executed three times by time T, ImageKey table 1961 has registered ImageKey data 1971-1973 relating to three images, "M1.jpg", "M2.jpg" and "M3.jpg".
[0234] In the master 131, Pub 701 has been completed three times by time T, and Inference Key data 1981 is registered in Pub 701-1, Inference Key data 1982 in Pub 701-2, and Inference Key data 1983 in Pub 701-3.
[0235] Then, in worker 132a, Pub703 has been completed once by time T, and InferenceKey data 1984 is registered in Sub704-1. However, the series of processes of worker 132a (Sub702-1 of the first frame, skeleton detection 464-1, object detection 465-1, Pub703-1) and the series of processes of worker 132b (Sub704-1 of the first frame, result drawing 467-1) have both been completed once.
[0236] Therefore, among the registered commands, inf_condition of InferenceKey data 1981 and inf_condition of InferenceKey data 1984 are each changed to "fin" indicating completion of processing. The operation of changing inf_condition from "req" to "fin" may be executed when a series of processes is completed, or may be executed when a target image is acquired in each Sub.
[0237] The time required to process an arbitrary image varies depending on the processing assigned to each edge 130. For example, in this embodiment, the worker 132b has the smallest amount of processing and the shortest processing time, followed by the master 131, which has the next smallest amount of processing, and finally the worker 132a, which has the largest amount of processing and the longest processing time.
[0238] For this reason, as shown at time T, the inf_condition of the InferenceKey data to be registered in the management database 732 is registered as “req”, and the number of InferenceKey data registered as unprocessed data related to worker 132a increases over time.
[0239] In this way, unprocessed data accumulates for each edge 130 depending on the allocated processing volume, so when each edge 130 receives a start command from the message broker 733, it searches for the corresponding edge 130 in ReqDev of the InferenceKey table 1962 of the management database 732.
[0240] Then, among the matching InferenceKey data group, if there are multiple matching InferenceKey data among the InferenceKey data whose inf_condition value is req, each edge 130 may process the data with the most recent acquisition time or the data with the largest ID, or conversely, the data with the oldest acquisition time or the data with the smallest ID.
[0241] When the InferenceKey data with the most recent acquisition time or the InferenceKey data with the largest ID is processed, data processing is performed in a LIFO (Last in First Out) format. Image processing of an edge 130 with a large amount of processing becomes temporarily intermittent, but the processing delay between edges 130 for images processed even by edges 130 with a large amount of processing is improved.
[0242] Conversely, when processing the data with the oldest acquisition time or the smallest ID, the data processing is in the form of FIFO (First in First out). In this case, the processing of each edge 130 is executed in the order in which the images were acquired.
[0243] In an edge 130 with a large amount of processing, the number of InferenceKey data registered as "req" and unprocessed data may increase. In such a case, when the number of unprocessed data reaches or exceeds a predetermined number, the first edge 130 that acquires an image may temporarily suspend processing. This makes it possible to suppress the number of unprocessed data.
[0244] In this way, according to the first embodiment, a system consisting of a plurality of edges 130 is designed using a graphical user interface including the edge specification 441, configuration information 531 is generated from the system to be designed, conversion configuration information 950 is generated using the edge specification 441 and the generated configuration information 531, a group of functions is deployed for each edge 130 according to the conversion configuration information 950, and the system is executed, thereby making it possible to immediately execute the system from the system design platform provided by the graphical user interface. EXAMPLES
[0245] The second embodiment will be described with a focus on differences from the first embodiment. The same reference numerals are used for the same parts as the first embodiment, and the description thereof will be omitted. In the second embodiment, a detailed processing method in the case where the shared part 313 includes the processing code 2001 will be described.
[0246] Fig. 20 is a block diagram illustrating an example of a functional configuration of the design execution system 100 according to the second embodiment. Fig. 20 illustrates only the configuration related to the shared unit 313.
[0247] The management unit 312 outputs an execution command for the processing corresponding to the specified node to the execution units 315, 322 in accordance with the conversion configuration information 950, and also outputs a start command, the conversion configuration information 950, and a processing code 2001 to the sharing unit 313 to start the data sharing function between the edges 130.
[0248] The shared unit 313 is started according to a start command from the management unit 312 , and holds the conversion configuration information 950 and the processing code 2001 output from the management unit 312 .
[0249] <Master 131> The holding unit 314 deploys a specified set of functions from among the set of functions held in the registry 302 under the control of the execution unit 315. At this time, the specified set of functions to be deployed includes only the library group for executing the processing code 2001, and does not include the processing code 2001 itself.
[0250] The execution unit 315 deploys, from among the function groups held in the registry 302, a function group designated in the system information 490 described in the conversion configuration information 950 held in the shared unit 313 to the holding unit 314. Then, after the designated function group has been deployed to the holding unit 314, the execution unit 315 instantiates the system information 490 described in the conversion configuration information 950 held in the shared unit 313 for the corresponding functions in the designated function group in accordance with the processing code 2001 in accordance with a start command from the management unit 312, and executes the system under design.
[0251] <Worker 132> Next, a description will be given of an example of the functional configuration of the worker 132. The storage unit 321 deploys a specified set of functions from among the set of functions stored in the registry 302 under the control of the execution unit 322. At this time, the specified set of functions to be deployed includes only the library group for executing the processing code 2001, and does not include the processing code 2001 itself.
[0252] The execution unit 322 of the worker 132 deploys, from among the function groups held in the registry 302, a specified function group in the system information 490 described in the conversion configuration information 950 held in the shared unit 313 to the holding unit 321. Then, after the specified function group has been deployed to the holding unit 321, the execution unit 322 instantiates the system information 490 described in the conversion configuration information 950 held in the shared unit 313 in accordance with the start-up command from the management unit 312, for the corresponding functions in the specified function group, in accordance with the processing code 2001, and executes the system under design.
[0253] In this way, according to the second embodiment, the processing code 2001 is stored in the shared unit 313, so that the processing code common to each edge 130 can be managed in a unified manner. This makes it possible to obtain the design execution system 100 that can reduce the storage capacity of the processing code 2001 and improve the maintainability of the processing code, such as correction and update. EXAMPLES
[0254] The third embodiment will be described with a focus on the differences from the first and second embodiments. The same reference numerals are used to designate the same parts as the first and second embodiments, and the description thereof will be omitted.
[0255] 21 is a block diagram showing a functional configuration example of the design execution system 100 according to the third embodiment. In the third embodiment, the execution unit 315 is deleted from the master 131. As a result, the function of the master 131 is specialized only to the management unit 312, and the worker 132 executes the process described in the conversion configuration information 950. In addition, by newly adding an interrupt unit 2101 to the worker 132, it becomes possible to end the execution at any timing other than the end signal indicating that the image acquisition by the camera input 461 is the last.
[0256] The interrupt unit 2101 outputs a stop signal, which is a signal for stopping the system under design executed by the execution unit 322, to the message broker 733 in the shared unit 313. The timing at which the interrupt unit 2101 issues the stop signal may be according to a stop request from a user or may be when a predetermined time has elapsed, and there is no limitation on the timing at which the interrupt unit 2101 issues the stop signal.
[0257] The message broker 733 in the shared unit 313 outputs the stop signal from the interrupt unit 2101 to the management unit 312 .
[0258] The management unit 312 receives the stop signal from the message broker 733, and outputs the stop signal to the execution unit 322 that output the execution command in accordance with the conversion configuration information 950. The execution unit 322 stops the system under design that it has executed in accordance with the received stop signal.
[0259] In this way, according to the third embodiment, even if there is unprocessed data for the processing of each edge 130, the processing can be terminated midway. Note that, although the execution unit 315 is deleted from the master 131 in the third embodiment, the master 131 may include the holding unit 314, the execution unit 315, the control unit 316, and the processing device 317.
[0260] As described above, according to the design execution device of the above-mentioned Examples 1 to 3, in a distributed system consisting of a plurality of edges 130, the function of each edge 130 can be changed on a processing unit basis, the system to be designed can be designed using a graphical user interface, the system can be executed from the design platform, and after the system design, the system can be executed on the execution platform alone.
[0261] Moreover, the design execution system 100 according to the above-mentioned first to third embodiments can also be configured as follows (1) to (13).
[0262] (1) A design execution system 100 that executes a system to be designed using a group of edges (master 131, worker 132) includes a design unit 310 and a generation unit 331. Using a group of nodes each including summary information that identifies a process that does not have the substance of a process that realizes a function, the design unit 310 generates execution sequence data (system information 490) in which a first edge designation node that designates a first edge (e.g., master 131) of the group of edges, a first node string indicating a series of first processes (e.g., camera input 461, human detection 462) handled by the first edge of the group of nodes, a second edge designation node (e.g., edge designation 463) that designates a second edge (e.g., worker 132a) of the group of edges, and a second node string indicating a series of second processes (skeleton detection 464, object detection 465) handled by the second edge of the group of nodes are connected in this order.
[0263] The generation unit 331 generates configuration information (conversion configuration information 950) including a first summary information group (conversion integration function summary information 901) in which the first edge sequentially inherits the summary information of each of the first node series by executing the series of first processes, and a second summary information group (conversion integration function summary information 902) in which the second edge sequentially inherits the summary information of each of the second node series by executing the series of second processes, in accordance with the execution order data generated by the design unit 310.
[0264] This makes it possible to facilitate the design of an execution sequence across a plurality of edges, thereby improving the convenience of design and execution in a system under design.
[0265] (2) The design execution system 100 described above in (1) has a conversion unit 318 that executes a first conversion that converts the execution order data and a second conversion that converts the configuration information in accordance with the execution order data converted by the first conversion, and a management unit 312 that manages the edge group.
[0266] In the first transformation, a sending node (Pub701) including summary information identifying a sending process (Pub) that sends data from the process indicated by the first end node to a sharing unit 313 accessible to the edge group is inserted between the first end node of the first node string and the second edge designation node, and a receiving node (Sub702) including summary information identifying a receiving process (Sub) that receives the data from the sharing unit 313 is inserted between the second edge designation node and the second top node of the second node string, thereby transforming the execution order data.
[0267] In the second conversion, in accordance with the execution order data after the first conversion, converted configuration information (950) is generated which includes a converted first summary information group in which summary information identifying the sending process (Pub) is added to the end of the first summary information group, and a converted second summary information group in which summary information identifying the receiving process (Sub) is added between the summary information of the second edge specifying node and the second head node of the second summary information group.
[0268] The management unit 312 instructs the first edge to execute the series of first processes and the series of transmission processes specified in the converted first summary information group (901), and instructs the second edge to execute the receiving process and the series of second processes specified in the converted second summary information group (902).
[0269] This makes it possible to define data communication between edges via the shared part 313 in an execution order spanning multiple edges.
[0270] (3) In the design execution system 100 of (2) above, when the first top node of the first node string is the top node of the node group (e.g., camera input 461), the design unit 310 generates execution sequence data in which the first edge designation node does not exist. When the design unit 310 generates execution sequence data in which the first edge designation node does not exist, the generation unit 311 generates a first summary information group (601) in which the first edge designation node does not exist, and in the second conversion, the conversion unit 318 adds summary information (811) of the first edge designation node to the top of the first summary information group in which the first edge designation node does not exist in accordance with the execution order data after the first conversion.
[0271] This makes it possible to automate edge designation.
[0272] (4) In the design execution system 100 of (2) above, each edge of the edge group has a holding unit 314, 321 capable of holding an entity of the function, and an execution unit 315, 322 capable of materializing the function and executing the process as a part of the system under design. The execution unit 315 of the first edge materializes the series of first processes and the transmission processes corresponding to the converted first summary information group, holds them in the holding unit 314 of the first edge, and executes the series of first processes and the transmission process. The execution unit 322 of the second edge materializes the reception process and the series of second processes corresponding to the converted second summary information group, holds them in the holding unit 321 of the second edge, and executes the reception process and the series of second processes.
[0273] This allows the design execution system 100 to execute distributed processing at each edge according to the execution order.
[0274] (5) In the design execution system 100 described above in (4), the shared unit 313 has multiple areas (shared storage 731, management database 732, message broker 733) according to the data type, and the execution unit 315 of the first edge transmits the data to a corresponding area among the multiple areas based on the data type by the transmission process.
[0275] This allows the first edge (master 131) to access the shared part 313 according to the data type.
[0276] (6) In the design execution system 100 of (4) above, the first edge has the design unit 310, the generation unit 311, the conversion unit 318, the management unit 312, and the sharing unit 313, and the execution unit 315 of the first edge deploys a first group of functions among a group of functions to the storage unit 314 of the first edge, materializes the series of first processes that realize the deployed first group of functions and stores it in the storage unit 314 of the first edge, and executes the series of first processes.
[0277] As a result, a first function group corresponding to a series of first processes is deployed in the storage unit 314.
[0278] (7) In the design execution system 100 of (4) above, the execution unit 322 of the second edge deploys a second group of functions among the group of functions to the storage unit 321 of the second edge, instantiates the series of second processes that realize the deployed second group of functions, stores it in the storage unit 321 of the second edge, and executes the series of second processes.
[0279] As a result, a second function group corresponding to a series of second processes is deployed in the storage unit 321.
[0280] (8) In the design execution system 100 of (4) above, the first edge is an edge that does not include the design unit 310 , the generation unit 311 , the conversion unit 318 , the management unit 312 , and the sharing unit 313 .
[0281] This allows Pub703 to be set in worker 132a.
[0282] (9) In the design execution system 100 described above in (8), the sharing unit 313 has multiple areas (shared storage 731, management database 732, message broker 733) according to the data type, and the execution unit 315 of the first edge transmits the data to a corresponding area among the multiple areas based on the data type by the transmission process.
[0283] This allows the first edge (worker 132a) to access the shared part 313 according to the data type.
[0284] (10) In the design execution system 100 described above in (2), the shared unit 313 stores a processing code 2001 for executing the processing using program parts (e.g., a library), and the execution units 315, 322 instantiate the processing using program parts necessary for executing the processing based on the processing code 2001.
[0285] As a result, only program parts that can be incorporated into the processing code 2001 and executed, such as libraries, are containerized, and each edge 130 can share the processing code 2001 in the shared unit 313. This improves maintainability (collective correction of the processing code 2001) and reduces storage capacity.
[0286] (11) In the design execution system 100 of (4) above, a node (worker 132) among the edge group that does not have the design unit 310, the generation unit 311, the conversion unit 318, the management unit 312, and the sharing unit 313 has an interrupt unit 2101 that outputs a stop signal to the sharing unit 313 to stop execution of the process, and when the stop signal is output from the interrupt unit 2101, the management unit 312 controls the execution unit 322 that is executing the process to stop execution.
[0287] This allows the processing to be terminated midway even if there is unprocessed data for each edge.
[0288] (12) In the design execution system 100 described above in (6), the second edge designation node (e.g., edge designation 463) designates a third edge (e.g., worker 132c) different from the second edge (e.g., worker 132a), and when the management unit 315 of the first edge (master 131) detects an abnormality in any of the series of second processes (skeleton detection 464, object detection 465) handled by the second edge (e.g., worker 132a), the execution unit 315 of the first edge (master 131) deploys a second group of functions among the group of functions that are realized by the series of second processes (skeleton detection 464, object detection 465) to the third edge (e.g., worker 132c).
[0289] (13) In a design execution method for executing a design object using a group of edges, a first edge among the group of edges executes a series of first processes based on execution order data that specifies that the first edge is responsible for executing a series of first processes in a group of processes having a specified execution order, and a second edge among the group of edges is responsible for executing a series of second processes in the group of processes that follow the series of first processes, and stores a group of first processing results of the series of first processes in a shared section accessible by the group of edges, and the second edge sequentially retrieves, from the shared section, unselected first processing results from the group of first processing results stored in the shared section based on the execution order data, and executes the series of second processes.
[0290] This makes it possible to realize data linkage between edges via the sharing unit 313. In this case, the second edge may sequentially acquire the first processing results from the first processing result group starting from the oldest from the sharing unit 313 based on the execution order data and execute the series of second processes, or may sequentially acquire the first processing results from the first processing result group starting from the latest from the sharing unit 313 and execute the series of second processes.
[0291] The present invention is not limited to the above-described embodiments, and includes various modifications and equivalent configurations within the spirit of the appended claims. For example, the above-described embodiments have been described in detail to clearly explain the present invention, and the present invention is not necessarily limited to those having all of the configurations described. Also, a part of the configuration of one embodiment may be replaced with a configuration of another embodiment. Also, a configuration of another embodiment may be added to a configuration of one embodiment. Also, a part of the configuration of each embodiment may be added, deleted, or replaced with another configuration.
[0292] In addition, each of the configurations, functions, processing units, processing means, etc. described above may be realized in hardware, for example by designing some or all of them as an integrated circuit, or may be realized in software by processor 201 interpreting and executing a program that realizes each function.
[0293] Information such as programs, tables, files, etc. that realize each function can be stored in a storage device such as a memory, a hard disk, or an SSD (Solid State Drive), or in a recording medium such as an IC (Integrated Circuit) card, an SD card, or a DVD (Digital Versatile Disc).
[0294] In addition, the control lines and information lines shown are those considered necessary for the explanation, and do not necessarily show all the control lines and information lines necessary for implementation. In reality, it can be considered that almost all components are connected to each other. [Explanation of symbols]
[0295] 100 Design Execution System 110 Server 120 Network 130 Edge 131 Master 132 Worker 300 Functionality Overview Information 301 Function Group Creation Department 302 Registry 310 Design Department 311 Generation part 312 Management Department 313 Common area 314,321 Holding part 315,322 Executive Department 316,323 Control section 317 Processing Devices 318 Conversion Unit 324 Processing Device 331 Generation part 731 Shared Storage 732 Management Database 733 Message Broker 901~903 Conversion Integration Function Overview Information 2001 Processing Code 2101 Interruption
Claims
1. A design execution system for executing a design object by an edge group, a design unit that uses a node group each including summary information for identifying a process that does not actually realize a function to generate execution sequence data in which a first edge designation node that designates a first edge in the edge group, a first node sequence that indicates a series of first processes that the first edge in the node group handles, a second edge designation node that designates a second edge in the edge group, and a second node sequence that indicates a series of second processes that the second edge in the node group handles are connected in this order; a generation unit that generates configuration information including: a first summary information group in which the first edge sequentially inherits the summary information of each of the first node series by executing the series of first processes according to execution order data generated by the design unit; and a second summary information group in which the second edge sequentially inherits the summary information of each of the second node series by executing the series of second processes; A design execution system comprising:
2. 2. The design execution system according to claim 1, a conversion unit that executes a first conversion to convert the execution order data and a second conversion to convert the configuration information in accordance with the execution order data after the first conversion; a management unit for managing the edge group, The conversion unit is the first conversion converts the execution order data by inserting, between a first end node of the first node string and the second edge designation node, a sending node including summary information identifying a sending process for sending data from the process indicated by the first end node to a shared unit accessible by the edge group, and inserting, between the second edge designation node and a second top node of the second node string, a receiving node including summary information identifying a receiving process for receiving the data from the shared unit; in the second conversion, generating converted configuration information including: a first summary information group after conversion in which summary information specifying the transmission process is added to the end of the first summary information group in accordance with the execution order data after the first conversion; and a second summary information group after conversion in which summary information specifying the reception process is added between summary information for the second edge designation node and the second top node of the second summary information group, The management unit instructing the first edge to execute the series of first processes and the transmission process specified in the converted first summary information group, and instructing the second edge to execute the reception process and the series of second processes specified in the converted second summary information group; A design execution system comprising:
3. 3. The design execution system according to claim 2, The design unit generating execution sequence data in which the first edge designation node does not exist when the first top node of the first node string is the top node of the node group; The generation unit is When execution sequence data in which the first edge designation node does not exist is generated by the design unit, a first summary information group in which the first edge designation node does not exist is generated; The conversion unit is in the second conversion, the summary information of the first edge designation node is added to the beginning of a first summary information group in which the first edge designation node does not exist, in accordance with the execution order data after the first conversion. A design execution system comprising:
4. 3. The design execution system according to claim 2, Each edge of the edge group includes a holding unit capable of holding an entity of the processing; an execution unit capable of instantiating the process and executing the process as a part of the design object; The execution unit of the first edge materializes the series of first processes and the transmission processes corresponding to the converted first summary information group, stores the series of first processes and the transmission processes in the storage unit of the first edge, and executes the series of first processes and the transmission processes; The execution unit of the second edge materializes the receiving process and the series of second processes corresponding to the converted second summary information group, stores them in the storage unit of the second edge, and executes the receiving process and the series of second processes. A design execution system comprising:
5. 5. The design execution system according to claim 4, the shared portion has a plurality of regions according to data types, The execution unit of the first edge transmits the data to a corresponding area among the plurality of areas based on a data type by the transmission process. A design execution system comprising:
6. 5. The design execution system according to claim 4, the first edge includes the design unit, the generation unit, the conversion unit, the management unit, and the sharing unit; The execution unit of the first edge deploys a first function group among the function groups to the holding unit of the first edge, instantiates the series of first processes that realize the deployed first function group, holds the series of first processes in the holding unit of the first edge, and executes the series of first processes. A design execution system comprising:
7. 5. The design execution system according to claim 4, The execution unit of the second edge deploys a second function group among the function groups to the holding unit of the second edge, instantiates the series of second processes that realize the deployed second function group, holds the series of second processes in the holding unit of the second edge, and executes the series of second processes. A design execution system comprising:
8. 5. The design execution system according to claim 4, The first edge is an edge that does not have the design unit, the generation unit, the conversion unit, the management unit, and the sharing unit. A design execution system comprising:
9. 9. The design execution system according to claim 8, the shared portion has a plurality of regions according to data types, The execution unit of the first edge outputs the data to a corresponding area among the plurality of areas based on a data type by the transmission process. A design execution system comprising:
10. 5. The design execution system according to claim 4, the shared unit stores a processing code for executing the processing using a program part; the execution unit instantiates the process using program parts necessary for executing the process based on the process code; A design execution system comprising:
11. 5. The design execution system according to claim 4, Among the group of edges, a node not including the design unit, the generation unit, the conversion unit, the management unit, and the sharing unit has an interrupt unit that outputs a stop signal to the sharing unit to stop execution of the process, the management unit controls the execution unit to stop the execution of the process when the stop signal is output from the interrupt unit; A design execution system comprising:
12. 7. The design execution system according to claim 6, the second edge designation node designates a third edge different from the second edge; When the management unit of the first edge detects an abnormality in any of the series of second processes handled by the second edge, the execution unit of the first edge deploys a second function group realized by the series of second processes among the function group to the third edge. A design execution system comprising:
13. A design execution system that executes a design object using an edge group, a design process for generating execution sequence data in which a first edge designation node designating a first edge of the group of edges, a first node sequence indicating a series of first processes to be handled by the first edge of the group of nodes, a second edge designation node designating a second edge of the group of edges, and a second node sequence indicating a series of second processes to be handled by the second edge of the group of nodes are connected in this order using a group of nodes each including summary information specifying the process but not the actual process implementing a function; a generation process for generating configuration information including a first summary information group in which the first edge sequentially inherits the summary information of each of the first node series by executing the series of first processes in accordance with execution order data generated by the design process, and a second summary information group in which the second edge sequentially inherits the summary information of each of the second node series by executing the series of second processes; A design execution method comprising:
14. A design execution method for executing a design object by using edges, comprising: A first edge of the group of edges is executes a series of first processes based on execution order data that specifies that the first edge is in charge of executing a series of first processes in a process group whose execution order is specified, and that a second edge in the edge group is in charge of executing a series of second processes in the process group that follow the series of first processes, and stores a first processing result group of the series of first processes in a shared section accessible to the edge group; The second edge is acquiring, from the shared unit, the first processing results in sequence starting from unselected first processing results among the group of first processing results stored in the shared unit based on the execution order data, and executing the series of second processing operations. A design execution method comprising:
15. 15. A design execution method according to claim 14, comprising the steps of: the second edge sequentially acquires, from the shared unit, the first processing results from the group of first processing results stored in the shared unit, starting from the oldest, based on the execution order data, and executes the series of second processes; A design execution method comprising:
16. 15. A design execution method according to claim 14, comprising the steps of: the second edge sequentially acquires, from the shared section, the first processing results from the group of first processing results stored in the shared section, starting from the most recent, based on the execution order data, and executes the series of second processes; A design execution method comprising:
Citation Information
Patent Citations
Distributed Software-Defined Industrial Systems
JP2021503639A