Method and device for distributed computing of mobile network

By introducing job finder, job worker and computing manager in the mobile network, dynamically allocating job tasks and network resources, the problems of high communication costs and limited equipment resources when executing machine learning jobs in the mobile network are solved, and efficient and low-cost job execution is achieved.

CN119790380APending Publication Date: 2025-04-08TELEFONAKTIEBOLAGET LM ERICSSON (PUBL)
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202280099482.3
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2022-08-26
Publication Date
2025-04-08

AI Technical Summary

Technical Problem

When performing machine learning operations in mobile networks, there are problems such as high communication costs, large data exchange amount and limited equipment resources, making it difficult to efficiently perform distributed computing tasks.

Method used

By introducing three roles: Job Finder, Job Worker and Computing Manager in the mobile network, dynamically allocate job tasks and network resources to optimize the job execution process. The specific steps include receiving job requests, obtaining resource information of the job worker, determining job assignment based on job requirements and network conditions, adjusting network resource allocation, executing jobs and aggregating results.

Benefits of technology

It effectively reduces the amount of data exchange with the cloud, improves job execution efficiency, optimizes equipment resource utilization, and reduces communication costs.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119790380A_ABST
    Figure CN119790380A_ABST
Patent Text Reader

Abstract

A method performed by a compute manager in a mobile network is disclosed. The method includes: receiving, from a job seeker, a request to perform a job in a mobile network; determining an assignment of a job portion to the one or more job workers based on requirements of the job, information about resources that the plurality of job workers are willing to make available for execution of the job, information about network conditions of the mobile telecommunications network, and information about network resources allocated to the job workers; altering a network resource allocation for at least one of the one or more job workers; providing a work portion assignment to one or more work workers according to the determined assignment; aggregating a portion of the job execution results received from the one or more job workers to generate a complete job execution result; and providing a complete job execution result to the job finder.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Embodiments of the present invention relate to the field of distributed computing; and more particularly, to distributed computing in mobile networks. Background Art

[0002] Machine learning (ML) is a field of study devoted to understanding and building methods for "learning" to improve performance on a set of tasks. It is considered a form of artificial intelligence. ML algorithms build models based on sample data (also called training data) that can be used to make predictions or decisions without being explicitly programmed to do so. ML algorithms are used for a variety of tasks, such as email filtering, speech recognition, and other tasks where it is difficult or impossible to develop conventional algorithms to perform these tasks.

[0003] ML algorithms typically require a large amount of computing and storage resources in order to execute. Therefore, ML algorithms are typically executed in the cloud. Cloud computing is the on-demand delivery of information technology (IT) resources over the Internet, with pay-as-you-go pricing. Instead of purchasing, owning, and maintaining physical data centers and servers, users can obtain IT resources such as computing power, storage, and databases from cloud providers (such as Amazon's Amazon Web Services (AWS)) as needed. Cloud computing requires accumulating data in the cloud that may be generated and collected by multiple different distributed devices (e.g., Internet of Things (IoT) devices), and the cloud is typically far away from both the data source and the end user who builds the model. Therefore, there are challenges in terms of communication costs (e.g., network latency and congestion) incurred by exchanging data and models with the cloud.

[0004] To address the above challenges, edge and fog computing paradigms have been proposed, which aim to bring IT resources closer to end users to help reduce communication overhead. Edge computing is a distributed computing paradigm that brings computing resources and storage resources closer to data sources. Edge computing can utilize available computing resources and / or storage resources closer to the edge of the communication network (e.g., closer to end-user devices (e.g., user equipment (UE)) of a mobile network).

[0005] Fog computing is a distributed computing paradigm that uses edge devices (e.g., UEs of mobile networks) to perform large amounts of computation. Fog computing can extend edge computing by leveraging the increasing amount of computing and storage resources available in the end-user devices themselves. Fog computing can be used to reduce the amount of data exchanged with the cloud. For example, in ML, the use of the federated learning paradigm has become increasingly popular because it makes it possible to train models in a distributed manner, which avoids / reduces data exchange with the cloud. With this paradigm, end-user devices perform computing tasks (also known as jobs) by leveraging local data that they generate and / or collect. The local job results (rather than the data itself) are then sent to a central server, which aggregates the local job results to derive global job results (e.g., ML models).

[0006] Compared to cloud computing, edge / fog computing usually requires more devices to participate in job execution, where each device is expected to have fewer resources compared to dedicated cloud platforms (e.g., supercomputers). In addition, different devices participating in job execution are expected to have different computing / storage capabilities as well as heterogeneous and dynamic communication conditions (e.g., when mobile devices participate in job execution).

[0007] Swarm computing is a computing paradigm that distributes computing tasks among remote computing devices across a public network. Conventional over-the-top (OTT) swarm computing solutions distribute computing tasks among computing devices under constraints set by the computing devices. For example, a swarm computing solution for cryptocurrency mining may consider the amount of computing resources and connection speed provided by each computing device when deciding how to distribute computing tasks among computing devices. Summary of the invention

[0008] A method for executing a job in a mobile network performed by one or more computing devices in a mobile network is disclosed herein. The method includes: receiving a request to execute the job in the mobile network from a job seeker; obtaining, for each of a plurality of job workers that are part of the mobile telecommunication network, information about resources that the job worker is willing to make available for job execution; determining an assignment of a job portion to one or more of the plurality of job workers based on the requirements of the job, the information about the resources that the plurality of job workers are willing to make available for job execution, information about network conditions of the mobile telecommunication network, and information about network resources allocated to the job workers in the mobile network; changing the allocation of network resources for at least one of the one or more job workers; providing a job portion assignment to the one or more job workers according to the determined assignment; receiving a partial job execution result generated by the one or more job workers; aggregating the partial job execution results to generate a complete job execution result; and providing the complete job execution result to the job seeker.

[0009] Disclosed herein is a non-transitory machine-readable storage medium providing instructions that, when executed by one or more processors of one or more computing devices in a mobile network, cause the one or more computing devices to perform operations for executing a job in the mobile network. The operations include: receiving a request to execute a job in the mobile network from a job finder; obtaining, for each of a plurality of job workers that are part of the mobile telecommunications network, information about resources that the job worker is willing to make available for job execution; determining an assignment of a job portion to one or more of the plurality of job workers based on the requirements of the job, the information about resources that the plurality of job workers are willing to make available for job execution, information about network conditions of the mobile network, and information about network resources allocated to the job workers in the mobile network; changing a network resource allocation for at least one of the one or more job workers; providing a job portion assignment to the one or more job workers based on the determined assignment; receiving a partial job execution result generated by the one or more job workers; aggregating the partial job execution results to generate a complete job execution result; and providing the complete job execution result to the job finder. BRIEF DESCRIPTION OF THE DRAWINGS

[0010] The present invention may be best understood by referring to the following description and accompanying drawings which are used to illustrate embodiments of the invention. In the drawings:

[0011] Figure 1 is a diagram of an environment in which jobs may be performed in a communication network according to some embodiments;

[0012] Figure 2 is a diagram of a mobile network environment in which a job may be executed, wherein a job finder is part of the mobile network, according to some embodiments;

[0013] Figure 3 is a diagram of a mobile network environment in which a job may be executed, wherein a job finder is external to the mobile network, and wherein both mobile devices and non-mobile devices in the mobile network participate in the job execution, according to some embodiments;

[0014] Figure 4 is a flow chart of a method for performing a job in a communication network according to some embodiments;

[0015] Figure 5 is a flow chart of a method for executing a job in a mobile network performed by one or more computing devices implementing a compute manager according to some embodiments;

[0016] Figure 6 An example of a communication system according to some embodiments is shown;

[0017] Figure 7 illustrates a user equipment (UE) according to some embodiments;

[0018] Figure 8 shows a network node according to some embodiments;

[0019] Fig. 9 is a diagram of a host according to some embodiments;

[0020] Fig.10 is a diagram illustrating a virtualization environment in which functionality implemented by some embodiments may be virtualized. DETAILED DESCRIPTION

[0021] The following description describes a method and apparatus for performing operations in a communication network. In the following description, many specific details, such as logic implementation, operation codes, means for specifying operands, resource partitioning / sharing / replication implementation, types and interrelationships of system components, and logic partitioning / integration selection are set forth to provide a more thorough understanding of the present invention. However, those skilled in the art will appreciate that the present invention can be practiced without such specific details. In other cases, control structures, gate-level circuits, and complete software instruction sequences are not shown in detail so as not to obscure the present invention. With the included description, those of ordinary skill in the art will be able to implement appropriate functionality without excessive experimentation.

[0022] References in this specification to "one embodiment," "an embodiment," "an example embodiment," etc. indicate that the described embodiment may include a particular feature, structure, or characteristic, but not every embodiment necessarily includes the particular feature, structure, or characteristic. Furthermore, such phrases do not necessarily refer to the same embodiment. Furthermore, when a particular feature, structure, or characteristic is described in conjunction with an embodiment, it is considered that it is well known to those skilled in the art to implement such feature, structure, or characteristic in conjunction with other embodiments (whether explicitly described or not).

[0023] Square bracketed text and boxes with dashed borders (e.g., large dashed lines, small dashed lines, dot-dashed lines, and dots) may be used herein to illustrate optional operations that add additional features to embodiments of the present invention. However, such notation should not be taken to mean that these text and boxes are the only options or optional operations, and / or should not be taken to mean that boxes with solid borders are not optional in a particular embodiment of the present invention.

[0024] In the following description and claims, the terms "coupled" and "connected" and their derivatives may be used. It should be understood that these terms are not intended to be synonymous with each other. "Coupled" is used to indicate that two or more elements (which may or may not be in direct physical or electrical contact with each other) cooperate or interact with each other. "Connected" is used to indicate that communication is established between two or more elements that are coupled to each other.

[0025] Electronic devices use machine-readable media (also referred to as computer-readable media) to store and transmit (internally and / or over a network with other electronic devices) code (which consists of software instructions and is sometimes referred to as computer program code or computer programs) and / or data, including, for example, machine-readable storage media (e.g., magnetic disks, optical disks, solid-state drives, read-only memories (ROMs), flash memory devices, phase-change memories) and machine-readable transmission media (also referred to as carriers) (e.g., electrical, optical, radio, acoustic or other forms of propagated signals, such as carrier waves, infrared signals). Thus, an electronic device (e.g., a computer) includes hardware and software, such as a set of one or more processors (e.g., where the processor is a microprocessor, controller, microcontroller, central processing unit, digital signal processor, application specific integrated circuit, field programmable gate array, other electronic circuit, a combination of one or more of the foregoing) coupled to one or more machine-readable storage media to store code for execution on the set of processors and / or store data. For example, an electronic device may include a non-volatile memory containing code, because the non-volatile memory can retain the code / data even when the electronic device is turned off (when the power is off), and when the electronic device is turned on, the portion of the code to be executed by the processor of the electronic device is usually copied from the slower non-volatile memory to the volatile memory (e.g., dynamic random access memory (DRAM), static random access memory (SRAM)) of the electronic device. Typical electronic devices also include a set of one or more physical network interfaces (NI) to establish a network connection with other electronic devices (to use propagation signals to send and / or receive code and / or data). For example, the set of physical NIs (or the set of physical NIs in combination with the set of processors that execute the code) can perform any formatting, encoding, or conversion to allow the electronic device to send and receive data (whether through wired and / or wireless connections). In some embodiments, the physical NI may include a radio circuit that is capable of receiving data from other electronic devices via a wireless connection and / or sending data to other devices via a wireless connection. The radio circuit may include a transmitter, a receiver, and / or a transceiver suitable for radio frequency communication. The radio circuit can convert the digital data into a radio signal with appropriate parameters (e.g., frequency, timing, channel, bandwidth, etc.). The radio signal can then be sent to an appropriate receiver via an antenna. In some embodiments, the group of physical NIs may include a network interface controller (NIC), also known as a network interface card, a network adapter, or a local area network (LAN) adapter. The NIC can facilitate connecting electronic devices to other electronic devices, allowing them to communicate via wires by plugging a cable into a physical port connected to the NIC. One or more parts of the embodiments of the present invention can be implemented using different combinations of software, firmware, and / or hardware.

[0026] A network device (ND) is an electronic device that communicatively interconnects other electronic devices on a network (e.g., other network devices, end-user devices). Some network devices are "multi-service network devices" that provide support for multiple networking functions (e.g., routing, bridging, switching, Layer 2 aggregation, session border control, quality of service, and / or user management), and / or provide support for multiple application services (e.g., data, voice, and video).

[0027] As described above, conventional over-the-top (OTT) swarm computing solutions distribute computing tasks among computing devices under constraints set by the computing devices. For example, a swarm computing solution for cryptocurrency mining may consider the amount of computing resources and connection speed provided by each computing device when deciding how to distribute computing tasks among computing devices. However, conventional swarm computing solutions do not have access to detailed information about the computing devices or the underlying communication network, and do not have the ability to influence the connection speeds available to the computing devices.

[0028] Embodiments disclosed herein are based on the recognition that a communication network (e.g., a mobile network, such as a fifth generation (5G) mobile network managed by a mobile network operator (MNO)) can serve as a foundation upon which a distributed computing platform with vast computing / storage resources that are typically unused can be instantiated. Communication networks typically have a large amount of unused computing power (e.g., in end-user devices of the communication network and / or in the infrastructure of the communication network).

[0029] A framework is disclosed herein that allows network operators to utilize the large amount of unused computing power available in their communication networks (e.g., in end-user devices and / or other devices that implement the infrastructure of the communication network) to perform jobs. In one embodiment, the framework includes three roles: a job finder, a job worker, and a computing manager. A job finder is a network entity that submits a request for a job to be performed in a communication network. A job finder can be a network entity that is part of a communication network, or a network entity outside the communication network. A job worker is a network entity that is willing to participate in the execution of a job as part of a communication network. A job worker can include an end-user device (e.g., a smart phone, a tablet computer, a laptop computer, etc.) and / or a device that implements the infrastructure of a communication network (e.g., a device that implements a RAN or a mobile network core). A computing manager is a network entity that is part of a communication network that accepts requests from a job finder for jobs to be performed in a communication network, and manages the execution of these jobs in the communication network. Advantageously, a computing manager can obtain detailed information about the communication network and has the ability to control the allocation of network resources in the communication network, and can utilize such information / capabilities to optimize the execution of jobs in the communication network.

[0030] According to some embodiments, the job workers provide (or "announce") information about the resources they are willing to make available for job execution to the compute manager. The job finder may send a request to the compute manager to execute the job in the communication network. In response to receiving the request from the job finder, the compute manager may divide the job into job parts and determine the assignment of the job parts to one or more job workers. The compute manager may divide the job and determine the assignment of the job parts based on the requirements of the job (e.g., the maximum allowed delay for completing the job as specified by the job finder), information about the resources that the job workers are willing to make available for job execution (e.g., the information is announced by the job workers), information about the network conditions of the mobile network, and information about the network resources allocated to the job workers in the mobile network. The compute manager may determine the assignment of the job parts in a manner that optimizes the objective function. The compute manager may change the network resource allocation for some of the one or more job workers to help optimize the job execution. Once the compute manager determines the assignment of the job parts to one or more job workers, the compute manager may provide the job part assignments to the one or more job workers according to the determined assignments. The compute manager can provide data to the job workers for the job or job parts to operate on. The job workers can execute the corresponding job parts assigned to them to generate partial execution results. The job workers can then provide their corresponding partial execution results to the compute manager. The compute manager can aggregate the partial execution results to generate a complete execution result and provide the complete execution result to the job finder.

[0031] Compared to conventional OTT group computing solutions, a technical advantage of the embodiments described herein is that the computing manager has detailed information about the network conditions of the underlying communication network and has the ability to change the allocation of network resources for specific job workers. Therefore, the computing manager can utilize such information and / or capabilities when determining how to assign job portions to job workers in a manner that optimizes job execution. For example, the computing manager can allocate additional bandwidth to a subset of job workers (which provides fewer computing resources than other job workers participating in job execution) to help reduce latency. This type of balancing can help avoid scenarios where a particular job worker becomes a bottleneck for job execution (e.g., due to having fewer computing resources and / or fewer network resources). Conventional OTT group computing solutions cannot achieve such a balance because they cannot obtain detailed information about the underlying communication network and cannot control how network resources are allocated in the underlying communication network.

[0032] In an example use case, a network operator of a communication network can use the embodiments described herein to provide additional services that can be monetized. For example, a mobile network operator (MNO) of a mobile network can provide a service to perform jobs in the mobile network on behalf of a job finder. The owner / operator of the job finder can compensate the MNO for performing jobs in the mobile network on behalf of the job finder. In addition, the MNO can compensate the owner / operator of a job worker in the mobile network (e.g., a user equipment (UE) connected to the mobile network) that participates in (or provides participation in) the job execution. The embodiments will be further described below with reference to the accompanying drawings.

[0033] Figure 1 1 is a diagram of an environment in which jobs can be executed in a communication network according to some embodiments. As shown in the figure, the environment includes a job finder 110 and a communication network 100. In one embodiment, the communication network 100 is a mobile network (e.g., a fifth generation (5G) mobile network or a fourth generation (4G) long term evolution (LTE) mobile network). The communication network 100 includes a compute manager 120 and a job worker 130. The compute manager 120 and the job worker 130 can be viewed as forming a compute architecture 140 that can execute jobs on behalf of the job finder 110. The communication network 100 may include additional network entities not shown in the figure.

[0034] The job finder 110 is a network entity that has a job to be executed. By way of example, the figure shows the job finder 110 as being external to the communication network 100. However, the job finder 110 may be part of the communication network 100 (e.g., an end-user device of the communication network 100). Furthermore, while the figure shows a single job finder 110 for purposes of illustration, it should be understood that more than one job finder 110 may be present. The job finder 110 may send a request to the compute manager 120 to execute a job in the communication network 100. The job may require a predetermined number of computations (e.g., measured in terms of the number of floating point operations (FLOPs)) operating on a given size of data (e.g., measured in bytes). The request may include information about the requirements of the job, such as the number of computations required to complete the job, the size of the data to be operated on by the job, and / or the maximum delay to complete execution of the job. In one embodiment, the owner / operator of the job finder 110 compensates the owner / operator of the communication network (network operator) for performing jobs submitted by the job finder 110 (e.g., according to a formal agreement established between the owner / operator of the job finder 110 and the network operator).

[0035] The job workers 130 are network entities that are part of the communication network and are willing to participate in job execution on behalf of the job finder 110. The job workers 130 may include end-user devices of the communication network 100 (e.g., smart phones, tablets, laptops, etc.) and / or devices that implement the infrastructure of the communication network 100 (e.g., devices that implement the RAN, mobile network core, etc.). The job workers 130 may provide information to the compute manager 120 about the resources (e.g., computing resources, memory resources, storage resources, etc.) that they are willing to make available for job execution (this may be referred to as an announcement). For example, the job workers 130 may provide the following information to the compute manager 120: the job workers 130 are willing to make one TFLOPS (trillion floating point operations per second) of computing resources, 1GB (gigabyte) of memory resources, and 1GB of storage resources available for the next hour of job execution. In one embodiment, the network operator compensates the owner / operator of the job worker 130 for his willingness to participate in the job execution and / or for his actual participation in the job execution, such as in the form of monetary compensation (e.g., a discount on an upcoming bill and / or exclusive / better use of the communication network 100 (e.g., higher peak throughput and / or better coverage)) or other types of rewards that incentivize participation in the job execution. In general, any computing device that is part of the communication network and has resources available for job execution can be used as a job worker 130.

[0036] The compute manager 120 is a network entity that manages job execution in the communication network 100 as part of the communication network 100. The compute manager 120 may receive a request from the job finder 110 to execute a job in the communication network 100. In response to receiving the request, the compute manager 120 may divide the job into job parts and determine the assignment of the job parts to the job workers 130 to meet the job requirements and minimize the objective function. The objective function may be selected by the compute manager 120 or the job finder 110. In one embodiment, the objective is to minimize the time / delay required to complete the job execution or to transmit the job execution results to the job finder 110. The compute manager 120 may decide to assign the job parts to all job workers 130 or only to a subset of the job workers 130. In one embodiment, the compute manager 120 determines the assignment of job parts to job workers 130 based on: a) job characteristics / requirements (e.g., the amount of computing resources required to complete the job and the maximum allowable delay to complete the job execution); b) information about the resources (e.g., computing resources, memory resources, storage resources, etc.) that the job workers 130 are willing to make available for job execution (e.g., this information is advertised by the job workers 130); c) information about network conditions of the communication network 100 (e.g., current network conditions and / or predicted future network conditions); and d) information about network resources allocated to the job workers 130. The compute manager 120 can also change the allocation of network resources for one or more job workers 130 to help optimize job execution. Once the compute manager 120 determines how to assign job parts to job workers 130, the compute manager 120 can provide job part assignments to the job workers 130 according to the determined assignments.

[0037] It should be noted that the computing manager 120 may be a network entity in the communication network that has detailed information about the network conditions of the communication network and is able to change the allocation of network resources within the communication network. The computing manager 120 may utilize this information and / or capabilities to optimize job execution. For example, the computing manager 120 may estimate the network capacity that each job worker 130 can reach if additional unused network resources (e.g., radio resources and / or non-radio resources) of the communication network are assigned. The maximum network capacity of the job worker 130 may depend on both the propagation conditions experienced by the job worker 130 and the instantaneous network traffic (congestion) in the area where the job worker 130 is located. In addition to the network resources currently allocated to the job worker 130, the congestion level in the area also determines the available network resources (e.g., bandwidth) that can be allocated to the job worker 130. The computing manager 120 may utilize information about the congestion levels in different areas of the communication network 100 at any given time to estimate the network capacity that each job worker 130 can reach if additional unused network resources are allocated. It should be noted that such network resources would remain unused if not allocated to a job worker 130. Therefore, allocating them to a job worker 130 will not negatively impact end-user devices of the communication network 100 that are not involved in job execution. In general, a job worker 130 in a non-congested area can be allocated more network resources than a job worker 130 in a congested area, thereby potentially reaching a higher maximum network capacity than the latter. It should be noted that conventional OTT crowd computing solutions do not have detailed knowledge of the network conditions of the underlying communication network 100 and do not have the ability to control the allocation of network resources in the communication network 100. Therefore, they are unable to utilize such information and capabilities to optimize job execution.

[0038] An example flow of operations for executing a job in a communication network will now be described with reference to the figures illustrating an embodiment. The flow may begin with the job finder 110 sending a request to the compute manager 120 to execute a job in the communication network 100 (shown in the figure as a "request to execute a job"). The request may include information about the computing resources required to execute the job, information about the amount of storage resources required to execute the job, and information about the expected / maximum delay to complete the execution of the job. In one embodiment, the compute manager 120 sends a confirmation message to the job finder 110 indicating that the request has been received.

[0039] Each job worker 130 may provide information (not shown) to the compute manager 120 regarding resources that the job worker 130 is willing to make available for job execution. The information provided by the job worker 130 may include information regarding the amount of computing resources (e.g., central processing unit (CPU)) that the job worker 130 is willing to make available for job execution, information regarding the amount of storage resources (e.g., non-volatile memory) that the job worker 130 is willing to make available for job execution, information regarding the amount of memory resources (e.g., volatile memory such as random access memory (RAM)) that the job worker 130 is willing to make available for job execution, information regarding the amount of energy (e.g., battery life) that the job worker 130 is willing to consume for job execution, and / or information regarding the time that the job worker 130 is willing to participate in job execution. In one embodiment, the information regarding the resources that the job worker 130 is willing to make available for job execution includes information indicating that the job worker 130 has specialized hardware (e.g., a fast Fourier transform (FFT) accelerator) that may be used for job execution. The use of specialized hardware may be particularly beneficial for video / image processing jobs / applications. In one embodiment, information about the resources that a job worker 130 is willing to make available for job execution is provided via the control plane of the communications network 100 and therefore does not count against the job worker's data quota (if any).

[0040] The compute manager 120 can track the resources that the job workers 130 are willing to make available for job execution. In addition, the compute manager 120 can track the network conditions of the communication network 100 and the network resources allocated to the job workers 130 in the communication network 100. In one embodiment, the network conditions of the communication network 100 include the current network conditions of the communication network 100 and / or predictions of future network conditions of the communication network 100 (e.g., what the congestion levels will be in different areas of the communication network 100 when the job will be executed and where the job workers 130 are located at that time).

[0041] The compute manager 120 may determine the assignment of job portions to one or more job workers 130 based on the requirements of the job, information about the resources that the job workers are willing to make available for job execution, information about network conditions of the communication network 100, and information about network resources allocated to job workers 130 in the communication network 100. In one embodiment, the compute manager 120 determines the assignment of job portions to job workers 130 based on executing a job assignment algorithm (e.g., a linear programming algorithm that optimizes an objective function, as described in further detail below). In one embodiment, the compute manager 120 over-allocates resources to the job to account for the possibility of losing connectivity with the job workers 130. For example, if one of the job workers 130 is a mobile device with an unstable connection, the compute manager 120 may consider the probability that the job worker 130 may be unreachable in the future when determining how much resources to allocate for the job and / or determining how to assign job portions to the job workers 130.

[0042] In one embodiment, the compute manager 120 changes the allocation of network resources for one or more job workers 130 to optimize job execution (the ability to change the allocation of network resources for one or more job workers 130 may have been considered when determining how to assign portions of a job to a job worker 130). In embodiments where the communication network 100 is a mobile network (e.g., a 4G LTE mobile network, a 5G mobile network, or other type of radio / cellular network), the compute manager 120 may change the allocation of network resources for the job workers 130 by changing the allocation of radio resources for the job workers 130. This may include changing the radio bandwidth for the job workers 130, changing the radio transmit power for the job workers 130, changing the beamforming settings for the job workers 130, and / or changing the modulation and coding scheme (MCS) settings for the job workers 130. Alternatively or additionally, in one embodiment, the compute manager 120 changes the allocation of non-radio resources for the job workers 130. This may include, for example, changing the priority assigned to network traffic associated with a job worker 130 (e.g., in a mobile network core (e.g., a 5G core)).

[0043] If the compute manager 120 determines that the job can be executed within the constraints specified by the job finder 110, the compute manager 120 may provide a job portion assignment to one or more job workers 130 based on the determined assignment (the change in network resource allocation and the provision of job portion assignments are shown in the figure as "assigning job portions and allocating network resources"). The job portion assignment provided to the job worker 130 may include information about the specific portion of the job that the job worker 130 is responsible for executing. This may include information about the amount of resources required to execute the job portion. In one embodiment, the job worker 130 that receives the job portion assignment from the compute manager 120 provides a confirmation message to the compute manager 120 indicating whether the job worker 130 accepts or rejects the job portion assignment. In one embodiment, the confirmation message is provided via the control plane of the communication network 100 and therefore does not count against the data quota (if any) of the job worker.

[0044] In one embodiment, job finder 110 provides data on which the job is to operate (or information about where to obtain such data) to compute manager 120. Compute manager 120 may provide a confirmation message to job finder 110 indicating whether the data has been successfully received.

[0045] Depending on the type of job, compute manager 120 may provide some or all of the data to job worker 130. The data may be provided in multiple steps (e.g., incrementally as additional data is needed). In one embodiment, the transmission of this data does not count toward the data quota (if any) of the job worker.

[0046] The job workers 130 may execute their respective assigned job portions and provide the execution results (partial execution results) to the compute manager 120 (shown in the figure as "Partial Job Execution Results"). The partial execution results may be provided in multiple steps (e.g., provided incrementally as the results become available). In one embodiment, the transmission of the partial execution results does not count against the data quota (if any) of the job worker. In one embodiment, the compute manager 120 sends a confirmation message to each job worker 130 that provided the partial execution results indicating that the partial execution results have been received. In one embodiment, the compute manager 120 provides compensation or other types of incentives (e.g., by applying credits to the owner / operator's account) to the owner / operator of the job worker 130 that participated in the job execution (or expressed a willingness to participate in the job execution).

[0047] The compute manager 120 may aggregate the partial execution results it receives from the job workers 130 to generate a complete execution result. The compute manager 120 may then provide the complete execution result (possibly with some post-processing) to the job finder 110 (shown in the figure as "Complete Job Execution Results").

[0048] Two different types of jobs can be executed in the communication network 100: (1) same data different instruction jobs; and (2) different data same instruction jobs. Same data different instruction jobs are jobs that perform different operations on the same data and can be parallelized. An example of this type of job is mining blocks in a centralized blockchain, where different users try different random number intervals. Different data same instruction jobs are jobs where the data is divided into data chunks and distributed among different job workers 130, where all job workers 130 perform the same operation on their corresponding data chunks. An example of this type of job is distributed learning of weights and biases of a neural network (similar to federated learning, except that the data is received from the communication network instead of being observed / collected locally by the device).

[0049] To help further illustrate the embodiments, a mathematical model of a simple scenario that the communication network 100 may face and solve is described below. The mathematical model illustrates that the problem is well defined and solvable. However, it should be understood that the mathematical model is provided only as an example, and some embodiments may not conform to this particular mathematical model.

[0050] For simplicity, it is assumed in this example that there is one job finder 110 and two job workers 130. The role of the compute manager 120 is to assign jobs of the job finder 110 to the job workers 130.

[0051] Let s be the computational burden of the job (measured in FLOPs). This is the total number of computations required to execute the job (note that this is not the number of operations per second, which would be measured in FLOPS rather than FLOPs).

[0052] Assume d is the size of the data to be operated on by the job (measured in bits). The two job workers 130 are mobile devices of the mobile network. The maximum network capacity of the first job worker and the second job worker are denoted as C1 and C2 (measured in bits per second), respectively.

[0053] Each job worker 130 may provide compute manager 120 with information about the computing power (measured in FLOPS) that the job worker 130 is willing to make available for job execution and the maximum computing load (measured in FLOPs) that the job worker 130 is willing to bear for job execution. These two values ​​determine the number of seconds that the job worker 130 is willing to spend on job execution. Assume that the computing power of job worker k is S k , and the maximum computational burden that the job worker 130 is willing to bear is s k,max .

[0054] Each job worker 130 may also provide information to the compute manager 120 about the amount of storage resources and memory resources that the job worker 130 is willing to make available for job execution. In this example, for simplicity, it is assumed that there are sufficient storage resources and memory resources to execute the job.

[0055] The compute manager 120 may determine whether the job worker 130 has made sufficient compute resources available to meet the job requirements. The following inequality needs to be satisfied in order for the compute manager 120 to accept the job: s≤s 1,max +s 2,max .

[0056] The computation manager 120 may determine the computation loads s1 and s2 of the first job worker and the second job worker, respectively, based on the type of job to be executed. If the job is a job of the same data but different instruction types, the size of the data provided to the job worker 130 is d k =d. If the job is a different-data-same-instruction-type job, the data provided to the job worker 130 is divided into two parts having sizes d1 and d2, respectively, such that d1+d2=d.

[0057] In either case, the time it takes for job worker k to finish executing its portion of the job is (Where the first term represents the time when the data arrives and the second term represents the time when the job portion is executed.) Regardless of the job type, the following equation needs to hold: s=s1+s2. In other words, the total computational burden s needs to be divided between the two job workers 130.

[0058] The compute manager 120 needs to solve the following problem: minmax{τ1,τ2}, where the minimum is for all variables that can be optimized (for jobs with same data but different instruction types, the variables can be s1 and s2; for jobs with different data but same instruction types, the variables can be s1, s2, d1, and d2). The "min max" problem is a linear programming problem that can be solved using algorithms known to those skilled in the art of planning. Linear programming problems are known to be scalable, and the computational requirements are negligible for optimizers (the compute manager 120 in this example) with at most hundreds of variables (the number of job workers 130 in this example).

[0059] It should be noted that, for simplicity, the above mathematical model does not take into account the time it takes to send the job execution results on the uplink channel. This factor can be taken into account without changing the overall solution approach. In addition, for simplicity, the above mathematical model assumes that there are only two job workers 130. However, it should be understood that the mathematical model can be extended / generalized to have more than two job workers 130.

[0060] Now we describe a possible suboptimal but fast (heuristic) solution for distributing jobs of the same data but different instruction types between two job workers 130. This solution configures the system to receive all partial job execution results simultaneously. To find such a solution, we enforce τ1 = τ2. That is, we enforce Without loss of generality, if we assume C1 ≥ C2 (the first job worker has the same or higher network capacity than the second job worker), then the first term in the following equation is non-negative:

[0061] If both terms are positive, the solution is:

[0062]

[0063] The above equation can be interpreted as follows. The quantity c represents the time advantage enjoyed by the first job worker relative to the second job worker because the data arrives at the first job worker first. The factors preceding the brackets represent the relative computing power of each job worker 130 compared to the combined computing power of the job workers 130. Each term in brackets represents the computing burden to be borne by a particular job worker 130.

[0064] Intuitively, if the data arrives at the second job worker later, and the second job worker has less computational power compared to the first worker (S1>S2), then the first job worker will be required to bear more computational burden than the second job worker, which is why the term in the brackets is the sum of two positive terms s+cS2, and vice versa for the second job worker. If the first job worker has much more computational power than the second job worker (S1>>S2), then the term in the brackets for the second job worker may become negative, which means that the second job worker will not be required to bear any computational burden. Therefore, the solution can be given as:

[0065]

[0066] It should be noted that the above mathematical model does not take into account the energy impact on the job workers 130. In some embodiments, this can be included as another constraint for assigning job parts to job workers 130 (e.g., a job worker 130 only participates in job execution if it is connected to a power source or has sufficient remaining battery life).

[0067] Figure 2 is a diagram of a mobile network environment in which a job may be executed, wherein a job finder is part of the mobile network, according to some embodiments.

[0068] As shown in the figure, the environment includes mobile devices 230A-C, mobile networks RAN 250A and 250B, and mobile network core 220. In this example, mobile network core 220 acts as a compute manager. In addition, as shown in the figure, mobile device 230A is connected to the mobile network via RAN 250A, and mobile device 230B is connected to the mobile network via RAN 250B. In this example, mobile device 230A acts as a job finder, while mobile device 230B and mobile device 230C act as job workers. Mobile device 230B and mobile device 230C may have previously notified mobile network core 220 that they are willing to participate in job execution.

[0069] As shown in the figure, at operation "1", mobile device 230A sends a request to the mobile network core 220 to execute a job (e.g., an artificial intelligence ("AI") job). In response to receiving the request, the mobile network core 220 determines the assignment of the job portion of the job to mobile devices 230B and 230C (e.g., as described above). At operation "2", the mobile network core 220 provides the job portion assignment to the mobile device 230B and the mobile device 230C according to the determined assignment, and changes the network resource allocation for the mobile device 230B and / or the mobile device 230C. The mobile device 230B and the mobile device 230C execute their respective assigned job portions to each generate a partial job execution result. At operation "3", the mobile device 230B and the mobile device 230C each provide their respective partial job execution results to the mobile network core 220. The mobile network core 220 aggregates the partial job execution results to generate a complete job execution result. At operation "4", the mobile network core 220 provides the complete job execution result to the mobile device 230A.

[0070] Figure 3 is a diagram of a mobile network environment in which a job may be executed, wherein a job finder is external to the mobile network, and wherein both mobile devices and non-mobile devices in the mobile network participate in the job execution, according to some embodiments.

[0071] As shown in the figure, the environment includes an Internet node 310, a mobile network core 320, a mobile network RAN ​​350A-C, non-mobile computing devices 360A and 360B, and mobile devices 330A-D. In the example shown in the figure, the Internet node 310 is outside the mobile network and serves as a job finder 110. In addition, in this example, the mobile network core 220 serves as a computing manager. As shown in the figure, mobile device 330A is connected to the mobile network via RAN 350A, mobile device 330B and mobile device 330C are connected to the mobile network via RAN 350B, and mobile device 330D is connected to the mobile network via RAN 350C. In this example, non-mobile computing device 360A is located near RAN 350B, and non-mobile computing device 360B is located near RAN 350C. In addition, in this example, mobile devices 230A-C and non-mobile computing devices 360A and 360B are used as job workers. These devices may have previously notified the mobile network core 320 that they are willing to participate in job execution.

[0072] As shown in the figure, at operation "1", the Internet node 310 sends a request to the mobile network core 320 to execute a job (e.g., an AI job). In response to receiving the request, the mobile network core 320 determines the assignment of the job portion of the job to the mobile device 230A-D and the non-mobile computing devices 360A and 360B (e.g., as described above). At operation "2", the mobile network core 320 provides the job portion assignment to the mobile device 230A-D and the non-mobile computing devices 360A and 360B according to the determined assignment, and changes the network resource allocation for some or all of these devices. The mobile devices 230A-D and the non-mobile computing devices 360A and 360B execute their respective assigned job portions to each generate a partial job execution result. At operation "3", the mobile devices 230A-D and the non-mobile computing devices 360A and 360B each provide their respective partial job execution results to the mobile network core 320. The mobile network core 320 aggregates the partial job execution results to generate a complete job execution result. In operation “ 4 ”, the mobile network core 320 sends the complete job execution result to the Internet node 310 .

[0073] In one example use case, mobile network operators may use the embodiments disclosed herein to become orchestrators of idle computing power among their end users and / or in the mobile network infrastructure.

[0074] Figure 4 is a flow chart of a method for executing a job in a communication network according to some embodiments. The method may be performed by a system including a job finder, a compute manager, and a job worker.

[0075] The operations in the flowchart will be described with reference to the exemplary embodiments of other figures. However, it should be understood that the operations of the flowchart may be performed by embodiments other than those discussed with reference to other figures, and the embodiments discussed with reference to these other figures may perform operations different from those discussed with reference to the flowchart.

[0076] In operation 410, the job finder sends a request to the compute manager to execute the job. In operation 415, the job workers send information about the resources they are willing to make available for job execution to the compute manager. Operation 415 can occur before, in parallel with, and / or after operation 410. In operation 420, the compute manager assigns the job parts to the job workers. In operation 430, the compute manager changes the network resource allocation for the job workers. In operation 440, the compute manager provides the job workers with data to operate on the job. In operation 450, the job workers execute their respective assigned job parts, which results in the generation of partial execution results. In operation 460, the job workers provide the partial execution results to the compute manager. In operation 470, the compute manager aggregates the partial job execution results to generate the complete execution results. In operation 480, the compute manager provides the complete execution results to the job finder.

[0077] Figure 5 is a flow chart of a method for performing a job in a mobile network (also referred to as a mobile telecommunication network) performed by one or more computing devices implementing a computing manager according to some embodiments. In one embodiment, the mobile network includes at least one base station (e.g., eNodeB and / or gNodeB). In one embodiment, the job may not be related to providing mobile telecommunication services.

[0078] At operation 510, the compute manager receives a request from a job finder to execute a job in a mobile network. In one embodiment, the job finder is part of the mobile network. In another embodiment, the job finder is external to the mobile network. In one embodiment, the request to execute a job in the mobile network includes information about an amount of computing resources required to execute the job, information about an expected delay to complete execution of the job, and / or information about an amount of storage resources required to execute the job.

[0079] At operation 520, the compute manager obtains, for each of a plurality of job workers that are part of the mobile network, information about resources that the job worker is willing to make available for job execution. In one embodiment, the information about resources that a job worker among the plurality of job workers is willing to make available for job execution includes information about an amount of compute resources that the job worker is willing to make available for job execution, information about an amount of memory resources that the job worker is willing to make available for job execution, information about an amount of storage resources that the job worker is willing to make available for job execution, and / or information about the time that the job worker is willing to participate in job execution.

[0080] At operation 530, the compute manager determines an assignment of a job portion to one or more of a plurality of job workers based on requirements of the job, information about resources that the plurality of job workers are willing to make available for job execution, information about network conditions of the mobile network, and information about network resources allocated to the job workers. In one embodiment, the assignment of the job portion to the one or more job workers is determined based on an optimization objective function. In one embodiment, the one or more job workers include mobile devices. In one embodiment, the one or more job workers also include non-mobile computing devices. In one embodiment, the information about the network conditions of the mobile network includes information about current network conditions of the mobile network and information about predicted future network conditions of the mobile network.

[0081] At operation 540, the compute manager changes a network resource allocation for at least one of the one or more job workers. In one embodiment, changing the network resource allocation for at least one job worker includes changing a radio resource allocation for the job worker. In one embodiment, changing the radio resource allocation for the job worker includes changing a radio bandwidth for the job worker, changing a radio transmit power for the job worker, changing a beamforming setting for the job worker, and changing an MCS setting for the job worker. In one embodiment, changing the network resource allocation for at least one job worker includes changing a non-radio resource allocation for the job worker. In one embodiment, changing the non-radio resource allocation for the job worker includes changing a priority assigned to a network service associated with the job worker.

[0082] At operation 550 , the compute manager provides job portion assignments to one or more job workers based on the determined assignments (eg, indicating which portion of the job the job worker is responsible for executing).

[0083] In one embodiment, at operation 560, the compute manager provides data (data on which the job or job portion is to operate) to one or more job workers.

[0084] At operation 570 , the compute manager receives partial execution results generated by one or more job workers.

[0085] At operation 580 , the calculation manager aggregates the partial execution results to generate a complete execution result.

[0086] At operation 590 , the compute manager provides the complete execution results to the job finder.

[0087] Figure 6An example of a communication system according to some embodiments is shown. In this example, the communication system 600 includes a telecommunications network 602, which includes an access network 604 (e.g., a radio access network (RAN)) and a core network 606 (which includes one or more core network nodes 608). The access network 604 includes one or more access network nodes, such as network nodes 610a and 610b (one or more of which may be generally referred to as network nodes 610), or any other similar third generation partnership project (3GPP) access node or non-3GPP access point. The network node 610 facilitates direct or indirect connection of user equipment (UE), such as connecting UE 612a, 612b, 612c, and 612d (one or more of which may be generally referred to as UE 612) to the core network 606 via one or more wireless connections.

[0088] Example wireless communications over wireless connections include sending and / or receiving wireless signals using electromagnetic waves, radio waves, infrared waves, and / or other types of signals suitable for transmitting information without the use of wires, cables, or other material conductors. In addition, in different embodiments, the communication system 600 may include any number of wired or wireless networks, network nodes, UEs, and / or any other components or systems that may facilitate or participate in the communication of data and / or signals (whether via a wired connection or a wireless connection). The communication system 600 may include and / or interface with any type of communication, telecommunication, data, cellular, radio network, and / or other similar types of systems.

[0089] UE 612 may be any of a variety of communication devices, including wireless devices that are arranged, configured and / or operable to wirelessly communicate with network node 610 and other communication devices. Similarly, network node 610 is arranged, capable, configured and / or operable to communicate directly or indirectly with UE 612 and / or other network nodes or devices in telecommunication network 602 to enable and / or provide network access (e.g., wireless network access) and / or perform other functions (e.g., management) in telecommunication network 602.

[0090] In the depicted example, the core network 606 connects the network node 610 to one or more hosts, such as the host 616. These connections may be direct connections, or indirect connections via one or more intermediate networks or devices. In other examples, the network node may be directly coupled to the host. The core network 606 includes one or more core network nodes (e.g., core network node 608) composed of hardware and software components. The features of these components may be substantially similar to the features described for the UE, network node, and / or host, so that their description is generally applicable to the corresponding components of the core network node 608. The example core network node includes one or more functions of: a mobile switching center (MSC), a mobility management entity (MME), a home subscriber server (HSS), an access and mobility management function (AMF), a session management function (SMF), an authentication server function (AUSF), a subscription identifier de-hiding function (SIDF), a unified data management (UDM), a security edge protection agent (SEPP), a network open function (NEF), and / or a user plane function (UPF).

[0091] The host 616 may be under the ownership or control of a service provider other than the operator or provider of the access network 604 and / or the telecommunications network 602, and may be operated by or on behalf of the service provider. The host 616 may host various applications to provide one or more services. Examples of such applications include real-time and pre-recorded audio / video content, data collection services (e.g., obtaining and compiling data of various environmental conditions detected by multiple UEs), analysis functions, social media, functions for controlling or otherwise interacting with remote devices, functions for alarm and monitoring centers, or any other such functions performed by a server.

[0092] Overall, Figure 6 The communication system 600 enables connections between UEs, network nodes, and hosts. In this sense, the communication system can be configured to operate according to predefined rules or procedures, such as specific standards, including but not limited to: Global System for Mobile Communications (GSM); Universal Mobile Telecommunications System (UMTS); Long Term Evolution (LTE), and / or other suitable 2G, 3G, 4G, 5G standards, or any applicable future generation standards (e.g., 6G); Wireless Local Area Network (WLAN) standards, such as the Institute of Electrical and Electronics Engineers (IEEE) 802.11 standard (WiFi); and / or any other suitable wireless communication standards, such as Worldwide Interoperability for Microwave Access (WiMax), Bluetooth, Z-wave, Near Field Communication (NFC), ZigBee, LiFi, and / or any Low Power Wide Area Network (LPWAN) standards, such as LoRa and Sigfox.

[0093] In some examples, the telecommunication network 602 is a cellular network that implements 3GPP standardized features. Therefore, the telecommunication network 602 can support network slicing to provide different logical networks to different devices connected to the telecommunication network 602. For example, the telecommunication network 602 can provide ultra-reliable low-latency communication (URLLC) services to some UEs, while providing enhanced mobile broadband (eMBB) services to other UEs, and / or providing massive machine type communication (mMTC) / massive IoT services to other UEs.

[0094] In some examples, UE 612 is configured to send and / or receive information without direct human interaction. For example, the UE may be designed to send information to access network 604 on a predetermined schedule when triggered by an internal or external event or in response to a request from access network 604. Additionally, the UE may be configured to operate in a single RAT or multi-RAT or multi-standard mode. For example, the UE may operate using any one or a combination of Wi-Fi, NR (New Radio), and LTE, i.e., configured for multi-radio dual connectivity (MR-DC), such as E-UTRAN (Evolved UMTS Terrestrial Radio Access Network) New Radio-Dual Connectivity (EN-DC).

[0095] In this example, the hub 614 communicates with the access network 604 to facilitate indirect communication between one or more UEs (e.g., UE 612c and / or 612d) and a network node (e.g., network node 610b). In some examples, the hub 614 may be a controller, a router, a content source and analysis, or any other communication device described herein regarding the UE. For example, the hub 614 may be a broadband router that enables the UE to access the core network 606. As another example, the hub 614 may be a controller that sends commands or instructions to one or more actuators in the UE. The commands or instructions may be received from the UE, the network node 610, or received by an executable code, a script, a process, or other instructions in the hub 614. As another example, the hub 614 may be a data collector that acts as a temporary storage device for UE data, and in some embodiments, analysis or other processing of data may be performed. As another example, the hub 614 may be a content source. For example, for a UE that is a VR headset, display, speaker, or other media delivery device, the hub 614 can obtain VR assets, video, audio, or other media or data related to the sensory information via the network node, and then the hub 614 provides it to the UE directly, after performing local processing, and / or after adding additional local content. In another example, the hub 614 acts as a proxy server or orchestrator for the UE, especially when one or more UEs are low-energy IoT devices.

[0096] Hub 614 can have constant / persistent or intermittent connection with network node 610b. Hub 614 can also allow different communication schemes and / or scheduling between hub 614 and UE (e.g., UE 612c and / or 612d) and hub 614 and core network 606. In other examples, hub 614 is connected to core network 606 and / or one or more UE via wired connection. In addition, hub 614 can be configured to be connected to M2M service provider and / or connected to another UE via direct connection through access network 604. In some scenarios, UE can establish wireless connection with network node 610, while still connected via hub 614 by wired or wireless connection. In some embodiments, hub 614 can be a dedicated hub, that is, its main function is to route communication from network node 610b to UE / from UE to network node 610b. In other embodiments, the hub 614 may be a non-dedicated hub, that is, a device operable to route communications between the UE and the network node 610b, but also capable of operating as a communications origin and / or endpoint for a particular data channel.

[0097] In one embodiment, telecommunication network 602 may be used to execute jobs on behalf of a job finder. For example, host 616 or UE 612 may be used as a job finder, core network node 608 may be used as a compute manager, and network node 610 and / or UE 612 may be used as a job worker, as described above. In one embodiment, the same UE 612 may be used as a job finder in some scenarios and as a job worker in other scenarios.

[0098] Figure 7 UE according to some embodiments is shown. As used herein, UE refers to a device capable of, configured, arranged and / or operable to wirelessly communicate with a network node and / or other UE. Examples of UE include, but are not limited to, smart phones, mobile phones, cellular phones, voice over IP (VoIP) phones, wireless local loop phones, desktop computers, personal digital assistants (PDAs), wireless cameras, game consoles or devices, music storage devices, playback devices, wearable terminal devices, wireless endpoints, mobile stations, tablet computers, laptop computers, laptop built-in devices (LEEs), laptop mounted devices (LMEs), smart devices, wireless client equipment (CPEs), vehicle-mounted or vehicle-mounted embedded / integrated wireless devices, etc. Other examples include any UE identified by the Third Generation Partnership Project (3GPP), including narrowband Internet of Things (NB-IoT) UEs, machine type communications (MTC) UEs, and / or enhanced MTC (eMTC) UEs.

[0099] The UE may support device-to-device (D2D) communications, for example, by implementing 3GPP standards for sidelink communications, dedicated short-range communications (DSRC), vehicle-to-vehicle (V2V), vehicle-to-infrastructure (V2I), or vehicle-to-everything (V2X). In other examples, a UE may not necessarily have a user in the sense of a human user who owns and / or operates the associated device. Rather, a UE may represent a device that is intended to be sold to or operated by a human user but may not be, or may not initially be, associated with a particular human user (e.g., a smart sprinkler controller). Alternatively, a UE may represent a device that is not intended to be sold to or operated by an end user but may be associated with or operated for the benefit of a user (e.g., a smart power meter).

[0100] UE 700 includes processing circuitry 702, which is operatively coupled to input / output interface 706, power supply 708, memory 710, communication interface 712, and / or any other components or any combination thereof via bus 704. Some UEs may utilize Figure 7 All or a subset of the components shown in . The level of integration between components may vary depending on the UE. In addition, some UEs may contain multiple instances of a component, such as multiple processors, memories, transceivers, transmitters, receivers, etc.

[0101] The processing circuit 702 is configured to process instructions and data, and may be configured to implement any sequential state machine operable to execute instructions stored as a machine-readable computer program in the memory 710. The processing circuit 702 may be implemented as one or more hardware-implemented state machines (e.g., using discrete logic, field programmable gate arrays (FPGAs), application-specific integrated circuits (ASICs), etc.); programmable logic and appropriate firmware; one or more stored computer programs, general-purpose processors (e.g., microprocessors or digital signal processors (DSPs)) and appropriate software; or any combination of the above. For example, the processing circuit 702 may include multiple central processing units (CPUs).

[0102] In this example, the input / output interface 706 can be configured to provide one or more interfaces to an input device, an output device, or one or more input and / or output devices. Examples of output devices include speakers, sound cards, video cards, displays, monitors, printers, actuators, transmitters, smart cards, another output device, or any combination thereof. An input device can allow a user to capture information into the UE 700. Examples of input devices include touch-sensitive displays or presence-sensitive displays, cameras (e.g., digital cameras, digital video cameras, web cameras, etc.), microphones, sensors, mice, trackballs, direction pads, trackpads, rollers, smart cards, etc. The presence-sensitive display can include a capacitive or resistive touch sensor to sense input from a user. The sensor can be, for example, an accelerometer, a gyroscope, a tilt sensor, a force sensor, a magnetometer, an optical sensor, a proximity sensor, a biometric sensor, etc., or any combination thereof. An output device can use an interface port of the same type as an input device. For example, a universal serial bus (USB) port can be used to provide input devices and output devices.

[0103] In some embodiments, the power supply 708 is configured as a battery or a battery pack. Other types of power supplies may be used, such as an external power supply (e.g., a power outlet), a photovoltaic device, or a battery. The power supply 708 may also include a power supply circuit for transmitting power from the power supply 708 itself and / or an external power supply to various parts of the UE 700 via an input circuit or interface (e.g., a power cord). The transmitted power may be used, for example, to charge the power supply 708. The power supply circuit may perform any formatting, conversion, or other modification of the power from the power supply 708 to make the power suitable for the corresponding components of the UE 700 to which the power is provided.

[0104] The memory 710 may be or be configured to include a memory such as a random access memory (RAM), a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), a magnetic disk, an optical disk, a hard disk, a removable cassette, a flash drive, etc. In one example, the memory 710 includes one or more application programs 714 (e.g., an operating system, a web browser application, a widget, a widget engine, or other application) and corresponding data 716. The memory 710 may store any one of a variety of operating systems or a combination of operating systems for use by the UE 700.

[0105] The memory 710 may be configured to include a plurality of physical drive units, such as a redundant array of independent disks (RAID), a flash memory, a USB flash drive, an external hard drive, a thumb drive, a pen drive, a key drive, a high-density digital versatile disc (HD-DVD) optical drive, an internal hard drive, a Blu-ray optical drive, a holographic digital data storage (HDDS) optical drive, an external mini dual in-line memory module (DIMM), a synchronous dynamic random access memory (SDRAM), an external micro-DIMM SDRAM, a smart card memory (e.g., a tamper-proof module in the form of a universal integrated circuit card (UICC), including one or more subscriber identity modules (SIMs), such as USIM and / or ISIM), other memories, or any combination thereof. The UICC may be, for example, an embedded UICC (eUICC), an integrated UICC (iUICC), or a removable UICC, commonly referred to as a “SIM card”. The memory 710 may allow the UE 700 to access instructions, applications, etc. stored on a temporary or non-temporary storage medium to offload data or upload data. An article of manufacture, such as utilizing a communication system, may be tangibly embodied as or in memory 710, which may be or include a device-readable storage medium.

[0106] The processing circuit 702 may be configured to communicate with an access network or other network using a communication interface 712. The communication interface 712 may include one or more communication subsystems and may include an antenna 722 or be communicatively coupled to the antenna 722. The communication interface 712 may include one or more transceivers for communication (e.g., by communicating with one or more remote transceivers of another device capable of wireless communication (e.g., another UE or a network node in an access network)). Each transceiver may include a transmitter 718 and / or a receiver 720 suitable for providing network communications (e.g., optical, electrical, frequency allocation, etc.). In addition, the transmitter 718 and the receiver 720 may be coupled to one or more antennas (e.g., antenna 722), and may share circuit components, software, or firmware, or may be implemented separately instead.

[0107] In the illustrated embodiment, the communication functionality of the communication interface 712 may include cellular communication, Wi-Fi communication, LPWAN communication, data communication, voice communication, multimedia communication, short-range communication such as Bluetooth, near field communication, location-based communication such as using a global positioning system (GPS) to determine location, another similar communication functionality, or any combination thereof. Communication may be implemented according to one or more communication protocols and / or standards, such as IEEE 802.11, code division multiple access (CDMA), wideband code division multiple access (WCDMA), GSM, LTE, new radio (NR), UMTS, WiMax, Ethernet, transmission control protocol / Internet protocol (TCP / IP), synchronous optical network (SONET), asynchronous transfer mode (ATM), QUIC, hypertext transfer protocol (HTTP), etc.

[0108] Regardless of the type of sensor, the UE may provide an output of the data captured by its sensor via a wireless connection to a network node through its communication interface 712. The data captured by the UE's sensor may be transmitted via another UE via a wireless connection to a network node. The output may be periodic (e.g., every 15 minutes if it reports the sensed temperature), random (e.g., to balance the reporting load from multiple sensors), in response to a trigger event (e.g., sending an alarm when humidity is detected), in response to a request (e.g., a user-initiated request), or a continuous stream (e.g., a live video feed of a patient).

[0109] As another example, the UE includes an actuator, motor, or switch associated with a communication interface that is configured to receive wireless input from a network node via a wireless connection. In response to the received wireless input, the state of the actuator, motor, or switch can change. For example, the UE can include a motor that adjusts a control surface or rotor of a drone in flight based on the received input, or controls a robotic arm performing a medical procedure based on the received input.

[0110] When in the form of an Internet of Things (IoT) device, a UE may be a device for one or more application areas including, but not limited to, urban wearable technology, extended industry applications, and healthcare. Non-limiting examples of such IoT devices are devices that are or are embedded in: a connected refrigerator or freezer, a television, connected lighting, an electric meter, a robotic vacuum cleaner, a voice-controlled smart speaker, a home security camera, a motion detector, a thermostat, a smoke detector, a door / window sensor, a flood / humidity sensor, an electric door lock, a connected doorbell, an air conditioning system such as a heat pump, an autonomous vehicle, a surveillance system, a weather monitoring device, a vehicle parking monitoring device, an electric vehicle charging station, a smart watch, a fitness tracker, a head-mounted display for augmented reality (AR) or virtual reality (VR), a wearable device for tactile enhancement or sensory enhancement, a sprinkler, an animal or item tracking device, a sensor for monitoring plants or animals, an industrial robot, an unmanned aerial vehicle (UAV), and any kind of medical device such as a heart rate monitor or a teleoperated surgical robot. A UE in the form of an IoT device includes circuits and / or software related to the intended application of the IoT device and, for example, software for Figure 7 Other components described with reference to UE 700 shown in FIG.

[0111] As yet another specific example, in an IoT scenario, a UE may represent a machine or other device that performs monitoring and / or measurements and sends the results of such monitoring and / or measurements to another UE and / or a network node. In this case, the UE may be an M2M device, which may be referred to as an MTC device in the 3GPP context. As a specific example, a UE may implement the 3GPP NB-IoT standard. In other scenarios, a UE may represent a vehicle (e.g., a car, bus, truck), a ship, and an airplane, or other device that is capable of monitoring and / or reporting its operating status or other functions associated with its operation.

[0112] In practice, any number of UEs may be used together for a single use case. For example, a first UE may be or be integrated into a drone and provide the drone's speed information (obtained via a speed sensor) to a second UE that is a remote controller for operating the drone. When the user makes changes from the remote controller, the first UE may adjust the throttle on the drone (e.g., by controlling an actuator) to increase or decrease the speed of the drone. The first UE and / or the second UE may also include multiple of the functions described above. For example, a UE may include a sensor and an actuator and handle data communications for both the speed sensor and the actuator.

[0113] In one embodiment, UE 700 functions as a job finder and / or a job worker, as described above.

[0114] Figure 8A network node according to some embodiments is shown. As used herein, a network node refers to a device capable of, configured, arranged and / or operable to communicate directly or indirectly with a UE and / or other network nodes or devices in a telecommunications network. Examples of network nodes include, but are not limited to, access points (APs) (e.g., radio access points), base stations (BSs) (e.g., radio base stations, Node Bs, evolved Node Bs (eNBs), and NR Node Bs (gNBs)).

[0115] Base stations may be classified based on the amount of coverage they provide (or in other words, their transmit power class), and may therefore be referred to as femto base stations, pico base stations, micro base stations, or macro base stations, depending on the amount of coverage provided. A base station may be a relay node or a relay donor node that controls a relay. A network node may also include one or more (or all) parts of a distributed radio base station (e.g., a centralized digital unit and / or a remote radio unit (RRU), sometimes referred to as a remote radio head (RRH)). Such a remote radio unit may or may not be integrated with an antenna as an antenna-integrated radio. Portions of a distributed radio base station may also be referred to as nodes in a distributed antenna system (DAS).

[0116] Other examples of network nodes include a multi-transmission point (multi-TRP) 5G access node, a multi-standard radio MSR device (such as an MSR BS), a network controller such as a radio network controller (RNC) or a base station controller (BSC), a base transceiver station (BTS), a transmission point, a transmission node, a multi-cell / multicast coordination entity (MCE), an operation and maintenance (O&M) node, an operation support system (OSS) node, a self-organizing network (SON) node, a positioning node (e.g., an evolved serving mobile positioning center (E-SMLC)) and / or a minimization of drive tests (MDT).

[0117] The network node 800 includes a processing circuit 802, a memory 804, a communication interface 806, and a power supply 808. The network node 800 may include multiple physically separated components (e.g., a node B component and an RNC component, or a BTS component and a BSC component, etc.), each of which may have its own corresponding components. In certain scenarios where the network node 800 includes multiple separate components (e.g., BTS and BSC components), one or more separate components may be shared between multiple network nodes. For example, a single RNC may control multiple node Bs. In such scenarios, in some cases, each unique node B and RNC pair may be considered as a single separate network node. In some embodiments, the network node 800 may be configured to support multiple radio access technologies (RATs). In such embodiments, some components may be repeated (e.g., separate memories 804 for different RATs), while some components may be reused (e.g., the same antenna 810 may be shared by different RATs). The network node 800 may also include various sets of example components for different wireless technologies (e.g., GSM, WCDMA, LTE, NR, Wi-Fi, Zigbee, Z-wave, LoRaWAN, radio frequency identification (RFID), or Bluetooth wireless technologies) integrated into the network node 800. These wireless technologies may be integrated into the same or different chips or chipsets and other components within the network node 800.

[0118] The processing circuit 802 may include a combination of one or more of the following operable to provide network node 800 functionality, alone or in combination with other network node 800 components (e.g., memory 804): a microprocessor, a controller, a microcontroller, a central processing unit, a digital signal processor, an application specific integrated circuit, a field programmable gate array, or any other suitable computing device, resource, or combination of hardware, software, and / or encoded logic.

[0119] In some embodiments, processing circuitry 802 includes a system on a chip (SOC). In some embodiments, processing circuitry 802 includes one or more of radio frequency (RF) transceiver circuitry 812 and baseband processing circuitry 814. In some embodiments, radio frequency (RF) transceiver circuitry 812 and baseband processing circuitry 814 may be on separate chips (or chipsets), boards, or units (e.g., a radio unit and a digital unit). In alternative embodiments, some or all of RF transceiver circuitry 812 and baseband processing circuitry 814 may be on the same chip or chipset, board, or unit.

[0120] The memory 804 may include any form of volatile or non-volatile computer-readable memory, including, but not limited to, permanent storage, solid-state memory, remotely mounted memory, magnetic media, optical media, random access memory (RAM), read-only memory (ROM), mass storage media (e.g., hard disk), removable storage media (e.g., flash drive, compact disk (CD) or digital video disk (DVD)), and / or any other volatile or non-volatile, non-transitory device-readable and / or computer-executable storage device that stores information, data and / or instructions that can be used by the processing circuit 802. The memory 804 may store any suitable instructions, data or information, including computer programs, software, applications (including one or more of logic, rules, code, tables, etc.) and / or other instructions that can be executed by the processing circuit 802 and utilized by the network node 800. The memory 804 may be used to store any calculations performed by the processing circuit 802 and / or any data received via the communication interface 806. In some embodiments, the processing circuit 802 and the memory 804 are integrated.

[0121] The communication interface 806 is used in the wired or wireless communication of signaling and / or data between network nodes, access networks and / or UEs. As shown in the figure, the communication interface 806 includes a port / terminal 816 to send and receive data from the network, for example, via a wired connection. The communication interface 806 also includes a radio front-end circuit 818 that can be coupled to the antenna 810 or as a part of the antenna 810 in some embodiments. The radio front-end circuit 818 includes a filter 820 and an amplifier 822. The radio front-end circuit 818 can be connected to the antenna 810 and the processing circuit 802. The radio front-end circuit can be configured to adjust the signal transmitted between the antenna 810 and the processing circuit 802. The radio front-end circuit 818 can receive digital data that will be sent to other network nodes or UEs via a wireless connection. The radio front-end circuit 818 can use a combination of a filter 820 and / or an amplifier 822 to convert digital data into a radio signal with appropriate channel and bandwidth parameters. The radio signal can then be transmitted via the antenna 810. Similarly, when receiving data, antenna 810 may collect radio signals, which may then be converted into digital data by radio front end circuitry 818. The digital data may be passed to processing circuitry 802. In other embodiments, the communication interface may include different components and / or different combinations of components.

[0122] In some alternative embodiments, the network node 800 does not include a separate radio front end circuit 818, but rather, the processing circuit 802 includes the radio front end circuit and is connected to the antenna 810. Similarly, in some embodiments, all or part of the RF transceiver circuit 812 is part of the communication interface 806. In other embodiments, the communication interface 806 includes one or more ports or terminals 816, the radio front end circuit 818, and the RF transceiver circuit 812 as part of a radio unit (not shown), and the communication interface 806 communicates with the baseband processing circuit 814, which is part of the digital unit (not shown).

[0123] Antenna 810 may include one or more antennas or antenna arrays configured to send and / or receive wireless signals. Antenna 810 may be coupled to radio front end circuit 818 and may be any type of antenna capable of wirelessly sending and receiving data and / or signals. In some embodiments, antenna 810 is separate from network node 800 and may be connected to network node 800 via an interface or port.

[0124] Antenna 810, communication interface 806 and / or processing circuit 802 may be configured to perform any receiving operation and / or certain obtaining operations described herein as being performed by a network node. Any information, data and / or signal may be received from a UE, another network node and / or any other network device. Similarly, antenna 810, communication interface 806 and / or processing circuit 802 may be configured to perform any sending operation described herein as being performed by a network node. Any information, data and / or signal may be sent to a UE, another network node and / or any other network device.

[0125] The power supply 808 provides power to the various components of the network node 800 in a form suitable for the respective components (e.g., at the voltage and current levels required by each respective component). The power supply 808 may also include or be coupled to a power management circuit to provide power to the components of the network node 800 for performing the functions described herein. For example, the network node 800 may be connected to an external power source (e.g., a power grid, a power outlet) via an input circuit or interface (e.g., a cable), whereby the external power source provides power to the power circuit of the power supply 808. As yet another example, the power supply 808 may include a power source in the form of a battery or battery pack connected to or integrated into the power circuit. If the external power source fails, the battery may provide backup power.

[0126] An embodiment of the network node 800 may include Figure 8Additional components beyond those shown that are used to provide certain aspects of the functionality of the network node, including any functionality described herein and / or any functionality necessary to support the subject matter described herein. For example, the network node 800 may include a user interface device to allow information to be input into the network node 800 and to allow information to be output from the network node 800. This may allow a user to perform diagnostics, maintenance, repair, and other management functions for the network node 800.

[0127] In one embodiment, network node 800 functions as a job worker, as described above.

[0128] Fig. 9 is a block diagram of a host according to various aspects described herein, which host may be Figure 6 900 can provide one or more services to one or more UEs.

[0129] Host 900 includes processing circuitry 902, which is operatively coupled to input / output interface 906, network interface 908, power supply 910, and memory 912 via bus 904. Other components may be included in other embodiments. The features of these components may be substantially similar to those described with respect to previous figures (e.g., Figure 7 and 8 ) so that its description is generally applicable to corresponding components of the host 900.

[0130] The memory 912 may include one or more computer programs, including one or more host applications 914 and data 916, which may include user data, such as data generated by the UE for the host 900 or data generated by the host 900 for the UE. An embodiment of the host 900 may use only a subset or all of the components shown. The host application 914 may be implemented in a container-based architecture and may provide support for video codecs (e.g., Versatile Video Coding (VVC), High Efficiency Video Coding (HEVC), Advanced Video Coding (AVC), MPEG, VP9) and audio codecs (e.g., FLAC, Advanced Audio Coding (AAC), MPEG, G.711), including transcoding of multiple different classes, types or implementations of UEs (e.g., mobile phones, desktop computers, wearable display systems, head-up display systems). The host application 914 may also provide user authentication and authorization checks, and may periodically report health status, routing, and content availability to a central node (e.g., a device in a core network or on the edge). Thus, the host 900 may select and / or indicate different hosts for over-the-top services for the UE. The host application 914 may support various protocols, such as HTTP Live Streaming (HLS) protocol, Real-Time Messaging Protocol (RTMP), Real-Time Streaming Protocol (RTSP), HTTP Dynamic Adaptation Streaming (MPEG-DASH), and the like.

[0131] In one embodiment, host 900 acts as a job finder, as described above.

[0132] Fig.10 It is a block diagram showing a virtualized environment in which the functions implemented by some embodiments can be virtualized. In the current context, virtualization means creating a virtual version of a device or equipment, which may include a virtualized hardware platform, storage device, and networking resources. As used herein, virtualization can be applied to any device or component thereof described herein, and relates to an implementation in which at least a portion of the functions are implemented as one or more virtual components. Some or all of the functions described herein may be implemented as virtual components performed by one or more virtual machines (VMs), which are implemented in one or more virtual environments 1000 hosted by one or more hardware nodes (e.g., hardware computing devices operated as network nodes, UEs, core network nodes, or hosts). In addition, in embodiments in which a virtual node does not require a radio connection (e.g., a core network node or host), the node may be fully virtualized.

[0133] Application 1002 (which may alternatively be referred to as a software instance, a virtual appliance, a network function, a virtual node, a virtual network function, etc.) runs in a virtualized environment 1000 to implement certain features, functions and / or benefits of some embodiments disclosed herein.

[0134] The hardware 1004 includes processing circuitry, memory storing software and / or instructions executable by the hardware processing circuitry, and / or other hardware devices as described herein, such as network interfaces, input / output interfaces, etc. The software may be executed by the processing circuitry to instantiate one or more virtualization layers 1006 (also referred to as hypervisors or virtual machine monitors (VMMs)), provide virtual machines 1008a and 1008b (one or more of which may be generally referred to as virtual machines 1008), and / or perform any of the functions, features, and / or benefits described for some embodiments described herein. The virtualization layer 1006 may present a virtual operating platform that appears to be networked hardware to the virtual machines 1008.

[0135] The virtual machine 1008 includes virtual processing, virtual memory, virtual network or interface, and virtual storage, and can be run by a corresponding virtualization layer 1006. Different embodiments of instances of virtual devices 1002 can be implemented on one or more virtual machines 1008 and can be implemented in different ways. In some contexts, virtualization of hardware is referred to as network function virtualization (NFV). NFV can be used to integrate many network device types onto industry-standard high-volume server hardware, physical switches, and physical storage that can be located in data centers and customer premises equipment.

[0136] In the context of NFV, a virtual machine 1008 may be a software implementation of a physical machine that runs a program as if the program were executed on a physical, non-virtualized machine. Each virtual machine 1008 and the portion of the hardware 1004 that executes the virtual machine (hardware dedicated to the virtual machine and / or hardware shared by the virtual machine with other virtual machines) form a separate virtual network unit. Still in the context of NFV, a virtual network function is responsible for handling a specific network function running in one or more virtual machines 1008 on the hardware 1004 and corresponds to an application 1002.

[0137] Hardware 1004 may be implemented in a standalone network node with general or specific components. Hardware 1004 may implement some functions via virtualization. Alternatively, hardware 1004 may be part of a larger hardware cluster (e.g., such as in a data center or CPE), where many hardware nodes work together and are managed via management and orchestration 1010, which, among other things, oversees the lifecycle management of application 1002. In some embodiments, hardware 1004 is coupled to one or more radio units, each of which includes one or more transmitters and one or more receivers that may be coupled to one or more antennas. The radio unit may communicate directly with other hardware nodes via one or more appropriate network interfaces, and may be used in combination with virtual components to provide a virtual node with radio capabilities, such as a radio access node or base station. In some embodiments, a control system 1012 may be used to provide some signaling, which may alternatively be used for communication between hardware nodes and radio units.

[0138] Although the computing devices (e.g., UE, network node, host) described herein may include a combination of the hardware components shown, other embodiments may include computing devices with different combinations of components. It will be understood that these computing devices may include any suitable combination of hardware and / or software required to perform the tasks, features, functions and methods disclosed herein. The determination, calculation, acquisition or similar operations described herein may be performed by a processing circuit, which may process information in the following manner: converting the obtained information into other information, comparing the obtained information or the converted information with the information stored in the network node, and / or performing one or more operations based on the obtained information or the converted information, and making a determination as a result of the processing. In addition, although the components are depicted as a single box located within a larger box or nested within multiple boxes, in fact, the computing device may include multiple different physical components constituting a single shown component, and the functions may be divided between separate components. For example, a communication interface may be configured to include any component described herein, and / or the functions of the components may be divided between the processing circuit and the communication interface. In another example, the non-computationally intensive functions of any such component may be implemented in software or firmware, while the computationally intensive functions may be implemented in hardware.

[0139] In some embodiments, some or all of the functionality described herein may be provided by a processing circuit executing instructions stored on a memory, which in some embodiments may be a computer program product in the form of a non-transitory computer-readable storage medium. In alternative embodiments, some or all of the functionality may be provided by a processing circuit without the need to execute instructions stored on a separate or separate device-readable storage medium, such as in a hardwired manner. In any of these specific embodiments, the processing circuit may be configured to perform the described functionality, regardless of whether instructions stored on a non-transitory computer-readable storage medium are executed. The benefits provided by such functionality are not limited to processing circuits or other components of a computing device, but are enjoyed by the computing device as a whole and / or generally by end users and wireless networks.

[0140] Although the present invention has been described in terms of several embodiments, those skilled in the art will recognize that the present invention is not limited to the embodiments described and can be practiced with modification and alteration within the spirit and scope of the appended claims. Therefore, the description is to be regarded as illustrative rather than restrictive.

Claims

1. A method performed by one or more computing devices in a mobile telecommunications network including at least one base station, the method comprising: receiving (510) a request from a job finder to perform a job in the mobile telecommunication network, the job being unrelated to providing a mobile telecommunication service; obtaining (520), for each job worker of a plurality of job workers that are part of the mobile telecommunication network, information regarding resources that the job worker is willing to make available for job execution; determining (530) an assignment of a job part to one or more of the plurality of job workers based on the requirements of the job, the information about resources that the plurality of job workers are willing to make available for job execution, information about network conditions of the mobile telecommunication network, and information about network resources allocated to job workers in the mobile network; changing (540) a network resource allocation for at least one of the one or more job workers, including one or more of: changing a radio resource allocation for a job worker, including one or more of: changing a radio bandwidth for the job worker, changing a radio transmit power for the job worker, changing a beamforming setting for the job worker, and changing a modulation coding scheme (MCS) setting for the job worker; providing ( 550 ) job part assignments to the one or more job workers based on the determined assignments; receiving (570) a partial job execution result generated by the one or more job workers; Aggregating (580) the partial job execution results to generate a complete job execution result; as well as The complete job execution result is provided (590) to the job finder.

2. A method performed by one or more computing devices in a mobile network, the method comprising: receiving (510) a request from a job finder to execute a job in the mobile network; obtaining (520), for each job worker of a plurality of job workers that are part of the mobile network, information regarding resources that the job worker is willing to make available for job execution; determining (530) an assignment of a job portion to one or more of the plurality of job workers based on requirements of the job, the information about resources that the plurality of job workers are willing to make available for job execution, information about network conditions of the mobile network, and information about network resources allocated to job workers in the mobile network; changing (540) a network resource allocation for at least one of the one or more job workers; providing ( 550 ) job part assignments to the one or more job workers based on the determined assignments; receiving (570) a partial job execution result generated by the one or more job workers; Aggregating (580) the partial job execution results to generate a complete job execution result; as well as The complete job execution result is provided (590) to the job finder.

3. A method performed by one or more computing devices in a mobile telecommunications network including at least one base station, the method comprising: receiving (510) a request from a job finder to perform a job in the mobile telecommunication network, the job being unrelated to providing a mobile telecommunication service; obtaining (520), for each job worker of a plurality of job workers that are part of the mobile telecommunication network, information regarding resources that the job worker is willing to make available for job execution; determining (530) an assignment of a job part to one or more of the plurality of job workers based on the requirements of the job, the information about resources that the plurality of job workers are willing to make available for job execution, information about network conditions of the mobile telecommunication network, and information about network resources allocated to job workers in the mobile network; providing ( 550 ) job part assignments to the one or more job workers based on the determined assignments; receiving (570) a partial job execution result generated by the one or more job workers; Aggregating (580) the partial job execution results to generate a complete job execution result; as well as The complete job execution result is provided (590) to the job finder.

4. The method according to claim 2, wherein: The one or more job workers include mobile devices.

5. The method according to claim 4, wherein: The one or more job workers also include non-mobile computing devices.

6. The method according to claim 2, wherein: The job finder is part of the mobile network.

7. The method according to claim 2, wherein: The job finder is external to the mobile network.

8. The method according to claim 2, wherein: The request to execute the job in the mobile network includes one or more of: information about an amount of computing resources required to execute the job, information about an expected delay to complete execution of the job, and information about an amount of storage resources required to execute the job.

9. The method according to claim 2, wherein: The information about resources that a job worker among the multiple job workers is willing to make available for job execution includes one or more of the following: information about the amount of computing resources that the job worker is willing to make available for job execution, information about the amount of memory resources that the job worker is willing to make available for job execution, information about the amount of storage resources that the job worker is willing to make available for job execution, and information about the time when the job worker is willing to participate in job execution.

10. The method according to claim 2, wherein: The information about the network condition of the mobile network includes information about current network conditions of the mobile network and information about predicted future network conditions of the mobile network.

11. The method according to claim 2, further comprising: Data on which the job is to operate is provided (560) to the one or more job workers.

12. The method according to claim 2, wherein: Changing the network resource allocation for the at least one job worker includes changing a radio resource allocation for the job worker.

13. The method according to claim 12, wherein: Changing the radio resource allocation for the job worker includes one or more of: changing the radio bandwidth for the job worker, changing the radio transmit power for the job worker, changing the beamforming setting for the job worker, and changing the modulation coding scheme MCS setting for the job worker.

14. The method according to claim 2, wherein: Changing the network resource allocation for the at least one job worker includes changing a non-radio resource allocation for the job worker.

15. The method according to claim 14, wherein: Changing the non-radio resource allocation for the job worker includes changing a priority assigned to network traffic associated with the job worker.

16. The method according to claim 2, wherein: The assignment of job parts to the one or more job workers is determined based on an optimization objective function.

17. A non-transitory machine-readable storage medium providing instructions that, when executed by one or more processors of one or more computing devices, cause the one or more computing devices to perform the method of any one of claims 1-16.