DISTRIBUTED BUILDING AUTOMATION CONTROLLERS
Various embodiments relate to a method, apparatus, and machine-readable storage medium including one or more of the following: identifying a chunk of computer code from a larger process to be executed as a distributed computation; creating a job request specifying the chunk of computer code and data on which the chunk of computer code is to operate; selecting a device from a plurality of devices to process the job request; transmitting the job request to the selected device; receiving a job result from the selected device; continuing the larger process based on the job result.
1 . A method for performing a distributed computation comprising:
identifying a chunk of computer code from a larger process to be executed as a distributed computation;
creating a job request specifying the chunk of computer code and data on which the chunk of computer code is to operate;
selecting a device from a plurality of devices to process the job request;
transmitting the job request to the selected device;
receiving a job result from the selected device; and
continuing the larger process based on the job result.
2 . The method of claim 1 , wherein the job request specifies the chunk of computer code with a function name known to the selected device as being associated with the chunk of computer code.
3 . The method of claim 1 , further comprising receiving a request to execute a group of jobs as a distributed computation, wherein:
the group of jobs are associated with the chunk of computer code and respective variations on the data;
creating the job request comprises creating a plurality of job requests specifying the chunk of computer code and the respective variations on the data;
selecting a device comprises selecting one or more devices from the plurality of devices to process respective ones of the plurality of job requests; and
transmitting the job request comprises transmitting the plurality of job requests to respective ones of the one or more selected devices.
4 . The method of claim 3 , wherein:
receiving a job result comprises receiving a plurality of job results that are fewer than the plurality of job requests, and
continuing the larger process based on the job result comprises determining, based on a policy for the group of jobs, that the plurality of job results are sufficient to continue the larger process.
5 . The method of claim 3 , wherein:
receiving a job result comprises receiving a plurality of job results, and
continuing the larger process based on the job result comprises:
determining, based on a policy for the group of jobs, a time limit, and
when the time limit is reached, continuing the larger process with the plurality of job results received before the time limit was reached.
6 . The method of claim 1 , wherein the data comprises a delta value describing a change to data already known to the selected device.
7 . The method of claim 6 , wherein the data already known to the selected device comprises a digital twin of a real-world system.
8 . A device capable of utilizing a distributed computation method comprising:
a communications interface;
a memory storing:
code specifying a process to be executed at least in part by the device; and
a processor configured to:
identify a chunk of the computer code to be executed as a distributed computation,
create job request specifying the chunk of computer code and data on which the chunk of computer code is to operate,
select a device from a plurality of devices to process the job request,
transmit the job request to the selected device,
receive a job result from the selected device, and
continue the process based on the job result.
9 . The device of claim 8 , wherein the job request specifies the chunk of computer code with a function name known to the selected device as being associated with the chunk of computer code.
10 . The device of claim 8 , wherein the processor is further configured to receive a request to execute a group of jobs as a distributed computation, wherein:
the group of jobs are associated with the chunk of computer code and respective variations on the data;
in creating the job request , the processor is configured to create a plurality of job requests specifying the chunk of computer code and the respective variations on the data;
in selecting a device, the processor is configured to select one or more devices from the plurality of devices to process respective ones of the plurality of job requests; and
in transmitting the job request, the processor is configured to transmit the plurality of job requests to respective ones of the one or more selected devices.
11 . The device of claim 10 , wherein:
in receiving a job result, the processor is configured to receive a plurality of job results that are fewer than the plurality of job requests, and
in continuing the process based on the job result, the processor is configured to determine, based on a policy for the group of jobs, that the plurality of job results are sufficient to continue the larger process.
12 . The device of claim 10 , wherein:
in receiving a job result, the processor is configured to receive a plurality of job results, and
in continuing the process based on the job result the processor is configured to:
determine, based on a policy for the group of jobs, a time limit, and
when the time limit is reached, continue the process with the plurality of job results received before the time limit was reached.
13 . The device of claim 8 , wherein the data comprises a delta value describing a change to data already known to the selected device.
14 . The device of claim 8 , wherein the data already known to the selected device comprises a digital twin of a real-world system.
15 . A non-transitory machine-readable storage medium encoded with instructions for performing a distributed computation comprising:
instructions for identifying a chunk of computer code from a larger process to be executed as a distributed computation;
instructions for creating a job request specifying the chunk of computer code and data on which the chunk of computer code is to operate;
instructions for selecting a device from a plurality of devices to process the job request;
instructions for transmitting the job request to the selected device;
instructions for receiving a job result from the selected device; and
instructions for continuing the larger process based on the job result.
16 . The non-transitory machine-readable storage medium of claim 15 , wherein the job request specifies the chunk of computer code with a function name known to the selected device as being associated with the chunk of computer code.
17 . The non-transitory machine-readable storage medium of claim 15 , further comprising instructions for receiving a request to execute a group of jobs as a distributed computation, wherein:
the group of jobs are associated with the chunk of computer code and respective variations on the data;
the instructions for creating the job request comprise instructions for creating a plurality of job requests specifying the chunk of computer code and the respective variations on the data;
the instructions for selecting a device comprise instructions for selecting one or more devices from the plurality of devices to process respective ones of the plurality of job requests; and
the instructions for transmitting the job request comprise instructions for transmitting the plurality of job requests to respective ones of the one or more selected devices.
18 . The non-transitory machine-readable storage medium of claim 17 , wherein:
the instructions for receiving a job result comprise instructions for receiving a plurality of job results that are fewer than the plurality of job requests, and
the instructions for continuing the larger process based on the job result comprise instructions for determining, based on a policy for the group of jobs, that the plurality of job results are sufficient to continue the larger process.
19 . The non-transitory machine-readable storage medium of claim 17 , wherein:
the instructions for receiving a job result comprise instructions for receiving a plurality of job results, and
the instructions for continuing the larger process based on the job result comprise:
instructions for determining, based on a policy for the group of jobs, a time limit, and
instructions for, when the time limit is reached, continuing the larger process with the plurality of job results received before the time limit was reached.
20 . The non-transitory machine-readable storage medium of claim 15 , wherein the data comprises a delta value describing a change to a digital twin of a real-world system.