Method for distributed computing operation across connected devices

By establishing an ad-organized wireless communication connection between multiple computing devices, collecting context information and dynamically selecting computing devices, the problem of inefficient resource allocation and task execution in the prior art is solved, and more efficient resource utilization and task execution are achieved.

CN119731643APending Publication Date: 2025-03-28QUALCOMM INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380060590.4
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2022-08-30
Filing Date
2023-06-27
Publication Date
2025-03-28

AI Technical Summary

Technical Problem

The prior art is difficult to effectively manage and optimize resource allocation and task allocation between multiple computing devices, resulting in waste of resources and inefficient task execution.

Method used

By establishing an ad hoc wireless communication connection, context information of multiple computing devices is collected and based on this information, the most suitable sensor computing device and execution computing device are selected to assign computing tasks.

Benefits of technology

It realizes more efficient resource utilization and task execution efficiency, and optimizes data transmission latency and energy use by dynamically selecting computing devices.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119731643A_ABST
    Figure CN119731643A_ABST
Patent Text Reader

Abstract

Various embodiments include methods and implementation computing devices for distributing computing operations across connected wired or wireless computing devices. Various embodiments may include establishing an ad-hoc communication connection with a second computing device, where the ad-hoc communication connection is part of a network of a plurality of wired or wireless computing devices communicatively connected via a plurality of ad-hoc communication connections, receiving context information of the second wired or computing device via the ad-hoc communication connection, at least one sensor wired or wireless computing device is selected from a plurality of wired or wireless computing devices. At least one executing wired or wireless computing device is selected from the plurality of wired or wireless computing devices, a data collection portion of the work item is assigned to the sensor computing device, and an execution portion of the work item is assigned to the executing wired or wireless computing device.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Related Applications

[0002] This application claims the benefit of priority to U.S. Non-Provisional Application No. 17 / 823,095, filed on August 30, 2022; the entire contents of which are incorporated herein by reference. Background Art

[0003] Computing device users typically use multiple computing devices with wireless communication capabilities and within the scope of multiple computing devices, users use these computing devices alternately and simultaneously for various situations and usage models. In general, each computing device performs its configured tasks based on a programmed task set specific to each device. For some use cases, devices are paired with each other and work together in performing their own specific tasks. Common examples of this include a smartphone that retrieves media content from a local or remote storage device and sends a signal of the media content to connected earbuds for listening to audio. However, even in the paired case, the devices are designed to perform each use case in a fixed processing model optimized from the perspective of each device. Summary of the invention

[0004] Various aspects include methods for distributing computing operations across connected wired or wireless computing devices, and systems and devices for performing these methods. Various aspects can be executed in a processor of a first computing device, and include establishing an ad hoc wireless communication connection with a second computing device, wherein the ad hoc communication connection is part of a network (such as a wireless personal area network (WPAN) of multiple computing devices communicatively connected via multiple ad hoc communication connections), receiving context information of the second computing device via the ad hoc communication connection, selecting at least one sensor computing device from the multiple computing devices, selecting at least one execution computing device from the multiple computing devices, assigning a data collection portion of a work item to the at least one sensor computing device; and assigning an execution portion of the work item to the at least one execution computing device.

[0005] Some aspects may also include determining factors for selecting at least one computing device based on multiple context data for multiple computing devices, wherein: selecting at least one sensor computing device may include selecting at least one sensor computing device using factors determined from context data of at least one sensor computing device and context data of at least one execution computing device; and selecting at least one execution computing device may include selecting at least one execution computing device using factors determined from context data of at least one sensor computing device and context data of at least one execution computing device. In some aspects, determining factors for selecting at least one computing device based on multiple context data for multiple computing devices may include: identifying an accuracy of a result for executing a work item based on an accuracy of at least one sensor at each of at least two computing devices in the multiple computing devices, identifying a cumulative wait time for executing the work item by at least one computing device in the multiple computing devices; and identifying a cumulative energy usage for executing the work item by at least one computing device in the multiple computing devices.

[0006] In some aspects, selecting at least one sensor computing device using factors determined from contextual data of at least one sensor computing device and contextual data of at least one execution computing device may include: selecting at least one sensor computing device based on the following criteria: accuracy of results for executing a work item, cumulative wait time for executing the work item, and cumulative energy use for executing the work item; and, selecting at least one execution wireless computing device using factors determined from contextual data of the at least one sensor computing device and contextual data of the at least one execution computing device may include: selecting at least one execution computing device based on the following criteria: accuracy of results for executing a work item, cumulative wait time for executing the work item, and cumulative energy use for executing the work item. In some aspects, the criteria for accuracy of results for executing a work item, cumulative wait time for executing a work item, and cumulative energy use for executing a work item may be based on weighted values ​​for accuracy of results for executing the work item, cumulative wait time for executing the work item, and cumulative energy use for executing the work item.

[0007] In some aspects, determining factors for selecting the at least one computing device based on the plurality of contextual data of the plurality of computing devices may include: calculating at least one estimate of a data transmission latency between the at least one sensor computing device and the at least one execution wireless computing device for executing the work item; calculating at least one estimate of a processing latency of the at least one execution computing device for executing the work item; and calculating at least one estimate of a total latency for executing the work item based on at least one estimate of the data transmission latency and at least one estimate of the processing latency. Such aspects may further include selecting at least one computing device having at least one estimate of a total latency that is at most a threshold latency for executing the work item.

[0008] In some aspects, determining factors for selecting at least one computing device based on multiple contextual data for multiple computing devices may include: calculating at least one estimate of data transmission energy between at least one sensor computing device and at least one execution computing device for executing the work item; calculating at least one estimate of processing energy of at least one execution computing device for executing the work item; and calculating at least one estimate of total energy for executing the work item based on at least one estimate of data transmission energy and at least one estimate of processing energy. Such aspects may also include selecting at least one wireless computing device having at least one estimate of total energy that is at most a threshold energy for executing the work item. In such aspects, determining factors for selecting the at least one computing device based on the multiple contextual data for the multiple computing devices may include: using the at least one estimate of total energy for executing the work item to estimate a battery level of the at least one execution wireless computing device after executing the work item. Such aspects may also include selecting at least one computing device having at least one estimate of a battery level of at least one execution computing device after executing the work item, the battery level being at least a threshold battery level after executing the work item.

[0009] Some aspects may also include using sensor accuracy information from contextual data from at least one sensor computing device to identify at least one sensor of the at least one sensor computing device that has at least a threshold sensor accuracy, wherein selecting at least one sensor computing device may include selecting at least one sensor computing device that has at least one sensor that has at least the threshold sensor accuracy.

[0010] Additional aspects may include a computing device having a processor configured to perform the operations of any of the methods outlined above. Additional aspects may include a computing device having components for performing the functions of any of the methods outlined above. Additional aspects may include a non-transitory processor-readable medium having processor-executable instructions stored thereon, the processor-executable instructions configured to cause a processor of the computing device to perform any of the operations of any of the methods outlined above. BRIEF DESCRIPTION OF THE DRAWINGS

[0011] The accompanying drawings, which are incorporated herein and constitute a part of this specification, illustrate exemplary embodiments of the claims and, together with the general description given above and the detailed description given below, serve to explain features of the claims.

[0012] Figure 1 is a system block diagram illustrating an example of a communication system suitable for implementing any of the various embodiments.

[0013] Figure 2 is a component block diagram illustrating an example computing system suitable for implementing any of the various embodiments.

[0014] Figure 3 is a component block diagram illustrating an example of a communication system having wired or wireless computing devices configured to implement distributed computing operations across the wired or wireless computing devices in accordance with various embodiments.

[0015] Figure 4 is a component signaling diagram illustrating an example of a system configured to implement distributed computing operations across connected wired or wireless computing devices in accordance with various embodiments.

[0016] Figure 5 is a component block diagram illustrating an example of context information for a wired or wireless computing device configured to implement distributed computing operations across connected wired or wireless computing devices in accordance with various embodiments.

[0017] Figure 6 is a schematic block diagram illustrating an example of a set of operating parameters for performing work by a wired or wireless computing device configured to implement distributed computing operations across connected wired or wireless computing devices in accordance with various embodiments.

[0018] Figure 7 is a schematic block diagram illustrating an example of a work distribution strategy for performing work by a wired or wireless computing device configured to implement distributed computing operations across connected wired or wireless computing devices in accordance with various embodiments.

[0019] Figure 8is a process flow diagram illustrating an example of a method for distributing computing operations across connected wired or wireless computing devices in accordance with various embodiments.

[0020] Fig.9A and 9B is a process flow diagram illustrating an example of a method for selecting sensors of different wired or wireless computing devices for distributing computing operations across connected wired or wireless computing devices in accordance with various embodiments.

[0021] Fig. 10A and 10B is a process flow diagram illustrating an example of a method for estimating data transfer latency and energy for distributing computing operations across connected wired or wireless computing devices in accordance with various embodiments.

[0022] Fig.11A and 11B is a process flow diagram illustrating an example of a method for estimating processing latency and energy for distributing computing operations across connected wired or wireless computing devices in accordance with various embodiments.

[0023] Fig. 12A and 12B is a process flow diagram illustrating an example of a method for estimating battery charge for distributing computing operations across connected wired or wireless computing devices in accordance with various embodiments.

[0024] Fig.13A and 13B is a process flow diagram illustrating an example of a method for selecting at least one wired or wireless computing device for distributing computing operations across connected wired or wireless computing devices in accordance with various embodiments.

[0025] Fig.14 is a component block diagram illustrating an example wired or wireless computing device.

[0026] Fig.15 is a component block diagram illustrating an example wired or wireless computing device.

[0027] Like reference numbers and designations in the various drawings indicate like elements. DETAILED DESCRIPTION

[0028] Various aspects will be described in detail with reference to the accompanying drawings. Wherever possible, the same reference numerals will be used throughout the drawings to refer to the same or similar parts. Reference to specific examples and embodiments is for illustrative purposes and is not intended to limit the scope of the various aspects or claims. For the purpose of describing the innovative aspects of the present disclosure, the following description is directed to certain embodiments. However, one of ordinary skill in the art will readily recognize that the teachings herein can be applied in a variety of different ways.

[0029] Various embodiments provide methods for distributing computing operations across wired or wireless computing devices connected via a network, such as a wireless personal area network (WPAN), and devices and systems for implementing such methods. The wired and / or wireless computing devices may be configured to select one or more networked wired and / or wireless computing devices to which to dispatch portions of computing operations. The selection of one or more network-connected wired and / or wireless computing devices may be based on information about the operating context of the one or more network-connected wired and / or wireless computing devices, parameters for performing a portion of a computing operation, and a policy for dispatching portions of computing operations.

[0030] The term "computing device" is used herein to refer to any or all of a wireless router device, a wireless appliance, a cellular phone, a smart phone, a portable computing device, a personal or mobile multimedia player, a laptop computer, a tablet computer, a smartbook, an ultrabook, a handheld computer, a wireless email receiver, a multimedia Internet-enabled cellular phone, medical devices and equipment, a biometric sensor / device, a wearable device (including smart watches, smart clothing, smart glasses, smart wristbands, smart jewelry (such as smart rings, smart bracelets, etc.)), an entertainment device (such as a game console, a wireless game controller, a wireless speaker, wireless headphones and earbuds, music and video players, satellite radio, etc.). Internet of Things (IoT) devices that support wired or wireless networks, including smart meters / sensors, home automation hubs, smart speakers, large and small machines and appliances for home or business use, wireless communication elements within autonomous and semi-autonomous vehicles, wired and / or wireless devices fixed to or incorporated into various mobile platforms, global positioning system devices, and similar electronic devices including memory, wired and / or wireless communication components and programmable processors. Although some embodiments and examples are described with reference to wireless computing devices in a wireless network, such description is for illustrative purposes and is not intended to exclude embodiments implemented in computing devices that communicate via a wired network or via a combination of wired and wireless networks.

[0031] Computing devices can communicate via a variety of wired networks, such as Ethernet. Computing devices can communicate via a variety of wireless networks by sending and receiving radio frequency (RF) signals in a wireless personal area network (WPAN) via ad hoc connections of wireless computing devices connected to one or more WPANs using, for example, Wi-Fi (e.g., Wi-Fi Direct), Bluetooth, Bluetooth Low Energy, Wireless USB, ZigBee, Ultra Wideband, etc.

[0032] The term "system on chip" (SOC) is used herein to refer to a single integrated circuit (IC) chip containing multiple resources or processors integrated on a single substrate. A single SOC may contain circuits for digital, analog, mixed signal, and radio frequency functions. A single SOC may also include any number of general or special processors (digital signal processors, modem processors, video processors, etc.), memory blocks (such as ROM, RAM, flash memory, etc.), and resources (such as timers, voltage regulators, oscillators, etc.). The SoC may also include software for controlling the integrated resources and processors and for controlling peripheral devices.

[0033] The term "system-in-package" (SIP) may be used herein to refer to a single module or package that contains multiple resources, computing units, cores, or processors on two or more IC chips, substrates, or SoCs. For example, a SIP may include a single substrate on which multiple IC chips or semiconductor dies are stacked in a vertical configuration. Similarly, a SIP may include one or more multi-chip modules (MCMs) on which multiple ICs or semiconductor dies are packaged into a unified substrate. A SIP may also include multiple independent SOCs coupled together via high-speed communication circuits and packaged in close proximity (such as on a single motherboard or in a single wireless device). The proximity of the SOCs facilitates high-speed communication and sharing of memory and resources.

[0034] The terms "computing operation," "task," and "work" are used interchangeably herein to refer to at least a portion (including up to all) of a workload for executing a computer program by one or more wired and / or wireless computing devices. In some embodiments, a computer program may include multiple computing operations, tasks, or work items, one or more of which may be assigned to one or more wired and / or wireless computing devices for execution in various combinations, as described herein. For example, a computing operation, task, or work item for collecting sensor data may be assigned to a wired and / or wireless computing device for execution, and a computing operation, task, or work item for processing sensor data may be assigned to another wired and / or wireless computing device for execution.

[0035] Computing devices are typically configured to perform specific tasks, each task being configured based on a set of programmed tasks specific to each device. For some use cases, computing devices are paired with each other and work together via a wired or wireless communication connection while performing their own specific tasks. A common example of this scenario includes a smartphone that retrieves media content from a local or remote storage device and sends a signal of the media content to a wired or wirelessly connected earbud for listening to audio. However, even in the case of pairing, the devices are designed to perform each use case in a fixed processing model optimized from the perspective of each device. Such paired devices do not assign the processing of some tasks to a device with greater ability to complete the task.

[0036] Various embodiments include methods and data structures for allocating computing tasks between several connected wired and / or wireless computing devices so that wired and / or wireless computing devices can have greater ability to perform tasks. The wired and / or wireless computing devices may include selecting wired and / or wireless computing devices, which may be configured to assign computing tasks to one or more of the wired and / or wireless computing devices. Selecting wired and / or wireless computing devices may select one or more wired and / or wireless computing devices to provide sensor data and / or select one or more separate wired and / or wireless computing devices to perform a given computing task based on shared context information. When assigning, the wired and / or wireless computing devices may use context information (e.g., sensor accuracy, latency, energy use, battery level, memory, location, previous performance, etc.) about all wired and / or wireless computing devices. Context information may be provided by wired and / or wireless computing devices when connected to each other. The selected wired and / or wireless computing device can use the shared context information to estimate the ability of each device to perform the computing task within the performance criteria, and can select the executing wired and / or wireless computing device and assign the task execution to the selected executing wired and / or wireless computing device. The selected executing wired and / or wireless computing device can use its processing power and sensor data from the sensor wired and / or wireless computing device to perform the assigned task, and then provide the result of the task to an appropriate one of the wired and / or wireless computing devices. Since any wired and / or wireless computing device can perform the role of the selected wired and / or wireless computing device, all wired and / or wireless computing devices can be configured with the method and exchange device information with all other wired and / or wireless computing devices, and the first task performed can be to select the selected wired and / or wireless computing device.

[0037] The selection of a wired and / or wireless computing device may be based on the context information of the execution wired and / or wireless computing device and the sensor wired and / or wireless computing device to estimate the ability of the execution wired and / or wireless computing device to meet the standard for performing the task using data from the sensor wired and / or wireless computing device. The selection of a wired and / or wireless computing device may be based on the estimated ability of the execution wired and / or wireless computing device to meet the standard for performing the task to select the execution wired and / or wireless computing device for assigning the task. Estimating the ability of the execution wired and / or wireless computing device to perform the task to meet the performance standard may include determining whether the context information of the sensor wired and / or wireless computing device indicates the ability to meet the standard of sensor accuracy for the task, determining whether the context information of the execution wired and / or wireless computing device and the sensor wired and / or wireless computing device with an accurate sensor indicates the estimated ability to meet the standard of power level generated by the execution of the task, and determining whether the context information of the execution wired and / or wireless computing device and the sensor wired and / or wireless computing device with an accurate sensor indicates the estimated ability to meet the waiting time standard of the task at a level below a threshold. Selecting an execution wired and / or wireless computing device for performing a task may include selecting the execution wired and / or wireless computing device based on an estimated ability to meet a criterion for a power level generated by execution of the task and an estimated ability to meet a latency criterion for the task at a level below a threshold.

[0038] Various computing devices may be connected to each other via various wired or wireless connections, such as a local wired network, a peer-to-peer wireless connection, an ad hoc wired network connection, an ad hoc wireless network connection, a wireless local area network connection, etc. When computing devices are connected, such as when a new computing device is connected to a wired or wireless network connecting other computing devices, all wired and / or wireless computing devices may share with each other a data structure that provides their respective context information, including: processor information (such as processor type, processor power, processor energy consumption rate); sensor information (such as sensor type and sensor accuracy); connection information (such as data transmission rate from the sensor wired and / or wireless computing device to the executing wired and / or wireless computing device and data transmission energy consumption rate from the sensor wired and / or wireless computing device to the executing wired and / or wireless computing device), and / or battery information (such as battery charge status; location information; environmental information; workload information), etc. The wired and / or wireless computing devices (or at least selected wired and / or wireless computing devices) may store the context information received from other wired and / or wireless computing devices in local memory.

[0039] The selection of wired and / or wireless computing devices can use the shared context information stored in the memory to select a combination of a sensor wired and / or wireless computing device and an execution wired and / or wireless computing device to perform a specific task. The selection of wired and / or wireless computing devices can receive a task request from a wired and / or wireless computing device (including itself), and then select a sensor wired and / or wireless computing device that can provide the sensor data required for a given task and an execution wired and / or wireless computing device that can use the sensor data from the selected sensor wired and / or wireless computing device to perform a given task. The selection of wired and / or wireless computing devices can use the sensor type and / or sensor accuracy criteria of the task to compare with the context information of the sensor type and / or sensor accuracy of the wired and / or wireless computing device to select the sensor of the sensor wired and / or wireless computing device for selecting the sensor wired and / or wireless computing device.

[0040] The selection of wired and / or wireless computing devices may use data transmission latency and / or data transmission energy context information between the designated sensor wired and / or wireless computing devices and the execution wired and / or wireless computing devices to determine a minimum data transmission latency between each sensor wired and / or wireless computing device to each execution wired and / or wireless computing device, and a data transmission energy between each designated sensor wired and / or wireless computing device with the lowest data transmission latency and each execution wired and / or wireless computing device. The selection of wired and / or wireless computing devices may accumulate data transmission latency and data transmission energy for all selected sensor wired and / or wireless computing devices and execution wired and / or wireless computing devices with the lowest data transmission latency.

[0041] Selecting a wired and / or wireless computing device may use processing latency and / or processing energy context information of a specified processor executing the wired and / or wireless computing device to determine a minimum processing latency among all processors for each execution of the wired and / or wireless computing device and a processing energy of a fastest processor for each execution of the wired and / or wireless computing device.

[0042] The selection of a wired and / or wireless computing device can use battery level context information and a determination of the cumulative data transmission energy and processing energy of the fastest processor of each execution of the wired and / or wireless computing device to determine which execution wired and / or wireless computing device can meet the criteria for the power level generated by the execution of the task. The determination can be made using data based on a specific pairing of the execution wired and / or wireless computing device with the selected sensor wired and / or wireless computing device having the minimum data transmission latency. In some embodiments, the determination of the execution wired and / or wireless computing device can also be a determination of the sensor wired and / or wireless computing device having the minimum data transmission latency associated with the execution wired and / or wireless computing device.

[0043] The selection of a wired and / or wireless computing device can use the cumulative data transmission latency and the determination of the minimum processing latency among all processors for each execution of the wired and / or wireless computing device to determine which execution wired and / or wireless computing device can reach the latency standard of the task at a level below the threshold. The determination can be made using data based on a specific pairing of an execution wired and / or wireless computing device with a sensor wired and / or wireless computing device having the minimum data transmission latency. Therefore, determining the execution wired and / or wireless computing device can include determining the combination of the execution wired and / or wireless computing device and the sensor wired and / or wireless computing device in the available combination of the execution wired and / or wireless computing device paired with the sensor wired and / or wireless computing device. This can include comparing the latency reached by each combination of the execution wired and / or wireless computing device and the sensor wired and / or wireless computing device, and selecting the largest pre-formed combination.

[0044] Figure 1 An example of a communication system 100 suitable for implementing any of the various embodiments is shown. Figure 1 , the communication system may include any combination of at least two wired and / or wireless computing devices 102a, 102b, 102c, 102d, 102e, 102f, 102g, 102h, 102i, 102j, 102k, 102l that are communicatively connected via wired and / or wireless communication connections 104a, 104b, 104c, 104d, 104e, 104f, 104g that form a network, such as a wireless personal area network (WPAN) 106. The WPAN 106 may include a plurality of ad hoc wireless communication connections 104a-104g between pairs of individual wireless computing devices 102a-102l.

[0045] The wireless computing devices 102a-102l may be configured to form ad hoc wireless communication connections 104a-104g between each other. Any of a variety of radio frequency, wireless communication technologies (or radio access technologies) such as Wi-Fi (e.g., Wi-Fi Direct), Bluetooth, Bluetooth Low Energy, Wireless USB, ZigBee, Ultra Wideband, etc. may be used to enable ad hoc wireless communication connections 104a-104g. Each wireless computing device 102a-102l may be configured with hardware and software for implementing at least one wireless communication connection 104a-104g using at least one wireless communication technology. For example, the wireless computing devices 102a-102l may be configured with hardware and software for implementing one or more wireless communication connections 104a-104g using one wireless communication technology. For another example, the wireless computing devices 102a-102l may be configured with hardware and software for implementing at least two wireless communication connections 104a-104g using at least two wireless communication technologies. An ad hoc wireless communication connection 104a-104g between a pair of wireless computing devices 102a-102l may be enabled by the two wireless computing devices 102a-102l using compatible wireless communication technologies.

[0046] exist Figure 1 In the illustrated example communication system 100, example wireless computing devices 102a-102l may include smart appliances 102a (e.g., smart audio / video equipment, components of indoor environmental control systems, components of security systems, kitchen appliances, bathroom appliances, lighting appliances, etc.), personal computing devices 102b (e.g., laptop computers, desktop computers, game consoles, etc. and their peripherals), computer networking devices 102c (e.g., routers, access points, range extenders, etc.), smart automation devices 102d (e.g., smart speakers, automation hubs, etc.). Personal mobile communication devices 102e (e.g., smart phones, tablets, etc.), wearable devices 102f-102k (e.g., smart watches, shoes with sensors, fitness trackers, wireless headphones and earbuds, smart glasses, clothes with sensors, etc.), and connected vehicles (e.g., vehicles with wirelessly connectable infotainment systems, occupant monitoring systems, hotspots, security systems, automation systems, V2X communication systems, etc.). Figure 1In the illustrated example communication system 100, example wireless computing devices 102a-102l may be communicatively connected via ad hoc wireless communication connections 104a-104g. For ease of illustration and clarity, the ad hoc wireless communication connections 104a-104g are illustrated as being connected to the WPAN 106, rather than illustrating every possible ad hoc wireless communication connection between the paired wireless computing devices 102a-102l. For ease of illustration and clarity, the wireless computing devices 102f-102l are illustrated as having a wireless communication connection 104f in common, rather than illustrating every possible wireless communication connection for each of the wireless computing devices 102f-102l.

[0047] Figure 1 The example wireless computing devices 102a-102l and ad hoc wireless communication connections 104a-104g shown in the drawings are for illustrative purposes and are not intended to limit the scope of the claims. Figure 1 The number, type, and / or combination of example wireless computing devices 102a-102l and ad hoc wireless communication connections 104a-104g shown in FIG.

[0048] Figure 2 is a component block diagram illustrating an example computing system 200 suitable for implementing any of the various embodiments. The various embodiments may be implemented on a number of single-processor and multi-processor computer systems, including a system on a chip (SOC) or a system in a package (SIP).

[0049] refer to Figure 1 and Figure 2 The illustrated example computing system 200 (which may be a SIP in some embodiments) may be implemented in whole or in part on a wired and / or wireless computing device (e.g., Figure 1 200 is implemented in the wired and / or wireless computing devices 102a-102l in the computing system 200. The computing system 200 includes one or more SOCs 202, 204 coupled to the clock 206, a voltage regulator 208, and a wired or wireless transceiver 266, which is configured to send / receive wired or wireless communications to / from the wired and / or wireless computing devices via an antenna (not shown). In some embodiments, the first SOC 202 can be operated as a central processing unit (CPU) of a wired and / or wireless computing device, which executes instructions of a software application by performing arithmetic, logic, control, and input / output (I / O) operations specified by the instructions. In some embodiments, the second SOC 204 can operate as a dedicated processing unit. For example, the second SOC 204 can operate as a dedicated 5G processing unit responsible for managing high-capacity, high-speed (e.g., 5Gbps, etc.) and / or very high frequency short wavelength (e.g., 28GHz millimeter wave spectrum, etc.) communications.

[0050] The first SOC 202 may include a digital signal processor (DSP) 210, a communication (comm.) processor 212 (e.g., configured to implement functions for wired and / or wireless communication technologies (or radio access technologies)), a graphics processor 214, a microprocessor 216 (e.g., a central processing unit (CPU), an application processor, etc.), one or more coprocessors 218 (e.g., a vector coprocessor) connected to one or more processors, a memory 220, a custom circuit 222, system components and resources 224, an interconnect / bus module 226, one or more temperature sensors 230, a thermal management unit 232, and a thermal power envelope (TPE) component 234. The second SOC 204 may include a 5G modem processor 252, a power management unit 254, an interconnect / bus module 264, a plurality of millimeter wave transceivers 256, a memory 258, and various additional processors 260 (e.g., an application processor, a packet processor, etc.).

[0051] Each processor 210, 212, 214, 216, 218, 252, 260 may include one or more cores, and each processor / core may perform operations independently of other processors / cores. For example, the first SOC 202 may include a processor that executes a first type of operating system (e.g., FreeBSD, LINUX, OS X, etc.) and a processor that executes a second type of operating system (e.g., MICROSOFT WINDOWS10). In addition, any one or all of the processors 210, 212, 214, 216, 218, 252, 260 may be included as part of a processor cluster architecture (e.g., a synchronous processor cluster architecture, an asynchronous or heterogeneous processor cluster architecture, etc.).

[0052] The first SOC 202 and the second SOC 204 may include various system components, resources and custom circuits for managing sensor data, analog-to-digital conversion, wired and / or wireless data transmission of one or more sensors (not shown), and for performing other special operations, such as encoding and decoding data packets, and processing encoded and decoded data packets. For example, the system components and resources 224 of the first SOC 202 may include power amplifiers, voltage regulators, oscillators, phase-locked loops, peripheral bridges, data controllers, memory controllers, system controllers, access ports, timers and other similar components for supporting processors and software clients running on wired and / or wireless computing devices. System components and resources 224 and / or custom circuits 222 may also include circuits for docking with peripheral devices (such as cameras, electronic displays, wired and / or wireless communication devices, external memory chips, etc.).

[0053] The first SOC 202 and the second SOC 204 can communicate via an interconnect / bus module 250. The various processors 210, 212, 214, 216, 218 can be interconnected to one or more memory elements 220, system components and resources 224, and custom circuits 222 and thermal management units 232 via an interconnect / bus module 226. Similarly, the processor 252 can be interconnected to a power management unit 254, a mmWave transceiver 256, a memory 258, and various additional processors 260 via an interconnect / bus module 264. The interconnect / bus modules 226, 250, 264 may include reconfigurable logic gate arrays and / or implement a bus architecture (e.g., CoreConnect, AMBA, etc.). Communications may be provided by advanced interconnects such as high-performance on-chip networks (NoCs).

[0054] The first and / or second SOC 202, 204 may further include an input / output module (not shown) for communicating with resources external to the SOC, such as a clock 206 and a voltage regulator 208. The resources external to the SOC (e.g., clock 206, voltage regulator 208) may be shared by two or more of the internal SOC processors / cores.

[0055] In addition to the example SIP 200 discussed above, various embodiments may be implemented in a wide variety of computing systems that may include a single processor, multiple processors, multi-core processors, or any combination thereof. Figure 2 The example computing system 200 shown in FIG. 1 is for illustrative purposes and does not limit the scope of the claims to Figure 2 The number, kind, combination, and / or arrangement of components of the example computing system 200 shown in FIG.

[0056] Figure 3 is a diagram illustrating a computer system having wired and / or wireless computing devices 302a, 302 (eg, Figure 1 A communication system 300 (eg, a wired and / or wireless computing device 102a-102l in Figure 1 Component block diagram of an example of a communication system 100 in FIG. 1 , wherein the wired and / or wireless computing devices 302a, 302b are configured to implement distributed computing operations across connected wired and / or wireless computing devices 302a, 302b. Figures 1 to 3 , the communication system 300 may include at least two wired and / or wireless computing devices 302a, 302b. The wired and / or wireless computing devices 302a, 302b may communicate with each other via a wired and / or wireless communication network 320 (e.g., Figure 1 The self-organizing wired and / or wireless communication connections 104a-104g, WPAN 106) communicate.

[0057] The wired and / or wireless computing devices 302a, 302b may include one or more processors 306 (eg, processors 306a, 302b) coupled to electronic storage 304 and a wired and / or wireless transceiver 266. Figure 2 210, 212, 214, 216, 218, 252, 260 in ). The wired and / or wireless transceiver 266 can be configured to receive messages to be sent from the processor 306 and send such messages via an antenna (not shown) between the wired and / or wireless computing devices 302a, 302b via the wired and / or wireless communication network 322. Similarly, the wired and / or wireless transceiver 266 can be configured to receive messages sent between the wired and / or wireless computing devices 302a, 302b via the wired and / or wireless communication network 322 and pass the messages (e.g., via a modem (e.g., 252) that demodulates the messages) to the one or more processors 306.

[0058] The processor 306 may be configured by machine-readable instructions 308. The machine-readable instructions 308 may include one or more instruction modules 310, 312, 314, 316, 318. The instruction modules 310-318 may include computer program modules. The instruction modules 310-318 may include one or more of a wired and / or wireless communication module 310, a context information module 312, a factor module 314, a wired and / or wireless computing device selection module 316, a work item assignment module 318, or other instruction modules. The wired and / or wireless computing devices 302a, 302b that implement the modules 310-318 may be referred to herein as selected wired and / or wireless computing devices.

[0059] The context information module 312 may be configured to retrieve, store, and / or update context information for the wired and / or wireless computing devices 302a, 302b. For example, the context information may be retrieved from and / or stored to the electronic storage 304. As another example, the context information may be updated to reflect a change in the state of the wired and / or wireless computing devices 302a, 302b (including any of its various components), such as one or more batteries (not shown), the processor 306, the state of the electronic storage 304, the location, etc.

[0060] The factor module 314 can be configured to determine factors used in selecting at least one wired and / or wireless computing device 302a, 302b for collecting sensor data and / or implementing the work item in response to a request to perform a work item. Such factors can include results of various operations for selecting, calculating, and / or identifying information for selecting at least one wired and / or wireless computing device 302a, 302b.

[0061] For example, the factor module 314 may be configured to select one or more sensors of one or more wired and / or wireless computing devices 302a, 302b for implementing the work item. As another example, the factor module 314 may select one or more sensors based on one or more sensor types. The factor module 314 may be configured to estimate the accuracy of the sensor combination based on the accuracy of the sensors in the combination indicated in the context information of one or more wired and / or wireless computing devices 302a, 302b. This estimation of the accuracy of the sensor combination may be used as and / or used to estimate the accuracy of the result of the work item. As another example, the factor module 314 may select one or more sensors based on the accuracy of one or more sensors indicated in the context information of one or more wired and / or wireless computing devices 302a, 302b and the sensor accuracy parameter of the work item. The sensor may be any combination of sensor types. For example, multiple sensors of the same and / or different types may be selected.

[0062] As another example, the factor module 314 can be configured to estimate the latency of data transmission between at least two wired and / or wireless computing devices 302a, 302b for implementing the work item. At least one of the wired and / or wireless computing devices 302a, 302b can include the selected sensor. Calculating the latency estimate for data transmission can include using the data volume parameter of the work item. The factor module 314 can be configured to estimate the energy usage of data transmission between at least two wired and / or wireless computing devices 302a, 302b for implementing the work item. The factor module 314 can be configured to estimate the accumulation of latency and the accumulation of energy usage for data transmission between at least two wired and / or wireless computing devices 302a, 302b.

[0063] As another example, the factor module 314 can be configured to estimate a latency for processing a work item by at least one of the wired and / or wireless computing devices 302a, 302b. Calculating an estimate of latency for data transmission can include using latency parameters for the work item. The factor module 314 can be configured to estimate energy usage for processing a work item by at least one of the wired and / or wireless computing devices 302a, 302b. The factor module 314 can be configured to estimate an accumulation of latency and an accumulation of energy usage for processing a work item by at least one of the two wired and / or wireless computing devices 302a, 302b.

[0064] As another example, the factor module 314 can be configured to identify a state of at least one of the wired and / or wireless computing devices 302a, 302b. For example, the factor module 314 can identify a state of at least one of the wired and / or wireless computing devices 302a, 302b from the associated contextual information, such as a state of the processor 306, a memory (e.g., Figure 2 memory 220, 258, electronic storage device 304), battery status, connection (e.g., Figure 1 The status, location, etc. of the wired and / or wireless communication connections 104a-104g).

[0065] The wired and / or wireless computing device selection module 316 may be configured to select at least one wired and / or wireless computing device 302a, 302b for various assignments. For example, the wired and / or wireless computing device selection module 316 may be configured to select at least one wired and / or wireless computing device 302a, 302b for collecting sensor data (referred to herein as a sensor wired and / or wireless computing device) and / or implementing a work item (referred to herein as an execution wired and / or wireless computing device) in response to a request to execute a work item. As another example, the wired and / or wireless computing device selection module 316 may be configured to select at least one wired and / or wireless computing device 302a, 302b as a selected wired and / or wireless computing device to select one or more other wired and / or wireless computing devices as sensors and / or execution wired and / or wireless computing devices.

[0066] The wired and / or wireless computing device selection module 316 may select at least one wired and / or wireless computing device 302a, 302b based on the results of the factor module 314. The wired and / or wireless computing device selection module 316 may compare the results of the factor module 314 with one or more criteria. In order to select a wired and / or wireless computing device, the wired and / or wireless computing device selection module 316 may compare the results of the factor module 314 with one or more criteria of the selection strategy. In order to select a sensor and / or execution wired and / or wireless computing device, the wired and / or wireless computing device selection module 316 may compare the results of the factor module 314 with one or more criteria of the work distribution strategy. For example, the wired and / or wireless computing device selection module 316 may select at least one wired and / or wireless computing device 302a, 302b having one or more sensors with at least a threshold accuracy, which is referred to herein as a sensor wired and / or wireless computing device. The wired and / or wireless computing device selection module 316 can select at least one wired and / or wireless computing device 302a, 302b for executing the work item, which is referred to as executing the wired and / or wireless computing device in this article. For example, the wired and / or wireless computing device selection module 316 can select a combination of wired and / or wireless computing devices 302a, 302b as one or more sensor wired and / or wireless computing devices, and execute the wired and / or wireless computing device based on mathematics, algorithms, heuristics, etc., which are configured to reach the standards of the work item, such as the accuracy of the result, the accumulation of waiting time, and / or the accumulation of energy use. Such standards can be predetermined, configurable and / or dynamic. In some examples, the standards can be implemented with reference to each other, such as one or more weighted values, such as the accuracy of the result, the accumulation of waiting time, and / or the accumulation of energy use. Ratio and / or proportion. As another example, the wired and / or wireless computing device selection module 316 may select at least one wired and / or wireless computing device 302a, 302b that has at most a threshold data transmission latency with the sensor wired and / or wireless computing device and has at least a threshold latency for executing the work item and / or has at least a threshold battery level after executing the work item as the executing wired and / or wireless computing device.

[0067] The work item allocation module 318 can allocate (or dispatch) work items to the sensor wired and / or wireless computing device and / or the execution wired and / or wireless computing device. For example, the work item allocation module 318 can allocate work items to collect sensor data and send the sensor data to the execution wired and / or wireless computing device through the sensor wired and / or wireless computing device. As another example, the work item allocation module 318 can allocate work items to be executed by the execution wired and / or wireless computing device using the sensor data.

[0068] Other modules (not shown) may enable the wired and / or wireless computing devices 302a, 302b to collect sensor data and send the sensor data to an executing wired and / or wireless computing device to execute a work item using the sensor data and send the results of the work item to the wired and / or wireless computing device 302a, 302b requesting execution of the work item.

[0069] The wired and / or wireless communication module 310 may be configured to establish a wired and / or wireless communication connection (eg, Figure 1 Context information, requests to perform work items, work item assignments, sensor data, and work item results are sent and received between wired and / or wireless computing devices 302a, 302b via wired and / or wireless communication networks 320. In some embodiments, the request to perform a work item may be accompanied by work item parameters and / or work assignment policies.

[0070] Electronic storage 304 may include non-transitory storage media that electronically stores information. Electronic storage 304 may store software algorithms, information determined by processor 306, information received from wired and / or wireless computing devices 302a, 302b, or other information that enables wired and / or wireless computing devices 302a, 302b to function as described herein.

[0071] The electronic storage media of the electronic storage 304 may include one or both of a system storage provided integrally (i.e., substantially non-removable) with the wired and / or wireless computing devices 302a, 302b and / or a removable storage removably connected to the wired and / or wireless computing devices 302a, 302b via, for example, a port (e.g., a universal serial bus (USB) port, a firewire port, etc.) or a drive (e.g., a disk drive, etc.). The electronic storage 304 may include one or more of an optically readable storage medium (e.g., an optical disk, etc.), a magnetically readable storage medium (e.g., a magnetic tape, a magnetic hard drive, a floppy disk drive, etc.), a charge-based storage medium (e.g., an EEPROM, a RAM, etc.), a solid-state storage medium (e.g., a flash drive, etc.), and / or other electronically readable storage medium. The electronic storage 304 may include one or more virtual storage resources (e.g., a cloud storage device, a virtual private network, and / or other virtual storage resources).

[0072] Processor 306 may be configured to provide information processing capabilities in wired and / or wireless computing devices 302a, 302b. Thus, processor 306 may include one or more of a digital processor, an analog processor, a digital circuit designed to process information, an analog circuit designed to process information, a state machine, and / or other mechanisms for electronically processing information. Although processor 306 is shown as a single entity, this is for illustrative purposes only. In some embodiments, processor 306 may include multiple processing units and / or processor cores. The processing units may be physically located within the same device, or processor 306 may represent processing functions of multiple devices operating in coordination. Processor 306 may be configured to execute modules 310-318 and / or other modules by software; hardware; firmware; some combination of software, hardware, and / or firmware; and / or other mechanisms for configuring processing capabilities on processor 306.

[0073] As used herein, the term "module" may refer to any component or collection of components that perform the functionality attributed to the module. This may include one or more physical processors, processor-readable instructions, circuits, hardware, storage media, or any other components during the execution of processor-readable instructions.

[0074] The description of the functionality provided by the different modules 310-318 described herein is for illustrative purposes and is not intended to be limiting, as any of the modules 310-318 may provide more or less functionality than described. For example, one or more of the modules 310-318 may be eliminated, and some or all of their functionality may be provided by other modules 310-318. As another example, the processor 306 may be configured to execute one or more additional modules that may perform some or all of the functionality attributed to one of the modules 310-318.

[0075] Figure 4 FIG. 4 shows computing devices 400a, 400b, 400c (eg, Figure 1 The computing devices 102a-102l in Figure 3 A communication system (eg, Figure 1 The communication system 100, Figure 3 An example of a communication system 200 300 in FIG. Figures 1 to 4 ,exist Figure 4 In the example shown, computing devices 400a, 400b, 400c can provide different volumes in the communication system. For example, at any time, one of computing devices 400a, 400b, 400c can be a selection computing device, and the other computing devices in computing devices 400a, 400b, 400c can each be a sensor computing device and / or an execution computing device.

[0076] The computing devices 400a, 400b may establish an ad hoc communication connection (eg, Figure 1 The computing devices 400a, 400b may send and receive context information of the computing devices 400a, 400b to and from each other, respectively (404). In some embodiments, the computing devices 400a, 400c may establish an ad hoc communication connection (e.g., Figure 1 The computing devices 400a, 400c may respectively send and receive context information of the computing devices 400a, 400c to and from each other (408).

[0077] Any of a variety of wired technologies (e.g., Ethernet) and / or radio frequency, wireless communication technologies (or radio access technologies) (such as Wi-Fi (e.g., Wi-Fi Direct), Bluetooth, Bluetooth Low Energy, Wireless USB, ZigBee, Ultra Wideband, etc.) may be used to enable ad hoc communication connections. In some embodiments, computing devices 400a, 400b, 400c may send and receive contextual information of other computing devices 400a, 400b, 400c with which they have established connections. In this manner, as a WPAN (e.g., Figure 1 Computing devices 400a, 400b, 400c that are not connected via an ad hoc communication connection and that are part of a WPAN 106 in the wireless communication network may receive context information of other computing devices 400a, 400b, 400c to which the computing devices 400a, 400b, 400c are not connected via an ad hoc communication connection.

[0078] One or more of the computing devices 400a, 400b, 400c sending and receiving context information (404, 408) may be repeated one or more times at any time while maintaining the establishment of the ad hoc communication connection (402, 406). For example, one or more of the computing devices 400a, 400b, 400c may send and receive context information (404, 408) that is updated to reflect a change in the state of the computing devices 400a, 400b, 400c (including any of its various components), such as one or more batteries, processors (e.g., Figure 2 Processors 210, 212, 214, 216, 218, 252, 260, Figure 3 processor 306 in the processor 306), memory (e.g., Figure 2 Memory 220, 258, Figure 3 As another example, one or more of computing devices 400a, 400b, 400c may send and receive context information (404, 408) for use in connecting with additional computing devices.

[0079] The computing devices 400a, 400b may select from among themselves which one may be the selected computing device. In some embodiments, the computing devices 400a, 400b, 400c may select from among themselves which one may be the selected computing device. The selected computing device may be selected based on criteria for selecting the selected computing device based on contextual information of the computing devices 400a, 400b, 400c. For ease of explanation and clarity, the selection of the selected computing device may be performed based on the contextual information of the computing devices 400a, 400b, 400c. Figure 4For the remainder of the description of the illustrated example, computing device 400a will be referred to as selecting computing device 400a. However, this example does not exclude the possibility that any one of computing devices 400b, 400c may alternatively be the selecting computing device. Selecting which one of computing devices 400b, 400c may be the selecting computing device (410) may be implemented multiple times based on updates to computing devices 400a, 400b, 400c and / or new context information received by computing devices 400a, 400b, 400c.

[0080] Select computing device 400a may receive a request to execute a work item (412). Figure 4 In the example illustrated in , the request to execute the work item originates from the selected computing device 400a. In other examples, the request to execute the work item may originate from another computing device (e.g., Figure 1 Wired and / or wireless computing devices 102a-102l in Figure 3 The request for executing a work item may be accompanied by work item parameters and / or work allocation strategies.

[0081] In operation 414, the selection computing device 400a may select one or more computing devices 400b, 400c to which work is to be assigned. The selection computing device 400a may select at least one sensor computing device and at least one execution computing device. In some embodiments, the sensor computing device and the execution computing device may be the same computing device 400a. In some embodiments, the sensor computing device may be at least one of the computing devices 400b, 400c, and the execution computing device may be at least one of the computing devices 400b, 400c. For example, one of the computing devices 400b, 400c may be a sensor computing device, and the other of the computing devices 400b, 400c may be an execution computing device. As another example, one of the computing devices 400b, 400c may also be a sensor computing device or an execution computing device.

[0082] The operation 414 of selecting one or more computing devices 400b, 400c to which work is to be dispatched can be implemented multiple times for one or more work items in the work item set. The operation 414 of selecting one or more computing devices 400b, 400c to which work is to be dispatched can be implemented multiple times for one or more work items based on updates to context information received by the selected computing device 400a.

[0083] Selecting computing device 400a can send the work assignment to computing device 400b in message 416. In some embodiments, the work assignment can be used to collect sensor data and / or perform work items using the collected sensor data. In some embodiments, selecting computing device 400a can send the work assignment to computing device 400c in message 418. For example, the work assignment sent to one computing device in computing devices 400b, 400c can be used to collect sensor data and send the sensor data to another computing device in computing devices 400b, 400c, and another computing device in computing devices 400b, 400c that uses the collected sensor data to perform work items. As another example, the work assignment sent to each of computing devices 400b, 400c can include collecting sensor data, sending sensor data to another of computing devices 400b, 400c, and / or using the collected sensor data to perform any combination of work items.

[0084] Figure 5 A computing device (e.g., Figure 1 Wired and / or wireless computing devices 102a-102l in Figure 3 Wired and / or wireless computing devices 302a, 302b, Figure 4 An example of context information 500 for computing devices 400a-400c in FIG.

[0085] refer to Figures 1 to 5 , the context information 500 of the computing device may include any combination of information, such as processor information 502, sensor information 504, connection information 506, battery information 508, location information 510, memory information 512, measured performance information 514, etc. The context information 500 may be stored on the computing device, such as in a memory (e.g., Figure 2 The memory 220, 258 in Figure 3 304) in the electronic storage device, and when communicatively connected to another computing device, is sent to the other computing device.

[0086] Context information 500 may be updated by the computing device to reflect changes in the state of the computing device (including any of its various components), such as one or more batteries, processors (e.g., Figure 2 Processors 210, 212, 214, 216, 218, 252, 260, Figure 3 processor 306 in the processor 306), memory (e.g., Figure 2 Memory 220, 258, Figure 3The examples of context information 500 described herein are non-limiting and non-exhaustive. Context information 500 may include any portion (including all) of context information 500 described herein, as well as any other information of the computing device to which context information 500 relates that can be used to implement distributed computing operations across connected computing devices.

[0087] Processor information 502 may include information related to one or more processors of a computing device. For example, processor information 502 may include processor type, processing power, processing energy usage, processing workload, etc. of each processor of the computing device.

[0088] Sensor information 504 may include information related to one or more sensors of the computing device. For example, sensor information 504 may include sensor type (e.g., microphone, accelerometer, gyroscope, light sensor, infrared sensor, capacitive sensor, biometric sensor, biomedical sensor, motion sensor, thermometer, thermistor, barometer, hygrostat, pressure sensor, etc.), sensor accuracy, etc. for each sensor of the computing device.

[0089] Connection information 506 may include one or more communication connections of the computing device to another computing device (e.g., Figure 1 For example, the connection information 506 may include data transfer speeds between computing devices, data transfer energy usage between computing devices, and the like for past, current, and / or potential communication connections from a computing device to another computing device. The connection information 506 may also include wired and / or wireless communication technology capabilities (e.g., Wi-Fi (e.g., Wi-Fi Direct), Bluetooth, Bluetooth Low Energy, wired or wireless USB, ZigBee, Ultra Wideband, etc.), and data transfer speeds and / or data transfer energy usage may be associated with a particular communication technology.

[0090] Battery information 508 may include information related to one or more batteries of the computing device. For example, battery information 508 may include a battery charge level, a battery charge state, etc. of each battery of the computing device and / or an accumulated battery charge level, a battery charge state, etc. of all batteries. In some embodiments, battery information 508 may be included for computing devices that have at least one battery, and may be excluded for computing devices that do not have a battery.

[0091] The location information 510 may include information related to the location of the computing device. The location information 510 may include the orientation of the computing device, the relative position (e.g., the distance relative to another computing device, the distance relative to the user, the position relative to the user (such as in a pocket, on the wrist, in the ear, etc.), the distance relative to the location, the position relative to the object (such as on a surface, in a vehicle, connected to a charger, etc.), the orientation relative to the object, etc.). For example, the location information 510 may be relative location information (e.g., as a separation distance) that can be measured based on received signal strength, round-trip timing methods, etc. As another example, the location information 510 may include location information obtained by a receiver of a satellite and / or radio positioning system (e.g., Global Positioning System (GPS), GLONASS, Galileo, BeiDou, etc.).

[0092] Memory information 512 may include information related to the memory of the computing device. For example, memory information 512 may include memory availability (e.g., allocated memory space, amount of available memory space, etc.), memory latency, memory energy usage, etc. of each memory of the computing device.

[0093] The measured work performance information 514 may include information related to previous executions of the work item by the computing device. For example, the measured work performance information 514 may include work item identifiers (e.g., identifiers of the work item, types of the work item, identifiers of work item sets to which the work item belongs, etc.) of previous executions of the work item by the computing device individually or cumulatively, work item latency measured from previous executions (e.g., measurements of data transfer and / or processing latency for each previous execution, statistical representations of measurements of data transfer and / or processing latency for multiple previous executions, etc.), work item energy consumption measured from previous executions (e.g., measurements of data transfer and / or processing energy consumption for each previous execution, statistical representations of measurements of data transfer and / or processing energy consumption for multiple previous executions, etc.), work item result accuracy (e.g., measurements of accuracy of the results of each previous execution, statistical representations of measurements of accuracy of the results of multiple previous executions, etc.), etc. As another example, the measured work performance information 514 may include indications (e.g., computing device identifiers) of one or more other computing devices involved in executing the work item in association with other measured work performance information 514 of one or more other computing devices.

[0094] Figure 6 FIG. 1 illustrates a method for implementing distributed computing operations by a computing device (eg, Figure 1 Wired and / or wireless computing devices 102a-102l in Figure 3 Wired and / or wireless computing devices 302a, 302b, Figure 4 An example of a work item parameter set 600 for executing a work item on a computing device 400a-400c in FIG.

[0095] Reference Figures 1 to 6 , work item parameters 600 for executing a work item may include any combination of information such as wait time parameters 602, data volume parameters 604, sensor accuracy parameters 606, etc. The work item parameters 600 may be stored on a computing device, such as in a memory (e.g., Figure 2 The memory 220, 258 in Figure 3 The work item parameters 600 may be stored in an electronic storage device 304 in the memory and retrieved from the memory in response to receiving a request to execute the corresponding work item. The work item parameters 600 may be received from another computing device along with the request to execute the corresponding work item. The examples of work item parameters 600 described herein are non-limiting and non-exhaustive. The work item parameters 600 may include any portion (including all) of the work item parameters 600 described herein, as well as any other information for executing the work item to which the work item parameters 600 relate.

[0096] The wait time parameters 602 may include one or more parameters related to the wait time for executing the work item related to the work item parameters 600. For example, the wait time parameters 602 may include the wait time for executing the work item by one or more processors (e.g., Figure 2 Processors 210, 212, 214, 216, 218, 252, 260, Figure 3 The latency parameters 602 may include one or more latency measurements and / or estimates of processing a work item by a processor 306 in the processor 306. The latency parameters 602 may include one or more latency measurements and / or estimates associated with information related to one or more processors (e.g., processor type, processor power, number of processors, etc.).

[0097] The data volume parameters 604 may include one or more parameters related to the data volume used to perform the work item related to the work item parameters 600. For example, the data volume parameters 604 may include one or more data volumes to be collected by one or more sensors for performing the work item. The data volume parameters 604 may include one or more data volumes associated with information related to the one or more sensors, such as sensor type, sensor sensitivity, number of sensors, etc.

[0098] The sensor accuracy parameters 606 may include one or more parameters related to the sensor accuracy levels used to perform the work item to which the work item parameters 600 relate. For example, the sensor accuracy parameters 606 may include one or more sensor accuracy levels of one or more sensors used to perform the work item. The sensor accuracy parameters 606 may include one or more sensor accuracy levels associated with information about one or more sensors, such as sensor type, sensor sensitivity, number of sensors, etc. The sensor accuracy parameters 606 may include one or more sensor accuracy levels of a sensor combination of one or more types of sensors.

[0099] Other work item parameters 600 may include parameters that specify one or more states of a computing device for executing the work item to which the work item parameters 600 relate. For example, such states may include a particular state for executing the work item and / or a hierarchy of state ordering preferences for states for executing the work item. Such states may include a processor (e.g., Figure 2 210, 212, 214, 216, 218, 252, 260, processor 306), memory (e.g., Figure 2 Memory 220, 258, Figure 3 electronic storage device 304), the state of the battery, the connection (e.g., Figure 1 The status, location, etc. of the wired and / or wireless communication connections 104a-104g).

[0100] Figure 7 FIG. 1 shows a method for implementing a distributed computing operation by a computing device (eg, Figure 1 Wired and / or wireless computing devices 102a-102l in Figure 3 Wired and / or wireless computing devices 302a, 302b, Figure 4 An example of a work allocation strategy 700 for executing work on computing devices 400a-400c in FIG. Figures 1 to 7 , a work allocation strategy 700 for executing a work item may include any combination of information such as a wait time parameter 702, a power parameter 704, a result accuracy parameter 705, a strategy criterion 706, etc. The work allocation strategy 700 may be stored on a computing device, such as in a memory (e.g., Figure 2 The memory 220, 258 in Figure 3The work distribution strategy 700 may be received from another computing device in conjunction with the request to execute the work item. The work distribution strategy 700 may be work item agnostic and / or work item specific. The examples of the work distribution strategy 700 described herein are non-limiting and non-exhaustive. The work distribution strategy 700 may include any portion (including all) of the work distribution strategy 700 described herein and any other information for executing the work item.

[0101] Waiting time parameters 702 may include one or more parameters related to waiting time for executing a work item. For example, waiting time parameters 702 may include one or more waiting time thresholds and / or targets for processing a work item, such as a maximum waiting time for processing a work item.

[0102] The power parameters 704 may include one or more parameters related to the remaining power after executing the work item. For example, the power parameters 704 may include one or more remaining power thresholds and / or targets after processing the work item by one or more battery-powered computing devices. The power parameters 704 may include one or more remaining power thresholds and / or targets associated with information about the one or more battery-powered computing devices, such as the type of computing device, the type of battery, the battery capacity, the number of batteries, etc. The one or more remaining power thresholds and / or targets may be a minimum amount of remaining power for the one or more battery-powered computing devices and / or batteries after processing the work item.

[0103] Result accuracy parameters 705 may include one or more parameters related to the accuracy of one or more results from executing a work item. For example, result accuracy parameters 705 may include one or more result accuracy thresholds and / or targets for one or more results from a processed work item, such as a minimum result accuracy from a processed work item.

[0104] The policy criteria 706 may include one or more rules for executing a work item. For example, the policy criteria 706 may include one or more rules based on other information (such as waiting time parameters 702 and / or power parameters 704) of the work allocation policy 700. The policy criteria 706 may include one or more other rules for executing a work item. For example, the policy criteria 706 may include one or more rules for selecting one or more computing devices for executing a work item based on an estimate of the waiting time for executing the work item by one or more computing devices being at most one or more waiting time thresholds and / or targets of the waiting time parameters 702. As another example, the policy criteria 706 may include one or more rules for selecting one or more computing devices for executing a work item based on an estimate of the battery level after executing the work item by one or more computing devices being at least one or more remaining power thresholds and / or targets of the power parameters 704. For another example, the policy criteria 706 may include one or more rules for selecting one or more computing devices for executing a work item based on reducing (such as minimizing) an estimate of the waiting time for executing the work item by one or more computing devices. As another example, policy criteria 706 may include one or more rules for selecting one or more computing devices for executing a work item based on reducing energy consumption, such as maximizing an estimate of a battery level after the work item is executed by the one or more computing devices. As another example, policy criteria 706 may include one or more rules for selecting one or more computing devices for executing a work item based on increasing (such as maximizing) the accuracy of one or more sensors of the one or more computing devices used to collect sensor data for executing the work item.

[0105] Figure 8 An example of a method for distributing computing operations across connected computing devices according to various embodiments is shown. Figures 1 to 8 , the method 800 may be performed on a computing device (e.g., Figure 1 Wired and / or wireless computing devices 102a-102l in Figure 3 Wired and / or wireless computing devices 302a, 302b, Figure 4 in computing devices 400a-400c), in general-purpose hardware, in dedicated hardware, in a processor (e.g., Figure 2 Processors 210, 212, 214, 216, 218, 252, 260, Figure 3 306, modules 310-318) in the processor 306, modules 310-318 ... Figure 1 The communication system 100, Figure 3300) in the communication system, which includes other individual components and various memory / cache controllers (e.g., Figure 2 Memory 220, 258, Figure 3 To encompass alternative configurations enabled in various embodiments, the hardware implementing method 800 is referred to herein as a "processing device."

[0106] In block 802, a processing device may, at a communication device (e.g., Figure 1 Wired and / or wireless computing devices 102a-102l in Figure 3 Wired and / or wireless computing devices 302a, 302b, Figure 4 A communication connection is established between the computing devices 400a-400c in the example and the processing device and another communication device (eg, Figure 1 Each communication connection may be an ad hoc communication connection established using a compatible communication technology such as Wi-Fi (e.g., Wi-Fi Direct), Bluetooth, Bluetooth Low Energy, wired or wireless USB, ZigBee, ultra-wideband, etc. Wired and / or wireless communication connections may be established between any combination of communication devices. Wired and / or wireless communication connections between two or more communication devices may be used in a network such as a WPAN (e.g., Figure 1 In block 802, a processing device that establishes a wired and / or wireless communication connection between a communication device having a processing device and another communication device may be a processor (e.g., Figure 2 The processors 210, 212, 214, 216, 218, 252, 260 in Figure 3 306, modules 310-318) and / or communication modules (e.g., Figure 3 , a wired and / or wireless communication module 310).

[0107] In block 804, the processing device may send and receive contextual information of the computing device to and from other computing devices (e.g., Figure 5 In some embodiments, the processing device can send and receive context information of other computing devices with which the processing device has established connections. In this manner, as a WPAN (e.g., Figure 1Other computing devices that are not connected to the network (e.g., WPAN) to which the processing device is connected via an ad hoc communication connection and that are not part of the WPAN 106 in the network may receive context information of one or more computing devices to which the other computing devices are not connected via an ad hoc communication connection. The sending and receiving of context information may be repeated one or more times at any time while maintaining the establishment of an ad hoc communication connection. For example, the processing device may send and receive context information that is updated to reflect a change in the state of the computing device (including any of its various components), such as the state of one or more batteries, processors, memories, locations, etc. As another example, the processing device may send and receive context information for connecting to additional computing devices. In some embodiments, the processing device that sends and receives the context information of the computing device to and from the other computing devices in box 804 may be a processor, a communication module, and / or a context information module (e.g., Figure 3 Context information module 312 in .

[0108] In block 806, the processing device may select a selection computing device. In block 806, the processing device acting as the selection computing device may determine factors based on contextual information of the associated computing device and other computing devices of the WPAN, and compare the results with one or more criteria of the selection policy to select the selection computing device from the computing devices of the WPAN. In various embodiments, the processing device or component that selects the selection computing device in block 806 may be a processor, a contextual information module, a factor module (e.g., Figure 3 314) and / or a computing device selection module (e.g., Figure 3 For ease of explanation and clarity, for the wired and / or wireless computing device selection module 316 in Figures 8 to 13B For the remainder of the description of the illustrated methods 800, 900a, 900b, 1000a, 1000b, 1100a, 1100b, 1200a, 1200b, 1300a, 1300b, the computing device associated with the processing device will be referred to as the "selected computing device."

[0109] It should be understood that the description of various embodiments is not intended to limit the claims or to exclude the possibility that any other computing device may be initially or at any time thereafter selected as the selected computing device. The processing device may select the selected computing device from the computing devices of the WPAN multiple times, wherein the selection computing device function periodically or occasionally moves from one computing device to another computing device, such as based on or in response to updates to the processing device and other computing devices connected to the WPAN and / or new context information received by the processing device and other computing devices connected to the WPAN.

[0110] In block 808, the processing device may receive a work item request. The work item request may be a request for execution of a task, which may trigger the processing device that selects a computing device to select one or more computing devices of the WPAN as sensor computing devices for collecting sensor data for executing the work item and execution computing devices for executing the work item. In some embodiments, the processing device that receives the work item request in block 808 may be a processor and / or a communication module.

[0111] In block 810, the processing device may determine factors for selecting one or more computing devices as sensor computing devices and execution computing devices. Such factors may include results of various operations for selecting, calculating, and / or identifying information for selecting at least one computing device. Such operations may use, for example, contextual information of the computing devices and / or work item parameters of the work item (e.g., Figure 5 For example, the factors may include one or more of the following: sensor accuracy, data transmission latency and / or energy usage for data transmission between the sensor computing device and the execution computing device, processing latency and / or energy usage of the execution computing device, one or more states of the sensor computing device and the execution computing device, such as a processor (e.g., Figure 2 Processors 210, 212, 214, 216, 218, 252, 260, Figure 3 The processor 306, modules 310-318), the state of the memory (e.g., Figure 2 The memory 220, 258 in Figure 3 electronic storage device 304), the state of the battery, the connection (e.g., Figure 1 The state, location, etc. of the wired and / or wireless communication connections 104a-104g in the present invention. Figures 9A-12B An example of a processing device that determines factors for selecting one or more computing devices as sensor computing devices and execution computing devices is further described. In some embodiments, the processing device that determines factors for selecting one or more computing devices as sensor computing devices and execution computing devices in block 810 can be a processor, a context information module, and / or a factor module.

[0112] In block 812, the processing device may select one or more computing devices as one or more sensor computing devices. The processing device may also select one or more sensors in the one or more sensor computing devices for collecting sensor data for performing the work item. The selection of the one or more computing devices and / or sensors may be based on the results of the factors determined in block 810 compared to the one or more criteria for selecting the one or more computing devices and / or sensors.

[0113] For example, work item parameters (e.g., work item parameters 600 in diagram 600 ) may specify parameters of sensors used to execute the work item, such as the type of sensor, the accuracy of the sensor, the number of sensors, the location of the sensor (which may be based on the location of the computing device of which the sensor is a part), the amount of data collected by the sensor, etc. As another example, a work item allocation policy (e.g., work item allocation policy 700 in diagram 700 ) may specify one or more criteria for sensors to execute the work item, either alone or in combination with an executing computing device, such as data transfer latency between the sensor computing device and the executing computing device, the remaining battery level of the sensor computing device after executing the work item, the accuracy of results from executing the work item, etc.

[0114] As part of the operations in box 812, the processing device can be configured to determine which one or more computing devices and / or sensors to select based on the results of the determined factors. In some embodiments, the processing device can select a computing device and / or sensor based on the results of the determined factors for individual computing devices and / or sensors in the computing devices and / or sensors. In some embodiments, the processing device can determine to select a computing device and / or sensor based on the results of the determined factors for a group of computing devices and / or sensors. For example, the processing device can be configured to mathematically, algorithmically, and / or heuristically determine a representation of the results of the determined factors for a group of computing devices and / or sensors for comparison with one or more criteria for selecting one or more computing devices and / or sensors. References herein to methods 900a, 900b Fig.9A and 9B An example of a processing device selecting one or more computing devices as one or more sensor computing devices is further described. In some embodiments, the processing device that selects one or more computing devices as one or more sensor computing devices in block 812 may be a processor and / or a computing device selection module.

[0115] In box 814, the processing device may select one or more computing devices as one or more execution computing devices. The selection of one or more computing devices may be based on the results of the factors determined in box 810 compared to one or more criteria for selecting one or more computing devices. For example, the work item parameters may specify parameters for the computing device to execute the work item alone and / or in combination with the sensor computing device and / or the work item allocation policy may specify criteria for the computing device to execute the work item alone and / or in combination with the sensor computing device, such as the data transmission latency between the sensor computing device and the execution computing device, the latency for processing the work item, the remaining battery level of the execution computing device after executing the work item, etc. The processing device may be configured to determine which of the one or more computing devices to select based on the results of the determined factors. In some embodiments, the processing device may determine the selected computing device based on the results of the determined factors of individual computing devices in the computing device. In some embodiments, the processing device may determine the selected computing device based on the results of the determined factors of the computing device group. For example, the processing device may be configured to mathematically, algorithmically and / or heuristically determine a representation of the results of the determined factors of the computing device group for comparison with one or more criteria for selecting one or more computing devices. Reference herein Fig.13A and 13B Examples of a processing device selecting one or more computing devices as one or more executing computing devices are further described for methods 1300a, 1300b. In some embodiments, the processing device selecting one or more computing devices as one or more executing computing devices in block 814 may be a processor and / or a computing device selection module.

[0116] In box 816, the processing device can assign the work item to one or more selected computing devices. The processing device can assign the data collection part of the work item to one or more selected computing devices selected in box 812. The processing device can assign the execution part of the work item to one or more execution computing devices selected in box 814. The processing device can send a signal indicating the instructions of the various parts of the work item assigned to the corresponding computing devices to one or more selection and execution computing devices. These signals can be configured to trigger one or more selection and execution computing devices to implement the various parts of the work item assigned to the corresponding computing devices. Such a signal may include an indication of which other computing devices are assigned which parts of the work item, so that the computing device can be notified to conduct a self-organizing communication connection with the appropriate communication in the communication to share data. For example, the sensor computing device and the execution computing device can be notified to establish a self-organizing communication connection to send sensor data from the sensor computing device to the execution computing device. The processing device that assigns the work item to one or more selected computing devices in box 816 can be a processor, a work item allocation module (for example, Figure 3 , a work item assignment module 318 in, and / or a communication module.

[0117] Fig.9A and 9B An example of a method for selecting sensors of a WPAN-connected computing device for distributing computing operations across the WPAN-connected computing devices according to various embodiments is shown. Figures 1 to 9B , methods 900a, 900b may be performed on a computing device (e.g., Figure 1 Wired and / or wireless computing devices 102a-102l in Figure 3 Wired and / or wireless computing devices 302a, 302b, Figure 4 in computing devices 400a-400c), in general-purpose hardware, in dedicated hardware, in a processor (e.g., Figure 2 Processors 210, 212, 214, 216, 218, 252, 260, Figure 3 306, modules 310-318) in the processor 306, modules 310-318 ... Figure 1 The communication system 100, Figure 3 300) in the communication system, which includes other individual components and various memory / cache controllers (e.g., Figure 2 Memory 220, 258, Figure 3304 in the electronic storage device). To cover alternative configurations enabled in various embodiments, the hardware implementing methods 900a, 900b is referred to herein as a "processing device". Methods 900a, 900b may further describe determining the one or more computing devices selected as sensor computing devices and execution computing devices in block 810 and / or referred to herein as Figure 8 Block 812 of method 800 is described as selecting one or more computing devices as aspects of a factor of one or more sensor computing devices.

[0118] Reference Fig.9A At block 902, a processing device may communicate with one or more computing devices (e.g., Figure 1 Wired and / or wireless computing devices 102a-102l in Figure 3 Wired and / or wireless computing devices 302a, 302b, Figure 4 Contextual information related to sensors of computing devices 400a-400c in the example Figure 5 The processing device may retrieve the sensor type information from the context information and compare the sensor type information to the one or more sensor types of the work item. For example, the processing device may compare the sensor type information of the individual sensor to the one or more sensor types of the work item. The one or more sensor types for the work item may be, for example, work item parameters (e.g., Figure 6 In some embodiments, the processing device that compares the contextual information related to the sensors of the one or more computing devices with the one or more sensor types of the work item at block 902 may be a processor (e.g., Figure 2 Processors 210, 212, 214, 216, 218, 252, 260, Figure 3 processor 306, modules 310-318), context information module (e.g., Figure 3 Context information module 312 in ), factor module (e.g., Figure 3 , and / or a computing device selection module (e.g., Figure 3 , wired and / or wireless computing device selection module 316).

[0119] At block 904, the processing device may identify one or more sensors of the one or more computing devices that have one or more sensor types for the work item. Based on the comparison of the sensor type information in block 902 with the one or more sensor types of the work item, the processing device may identify which individuals and / or groups of sensors have the one or more sensor types for the work item. In some embodiments, the processing device that identifies one or more sensors of the one or more computing devices that have one or more sensor types for the work item at block 904 may be a processor, a context information module, a factor module, and / or a computing device selection module.

[0120] In box 906, the processing device can identify one or more computing devices with one or more sensors, and the one or more sensors have one or more sensor types for the work item. The processing device can use context information to identify which computing devices include which sensors. In some embodiments, one or more computing devices can be grouped by features, such as having a type of sensor, and one or more computing devices with one or more sensors can be identified for each group. In some embodiments, the processing device that identifies one or more computing devices with one or more sensors in box 906 can be a processor, a context information module, a factor module, and / or a computing device selection module, and the one or more sensors have one or more sensor types for the work item.

[0121] In box 908, the processing device may identify the accuracy of one or more sensors of one or more computing devices having one or more sensor types of the work item. The processing device may retrieve the sensor accuracy information from the context information and use the retrieved accuracy information to identify the accuracy of the one or more sensors. For example, the processing device may use the retrieved accuracy information to identify the sensor accuracy information of the individual sensor. As another example, the processing device may use the retrieved accuracy information to generate a representation of the sensor accuracy of the sensor group. The sensor group may include sensors of the same and / or different types of sensors. The sensor group may include sensors of the same and / or different computing devices (such as the computing devices identified in box 906). In some embodiments, the processing device that identifies the accuracy of one or more sensors of one or more computing devices having one or more sensor types of the work item in box 908 may be a processor, a context information module, a factor module, and / or a computing device selection module.

[0122] refer to Fig. 9B In block 910, the processing device may communicate with one or more computing devices (e.g., Figure 1 Wired and / or wireless computing devices 102a-102l in Figure 3Wired and / or wireless computing devices 302a, 302b, Figure 4 Contextual information related to sensors of computing devices 400a-400c in the example Figure 5 The processing device may retrieve sensor accuracy information from the context information and compare the sensor accuracy information to the threshold accuracy. For example, the processing device may compare sensor accuracy information of individual sensors of one or more computing devices to the threshold accuracy. As another example, the processing device may compare a representation of sensor accuracy information of a sensor group of one or more computing devices to the threshold accuracy. The sensor group may include sensors of the same and / or different types of sensors. The threshold accuracy may be, for example, a method for performing a task described herein with reference to Figure 8 The work item parameters (eg, Figure 6 900 in the work item parameters 600). The threshold accuracy can be a dynamic value that is, for example, updated to the accuracy of the compared accuracy information that exceeds the threshold accuracy. In this way, the comparison of the accuracy information to the accuracy threshold can identify the maximum accuracy information. The threshold accuracy can be, for example, a relative value, such as the maximum value of the compared accuracy information. In some embodiments, the processing device that compares the context information related to the sensors of the one or more computing devices to the threshold accuracy in block 910 can be a processor (e.g., Figure 2 Processors 210, 212, 214, 216, 218, 252, 260, Figure 3 processor 306, modules 310-318), context information module (e.g., Figure 3 Context information module 312 in ), factor module (e.g., Figure 3 314) and / or a computing device selection module (e.g., Figure 3 , wired and / or wireless computing device selection module 316).

[0123] In block 912, the processing device may identify one or more sensors of the one or more computing devices that have at least a threshold accuracy. Based on the comparison of the sensor accuracy information in block 910 with the threshold accuracy, the processing device may identify which individual and / or which groups of sensors have at least the threshold accuracy. In some embodiments, the processing device that identifies the one or more sensors of the one or more computing devices that have at least the threshold accuracy in block 912 may be a processor, a factor module, and / or a computing device selection module.

[0124] In box 914, the processing device may select one or more computing devices and sensors having at least a threshold accuracy. For example, the processing device may select one or more computing devices having individuals and / or groups of sensors having at least a threshold accuracy as a means of limiting the range of communication devices that may be considered for selection as sensor computing devices and / or execution computing devices. As another example, the processing device may select one or more computing devices having individuals and / or groups of sensors having at least a threshold accuracy as one or more selected computing devices. In some embodiments, the processing device that selects one or more computing devices and sensors having at least a threshold accuracy in box 914 may be a processor, a factor module, and / or a computing device selection module.

[0125] Fig. 10A and 10B The figure illustrates an example of a method for estimating data transmission latency and energy for distributing computing operations across connected computing devices according to various embodiments. Figures 1 to 10B , methods 1000a, 1000b may be performed on a computing device (e.g., Figure 1 Wired and / or wireless computing devices 102a-102l in Figure 3 Wired and / or wireless computing devices 302a, 302b, Figure 4 In computing devices 400a-400c), in general-purpose hardware, in dedicated hardware, in a processor (e.g., Figure 2 Processors 210, 212, 214, 216, 218, 252, 260, Figure 3 306, modules 310-318) in the processor 306, modules 310-318 ... Figure 1 The communication system 100, Figure 3 300) in the communication system, which includes other individual components and various memory / cache controllers (e.g., Figure 2 Memory 220, 258, Figure 3 To cover alternative configurations enabled in various embodiments, the hardware implementing methods 1000a, 1000b is referred to herein as a "processing device". Methods 1000a, 1000b may be further described herein with reference to Figure 8 Block 810 of the described method 800 determines aspects of factors for selecting one or more computing devices as sensor computing devices and execution computing devices.

[0126] refer to Fig. 10AIn block 1002, a processing device may estimate a number of computing devices (eg, Figure 1 Wired and / or wireless computing devices 102a-102l in Figure 3 Wired and / or wireless computing devices 302a, 302b, Figure 4 The processing device may retrieve the data transmission latency of one or more sensors for data transmission between the computing devices 400a-400c in the present invention. Figure 8 information received in block 808 of the described method 800 for requesting execution of a work item, a data transfer for executing the work item, and / or context information of a computing device for computing one or more estimates between computing devices (e.g., Figure 5 The processing device may use work item parameters from the work item (e.g., Figure 6 The processing device may estimate the data transmission latency between the computing devices based on the amount of data used to execute the work item (the work item parameters 600 in the example) and the data transmission speed between the computing devices from the context information of the computing devices. The processing device may estimate the data transmission latency of any sensor (such as all sensors and / or a subset of sensors) among the one or more sensors. For example, the subset of sensors may include one or more sensors identified in block 904 of method 900a as described and / or in block 912 of method 900b as described. In some embodiments, the processing device that estimates the data transmission latency of one or more sensors for data transmission between the one or more computing devices in block 1002 may be a processor (e.g., Figure 2 Processors 210, 212, 214, 216, 218, 252, 260, Figure 3 processor 306, modules 310-318), context information module (e.g., Figure 3 Context information module 312 in ) and / or factor module (e.g., Figure 3 Factor module 314 in ).

[0127] In box 1004, the processing device may estimate the data transmission energy of one or more sensors for data transmission between one or more computing devices. The processing device may retrieve information related to the data energy for executing the work item and / or the data transmission energy between computing devices for calculating the context information of one or more estimated computing devices. The processing device may estimate the data transmission energy between computing devices using the amount of data for executing the work item from the work item parameters of the work item and the data transmission energy between computing devices from the context information of the computing device. The processing device may estimate the data transmission energy of any sensor (such as all sensors and / or a subset of sensors) in one or more sensors. For example, the subset of sensors may include one or more sensors identified in box 904 of method 900a as described and / or in box 912 of method 900b as described. In some embodiments, the processing device that estimates the data transmission energy of one or more sensors for data transmission between one or more computing devices in box 1004 may be a processor, a context information module, and / or a factor module.

[0128] In block 1006, the processing device may identify one or more computing devices having one or more sensors. The processing device may use the context information to identify which computing devices include which sensors. In some embodiments, the one or more computing devices may be grouped by features, such as having a type of sensor, and one or more computing devices having one or more sensors may be identified for each group. In some embodiments, the processing device that identifies the one or more computing devices having one or more sensors in block 1006 may be a processor, a context information module, and / or a factor module.

[0129] In block 1008, the processing device may estimate a total data transmission latency of one or more combinations of one or more sensors. The processing device may estimate the total data transmission latency of one or more combinations of one or more sensors using one or more estimates of the data transmission latency calculated in block 1002. For example, the processing device may use one and / or a summed multiple of the estimates of the data transmission latency calculated in block 1002. As another example, the processing device may estimate the total data transmission latency of a combination of one or more sensors belonging to one and / or a group of computing devices, as identified in block 1006. As another example, the processing device may estimate the total data transmission latency of a combination of one or more sensors grouped by features, such as sensors belonging to one type. In some embodiments, the processing device that estimates the total data transmission latency of one or more combinations of one or more sensors in block 1008 may be a processor and / or a factor module.

[0130] In block 1010, the processing device may estimate the total data transmission energy of one or more combinations of one or more sensors. The processing device may estimate the total data transmission energy of one or more combinations of one or more sensors using the one or more estimates of the data transmission energy calculated in block 1004. For example, the processing device may use one and / or a summed multiple of the estimates of the data transmission energy calculated in block 1004. As another example, the processing device may estimate the total data transmission energy of a combination of one or more sensors belonging to one and / or a group of computing devices as identified in block 1006. As another example, the processing device may estimate the total data transmission energy of a combination of one or more sensors grouped by features, such as sensors belonging to one type. In some embodiments, the processing device that estimates the total data transmission latency of one or more combinations of one or more sensors in block 1010 may be a processor and / or a factor module.

[0131] refer to Fig. 10B , blocks 1002 and 1004 may be implemented as described for method 1000a. In some embodiments, the processing device that estimates the data transmission latency of one or more sensors for data transmission between one or more computing devices in block 1002 and estimates the data transmission energy of one or more sensors for data transmission between one or more computing devices in block 1004 may be a processor (e.g., Figure 2 Processors 210, 212, 214, 216, 218, 252, 260, Figure 3 processor 306, modules 310-318), context information module (e.g., Figure 3 Context information module 312 in ) and / or factor module (e.g., Figure 3 Factor module 314 in ).

[0132] In block 1020, the processing device may identify one or more computing devices having one or more sensors having at most a threshold data transmission latency. The processing device may use the one or more estimates of the data transmission latency calculated in block 1002 to identify one or more computing devices having one or more sensors having at most a threshold data transmission latency. For example, the threshold data transmission latency may be a fixed value to which the processing device may compare the one or more estimates of the data transmission latency. One or more computing devices having one or more sensors may be identified for which one or more computing devices the one or more estimates of the data transmission latency are at most the threshold data transmission latency. As another example, the threshold data transmission latency may be a dynamic value to which the processing device may compare the one or more estimates of the data transmission latency. In this manner, the processing device may identify one or more computing devices having one or more sensors having an estimate of the data transmission latency that is at most the threshold data transmission latency. The processing device may update the threshold data transmission latency based on the compared data transmission latency estimate being lower than the threshold data transmission latency. In this manner, the processing device may identify one or more computing devices having one or more sensors having a minimum estimate of the data transmission latency. As another example, the threshold data transmission latency can be a relative value, such as a minimum of the compared data transmission latency estimates. In this way, the processing device can identify one or more computing devices having one or more sensors that have the minimum estimate of the data transmission latency. In some embodiments, the one or more computing devices can be grouped by features (such as having a type of sensor), and one or more computing devices having one or more sensors with at most the threshold data transmission latency can be identified for each group. In some embodiments, the processing device that identifies the one or more computing devices having one or more sensors with at most the threshold data transmission latency in block 1020 can be a processor and / or a factor module.

[0133] In block 1022, the processing device may identify data transmission latencies of one or more computing devices having one or more sensors having at most a threshold data transmission latency. The processing device may use the one or more estimates of data transmission latency calculated in block 1002 to identify data transmission latencies of one or more computing devices having one or more sensors having at most a threshold data transmission latency, as identified in block 1020. In some embodiments, the processing device may identify data transmission latencies of one or more computing devices, where the one or more sensors have at most a threshold data transmission latency per group of computing devices. In some embodiments, the processing device that identifies data transmission latencies of one or more computing devices having one or more sensors having at most a threshold data transmission latency in block 1022 may be a processor and / or a factor module.

[0134] In block 1024, the processing device may identify data transmission energies of one or more computing devices having one or more sensors having at most a threshold data transmission latency. The processing device may use the one or more estimates of data transmission energies calculated in block 1004 to identify data transmission energies of one or more computing devices having one or more sensors having at most a threshold data transmission latency, as identified in block 1020. In some embodiments, the processing device may identify data transmission energies of one or more computing devices having one or more sensors having at most a threshold data transmission latency per group of computing devices. In some embodiments, the processing device that identifies the data transmission energies of one or more computing devices having one or more sensors having at most a threshold data transmission latency in block 1024 may be a processor and / or a factor module.

[0135] In block 1026, the processing device may estimate a total data transmission latency for one or more combinations of one or more computing devices and one or more sensors having at most a threshold data transmission latency. The processing device may estimate a total data transmission latency for one or more combinations of one or more computing devices and one or more sensors having at most a threshold data transmission latency using the one or more data transmission latencies identified in block 1022. For example, the processing device may sum the data transmission latencies identified in block 1022. In some embodiments, the processing device that estimates the total data transmission latency for one or more combinations of one or more computing devices and one or more sensors having at most a threshold data transmission latency in block 1026 may be a processor and / or a factor module.

[0136] In block 1028, the processing device may estimate a total data transmission energy for one or more combinations of one or more computing devices and one or more sensors having at most a threshold data transmission latency. The processing device may estimate the total data transmission energy for one or more combinations of one or more computing devices and one or more sensors having at most a threshold data transmission latency using the one or more data transmission energies identified in block 1024. For example, the processing device may sum the data transmission energies identified in block 1024. In some embodiments, the processing device that estimates the total data transmission latency for one or more combinations of one or more computing devices and one or more sensors having at most a threshold data transmission latency in block 1028 may be a processor and / or a factor module.

[0137] Fig.11A and 11B An example of a method for estimating processing latency and energy for distributing computing operations across connected computing devices according to various embodiments is shown. Figures 1 to 11B , methods 1100a, 1100b may be performed on a computing device (e.g., Figure 1 Wired and / or wireless computing devices 102a-102l in Figure 3 Wired and / or wireless computing devices 302a, 302b, Figure 4 in computing devices 400a-400c), in general-purpose hardware, in dedicated hardware, in a processor (e.g., Figure 2 Processors 210, 212, 214, 216, 218, 252, 260, Figure 3 306, modules 310-318) in the processor 306, modules 310-318), or implemented in a combination of a software-configured processor and dedicated hardware, such as executing a communication system (e.g., Figure 1 The communication system 100, Figure 3 300) in the communication system, which includes other individual components and various memory / cache controllers (e.g., Figure 2 Memory 220, 258, Figure 3 To cover alternative configurations enabled in various embodiments, the hardware implementing methods 1100a, 1100b is referred to herein as a "processing device". Methods 1100a, 1100b may be further described herein with reference to Figure 8 Block 810 of the described method 800 determines aspects of factors for selecting one or more computing devices as sensor computing devices and execution computing devices.

[0138] refer to Fig.11AIn block 1102, the processing device may estimate the processing latency of one or more processors. The processing device may retrieve and process the processors referenced herein. Figure 8 The information related to the work item of the request to perform the work item received in block 808 of the described method 800 and / or the information related to ... Figure 1 Wired and / or wireless computing devices 102a-102l in Figure 3 Wired and / or wireless computing devices 302a, 302b, Figure 4 Context information (e.g., Figure 5 The processing device may use work item parameters (e.g., Figure 6 The processing latency of one or more processors is estimated based on a latency parameter for processing a work item (work item parameters 600 in block 1100 ) and a processor power from context information of the computing device. The latency parameter may be a value of a latency associated with an aspect of the processor (such as processor power). In some embodiments, the processing device that estimates the processing latency of one or more processors in block 1102 may be a processor (e.g., Figure 2 Processors 210, 212, 214, 216, 218, 252, 260, Figure 3 processor 306, modules 310-318), context information module (e.g., Figure 3 Context information module 312 in ) and / or factor module (e.g., Figure 3 Factor module 314 in ).

[0139] In block 1104, the processing device may estimate the processing energy of the one or more processors. The processing device may retrieve information related to the processing energy of the one or more processors from the context information of the computing device for computing the one or more estimates. The processing device may estimate the processing energy of the one or more processors using the estimates of the processing latency of the one or more processors computed in block 1102 and the processing energy of the one or more processors from the context information of the computing device. In some embodiments, the processing device estimating the processing energy of the one or more processors in block 1104 may be a processor, a context information module, and / or a factor module.

[0140] In block 1106, the processing device may identify one or more computing devices using one or more processors. The processing device may use the context information to identify which computing devices include which processors. In some embodiments, the one or more computing devices may be grouped by features, such as having a type of processor, and one or more computing devices having one or more processors may be identified for each group. In some embodiments, the processing device that identifies the one or more computing devices using one or more processors in block 1106 may be a processor, a context information module, and / or a factor module.

[0141] In block 1108, the processing device may identify processing latency of one or more computing devices using one or more processors. The processing device may use one or more estimates of processing latency calculated in block 1102 to identify processing latency of one or more computing devices having one or more processors, as identified in block 1106. For example, the processing device may use one and / or more sums of the estimates of processing latency calculated in block 1102 for one or more processors of each computing device. As another example, the processing device may estimate the total processing latency of a combination of one or more processors belonging to one and / or a group of computing devices, as identified in block 1106. As another example, the processing device may estimate the total processing latency of a combination of one or more processors of one or more computing devices grouped by a feature, such as processors belonging to one type. In some embodiments, the processing device that identifies processing latency of one or more computing devices using one or more processors in block 1108 may be a processor and / or a factor module.

[0142] In block 1110, a processing device may identify a processing energy for one or more computing devices using one or more processors. The processing device may use one or more estimates of the processing energy calculated in block 1104 to identify the processing energy of one or more computing devices having one or more processors, as identified in block 1106. For example, the processing device may use one and / or more sums of the estimates of the processing energy calculated in block 1104 for the one or more processors of each computing device. As another example, the processing device may estimate the total processing energy of a combination of one or more processors belonging to one and / or a group of computing devices, as identified in block 1106. As another example, the processing device may estimate the total processing energy of a combination of one or more processors of one or more computing devices grouped by a feature, such as a type of processor. In some embodiments, the processing device that identifies the processing energy for one or more computing devices using one or more processors in block 1110 may be a processor and / or a factor module.

[0143] refer to Fig. 11B , blocks 1120, 1122 may be implemented in a manner similar to blocks 1102, 1104 of the described method 1100a. In some embodiments, the processing device that estimates the processing latency of one or more processors of the one or more computing devices in block 1120 and estimates the processing energy of one or more processors of the one or more computing devices in block 1122 may be a processor (e.g., Figure 2 Processors 210, 212, 214, 216, 218, 252, 260, Figure 3 processor 306, modules 310-318), context information module (e.g., Figure 3 Context information module 312 in ) and / or factor module (e.g., Figure 3 Factor module 314 in ).

[0144] In block 1124, the processing device may identify one or more processors having at most a threshold processing latency. For example, the threshold processing latency may be a fixed value to which the processing device may compare one or more estimates of processing latency. One or more computing devices having one or more processors having one or more estimates of processing latency at most the threshold processing latency may be identified. As another example, the threshold processing latency may be a dynamic value to which the processing device may compare one or more estimates of processing latency. In this manner, the processing device may identify one or more computing devices having one or more processors having an estimate of processing latency at most the threshold processing latency. The processing device may update to the threshold processing latency based on the compared processing latency estimate being below the threshold processing latency. In this manner, the processing device may identify one or more computing devices having one or more processors having a minimum estimate of processing latency. As another example, the threshold processing latency may be a relative value, such as a minimum of the compared processing latency estimates. In this manner, the processing device may identify one or more computing devices having one or more processors having a minimum estimate of processing latency. In some embodiments, the one or more computing devices may be grouped by a characteristic, such as having a type of processor, and one or more computing devices having at most one or more processors having a threshold processing latency may be identified for each group. In some embodiments, the processing device identifying the one or more computing devices having at most one or more processors having a threshold processing latency in block 1124 may be a processor and / or a factor module.

[0145] In block 1126, the processing device may identify processing latencies of one or more processors having at most a threshold processing latency. The processing device may use the one or more estimates of processing latency calculated in block 1102 to identify processing latencies of one or more computing devices having one or more processors having at most a threshold processing latency, as identified in block 1124. In some embodiments, the processing device may identify processing latencies of one or more computing devices, wherein the one or more processors have at most a threshold processing latency for each group of computing devices. In some embodiments, the processing device that identifies processing latencies of one or more computing devices having one or more processors having at most a threshold processing latency in block 1126 may be a processor and / or a factor module.

[0146] In block 1128, the processing device may identify a processing energy for one or more processors having at most a threshold processing latency. The processing device may use the one or more estimates of processing energy calculated in block 1104 to identify a processing energy for one or more computing devices having one or more processors having at most a threshold processing latency, as identified in block 1124. In some embodiments, the processing device may identify a processing energy for one or more computing devices, wherein the one or more processors have at most a threshold processing latency for each group of computing devices. In some embodiments, the processing device that identifies the processing energy for one or more computing devices having one or more processors having at most a threshold processing latency in block 1128 may be a processor and / or a factor module.

[0147] Fig. 12A and 12B FIG. 1 illustrates an example of a method for estimating processing latency and energy for distributing computing operations across connected computing devices according to various embodiments. Figures 1 to 12B , methods 1200a, 1200b may be performed on a computing device (e.g., Figure 1 Wired and / or wireless computing devices 102a-102l in Figure 3 Wired and / or wireless computing devices 302a, 302b, Figure 4 In computing devices 400a-400c), in general-purpose hardware, in dedicated hardware, in a processor (e.g., Figure 2 Processors 210, 212, 214, 216, 218, 252, 260, Figure 3 306, modules 310-318) in the processor 306, modules 310-318), or implemented in a combination of a software-configured processor and dedicated hardware, such as executing a communication system (e.g., Figure 1 The communication system 100, Figure 3300) in the communication system, which includes other individual components and various memory / cache controllers (e.g., Figure 2 Memory 220, 258, Figure 3 1200a, 1200b are referred to herein as "processing devices" in order to encompass alternative configurations enabled in various embodiments. Methods 1200a, 1200b may further describe aspects of determining factors for selecting one or more computing devices as sensor computing devices and execution computing devices in block 810 of method 800 as described.

[0148] Methods 1200a, 1200b may optionally be based on a computing device (e.g., Figure 1 Wired and / or wireless computing devices 102a-102l in Figure 3 Wired and / or wireless computing devices 302a, 302b, Figure 4 This may be accomplished by determining whether the computing devices 400a-400c in the example include one or more batteries and / or have a state of charging the batteries (eg, powered by an external power source).

[0149] Reference Fig. 12A At block 1202, the processing device may estimate a battery level of one or more computing devices after executing the work item. The processing device may retrieve information related to processing energy for one or more processors (as identified in block 1110 of the described method 1100a) and / or context information related to the computing devices used to calculate the one or more estimates (e.g., Figure 5 The processing device may estimate the battery level after executing the work item using an estimate of the processing energy required by one or more processors of the one or more computing devices to process the work item and the battery level from the context information of the computing devices. In some embodiments, the processing device that estimates the battery level of the one or more computing devices after executing the work item in block 1202 may be a processor (e.g., Figure 2 Processors 210, 212, 214, 216, 218, 252, 260, Figure 3 processor 306, modules 310-318), context information module (e.g., Figure 3 , and / or factor modules (e.g., Figure 3 Factor module 314 in ).

[0150] At block 1204, the processing device may identify one or more computing devices whose battery levels are estimated after executing the work item. The processing device may use the context information estimated at block 1102 to identify which computing devices include a battery whose battery level is estimated after executing the work item. In some embodiments, the one or more computing devices may be grouped by characteristics (such as battery type, size, level, etc.), and the one or more computing devices whose battery levels are estimated after executing the work item may be identified for each group. In some embodiments, the processing device that identifies the one or more computing devices whose battery levels are estimated in block 1204 may be a processor, a context information module, and / or a factor module.

[0151] Reference Fig. 12B At block 1210, the processing device may estimate the battery level of one or more computing devices after executing the work item. The processing device may retrieve information related to processing energy for one or more processors having at most a threshold processing latency (as identified in block 1128 of the described method 1100b) and / or context information related to the computing devices used to calculate the one or more estimates (e.g., Figure 5 The processing device may estimate the battery level after executing the work item using an estimate of the processing energy used to process the work item by one or more processors of the one or more computing devices and the battery level from the context information of the computing devices. In some embodiments, the processing device that estimates the battery charge of the one or more computing devices in block 1210 may be a processor (e.g., Figure 2 Processors 210, 212, 214, 216, 218, 252, 260, Figure 3 processor 306, modules 310-318), context information module (e.g., Figure 3 Context information module 312 in ) and / or factor module (e.g., Figure 3 Factor module 314 in ).

[0152] At block 1212, the processing device may identify one or more computing devices that have at least a threshold battery level after executing the work item. For example, the threshold battery level after executing the work item may be a fixed value to which the processing device may compare one or more estimates of the battery level after executing the work item. One or more computing devices whose one or more battery level estimates after executing the work item are at least the threshold battery level after executing the work item may be identified. As another example, the threshold battery level after executing the work item may be a dynamic value to which the processing device may compare one or more battery level estimates after executing the work item. In this way, the processing device may identify one or more computing devices that have a battery level estimate after executing the work item that is at least the threshold battery level after executing the work item. The processing device may update to the threshold battery level based on the compared battery level estimate after executing the work item exceeding the threshold battery level after executing the work item. In this way, the processing device may identify one or more computing devices and one or more processors that have the maximum battery level after executing the work item. As another example, the threshold battery level after executing the work item may be a relative value, such as the maximum value among the compared battery level estimates after executing the work item. In this way, the processing device can identify one or more computing devices having the maximum battery level after executing the work item. In some embodiments, the processing device that identifies one or more computing devices having at least a threshold battery level after executing the work item in block 1212 can be a processor and / or a factor module.

[0153] At block 1214, the processing device may select one or more computing devices that have at least a threshold battery level after executing the work item. The processing device may select one or more computing devices that have at least a threshold battery level after executing the work item identified in block 1212. Computing devices that have a battery level below the threshold after executing the work item may be ignored. At block 1214, the processing device may select one or more computing devices that have at least a threshold battery level after executing the work item. The processing device may select one or more computing devices that have at least a threshold battery level after executing the work item. The processing device may select one or more computing devices that have at least a threshold battery level after executing the work item. The processing device may select one or more computing devices that have at least a threshold battery level after executing the work item. Figure 3 316 in the computing device selection module).

[0154] Fig.13A and 13B FIG. 1 illustrates an example of a method for selecting at least one computing device connected to a network WPAN for distributing computing operations across the connected computing devices according to various embodiments. Figures 1 to 13B , methods 1300a, 1300b may be performed on a computing device (e.g., Figure 1 Wired and / or wireless computing devices 102a-102l in Figure 3 Wired and / or wireless computing devices 302a, 302b, Figure 4 in computing devices 400a-400c), in general-purpose hardware, in dedicated hardware, in a processor (e.g., Figure 2 Processors 210, 212, 214, 216, 218, 252, 260, Figure 3 306, modules 310-318) in the processor 306, modules 310-318), or implemented in a combination of a software-configured processor and dedicated hardware, such as executing a communication system (e.g., Figure 1 The communication system 100, Figure 3 300) in the communication system, which includes other individual components and various memory / cache controllers (e.g., Figure 2 Memory 220, 258, Figure 3 To encompass alternative configurations enabled in various embodiments, the hardware implementing methods 1300a, 1300b is referred to herein as a "processing device". Methods 1300a, 1300b may be further described herein with reference to Figure 8 Block 814 of the depicted method 800 selects one or more computing devices as aspects of the one or more executing computing devices.

[0155] Reference Fig.13A At block 1302, a processing device may identify one or more computing devices (e.g., Figure 1 Wired and / or wireless computing devices 102a-102l in Figure 3 Wired and / or wireless computing devices 302a, 302b, Figure 4 The characteristics of the one or more computing devices used to perform the work item may include an indication of the accuracy of the result, the accumulation of waiting time, and / or the accumulation of energy use. The characteristics of the one or more computing devices used to perform the work item may include the following: Figure 8 , 9A , 10A, 11A, and 12A described in methods 800, 900a, 1000a, 1100a, 1200a and / or generated therefrom. In some embodiments, the processing device that identifies the characteristics of one or more computing devices for executing the work item in block 1302 can be a processor (e.g., Figure 2 Processors 210, 212, 214, 216, 218, 252, 260, Figure 3 processor 306, modules 310-318), factor modules (e.g., Figure 3 , and / or a computing device selection module (e.g., Figure 3, wired and / or wireless computing device selection module 316).

[0156] For example, the processing device may use the accuracy of one or more sensors of one or more computing devices identified in block 908 of the described method 900a, and / or generate a representation of the accuracy of the result to be achieved for executing the work item. The processing device may use one or a combination of data transmission latency of one or more sensors of one or more computing devices estimated in block 1008 of the described method 1000a and / or processing latency of one or more processors of one or more computing devices identified in block 1108 of the described method 1100a, and / or generate a representation of the accumulation of latency to be achieved for executing the work item. The processing device may use one or a combination of data transmission latency of one or more sensors of one or more computing devices estimated in block 1008 of the described method 1000a and / or processing latency of one or more processors of one or more computing devices identified in block 1108 of the described method 1100a, and / or generate a representation of the accumulation of latency to be achieved for executing the work item. The processing device may use one or a combination of the data transmission energy of one or more sensors of the one or more computing devices estimated in block 1010 of the described method 1000a, the processing energy of one or more processors of the one or more computing devices identified in block 1110 of the described method 1100a, and / or the battery level of the one or more computing devices estimated in block 1202 of the described method 1200a, and / or generate a representation of the energy usage accumulation to be achieved for executing the work item.

[0157] At block 1304, the processing device may identify one or more computing devices having characteristics for performing the work item that meet the criteria for performing the work item. The work item may be identified, for example, by work item parameters (e.g., Figure 6 ) and / or work assignment policies (e.g., Figure 7The work allocation strategy 700 in ) is associated with the standard for executing the work item. For example, the standard for the work item may include the accuracy of the result, the accumulated waiting time and / or the accumulated energy use. Such a standard may be predetermined, configurable and / or dynamic. In some examples, the standard may be implemented with reference to each other, such as weighted values, including one or more ratios and / or proportions of the accuracy of the result, the accumulated waiting time and / or the accumulated energy use. The characteristics of one or more computing devices for executing the work item may be compared with the standard for executing the work item to identify which computing devices in one or more computing devices reach the standard for executing the work item. The processing device may compare the characteristics of the individual and / or group of computing devices with the standard for executing the work item, and identify the individual and / or group of computing devices that reach one or more aspects of the standard. For example, the processing device may identify the computing devices of the individual and / or group that reach one or any combination of the various aspects of the standard for executing the work item, including the accuracy of the result, the accumulated waiting time, and / or the accumulated energy use. In some embodiments, the processing device that identifies the characteristics of one or more computing devices for executing the work item in box 1304 may be a processor, a factor module, and / or a computing device selection module.

[0158] In box 1306, the processing device may select one or more computing devices that reach the standard for executing the work item from one or more computing devices having characteristics for executing the work item. The processing device may select one or more computing devices based on components such as mathematics, algorithms, heuristics, etc. configured to achieve the standard for the work item. For example, the processing device may select one or more computing devices that can achieve the maximum result accuracy, minimum waiting time accumulation, and / or minimum energy usage accumulation for executing the work item from among the computing devices. The processing device may be configured to select one or more computing devices based on the priority of one or more aspects of the standard. For example, one or more computing devices may not reach the maximum and / or minimum level of each aspect of the standard, but may reach the maximum and / or minimum level of one or more aspects and the acceptable level of the remaining standards. The processing device may be configured to select one or more computing devices based on a combination of standards. For example, one or more computing devices may not reach the weighted values ​​of various aspects of the standard, such as a part of a ratio and / or proportion. In some embodiments, the processing device may select one or more computing devices that reach the standard for executing the work item from one or more computing devices having characteristics for executing the work item in box 1306, which may be a processor and / or a computing device selection module.

[0159] Reference Fig. 13BAt block 1320, the processing device may estimate the total waiting time for one or more computing devices to execute the work item. The processing device may retrieve information related to data transmission latency (as described herein with reference to Fig. 10B The processing device may estimate the total latency of the work item to be executed by the one or more computing devices using the estimate of the latency of the data transfer between the one or more computing devices and the estimate of the latency of the processing for processing the work item by the one or more computing devices. In some examples, the computing devices for which the processing device may estimate the total latency may include one or more computing devices having at least a threshold battery level after executing the work item selected in block 1214 of the method 1200b as described. In some embodiments, the processing device that estimates the total latency of the work item to be executed by the one or more computing devices in block 1320 may be a processor and / or a factor module.

[0160] At block 1322, the processing device may identify one or more computing devices that have at most a threshold wait time for executing the work item. For example, the threshold wait time for executing the work item may be a fixed value to which the processing device may compare one or more estimates of the total wait time for executing the work item. One or more computing devices may be identified for which one or more estimates of the total wait time for executing the work item are at most the threshold wait time for executing the work item. As another example, the threshold wait time for executing the work item may be a dynamic value to which the processing device may compare one or more estimates of the total wait time for executing the work item. In this way, the processing device may identify one or more computing devices that have an estimate of the total wait time for executing the work item that is at most the threshold wait time for executing the work item. The processing device may update to the threshold wait time for executing the work item based on the compared estimate of the total wait time for executing the work item being lower than the threshold wait time for executing the work item. In this way, the processing device may identify one or more computing devices that have the minimum total wait time for executing the work item. As another example, the threshold wait time for executing the work item can be a relative value, such as a minimum value among the estimates of the total wait time for executing the work item that are compared. In this way, the processing device can identify one or more computing devices with the minimum total wait time for executing the work item. In some embodiments, the processing device that identifies the one or more computing devices with the most threshold wait time for executing the work item in block 1322 can be a processor and / or a factor module.

[0161] In block 1324, the processing device may select one or more computing devices having at most a threshold latency to execute the work item. The processing device may select one or more computing devices having at most a threshold latency to execute the work item identified in block 1322. Computing devices exceeding the threshold latency for executing the work item may be ignored. In block 1324, the processing device selecting one or more computing devices having at most a threshold latency for executing the work item may be a processor and / or a computing device selection module.

[0162] In various examples, any portion of the methods 900a, 900b, 1000a, 1000b, 1100a, 1100b, 1200a, 1200b, 1300a, 1300b may be implemented in parallel for various work items. In various examples, the implementation of the methods 900a, 900b, 1000a, 1000b, 1100a, 1100b, 1200a, 1200b, 1300a, 1300b may be interrupted at any portion, and based on context information (e.g., Figure 5 Context information 500 in, work items, work item parameters (e.g., Figure 6 ) and / or work assignment policies (e.g., Figure 7 Return to the earlier part due to changes in the work allocation strategy 700) etc.

[0163] Various embodiments including methods 800, 900a, 900b, 1000a, 1000b, 1100a, 1100b, 1200a, 1200b, 1300a, 1300b may be implemented on various computing devices (e.g., Figure 1 The wired and / or wireless computing devices 102a-102l in Figure 3 The wired and / or wireless computing devices 302a, 302b in Figure 4 400a-400c) in the computing device 400a-400c), an example of which is shown in Fig.14 It is shown in Fig.14 An example of a computing device 1400 suitable for use with various embodiments is shown. Figures 1 to 14, the computing device 1400 may include a touchpad touch surface 1417 that serves as a pointing device for the computer and can therefore receive drag, scroll, and flick gestures similar to those implemented on computing devices equipped with a touch screen display and described above. The computing device 1400 will typically include a processor 1402 coupled to a volatile memory 1412 and a disk drive 1413 of large capacity non-volatile memory such as flash memory. In addition, the computing device 1400 may have one or more antennas 1408 for sending and receiving electromagnetic radiation, which may be connected to a wireless data link and / or a cellular telephone transceiver 1416 coupled to the processor 1402. The computing device 1400 may also include a floppy disk drive 1414 and a compact disc (CD) drive 1415 coupled to the processor 1402. In a notebook configuration, the computer housing includes a touchpad 1417, a keyboard 1418, and a display 1419 all coupled to the processor 1402. Other configurations of computing devices may include a computer mouse or trackball coupled to the processor as is known (eg, via USB input), which may also be used in conjunction with various embodiments.

[0164] Various embodiments including methods 800, 900a, 900b, 1000a, 1000b, 1100a, 1100b, 1200a, 1200b, 1300a, 1300b may be implemented on various computing devices (e.g., Figure 1 The wired and / or wireless computing devices 102a-102l in Figure 3 The wired and / or wireless computing devices 302a, 302b in Figure 4 400a-400c) in the computing device 400a-400c), an example of which is shown in Fig.15 It is shown in Fig.15 An example of a computing device 1500 suitable for use with various embodiments is shown. Figures 1 to 15 , the computing device 1500 may include a first SOC 202 (e.g., SOC-CPU) coupled to a second SOC 204 (e.g., a 5G-capable SOC). The first SOC 202 and the second SOC 204 may be coupled to internal storage 304, 1516, a display 1512, and a speaker 1514. In addition, the computing device 1500 may include an antenna 1504 for sending and receiving electromagnetic radiation, which antenna 1504 may be connected to a wired data link, a wireless data link, and / or a cellular telephone transceiver 266, which is coupled to one or more processors in the first and / or second SOCs 202, 204. The computing device 1400 may also include a menu selection button or rocker switch 1520 for receiving user input.

[0165] The computing device 1500 may also include a sound coding / decoding (CODEC) circuit 1510 that digitizes the sound received from the microphone into a data packet suitable for wireless transmission and decodes the received sound data packet to generate an analog signal, which is provided to the speaker to generate sound. In addition, one or more of the processors in the first SOC 202 and the second SOC 204, the wireless transceiver 266, and the CODEC 1510 may include a digital signal processor (DSP) circuit (not shown separately).

[0166] The processor of the computing device 1400, 1500 may be any programmable microprocessor, microcomputer, or one or more multi-processor chips that can be configured by software instructions (applications) to perform various functions (including the functions of the various embodiments described below). In some mobile devices, multiple processors may be provided, such as one processor within the SOC 204 dedicated to wireless communication functions and one processor within the SOC 202 dedicated to running other applications. Software applications may be stored in the storage device 304, 1412, 1413, 1516 before they are accessed and loaded into the processor. The processor may include internal memory sufficient to store application software instructions.

[0167] Implementation examples are described in the following paragraphs. Although some of the following implementation examples are described in terms of example methods, additional example implementations may include: the example methods discussed in the following paragraphs implemented by a transmitter wireless communication device, the transmitter wireless communication device including a processing device configured with processor-executable instructions to perform the operations of the example methods; the example methods discussed in the following paragraphs implemented by a computing device, the computing device including: components for performing the functions of the example methods; and the example methods discussed in the following paragraphs implemented on a non-transitory processor-readable medium having processor-executable instructions stored thereon, the processor-executable instructions being configured to cause a processor of the computing device to perform the operations of the example methods.

[0168] Example 1. A method for distributing computing operations across connected computing devices, executed in a processor of a first computing device, the method comprising: establishing an ad hoc communication connection with a second computing device, wherein the ad hoc communication connection is part of a network of multiple computing devices communicatively connected via multiple ad hoc communication connections; receiving context information of the second computing device via the ad hoc communication connection; selecting at least one sensor computing device from the multiple computing devices; selecting at least one execution computing device from the multiple computing devices; dispatching a data collection portion of a work item to the at least one sensor computing device; and dispatching an execution portion of the work item to the at least one execution computing device.

[0169] Example 2. A method according to Example 1, further comprising determining factors for selecting at least one computing device based on multiple context data of the multiple computing devices, wherein: selecting the at least one sensor computing device includes selecting the at least one sensor computing device using factors determined from the context data of the at least one sensor computing device and the context data of the at least one execution computing device; and selecting the at least one execution computing device includes selecting the at least one execution computing device using factors determined from the context data of the at least one sensor computing device and the context data of the at least one execution computing device.

[0170] Example 3. A method according to Example 2, wherein determining the factors for selecting the at least one computing device based on the multiple context data of the multiple computing devices includes: identifying the accuracy of the result used to execute the work item based on the accuracy of at least one sensor at each of at least two computing devices in the multiple computing devices; identifying the cumulative waiting time for executing the work item by at least one computing device in the multiple computing devices; and identifying the cumulative energy usage for executing the work item by at least one computing device in the multiple computing devices.

[0171] Example 4. A method according to Example 3, wherein selecting at least one sensor computing device using factors determined based on context data of the at least one sensor computing device and context data of the at least one execution computing device includes: selecting at least one sensor computing device based on criteria of: accuracy of results for executing work items, cumulative waiting time for executing work items, and cumulative energy usage for executing work items; and selecting at least one execution computing device using factors determined from context data of at least one sensor computing device and context data of at least one execution computing device includes selecting at least one execution computing device based on criteria of: accuracy of results for executing work items, cumulative waiting time for executing work items, and cumulative energy usage for executing work items.

[0172] Example 5. A method according to Example 4, wherein the criteria for the accuracy of the results of executing the work items, the cumulative waiting time of executing the work items, and the cumulative energy usage of executing the work items are based on weighted values ​​for the accuracy of the results of executing the work items, the cumulative waiting time of executing the work items, and the cumulative energy usage of executing the work items.

[0173] Example 6. A method according to any one of Examples 2 to 5, wherein determining factors for selecting at least one computing device based on multiple context data of multiple computing devices includes: calculating at least one estimate of a data transmission wait time for executing a work item between at least one sensor computing device and at least one execution computing device; calculating at least one estimate of a processing wait time for at least one execution computing device for executing the work item; and calculating at least one estimate of a total wait time for executing the work item based on at least one estimate of the data transmission wait time and at least one estimate of the processing wait time, the method also including selecting at least one computing device having at least one estimate of a total wait time that is at most a threshold wait time for executing the work item.

[0174] Example 7. A method according to any one of Examples 2 to 5, wherein determining factors for selecting at least one computing device based on multiple context data of multiple computing devices includes: calculating at least one estimate of data transmission energy between at least one sensor computing device and at least one execution computing device for executing a work item; calculating at least one estimate of processing energy of at least one execution computing device for executing the work item; and calculating at least one estimate of total energy for executing the work item based on at least one estimate of data transmission energy and at least one estimate of processing energy.

[0175] Example 8. The method of Example 7, further comprising: selecting at least one computing device having at least one estimate of a total energy that is at most a threshold energy for executing the work item.

[0176] Example 9. The method of Example 7, wherein determining a factor for selecting at least one computing device based on a plurality of contextual data for a plurality of computing devices comprises: using at least one estimate of total energy used to execute the work item to estimate a battery level of at least one executing computing device after executing the work item. The method further comprises selecting at least one computing device having at least one estimate of a battery level of at least one executing computing device after executing the work item, the battery level being at least a threshold battery level after executing the work item.

[0177] Example 10. The method of any one of Examples 1 to 9 further includes using sensor accuracy information from context data of at least one sensor computing device to identify at least one sensor of the at least one sensor computing device having at least a threshold sensor accuracy, wherein selecting at least one sensor computing device includes selecting at least one sensor computing device having at least one sensor having at least the threshold sensor accuracy.

[0178] Example 11. A method according to any one of Examples 1 to 10, wherein any or all of the multiple computing devices are wireless computing devices.

[0179] As used in this application, the terms "component", "module", "system", etc. are intended to include computer-related entities configured to perform specific operations or functions, such as but not limited to hardware, firmware, a combination of hardware and software, software, or software in execution. For example, a component can be but not limited to a process, a processor, an object, an executable file, an execution thread, a program, or a computer running on a processor. As an illustration, both applications and computing devices running on a computing device can be referred to as components. One or more components can reside in a process or execution thread, and a component can be located on a processor or core or distributed between two or more processors or cores. In addition, these components can be executed from various non-temporary computer-readable media on which various instructions or data structures are stored. Components can communicate through local or remote processes, function or process calls, electronic signals, data packets, memory read / write, and other known network, computer, processor, or process-related communication methods.

[0180] Many different cellular and mobile communication services and standards are available or expected in the future, all of which can be implemented and benefit from various embodiments. Such services and standards include such as the Third Generation Partnership Project (3GPP), Long Term Evolution (LTE) system, third generation wireless mobile communication technology (3G), fourth generation wireless mobile communication technology (4G), fifth generation wireless mobile communication technology (5G), global system for mobile communications (GSM), universal mobile telecommunications system (UMTS), 3GSM, general packet radio service (GPRS), code division multiple access (CDMA) system (such as cdmaOne, CDMA1020TM), enhanced data rate for GSM evolution (EDGE), advanced mobile phone system (AMPS), digital AMPS (IS-136 / TDMA), evolution data optimized (EV-DO), digital enhanced cordless telecommunications (DECT), world microwave access interoperability (WiMAX), wireless local area network (WLAN), Wi-Fi protected access I and II (WPA, WPA2) and integrated digital enhanced network (iDEN). Each of these technologies involves, for example, the transmission and reception of voice, data, signaling or content messages. It should be understood that any references to terminology or technical details related to individual telecommunication standards or technologies are for illustrative purposes only and are not intended to limit the scope of the claims to that particular communication system or technology unless specifically recited in the claim language.

[0181] The various embodiments shown and described are provided as examples only to illustrate the various features of the claims. However, the features shown and described with respect to any given implementation are not necessarily limited to the associated implementation and may be used or combined with other embodiments shown and described. In addition, the claims are not intended to be limited by any one example implementation. For example, one or more operations of the methods disclosed herein may replace one or more operations of the methods disclosed herein or be combined with one or more operations of the methods disclosed herein.

[0182] As used herein, a phrase referring to "at least one" of a list of items refers to any combination of those items, including single members. As an example, "at least one of a, b, or c" is intended to cover: a, b, c, ab, ac, bc, and abc.

[0183] The various illustrative logics, logic blocks, modules, components, circuits, and algorithmic operations described in conjunction with the embodiments disclosed herein may be implemented as electronic hardware, computer software, or a combination of both. The interchangeability of hardware and software has been generally described in terms of functionality and is illustrated in the various illustrative components, blocks, modules, circuits, and processes described above. Whether such functionality is implemented as hardware or software depends on the specific application and the design constraints imposed on the overall system.

[0184] The hardware and data processing devices for implementing the various illustrative logics, logic blocks, modules and circuits described in conjunction with the aspects disclosed herein can be implemented or executed using a general purpose single-chip or multi-chip processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components or any combination thereof designed to perform the functions described herein. A general purpose processor can be a microprocessor or any conventional processor, controller, microcontroller or state machine. The processor can also be implemented as a combination, such as a combination of a DSP and a microprocessor, a plurality of microprocessors, a combination of one or more microprocessors and a DSP core, or any other such configuration. In some embodiments, specific processes and methods can be performed by circuits specific to a given function.

[0185] In one or more aspects, the functions described may be implemented in hardware, digital electronic circuitry, computer software, firmware (including the structures disclosed in this specification and their structural equivalents), or any combination thereof. Embodiments of the subject matter described in this specification may also be implemented as one or more computer programs, i.e., one or more modules of computer program instructions, encoded on computer storage media for execution by, or to control the operation of, data processing apparatus.

[0186] If implemented in software, the function can be stored as one or more instructions or codes on a computer-readable medium or transmitted through a computer-readable medium. The process of the method or algorithm disclosed herein can be implemented in a processor executable software module that can reside on a computer-readable medium. Computer-readable media includes both computer storage media and communication media, and the communication media includes any media that can be enabled to transfer a computer program from one place to another. The storage medium can be any available medium that can be accessed by a computer. As an example and not a limitation, such a computer-readable medium may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, disk storage or other magnetic storage device, or any other medium that can be used to store the desired program code in the form of an instruction or data structure and can be accessed by a computer. In addition, any connection can be appropriately referred to as a computer-readable medium. As used herein, disks and optical disks include compact disks (CDs), laser optical disks, optical optical disks, digital versatile disks (DVDs), floppy disks and blue-ray disks, wherein disks usually reproduce data magnetically, and optical disks reproduce data optically with lasers. The above combination should also be included in the scope of computer-readable media. Additionally, the operations of a method or algorithm may reside as one or any combination or set of codes and instructions on a machine-readable medium or computer-readable medium, which may be incorporated into a computer program product.

[0187] Various modifications to the embodiments described in this disclosure will be apparent to those skilled in the art, and the general principles defined herein may be applied to other embodiments without departing from the spirit or scope of the disclosure. Therefore, the claims are not intended to be limited to the embodiments shown herein, but should be consistent with the broadest scope consistent with the present invention, the principles and novel features disclosed herein.

[0188] In addition, those skilled in the art will readily appreciate that the terms "upper" and "lower" are sometimes used for ease of describing the drawings and indicate relative positions corresponding to the orientation of the drawings on a properly oriented page and may not reflect the proper orientation of any device implemented.

[0189] Certain features described in this specification in the context of separate embodiments may also be implemented in combination in a single implementation. Conversely, various features described in the context of a single implementation may also be implemented in multiple embodiments individually or in any suitable subcombination. In addition, although features may be described above as functioning in certain combinations and even initially claimed as such, one or more features from a claimed combination may in some cases be deleted from the combination, and a claimed combination may be directed to a subcombination or variations of a subcombination.

[0190] Similarly, although operations are depicted in a particular order in the accompanying drawings, this should not be understood as requiring the specific order shown or to perform these operations in sequence, or to perform all the operations shown, to achieve the desired result. In addition, the accompanying drawings can schematically depict more example processes in the form of a flow chart. However, other operations not depicted can be incorporated into the schematically illustrated example process. For example, one or more additional operations can be performed before, after, simultaneously or between any of the illustrated operations. In some cases, multitasking and parallel processing may be advantageous. In addition, the separation of various system components in the above-described embodiments should not be understood as requiring such separation in all embodiments, and it should be understood that the described program components and systems can generally be integrated together in a single software product or encapsulated in multiple software products. In addition, other embodiments are within the scope of the appended claims. In some cases, the actions recorded in the claims can be performed in different orders and still achieve the desired result.

Claims

1. A computing device, comprising: a transceiver configured to support an ad hoc communication connection with a plurality of computing devices forming a network; as well as a processor coupled to the transceiver and configured to: establishing an ad hoc communication connection with at least one computing device of the plurality of computing devices within the network; receiving contextual information from the at least one computing device of the plurality of computing devices via the ad hoc communication connection; selecting at least one sensor computing device from the plurality of computing devices; selecting at least one execution computing device from among the plurality of computing devices; dispatching a data collection portion of the work item to the at least one sensor computing device; as well as An execution portion of the work item is dispatched to the at least one execution computing device.

2. The computing device of claim 1, wherein: The processor is further configured to: determining factors for selecting at least one computing device based on a plurality of contextual data of the plurality of computing devices; selecting the at least one sensor computing device by selecting the at least one sensor computing device using factors determined from contextual data of the at least one sensor computing device and contextual data of the at least one execution computing device; as well as The at least one execution computing device is selected by selecting the at least one execution computing device using factors determined from the context data of the at least one sensor computing device and the context data of the at least one execution computing device.

3. The computing device of claim 2, wherein: The processor is further configured to determine the factor for selecting the at least one computing device based on the plurality of contextual data of the plurality of computing devices by: identifying an accuracy of a result for performing the work item based on an accuracy of at least one sensor at each of at least two computing devices of the plurality of computing devices; identifying a cumulative wait time for execution of the work item by at least one computing device of the plurality of computing devices; as well as A cumulative energy usage for execution of the work item by at least one computing device of the plurality of computing devices is identified.

4. The computing device of claim 3, wherein: The processor is further configured to: selecting the at least one sensor computing device using factors determined from the context data of the at least one sensor computing device and the context data of the at least one executing computing device by selecting the at least one sensor computing device based on criteria of accuracy of a result for executing the work item, cumulative wait time for executing the work item, and cumulative energy usage for executing the work item; as well as The at least one execution computing device is selected by selecting the at least one execution computing device based on criteria such as accuracy of a result for executing the work item, cumulative wait time for executing the work item, and cumulative energy usage for executing the work item, using factors determined from the context data of the at least one sensor computing device and the context data of the at least one execution computing device.

5. The computing device of claim 4, wherein: The criteria for the accuracy of the result for executing the work item, the cumulative wait time for executing the work item, and the cumulative energy usage for executing the work item are based on weighted values ​​of the accuracy of the result for executing the work item, the cumulative wait time for executing the work item, and the cumulative energy usage for executing the work item.

6. The computing device of claim 2, wherein: The processor is further configured to determine the factor for selecting the at least one computing device based on the plurality of contextual data of the plurality of computing devices by: calculating at least one estimate of latency of data transmission between the at least one sensor computing device and the at least one execution computing device for executing the work item; calculating at least one estimate of processing latency of the at least one execution computing device for executing the work item; as well as calculating at least one estimate of a total latency for executing the work item based on the at least one estimate of the data transfer latency and the at least one estimate of the processing latency, and Wherein the processor is further configured to select the at least one computing device for which at least one estimate of the total latency is at most a threshold latency for executing the work item.

7. The computing device of claim 2, wherein: The processor is further configured to determine the factor for selecting the at least one computing device based on the plurality of contextual data of the plurality of computing devices by: computing at least one estimate of data transfer energy between the at least one sensor computing device and the at least one execution computing device for executing the work item; calculating at least one estimate of processing energy of the at least one execution computing device for executing the work item; as well as At least one estimate of total energy for executing the work item is calculated based on the at least one estimate of the data transfer energy and the at least one estimate of the processing energy.

8. The computing device of claim 7, wherein: The processor is further configured to select the at least one computing device for which the at least one estimate of the total energy is at most a threshold energy for executing the work item.

9. The computing device of claim 7, wherein: The processor is further configured to: determining the factor for selecting the at least one computing device based on the plurality of contextual data for the plurality of computing devices by estimating a battery level of the at least one executing computing device after executing the work item using the at least one estimate of the total energy used to execute the work item; as well as The at least one computing device is selected to have at least one estimate of the battery level of the at least one executing computing device after executing the work item, the battery level being at least a threshold battery level after executing the work item.

10. The computing device of claim 1, wherein: The processor is further configured to: identifying at least one sensor of the at least one sensor computing device having at least a threshold sensor accuracy using sensor accuracy information of the context data from the at least one sensor computing device; as well as The at least one sensor computing device is selected that has the at least one sensor having at least the threshold sensor accuracy.

11. A method for distributing computing operations across connected computing devices, the method being performed in a processor of a first computing device, the method comprising: establishing an ad hoc communication connection with a second computing device, wherein the ad hoc communication connection is part of a network of a plurality of computing devices communicatively connected via a plurality of ad hoc communication connections; receiving context information of the second computing device via the ad hoc communication connection; selecting at least one sensor computing device from the plurality of computing devices; selecting at least one execution computing device from among the plurality of computing devices; dispatching a data collection portion of the work item to the at least one sensor computing device; and An execution portion of the work item is dispatched to the at least one execution computing device.

12. The method of claim 11 , further comprising determining a factor for selecting at least one computing device based on a plurality of contextual data of the plurality of computing devices, in: selecting the at least one sensor computing device comprises selecting the at least one sensor computing device using factors determined from contextual data of the at least one sensor computing device and contextual data of the at least one execution computing device; as well as Selecting the at least one execution computing device includes selecting the at least one execution computing device using factors determined from context data of the at least one sensor computing device and context data of the at least one execution computing device.

13. The method according to claim 12, wherein: Determining the factor for selecting the at least one computing device based on the plurality of contextual data of the plurality of computing devices comprises: identifying an accuracy of a result for performing the work item based on an accuracy of at least one sensor at each of at least two computing devices of the plurality of computing devices; identifying a cumulative wait time for execution of the work item by at least one computing device of the plurality of computing devices; and A cumulative energy usage for execution of the work item by at least one computing device of the plurality of computing devices is identified.

14. The method according to claim 13, wherein: Selecting the at least one sensor computing device using the factors determined from the context data of the at least one sensor computing device and the context data of the at least one execution computing device comprises: selecting the at least one sensor computing device based on criteria of accuracy of a result for executing the work item, the cumulative wait time for executing the work item, and the cumulative energy usage for executing the work item; and Selecting the at least one execution computing device using the factors determined from the context data of the at least one sensor computing device and the context data of the at least one execution computing device includes: selecting the at least one execution computing device based on criteria of accuracy of results for executing the work item, the cumulative wait time for executing the work item, and the cumulative energy usage for executing the work item.

15. The method according to claim 14, wherein: The criteria for the accuracy of the result for executing the work item, the cumulative wait time for executing the work item, and the cumulative energy usage for executing the work item are based on weighted values ​​of the accuracy of the result for executing the work item, the cumulative wait time for executing the work item, and the cumulative energy usage for executing the work item.

16. The method according to claim 12, wherein: Determining the factor for selecting the at least one computing device based on the plurality of contextual data of the plurality of computing devices comprises: calculating at least one estimate of latency of data transmission between the at least one sensor computing device and the at least one execution computing device for executing the work item; calculating at least one estimate of processing latency of the at least one execution computing device for executing the work item; and calculating at least one estimate of a total latency for executing the work item based on the at least one estimate of the data transfer latency and the at least one estimate of the processing latency, The method also includes selecting the at least one computing device for which at least one estimate of the total latency is at most a threshold latency for executing the work item.

17. The method according to claim 12, wherein: Determining the factor for selecting the at least one computing device based on the plurality of contextual data of the plurality of computing devices comprises: computing at least one estimate of data transfer energy between the at least one sensor computing device and the at least one execution computing device for executing the work item; calculating at least one estimate of processing energy of the at least one execution computing device for executing the work item; and At least one estimate of total energy for executing the work item is calculated based on the at least one estimate of the data transfer energy and the at least one estimate of the processing energy.

18. The method of claim 17, further comprising selecting the at least one computing device for which the at least one estimate of the total energy is at most a threshold energy for executing the work item.

19. The method according to claim 17, wherein: determining the factor for selecting the at least one computing device based on the plurality of contextual data for the plurality of computing devices comprises: using the at least one estimate of the total energy used to execute the work item to estimate a battery level of the at least one executing computing device after executing the work item, The method also includes selecting the at least one computing device having at least one estimate of the battery level of the at least one executing computing device after executing the work item, the battery level being at least a threshold battery level after executing the work item.

20. The method of claim 11, further comprising using sensor accuracy information of the context data from the at least one sensor computing device to identify at least one sensor of the at least one sensor computing device having at least a threshold sensor accuracy, wherein Selecting the at least one sensor computing device includes selecting the at least one sensor computing device having the at least one sensor having at least the threshold sensor accuracy.

21. A computing device comprising: means for establishing an ad hoc communication connection with at least one computing device of a plurality of computing devices within a network; means for receiving contextual information for said at least one computing device of said plurality of computing devices via said ad hoc communication connection; means for selecting at least one sensor computing device from the plurality of computing devices; means for selecting at least one execution computing device from among the plurality of computing devices; means for dispatching a data collection portion of the work item to the at least one sensor computing device; as well as Means for dispatching the execution portion of the work item to the at least one execution computing device.

22. The computing device of claim 21 , further comprising means for determining factors for selecting at least one computing device based on a plurality of contextual data of the plurality of computing devices, in: means for selecting the at least one sensor computing device comprises means for selecting the at least one sensor computing device using factors determined from contextual data of the at least one sensor computing device and contextual data of the at least one execution computing device; as well as The means for selecting the at least one executing computing device includes means for selecting the at least one executing computing device using factors determined from contextual data of the at least one sensor computing device and contextual data of the at least one executing computing device.

23. The computing device of claim 22, wherein: The means for determining the factor for selecting the at least one computing device based on the plurality of contextual data of the plurality of computing devices comprises: means for identifying an accuracy of a result for executing the work item based on an accuracy of at least one sensor at each of at least two computing devices of the plurality of computing devices; means for identifying a cumulative wait time for execution of the work item by at least one computing device of the plurality of computing devices; and Means for identifying cumulative energy usage of executing the work item by at least one computing device among the plurality of computing devices.

24. The computing device of claim 23, wherein: The means for selecting the at least one sensory computing device using the factors determined from the contextual data of the at least one sensor computing device and the contextual data of the at least one execution computing device comprises: means for selecting the at least one sensor computing device based on criteria for accuracy of a result for executing the work item, the accumulated wait time for executing the work item, and the accumulated energy usage for executing the work item; and The component for selecting the at least one execution computing device using the factors determined from the context data of the at least one sensor computing device and the context data of the at least one execution computing device includes: a component for selecting the at least one execution computing device based on the accuracy of the result for executing the work item, the cumulative waiting time for executing the work item, and the cumulative energy usage for executing the work item.

25. The computing device of claim 24, wherein: The criteria for the accuracy of the result for executing the work item, the cumulative waiting time for executing the work item, and the cumulative energy usage for executing the work item are based on weighted values ​​of the accuracy of the result for executing the work item, the cumulative time for executing the work item, and the cumulative energy usage for executing the work item.

26. The computing device of claim 22, wherein: The means for determining the factor for selecting the at least one computing device based on the plurality of contextual data of the plurality of computing devices comprises: means for calculating at least one estimate of latency of data transmission between the at least one sensor computing device and the at least one execution computing device for executing the work item; means for calculating at least one estimate of processing latency of said at least one executing computing device for executing said work item; and means for calculating at least one estimate of a total latency for executing the work item based on the at least one estimate of the data transfer latency and the at least one estimate of the processing latency, and Wherein the computing device further comprises at least one computing device component for selecting at least one estimate of the total latency to be at most a threshold latency for executing the work item.

27. The computing device of claim 22, wherein: The means for determining the factor for selecting the at least one computing device based on the plurality of contextual data of the plurality of computing devices comprises: means for computing at least one estimate of data transfer energy between the at least one sensor computing device and the at least one execution computing device for executing the work item; means for calculating at least one estimate of processing energy of the at least one executing computing device for executing the work item; and means for calculating at least one estimate of total energy for executing the work item based on the at least one estimate of the data transfer energy and the at least one estimate of the processing energy, and Wherein the computing device further comprises means for selecting the at least one computing device wherein the at least one estimate of the total energy is at most a threshold energy for executing the work item.

28. The computing device of claim 27, wherein: The means for determining the factor for selecting the at least one computing device based on the plurality of contextual data for the plurality of computing devices comprises: means for estimating a battery level of the at least one executing computing device after executing the work item using the at least one estimate of the total energy used to execute the work item; The computing device also includes means for selecting the at least one computing device having at least one estimate of a battery level of the at least one executing computing device after executing the work item, the battery level being at least a threshold battery level after executing the work item.

29. The computing device of claim 21, further comprising means for identifying at least one sensor in at least one sensor computing device having at least a threshold sensor accuracy using sensor accuracy information of the context data from the at least one sensor computing device, Wherein the means for selecting the at least one sensor computing device comprises means for selecting the at least one sensor computing device having the at least one sensor having at least the threshold sensor accuracy.

30. A non-transitory processor-readable medium having stored thereon processor-executable instructions configured to cause a computing device processor to perform operations comprising: establishing an ad hoc communication connection with at least one computing device among a plurality of computing devices within the network; receiving context information for the at least one computing device among the plurality of computing devices via the ad hoc communication connection; selecting at least one sensor computing device from the plurality of computing devices; selecting at least one execution computing device from among the plurality of computing devices; dispatching a data collection portion of the work item to the at least one sensor computing device; as well as An execution portion of the work item is dispatched to the at least one execution computing device.