Network architecture refers to the design of a computer network. It is the framework for the specification of a network's physical components and their functional organization and configuration, its operational principles and procedures, as well as communication protocols used. Two of the most widely used types of network architecture are peer-to-peer and client/server.
Client/server architecture is also called ‘tiered’ because it uses multiple levels, typically to reduce design complexity, with each layer offering services to the higher layers. For example, a typical OSI (open system interconnection) model includes:
With respect to reconfigurable network architecture, attention is respectfully drawn to U.S. Pat. No. 11,245,619B1, titled “Dynamic fabric system,” which states “Directed to dynamic fabric systems and methods are disclosed for providing connections between endpoints of a communication network. An exemplary dynamic fabric system can include backplane lanes, a dynamic fabric device, and a control device. The dynamic fabric device can include local fabric lanes and a network interface device configurable to communicatively connect the local fabric lanes to a network. The dynamic fabric device can also include a local switch configurable forward messages to backplane lanes and an interconnect configurable to statically connect local fabric lanes and corresponding backplane lanes. The dynamic fabric device can also include a controller configurable to create or break these static connections. The control device can provide instructions to the dynamic fabric device to create or break the static connections based on changes in the number of active dynamic fabric devices installed in the dynamic fabric system.”
See also U.S. Pat. No. 11,051,183B2, titled “Service provision steps using slices and associated definitions” and which refers to “A system for managing a network comprising an Operator Domain. The system comprises a hierarchical system of management functions; and a respective service catalogue associated with each management function. The service catalogue storing information of services that can be provided by the management function to at least one higher level management function.”
Note as well U.S. Pat. No. 11,050,626B2, titled “Service provision for offering network slices to a customer” which discloses “A system for managing a network comprising at least one network slice instance including at least one network slice subnet instance. The system comprises a network slice management function associated with each network slice instance, the network slice management function configured to expose one or more management functions to a customer such that the customer can effect limited management of its associated network slice instance; and a network slice subnet management function associated with each network slice subnet instance, the network slice management function configured to expose one or more management functions to a customer such that the customer can effect limited management of its associated network slice subnet instance.”
Further, note “Pool Detective”, last accessed on the Internet on Aug. 4, 2022, including MIT's press release (By Gert-Jaap Glasbergen and Neha Narula) dci.mit.edu/research/2020/8/21/pool-detective-lead-gert-jaap-released-a-new-research-description-for-pool-detective-who-is-monitoring-mining-pools and github.com/mit-dci/pooldetective and medium.com/mit-media-lab-digital-currency-initiative/who-is-monitoring-mining-pools-65de79b90710 “In order to address the risk that mining pool operators could go rogue, DCI developed Pool Detective. The idea is simple: We join all the public mining pools and monitor what they're doing, making sure it matches the work we′d expect to see. We add a proxy server between our own mining hardware and each mining pool in order to archive the jobs the mining pool instructs our hardware to perform, and the work we produced in return.” Additionally, note gertjaap.org/portfolio/dci-pooldetective/“That's why I started working on a project called PoolDetective for the DCI in the summer of 2019. The idea is quite simple: we position ourselves between the mining hardware and the mining pool(s), and we archive all communication that happens between the two. We archive the jobs the mining pool instructs our hardware to perform, and the work we produced in return.” Yet in addition, note dci.mit.edu/research/2020/6/19/bitcoin-magazine-netherlands-podcast-gert-jaap-glasbergen-was-interview-on-the-new-security-project-pool-detective.
Nonetheless, a need exists for other or better alternatives for computer network architectures and methods of computing.
This Summary is provided to introduce the idea herein that a selection of concepts is presented in a simplified form as further described below. This Summary and the following Overview are not intended to identify key features or essential features of subject matter, nor are the Summary and Overview intended to be used to limit the scope of claimed subject matter. Nothing herein is intended to serve as an admission of prior art, as the comments are present and informal understandings. Additional aspects, features, and/or advantages of examples will be indicated in part in the description which follows and, in part, will be apparent from the description, or may be learned by practice of the disclosure.
The following description of modes, the drawings, and the Summary are illustrative and are not to be construed as limiting. Numerous specific details are described to provide a thorough understanding of the disclosure. However, in certain instances, well-known or conventional details are not described to avoid obscuring the description. References to one or an embodiment in the disclosure can be, but not necessarily are, references to the same embodiment; and, such references mean at least one of the embodiments.
Reference in this specification to “one embodiment” or “an embodiment” means that a feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the disclosure. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment, nor are separate or alternative embodiments mutually exclusive of other embodiments. Moreover, various features are described which may be exhibited by some embodiments and not by others. Similarly, various requirements are described which may be requirements for some embodiments but not for other embodiments.
The terms used in this specification generally have their ordinary meanings in the art, within the context of the disclosure, and in the specific context where each term is used. Certain terms that are used to describe the disclosure are discussed below, or elsewhere in the specification, to provide additional guidance to the practitioner regarding the description of the disclosure. For convenience, certain terms may be highlighted, for example using italics and/or quotation marks. The use of highlighting has no influence on the scope and meaning of a term; the scope and meaning of a term is the same, in the same context, whether or not it is highlighted. It will be appreciated that same thing can be said in more than one way.
Consequently, alternative language and synonyms may be used for any one or more of the terms discussed herein, nor is any special significance to be placed upon whether or not a term is elaborated or discussed herein. Synonyms for certain terms are provided. A recital of one or more synonyms does not exclude the use of other synonyms. The use of examples anywhere in this specification including examples of any terms discussed herein is illustrative only and is not intended to further limit the scope and meaning of the disclosure or of any exemplified term. Likewise, the disclosure is not limited to various embodiments given in this specification.
Without intent to limit the scope of the disclosure, examples of instruments, apparatus, methods, and their related results according to the embodiments of the present disclosure are given below. Note that titles or subtitles may be used in the examples for convenience of a reader, which in no way should limit the scope of the disclosure. Unless otherwise defined, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this disclosure pertains. In the case of conflict, the present document, including definitions will control.
With the foregoing in mind, consider apparatuses and articles of manufacture, processes for using the apparatuses and articles, processes for making the apparatuses and articles, and products produced by the processes of making, along with necessary intermediates, in the context that some, but not all, embodiments concern, in whole or part, relating to a dynamically configurable/reconfigurable computer network architecture.
In that context, in another one way of thinking, there can but need not necessarily be or entirely be, a dynamically configurable network architecture apparatus. The apparatus in whole or part can, but need not always, comprise a director computer configured to: communicate via Y worker computer connections, such that Y≥2, to two or more worker computers, with at least one worker computer connection to each worker computer; communicate via X assignment computer connections, such that X≥Y+2, to a group of one or more assignment computers; communicate such that for each instruction received from each said assignment computer connection, the instruction including a specification of a set of elements to be tested to determine whether any element of the set satisfies a condition: assign the instruction to one said worker computer connection; send the instruction to the one said worker computer connection; and if a response is received from the one said worker computer connection, the response including identification, if any, of the elements specified in the instruction that satisfies the condition, then send the response to the assignment computer connection from which the instruction was received; and if the response is not received from the one said worker computer connection, then indicate to the assignment computer connection from which the instruction was received that no response was received.
From another perspective, in yet another one way of thinking, there can but need not necessarily be or entirely be, method such as a method of making, e.g., a network architecture. The method or process may in whole or part, comprise: configuring a network architecture, including: interconnecting a director computer to communicate via Y worker computer connections, such that Y≥2, to two or more worker computers, with at least one worker computer connection to each worker computer; interconnecting the director computer to communicate via X assignment computer connections, such that X≥Y+2, to a group of one or more assignment computers; configuring the director computer to communicate such that for each instruction received from each said assignment computer connection, the instruction including a specification of a set of elements to be tested to determine whether any element of the set satisfies a condition, the director computer: assigns the instruction to one said worker computer connection; sends the instruction to the one said worker computer connection; and if a response is received by the director computer from the one said worker computer connection, the response including identification, if any, of the elements specified in the instruction that satisfies the condition, then the director computer sends the response to the assignment computer connection from which the instruction was received; and if the response is not received by the director computer from the one said worker computer connection, then by the director computer indicates to the assignment computer connection from which the instruction was received that no response was received.
Again, In that context, in yet another yet another way of thinking, there can, but need not always, be a method or process of using, e.g., a network architecture that is dynamically configurable. The method may, in whole or part comprise: communicating, by a director computer via Y worker computer connections, such that Y≥2, to two or more worker computers, with at least one worker computer connection to each worker computer; communicating, by the director computer via X assignment computer connections, such that X≥Y+2, to a group of one or more assignment computers; communicating, by the director computer such that for each instruction received from each said assignment computer connection, the instruction including a specification of a set of elements to be tested to determine whether any element of the set satisfies a condition, including: assigning the instruction to one said worker computer connection; sending the instruction to the one said worker computer connection; and if a response is received from the one said worker computer connection, the response including identification, if any, of the elements specified in the instruction that satisfies the condition, then sending the response to the assignment computer connection from which the instruction was received; and if the response is not received from the one said worker computer connection, then indicating to the assignment computer connection from which the instruction was received that no response was received.
Industrial applicability is representatively directed to that of apparatuses and devices, articles of manufacture, and processes of making and using them as disclosed herein. Industrial applicability also includes industries engaged in such as one or more of computer science and electrical engineering, field programmable gate arrays, application specific integrated circuits, cryptography, cryptocurrency mining, central processing units, simulations, memory such as random access memory, nonvolatile memory, and rotating media storage or solid state flash memory storage, networking, communications and/or telecommunications, and computing systems, e.g., those involving networking and networking architecture, with or without a director computer, e.g., as in layers, as well as industries operating in cooperation therewith, depending on the implementation.
By way of an overview, the inventors herein observed that certain network architectures and features thereof have limitations that may not have previously observed. There can be a one-to-one relationship between assignment computers and worker computers in prior architectures, which results in assignment computers issuing instructions that do not allow the efficient usage of worker computer resources or the implementation of certain policies of how worker computer resources are to be distributed to users. This one-to-one relationship and its implications for network architecture accord an opportunity for improvement.
Consider, for example, a proxy server that essentially does not change an instruction that is forwarded to the groups of computers; it relays the instruction essentially unchanged and relies on the computer executing the program to interpret the instruction. Because the proxy server does not interpret the instructions, and it only forwards them, it does not make modifications to the instructions so that the worker computers can perform the instructions more efficiently, or enable more users to share the worker computer resources. The one-to-one relationship between the instructions issued to the proxy server and the instructions relayed to the worker computers is due to the instructions and responses being directly passed by the proxy server between the assignment computers issuing instructions and the worker computers performing the instructions, and so the assignment computer creates instructions suited for a particular worker computer. However, the assignment computer may not be able to create the instructions best suited to take advantage of the capabilities of the worker computer(s), or to create instructions that are consistent with a particular policy of sharing worker computer resources. The assignment computer may not be able to obtain information about the worker computers or the network architecture on which the worker computers reside to best create these instructions, and therefore the worker computers are underutilized or utilized with suboptimal performance. That is, typically with a proxy server, a worker computer may be selected to perform the instruction at the time the instruction is received, rather than predetermining the worker computer(s) that performs the instruction or reconfiguring the network architecture to better handle the instruction.
The forgoing issues become amplified to great significance in computing at scale, and often, teams of worker computers numbering in the hundreds to millions are tasked with finding solutions to particular mathematical or combinatorial problems. These problems include determining the correct conformation of proteins, analyzing signals acquired from radio telescopes, finding the optimal routing paths of thousands of delivery trucks, routing paths around printed circuit boards or integrated circuits, testing cryptographic keys to attempt to break ciphers or determine if a signature is forged, cryptocurrency mining, etc. A vast number of solutions must be attempted by these enormous teams of computers, and the inventors have observed that networking infrastructure would be useful for distributing the work to computers within the teams so that the solutions may be efficiently searched, and the proposed solutions verified. The inventors have also observed that a network can be designed specifically for assigning the requests to search for solutions to particular worker computers and then to relay the results of these searches to the computer requesting the search. Because of the enormous scale of these searches, the inventors have further observed that several strategies can be used to distribute the work. The embodiments herein illustrate implementation of various strategies in order to adapt configurations of worker computers and problem search sizes. For example, depending on the available worker computers and the searches to be performed, larger search spaces can be divided into smaller spaces, or alternatively, smaller searches aggregated into a single search.
In an instruction, a solution to a problem can be defined in a way that one or more proposed solutions comprise a set of elements, with each element being a potential solution to the problem. Each element can be subjected to a test, which is implemented by a computer specially programmed so that the result of the test registers whether or not the element satisfies a particular condition. Each element can be subjected to a test, which is implemented by a computer specially programmed so that the result of the test registers whether or not the element satisfies a particular condition. For example, in an orbital dynamics simulation, an element may be an initial configuration of planetary bodies and spacecraft bodies, and the test could determine the evolution of the bodies, and the desired condition could be that the spacecraft is located in a particular position at the end of the simulation. As another example, a protein folding simulation may assign a particular starting protein conformation as an element, the test could be a simulation of the motions of the amino acids, and the condition could be that the energy of the conformation has been reduced by a certain desired amount below the initial energy before simulation. Yet another example, involving cryptography, involves finding a nonce that, when cryptographically hashed with a given bit pattern, generates a number less than or equal to a certain integer. In this example, the elements are the nonces to be tested, the test is the cryptographic hashing operation, and the desired condition is that the result of the cryptographic hash operation is less than or equal to a certain integer. Even though all of these problems appear to be quite different types of computations, these all have in common that, when being solved at large scales, a network architecture that can efficiently distribute the task of finding solutions, if any, to many networked computers.
Accordingly, in connection with the embodiments used collectively to teach the broader principles herein, as a teaching example, consider a network architecture structure. The teaching structure can include a director computer, which can be implemented by one or more computer systems acting in concert, depending on the configuration of particular preference. The director computer receives instructions to test a set of elements to determine whether these elements are solutions to a problem defined by a condition. These instructions are received, typically individually, from assignment computers that each request the tests. The director computer assigns each instruction to a worker computer and then sends the instruction to the worker computer. The director computer may receive a response from the worker computer that identifies one of the elements of the set that the worker computer tested as satisfying the condition and therefore solves the problem. The director computer sends the identity of this solution to the assignment computer that requested the test. If the worker computer did not identify any of the elements as satisfying the condition, the director computer may indicate to the assignment computer that no elements were identified as satisfying the condition.
The foregoing has many implications for network architecture, and a variety of teaching embodiments illustrate the broader principles herein. For example, the director computer can divide a single set of elements to be tested into several smaller sets of elements, each of which may be tested independently by respective worker computers. Alternatively, the director computer can combine sets of elements into a single set of elements that can be tested by a worker computer. In another example, the director computer can direct instructions to particular worker computers that are able to perform particular types of tests, and/or the director computer can assign work to worker computers capable of performing particular tests that require particular computing resources. And after a network architecture is configured to handle an instruction, the network reconfigures to handle a subsequent instruction, e.g., using any combination of such as the foregoing.
As may be preferred in one application or another, the director computer may mediate authentication, encryption, or other computer security measures to ensure the integrity of the network and the solutions that are produced by the worker computers on the network. This can be especially useful where the computational effort, to which various participants and/or organizations are contributing by using the network, is audited.
An instruction 114 may request, for example, that a worker computer 102 test a set 118 of elements to determine whether any element 122 of the set 118 satisfies a condition 124. Instructions 114 may be received by the director computer 100 communicated over an assignment computer connection 106 from an assignment computer 108. A condition to be satisfied 124 can be determined by the problem to be solved. For example, for a protein folding simulation, a condition to be satisfied 124 may be a particular protein conformation with reduced energy. For factoring integers, a condition to be satisfied 124 could be that the identified integer factors multiply together to be the integer that is to be factored. For cryptocurrency mining, a condition to be satisfied 124 could be the identification of a nonce that, when hashed by a particular cryptographic hash algorithm, produces an integer less than a certain target number. The possible solutions to be tested are a set 118, and the individual potential solutions within this set 118 are the elements 122 of the set. An instruction 114 generally includes, indicates, specifies, or implicates a type of test to be performed, and the specification 116 of the set 118 of elements 120 to be tested, to determine whether any element 122 of the set 118 satisfies a condition 124. If, for example, an instruction 114 includes a larger set 118 of elements to be tested 120, generally more work is required of the worker computers 102 that perform the instruction 114 to test the set 118 of elements 120. The worker computers 102 with sufficient computational capacity can be used to perform the instruction 114, with the needed computational capacity generally increasing as the set 118 of elements to be tested 120 increases in size. Generally, as the instruction 114 determines the amount of the computational capacity of the worker computers 102 that is needed to perform the instruction 114, by changing the instruction 114, the amount of computational capacity needed for the worker computers 102 to perform the instruction 114 can be altered, e.g., to suit the computational capacity of the worker computers 102 to be committed to performing the instruction 114.
What constitutes relevant measures of computational capacity depends on the particular test being performed by a worker computer 102. For example, if a simulation is being performed, e.g., a simulation of protein folding or a planetary dynamics simulation, a relevant measure of computational capacity may be the number of cycles of simulation that to be performed within a given interval of time. Similarly, if performing cryptographic hash operations to find a nonce such that the cryptographic hash is an integer less than or equal to a target number, the number of cryptographic hash operations that may be performed within a given interval of time is a relevant measure of computational capacity. For types of computations involving floating point operations, a number of floating-point operations per interval of time may be a measure of computational capacity. For graphics processing units, the number of graphics processing units or a number of geometric operations per interval of time may be a measure of computational capacity. Particular application specific integrated circuits may be required for a particular test, and a relevant measure of computational capacity may be the number of application specific integrated circuits of a particular type or model present. Another measure of computational capacity may be a quantity of random-access memory or nonvolatile memory. An instruction 114 received by a director computer 100 may indicate more than type of computational resource, and the director computer 100 may be required to find a worker computer or several worker computers 102 that have the indicated computational resources to assign the instruction 114 to.
Worker computers 102 that perform the instruction 114 test elements of the set 116 to be tested 120. If a worker computer 102 determines that an element 122 satisfies the condition 124 given by the test, the worker computer 102 may return a response 136 to the director computer 100 via a worker computer connection 104 which includes the identity of one or more elements 122 of the set 118 that satisfies the condition 124. If the worker computer 102 tests the set 118 of elements to be tested 120 and did not identify an element 122 of the set 118 satisfies the condition 124, the worker computer 102 may return a response 136 to the director computer 100 via a worker computer connection 104 indicating that the worker computer 102 did not identify an element 122 of the set 118 that satisfies the condition 124.
Hypothetically, consider an assignment computer 108 that communicates directly to a worker computer 102 and does not have its communications mediated by a director computer 100 and receives the information about the computational capacity of the worker computer 102 directly from a worker computer 102, and in response to receiving this information, the assignment computer 108 issues an instruction 114 to the worker computer 102 that utilizes the computational capacity of the worker based on the information. Because the hypothetical worker computer 102 usually communicates its full computational capacity to the assignment computer 108, the instruction 114 issued by the assignment computer 108 generally make use of, e.g., fully utilizes the computational capacity of the worker computer 102. An instruction 114 issued by the hypothetical assignment computer 108 that utilizes the full capacity of a worker computer 102 may not be desirable in many situations.
However, as described herein, a director computer 100 can mediate the communications between the assignment computers 108 with assignment computer connections 106 and with the worker computers 102 with worker computer connections 104 so that the assignment computers 108 and the worker computers 102 do not directly communicate. Because the communications between a worker computer 102 and an assignment computer 108 can be mediated by a director computer 100, the director computer 100 may alter the information about the computational capacity of a worker computer 102 when this information is communicated to an assignment computer 108. The assignment computer 108 then issues instructions 114 based on the altered information about the computational capacity, and the director computer 100 can then influence the amount of computational capacity required by an instruction 114 by communicating a computational capacity of one or more worker computers 102 to an assignment computer 108 that achieves an instruction 114 that utilizes a desired computational capacity of a worker computer 102 which does not necessarily utilize the full computational capacity of the worker computer 102. In this way, a director computer 100 may receive instructions 114 from assignment computers 108 that utilize a target amount of computational capacity on one or more worker computers 102.
The director computer 100 communicates 110 via Y worker computer connections 104 such that Y≥2 to two or more worker computers 102, with at least one worker computer connection 104 to each worker computer 102. The director computer 100 communicates 112 via X assignment computer connections 106 such that X≥Y+2 to a group of one or more assignment computers 108. Using the pigeonhole principle, if there are Y number of worker computer connections 104, and the X number of assignment computer connections 106 is at least two greater than the Y number of worker computer connections 104, then there must be at least two worker computer connections 104 which may be associated with at least two assignment computer connections 106, or there must be a worker computer connection 104 which may be associated with three or more assignment computer connections 106. Therefore if X≥Y+2, there will be at least one worker computer connection 104 which may be assigned 130 work from at least two assignment computer connections 106, and because Y≥2 there are at least two worker computer connections 104. If two or more assignment computer connections 106 are available for a worker computer connection 104, the director computer 100 can communicate a different computational capacity for each of the assignment computer connections 106, with the total of the computational capacity communicated to the assignment computer connections 106 being less than or equal to the worker computer connection 104 computational capacity. The assignment computers 108 may then issue instructions 114 over each of the assignment computer connections 106 that utilize the computational capacity communicated by the director computer 100 over each respective assignment computer connection 106. In this way, a director computer 100 may receive an instruction 114 from each of the assignment computer connections 106 that the director computer 100 is communicating for a given worker computer 102, and each of these instructions 114 may utilize a target amount of computational capacity given by the computational capacity communicated by the director computer 100 over the respective assignment computer connection 106. If the instructions 114 for the assignment computer connections 106 each only utilized a fraction of the computational capacity of the worker computer 102, then if only one instruction 114 was issued, this instruction 114 would utilize only part of the computational capacity of the worker computer 102 and the remainder of the computational capacity would be unused. If there are two or more instructions 114 that each use a fraction of the computational capacity are issued, the total of the computational capacity of these two or more instructions 114 can utilize the full capacity of the worker computer 102. Therefore, the director computer 100 creates two or more assignment computer connections 106 for a worker computer 102 so that the worker computer 102 can obtain two or more instructions 114, with each of these instructions partially utilizing the worker computer 102, but together the instructions utilize the entire capacity of the worker computer 102. This step enables a director computer 100 to flexibly partition the capacity of a worker computer 102 to adapt to different amounts of computational capacity available from worker computers 102, and to conform to a policy, as may be preferred in one application or another, of how the computational capacity of worker computers 102 is to be used.
As examples, there may be Y=3 worker computer connections 104, Y=5 worker computer connections 104, or Y=10 worker computer connections 104. As X≥Y+2, where there are Y=3 worker computer connections 104, there must be X≥5 assignment computer connections 106, so for example there may be X=7 assignment computer connections 106. When there are Y=5 worker computer connections, there must be X≥7 assignment computer connections 106, so for example there may be X=13 assignment computer connections 106. As a further example, when there are Y=10 worker computer connections 104, there must be X≥12 assignment computer connections, so for example there may be X=12 assignment computer connections.
A director computer 100 may receive an instruction 114 that includes a specification 116 of a set 118 of elements to be tested 120 to determine whether any element 122 of the set 118 satisfies a condition 124. For each 126 instruction 114 received from each said assignment computer connection 106, the director computer then can perform the following operations: The director computer 100 assigns the instruction 114 to one said worker computer connection 130. The director computer 100 sends the instruction 114 to the one said worker computer connection 134. If the director computer 100 receives a response 136 from the one said worker computer connection 132, the response 136 including the identities 138, if any, of the elements 122 of a set 118 that satisfy the condition 114, send the response 136 to the assignment computer connection from which the instruction 114 was received 128140. If the director computer 100 does not receive a response 136 from the one said worker computer connection 132, indicate to the assignment computer connection from which the instruction 114 was receives 128 that no response 136 was received 142.
The action of the director computer 100 receiving the instruction 114 from an assignment computer connection 106 may be performed in many ways. For example, the instruction 114 includes a specification 116 of a set 118 of elements 120 to be tested to determine whether any element 122 of the set 118 satisfies a condition 124. The director computer 100 may receive the instruction 114 from an assignment computer connection 106 without being mediated by a proxy server of the network. Alternatively, the director computer 100 may receive the instruction 114 from a proxy server that mediates the assignment computer connection 106. A computer acting as a proxy server may be an other director computer 100. There may be multiple director computers 100 mediating the communication of an instruction 114 and responses 136 between an assignment computer 108 and a worker computer 102. Various methods and policies for managing computational capacity may be implemented by either one director computer 100 that mediates between an assignment computer 108 and a worker computer 102, or many director computers 100 that each implements a method or policy for managing computational capacity. The methods a director computer 100 may use, to receive instructions 114 from assignment computer connections 116 and arrange one or more director computers 100 to mediate between assignment computers 108 and worker computers 102, depend on the particular embodiment that may be preferred in one case or another.
Also, the action of the director computer 100 assigning the instruction 114 to one said worker computer connection 132130 can be performed in many ways. For example, one method of performing the action is for the director computer 100 to associate a worker computer connection 104 with one or more assignment computer connections 106, and then assign the instruction received over an assignment computer connection 106 to the associated worker computer connection 104. The director computer 100 may maintain records of the instructions 114 being performed on worker computers 102 as well as records of the computational capacity utilized by the performance of the instructions 114 on the worker computers 102. When receiving an instruction 114, the director computer 100 may identify one or more worker computers 102 that has computational capacity available to perform the instruction 114 and assign the instruction 114 to those one or more worker computers 102. The director computer 100 may implement a policy of how the computational capacity of the worker computers 102 is to be used. For example, a certain amount of computational capacity may be dedicated or selectively dedicated to be utilized by a particular computer user or group of computer users so that a requisite computational capacity of the worker computers 102 is operated in accordance with the directives of the computer user or group of computers users, e.g., with the director computer 100 configuring one or more worker computers 102 to operate in accordance to these directives and to perform instructions 114 that utilize the requisite computational capacity in accordance to these directives. The director computer 100 may be issued an authentication token, for example a non-fungible token, which is used to authorize a directive as to how requisite computational capacity of the worker computers 102 is to be operated, and the director computer 100 may configure the worker computers 102 to operate in accordance with these directives and perform instructions 114 that utilize the requisite computational capacity in accordance with these directives. The methods a director computer 100 may use, to assign instructions 114 to worker computer connections 130, depend on the particular embodiment that may be preferred in one case or another.
A director computer 100 that assigns an instruction 114 received from an assignment computer connection 106 to one said worker computer connection 132130 may select instructions 114 that it receives from any of the assignment computer connections 106 to assign 130 to one said worker computer 114. The director computer 100 may select or reselect one or more of the assignment computer connections 106 so that the instructions 114 that are assigned to the worker computer connection 104 are received from the selected or reselected one or more assignment computer connections 106. A director computer 100 may select or reselect assignment computer connections 106 that can send instructions 114 that partially or fully utilize the resources of a worker computer connection 104 as given by a particular policy of utilization of the worker computer connection 104. In particular, as a director computer 100 communicates with two or more assignment computer connection 106 for a worker computer connection 104, the director computer 100 may select or reselect two or more assignment computer connections 106 that send instructions 114, each of which partially utilize the computational capacity of a worker computer connection 104, but the total computational capacity utilized by the instructions 114 use or fully utilize the computational capacity of the worker computer connection 104. In addition, a director computer 100 may initiate assignment computer connections 106 so that it can obtain instructions 114 that partially or fully utilize the capacity of the worker computer connection 104. Because a director computer 100 may initiate assignment computer connections 106 and change the selection of assignment computer connections 106 that the director computer 100 communicates via for a worker computer connection 104, the director computer 100 can dynamically configure, reconfigure, or both to enable the network architecture to receive instructions 114 from assignment computer connections 106 that make use of, e.g., fully utilize, the computation capacity of a worker computer connection 104. The dynamic reconfiguration of the network architecture through initiating assignment computer connections 106 and/or selecting assignment computer connections 106 enables the director computer 100 to obtain instructions 114 from assignment computer connections 106 that utilize a needed amount of computational capacity of the worker computer connection 104 so that the utilization of computational capacity of the worker computer connection 104 conforms to a policy of worker computer 102 computational capacity utilization.
The action of a director computer 100 sending the instruction 114 to the one said worker computer connection 134 may be performed in many ways. For example, the director computer 100 may identify a network connection which implements a worker computer connection 104 that has been assigned the instruction 114 by the director computer 100, and then send the instruction 114 to the worker computer connection 114 so identified. The director computer 100 may identify an other computer, such as a proxy server that mediates the worker computer connection 104, and send the instruction 114 to the other computer that then relays the instruction 114 to the worker computer connection 104. An other computer acting as a proxy server may be an other director computer 100. The methods a director computer 100 may use, to send the instruction 114 to the one said worker computer 134, depend on the particular embodiment that may be preferred in one case or another.
The action of a director computer 100 receiving a response 136 from the one said worker computer connection 132, the response 136 including the identities 138, if any, of the elements 122 of a set 118 that satisfy the condition 114, and sending the response 136 to the assignment computer connection 106 from which the instruction 114 was received 128, 140 may be performed in many ways. For example, the director computer 100 may receive the response 136 from the worker computer connection 132 or an other computer such as a proxy server which mediates the one said worker computer connection 132. An other computer acting as a proxy server may be an other director computer 100. The director computer 100 may send the response 136 to the assignment computer connection 106 from which the instruction 114 was received, and the assignment computer connection 106 may be a connection not mediated by a proxy server, or may be mediated by a proxy server, and an other director computer 100 may serve as a proxy server. The response 136 may indicate to the assignment computer connection 106 from which the instruction 114 was received the identity of any elements 122 that satisfy the condition 124 that are received in the response 136 from the one said worker computer connection 132. Or if the director computer 100 did not receive the identity of any elements 122 that satisfies the condition 124 in the response 136 from the one said worker computer connection 132, the director computer 100 may indicate in the response 136 to the assignment computer 106 from which the instruction 114 was received that no elements 122 that satisfy the condition 124 were identified. If the director computer 100 does not receive a response 136 from the one said worker computer connection 132, the director computer 100 may indicate to the assignment computer connection 106 from which the instruction 114 was received 128 that no response 136 was received 142. The director computer 100 may wait a predetermined period of time to receive a response 136 from the one said worker computer connection 132 after the instruction 114 was sent by the director computer 100 to one said worker computer connection 132. If no response 136 is received by the director computer 100 within that time, the director computer 100 may indicate to the assignment computer connection 106 from which the instruction 114 was received 128 that no response 136 was received. The one said worker computer connection 132 may indicate a fault, for example, a failure of the worker computer 102 performing the instruction 114, or a failure of the network on which the one said worker computer connection 132 operates, and then the director computer 100 may indicate to the assignment computer connection 106 from which the instruction 114 was received 128 that no response 136 was received 142. The director computer 100 may decide to send a new instruction 114 to the one said worker computer connection 132 so that the worker computer receiving the instruction 114 terminates performing an instruction 114 already sent by a director computer 100 to the worker computer and performs the new instruction 114. The director computer 100 may then indicate to the assignment computer connection 106 from which the instruction 114 which had its performance terminated was received that no response was 136 received 142. The methods a director computer 100 may use, to send the response 136 to the assignment computer connection 106 from which the instruction was received 114 or indicate to the assignment computer connection 106 from which the instruction was received 114 that no response 136 was received, depend on the particular embodiment that may be preferred in one case or another.
The director computer 100 may communicate with assignment computer connections 106 that are local area networks, wide area networks, wireless networks, packet switching networks, store-and-forward networks, etc. Similarly, the director computer 100 may communicate with worker computer connections 104 that are local area networks, wide area networks, wireless networks, packet switching networks, store-and-forward networks, etc. The assignment computers may each be commodity computing hardware equipment, for example based on Intel or ARM processors, with volatile RAM memory, rotating media storage or solid-state nonvolatile storage, network interfaces for connecting to local or wide area networks, etc. An operating system such as Linux, Windows, or a BSD variant may be executing on the commodity computing hardware. The assignment computers may be organized into a high-performance computing cluster to act in concert. The worker computers 102 may similarly be commodity computing hardware similarly equipped or may also have specialized computing resources such as application specific integrated circuits, field programmable gate arrays, or graphics processing units. The director computer 100 may be a single computer or many computers acting in concert. The director computers 100 may likewise be commodity computing hardware equipment. The director computer may have multiple network interfaces so that the assignment computer connections 106 and the worker computer connections 104 are on separate networks and instructions 114 and responses 136 are passed between the networks by the director computer 100.
An embodiment for dynamic physical simulations, for example, simulations of protein folding or N-body dynamics simulations is described below. An assignment computer 108 creates instructions 114 that contain a specification of a physical situation to be modeled, for example, a particular order of amino acids for a protein folding simulation, or a particular initial configuration of bodies for a N-body dynamics simulation. These assignment computers 108 may be commodity hardware computing equipment as described organized into a computing cluster. The instruction 114 also contains a specification 116 of a set 118 of elements to be tested 120 to determine whether any element 122 of the set 118 satisfies a condition 124. The set 118 may be variations on the physical situation to be modeled, for example, perturbations of the initial conditions of the simulation, the addition or removal of particular amino acids or bodies, and the elements 120 of the set 118 are the individual situations to be tested 120. The specification 116 may indicate a desired outcome of the simulation, for example, a reduction in an energy functional by a certain amount that is determined by the physical parameters, or a configuration with desired properties to be achieved at the end of the simulation. The assignment computers 108 then send the instructions 114 to a director computer 100. The director computer 100 can, but need not always, be commodity computing hardware organized into a network or existing on a cloud. The director computer 100 receives an instruction 114 from an assignment computer connection 106 and examines the size of the set 118 to determine the computational capacity required to perform the simulations specified in the set 118. The director computer 100 then selects one said worker computer connection 132 that communicates the instruction 114 to a worker computer 102 that has the available computational capacity to perform the instruction 114. The director computer 100 may receive the response 136 from the one said worker computer connection 132. The response 136 contains the elements 122 of the set 118 that satisfies the condition 124, if any were found by the worker computer 102. Each of these elements 122 corresponds to an initial condition, for example, which produced a configuration at the end of the simulation with the desired properties. The director computer 100 sends this response 136 to the assignment computer connection 106 from which the instruction 114 was received 128140. The worker computer 102 generally is no longer working on the instruction 114, which is registered by the director computer 100, and so the computational resources used to perform the instruction 114 are no longer being utilized, and therefore the director computer 100 may direct another instruction 114 to the worker computer connection 104 to utilize the available computational resources. If no response 136 is received from the one said worker computer connection 132, the director computer 100 indicates to the assignment computer connection 106 from which the instruction 114 was received 142. There will be two or more assignment computer connections 106 for at least one worker computer connection 104. The director computer 100 may cause an assignment computer 108 to send instructions 114 that utilize only part of the computational capacity of a worker computer 102. For example, the size of the set 118 of elements 120 to be tested included in an instruction 114 received from an assignment computer connection 106 may only utilize a fraction of the computational capacity of the worker computers simulation capability, leaving the remainder of the simulation capability available for other instructions 114. By having two or more assignment computer connections 106, the instructions 114 to only use part of the simulation capability may be received and therefore provide the director computer 100 flexibility as to assigning worker computers to the instructions 114, so that the director computer 100 need not assign instructions 114 to a worker computer 102 that utilizes the full capacity the worker computer 102, leaving none remaining for other instructions 114. A policy of worker computer 102 utilization may require that a fraction of the simulation capacity remains available for further instructions 114, which would not be possible if there was only one assignment computer connection 106 for each worker computer connection 104 and the instructions 114 received used the full simulation capacity of worker computers 102.
Another embodiment for cryptocurrency mining, as noted above, can have an assignment computer 108 or a group of assignment computers 108 that may be one or more cryptocurrency mining pool computers. For a typical usage of a cryptocurrency mining pool, worker computers 102, which are typically cryptocurrency miner computers, directly communicates with the cryptocurrency mining pool without the instructions 114 or responses 136 passing through a mediating computer such as a director computer 100 or proxy server. The connection between a cryptocurrency mining pool and cryptocurrency miner may be Stratum protocol messages. Examples of cryptocurrency miner worker computers are by Bitmain (Antminer S9, S17, S19, etc.), AvalonMiner (A1166 Pro, 1246), WhatsMiner (M30S+), etc. In this case, the cryptocurrency mining pool sends instructions 114 to the cryptocurrency miner which instructs the miner to test cryptographic hashes in order to find a nonce such that the hashed integer value satisfies a particular condition 124, for example, being less than a particular target value. The instruction 114 also includes a set 118 of numbers to test to find the value that satisfies the condition 124. The cryptocurrency miner tests the numbers of the set 118 by hashing each number, usually with other information such as the hash of a previous block, a Merkle root (itself computed dependent on Merkle branches and/or extranonces), a timestamp, a network difficulty, a block version number, and other relevant information needed to create the block on a cryptocurrency blockchain. If the cryptocurrency miner finds such a hashed value that satisfies the condition 124, the miner sends a response 136 indicating the identity of a nonce that was hashed to satisfy the condition 124. The nonce may be hashed with the other information as proof that the hashed value satisfies the condition 124 to verify the nonce and prove that the miner performed the work of the instruction 114.
An embodiment for cryptocurrency mining may have a director computer 100 mediate between a cryptocurrency mining pool assignment computer 108 and a cryptocurrency miner worker computer 102. The director computer 100 receives instructions 114 to mine cryptocurrency from assignment computer connections 106. These instructions 114 receive a specification 116 of a set 118 of elements 120 to be tested to determined whether any element 122 of the 118 satisfies a condition 124. The specification of a set 118 of elements 120 to be tested is typically given by a set of nonces and extranonces to test, where each element 120 of the set 118 is a particular combination of nonce and extranonce. The set 118 may be specified as a part of an extranonce that is fixed and used by the miner unchanged, and a second part as a size that may be added by the miner to the fixed part so that a hashed value satisfying the condition 124 may be found. The condition 124 may be partially specified by a difficulty, which determines the acceptable hash values that a miner may obtain that satisfies the condition 124, with a higher difficulty generally corresponding to fewer acceptable hash values. The director computer 100 assigns the instruction 114 to one said worker computer connection 132. The director computer 100 may select a worker computer connection 104 based on the computational capacity of a worker computer 102, for example, measured in a number of cryptographic operations such as cryptographic hashes in a given time interval. If the instruction 114 specifies a set 118 with a larger number of elements 120 to test, for example, if the extranonce space that is to be searched has more bits of extranonce that may be added by the miner, the director computer 100 may select a cryptographic miner with a greater computational capacity, for example, a higher number of cryptographic hashes per time interval, to perform the instruction 114 as the cryptographic miner is able to search the larger set 118 more quickly. Similarly, if the instruction 114 specifies a higher difficulty, generally more elements 120 (each for example being a combination of a nonces and an extranonce) need to be tested by the cryptocurrency miner to find an element 122 of the set 118 that satisfies the condition 124, that is, has a cryptographic hash value that is within the bounds that are determined by the difficulty. Therefore, the director computer 100 may assign an instruction 114 with a higher difficulty to level to a cryptographic miner worker computer 102 with a greater computational capacity, for example, a higher number of cryptographic hashes per time interval, so that the cryptographic miner may find an element 122 that cryptographically hashes to an acceptable value within the bounds determined by the difficulty.
A cryptocurrency miner worker computer 102 performs an instruction 114 to test the set 118 of elements 120 to determine whether any element 122 satisfies the condition 124 by testing each element (each, for example, being a combination of a nonces and an extranonce) to determine if the cryptographic hash of the element including the other information is within the bounds that are determined by the difficulty. If the cryptocurrency miner communicated to by the director computer 100 via a particular worker computer connection 104 identifies such an element 122, particular worker computer connection 104 may send a response 136 to the director computer 100 with the identity of the element 122. This response 136 may include the worker computer 102 name, an identifier of a job given to the cryptocurrency miner by the cryptocurrency mining pool, a time that may be encoded into the block hash, and a nonce and extranonce that identify the element 122. The director computer 100 may record the instructions 114 that have been sent to worker computer connections 104 and record the identity of cryptocurrency miners communicated to on the worker computer connections 104, and the assignment computer connections 106 and identity of cryptocurrency mining pools the instructions 114 were received from by the director computer 100. The director computer 100 then may send the response 136 to the assignment computer connection 136 from which the instruction 114 was received. This may include relaying the response 136 including the same information in the response including the worker computer 102 name, identifier of the job, a time encoded into the block hash, a nonce and extranonce that identify the element 122, etc.
The director computer 100 may configure or reconfigure the connections to a cryptocurrency mining pool so that the pool sends instructions 114 that utilize only part of the computational capacity of a worker computer 102, for example, by sending instructions 114 with a reduced difficulty so that a cryptocurrency miner performing the instruction 114 requires less time to find an element 122 that satisfies the condition 124. The director computer 100 may request to the cryptocurrency mining pool a difficulty for an instruction 114 so that the performance of the instruction 114 utilizes only a fraction of the computational capacity (for example, number of cryptographic hashes per interval of time) of a cryptocurrency miner, and the remainder of the computational capacity of the cryptocurrency miner is available for performing other instructions 114. By having two or more assignment computer connections 106 from the director computer 100 to a group of one or more cryptocurrency mining pools, the director computer 100 may request to the cryptocurrency mining pools that instructions 114 sent by the cryptocurrency mining pools each utilizes only a fraction of the computational capacity of a cryptocurrency miner. The assignment computers 106 may then send instructions 114 with a difficulty that is requested by the director computer 100, with the instructions 114 of said difficulty each utilizing only a fraction of the computational capacity of a cryptocurrency miner. This way, the computational capacity of a cryptocurrency miner may be partitioned in a way consistent with a particular policy of cryptocurrency miner utilization, as the instructions enable a sufficiently fine-grained utilization of the computational capacity of the cryptocurrency miner. An director computer 100 may be able to obtain instructions 114 for only one particular worker computer connection 104 over an assignment computer connection 106, and the director computer 100 may not be able to receive another instruction 114 from the assignment computer connection 106 until the response 136 to the instruction 114 has been sent by the director computer 100 to the assignment computer connection 106. An example of an assignment computer connection 106 with such a limitation is a connection to a cryptocurrency miner pool with the Stratum protocol. If the director computer 100 has only one assignment computer connection 106 receiving instructions 114 for a particular worker computer connection 104, then it can receive only one instruction 114 for the worker computer connection 104 until the response 136 to the instruction 114 has been sent by the director computer 100 to the assignment computer connection 106. If the instruction 114 received by the director computer 100 from the one assignment computer connection 106 for a worker computer connection 104 utilizes only a fraction of the computational capacity of the worker computer 102 performing the instruction 114 received from the worker computer connection 104, another instruction 114 is not available to utilize the remainder of the computational capacity of the worker computer 102 because there are no additional assignment computer connections 106 from which the director computer 100 may receive additional instructions 114 for the worker computer connection 104. The director computer 100 may need at least two assignment computer connections 106, each of which can receive an instruction 114 for the one worker computer connection 104, so that the director computer 100 may obtain two or more instructions 114, one instruction 114 from each of the assignment computer connections 106, with each instruction 114 perhaps only partially utilizing the computational capacity of the worker computer 102 receiving instructions 114 from the worker computer connection 104, so that the director computer 100 need not send a response 136 to an instruction 114 before receiving another instruction 114, so that the instructions 114 that may be received by the director computer 100 before responses 136 are returned for the instruction 114 may make use of, e.g., fully utilize, the computational capacity of the worker computer 104 receiving the instructions 114 from the worker computer connection 104. The director computer 100 may direct two or more assignment computer connections 106 to send instructions 114 for a worker computer connection 102 so that each instruction 114 utilizes a specified fraction of the computational capacity of the worker computer 102 connected to the worker computer connection 104, with the computational capacity utilized by each instruction 114 conforming to a particular policy of computational capacity utilization of the worker computers 104.
Instead, as is herein disclosed, the director computer 100 therefore reconfigures the connections so that there are least two assignment computer connections 106 for a worker computer connection 104 so that it may obtain instructions that each partially utilize a worker computer 102.
A further embodiment may use Z layers of director computer(s) interposed at a layer 200 to mediate the communication of instructions 114 and responses 136 between a director computer and another director computer or a worker computer connection 104. There may be Z interposing connection layers 202 between a director computer 100 and a worker computer 102. A director computer 200 interposed at the first layer (Z=1) 206 interposes communications between the director computer 100 which communicates to the assignment computer connections 106 and director computer(s) 200 interposed at the second layer (if there are such director computers) and/or worker computer connections 104. For layers Z≥2, a director computer 200 interposed at layer Z 210 mediates communication between director computers 200 interposed at layer Z−1 and director computers 200 interposed at layer Z+1 (if there are such director computers) and/or worker computer connections 104. Instructions 114 are communicated between director computers 200 interposed from layers Z−1 to Z, and the corresponding responses are communicated between director computers 200 interposed from layers Z to Z−1. For layer Z=1, the instructions 114 are received by a director 200 computer interposed at layer 1 206 from the director computer 100 and the corresponding responses 136 are sent by a director computer 200 interposed at layer 1 206 to the director computer 100. By reconfiguring the network with Z interposing connection layers 202 between a director computer 100 and a worker computer 102, the many worker computers 102 can be in communication with the director computer 100 through the director computers interposed at layers 200.
For example, there may be Z=0 interposing connection layers 202 between the director computer 100 and one said worker computer 102. In this case, the one said worker computer 102 receives communications from a worker computer connection 104 without any layers interposed between the one said worker computer 102 and the director computer 100. As further examples, there may be Z interposing connection layers 202 between the director computer 100 and one said worker computer 102, with Z=3, Z=5, or Z=10.
An example of the embodiment is that a director computer 100 receives 1300 two instructions 114 from assignment computer connections 106 to mine cryptocurrency using a test of cryptographic hashes, the first of the instructions 114 with a specification of a set 118 of elements 120 that requires a 50 terahashes per second computational capacity, and the second of the instructions 114 with a specification of a set 118 of elements 118 that requires 30 terahashes per second computational capacity. The director computer 100 may create a new instruction 1304 forms a second set of elements 1302 from the union of the sets 118 from these two instructions 114 that requires the sum of computational capacity of the two sets 118, or 80 terahashes per second. The director computer 100 then sends the instruction 1304 to a worker computer connection 1310 with the computational capacity to perform the instruction 1304. The director computer 100 may receive 1306 a response 136 with the identity of an element 122 that satisfy the condition 124. The director computer 100 may determine that the set 118 in the specification 116 in the instruction 114 received from first assignment computer connection 106 contains the element 122 that satisfies the condition 124, and the director computer 100 may then send a response to the first assignment computer connection 106 with the identity of the element 122 that satisfies the condition 124. The director computer 100 may also send a response 136 to the second assignment computer connection 106 to indicate that no elements 122 were identified that satisfy the condition 124.
At least one said instruction 114 may be an instruction to work on a cryptocurrency mining job 1622. A cryptocurrency mining job may be an instruction 114 that is performed on a cryptocurrency miner and an instruction to work on a cryptocurrency mining job may be obtained from an assignment computer connection 106 to a cryptocurrency mining pool. At least one said instruction 114 is one of a plurality of instructions 114 received from a cryptocurrency mining pool 1624. A plurality of instructions 114 may be received from a cryptocurrency mining pool by connecting to a cryptocurrency mining pool with an assignment computer connection and issuing commands, for example Stratum protocol commands, to instruct the cryptocurrency mining pool to send instructions 114, for example to mine cryptocurrency. At least one said instruction 114 may be an instruction to perform work that includes finding an element 122 such that the output of a one-way function is within a strict subset of a range of a one-way function 1626. One instruction 114 to perform such work is a instruction 114 to mine cryptocurrency, which tests elements 120 which are nonces and extranonces with a cryptographic hash function that is a one-way function so that the resulting hash value is within a strict subset of the range of the one-way function by being satisfying a condition 124 when the hash value is less than or equal to a certain target integer. An instruction 114 from an assignment computer connection 106 may include a nonce 1628. An instruction 114 from an assignment computer connection 106 may include an extranonce 1630. An instruction 114 from an assignment computer connection 106 may include a nonce and an extranonce 1632. An instruction 114 from an assignment computer connection 106 to an assignment computer 108 that is a cryptocurrency mining pool can assign instructions 114 that includes a nonce, extranonce, or both, particularly if the assignment computer connection 106 is conducted using the Stratum protocol. An instruction 114 may specify 116 a condition that determines whether the one said condition is satisfied 124 that is implemented by a computer program communicated over the assignment computer connection 106 from which the instruction 114 was received 1281634. An instruction 114 may specify a condition by communicating a program over the assignment computer connection 106, for example in a computer language like C or Python, or a specialized language, that takes an element and other necessary parameters to test for the condition as arguments and returns a result that indicates whether the element satisfies or does not satisfy the condition. The director computer 100 may relay the computer program to a worker computer connection 104. A worker computer 102 that performs the instruction 114 executes the program communicated over the assignment computer connection 106 with each element as an argument, and if it finds an element 122 that the program indicates satisfies the test, returns a response 136 with the identity of the element 122.
A communication from the assignment computer connection 106 indicating a number of bits of the 118 of elements to be tested 1910 may be a Stratum protocol message that sets an extranonce, for example one that sets the size of an extranonce2 field which indicates the number of bits the cryptocurrency miner may add to the extranonce in order to obtain a hash value that satisfies the condition 124. A director computer 100 may be configured to send no response to the assignment computer connection 106 from which the instruction was received 128 to indicate that no response 136 was received from the worker computer connection 104 selected by the director computer 1001912. A director computer 100 may be configured to send a response to the assignment computer connection 106 from which the instruction was received 128 to indicate that no response 136 was received from the worker computer connection 104 selected by the director computer 1001914. The director computer 100 may be configured to either send no response 136 to the assignment computer connection 106, or send a response 136 to the assignment computer connection 106 from which the instruction was received 128 to indicate that no response 136 was received from the worker computer connection 104 selected by the director computer 100, with the configuration determined by whether an assignment computer 108 expects or requires a response 136 to an instruction 114, e.g., whether a response 136 must be received by the assignment computer 108 before the assignment computer 108 may send another instruction 114.
In sum, it is important to recognize that this disclosure has been written as a thorough teaching rather than as a narrow dictate or disclaimer. Reference throughout this specification to “one embodiment”, “an embodiment”, or “a specific embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment and not necessarily in all embodiments. Thus, respective appearances of the phrases “in one embodiment”, “in an embodiment”, or “in a specific embodiment” in various places throughout this specification are not necessarily referring to the same embodiment. Furthermore, the particular features, structures, or characteristics of any specific embodiment may be combined in any suitable manner with one or more other embodiments. It is to be understood that other variations and modifications of the embodiments described and illustrated herein are possible in light of the teachings herein and are to be considered as part of the spirit and scope of the present subject matter.
It will also be appreciated that one or more of the elements depicted in the drawings/figures can also be implemented in a more separated or integrated manner, or even removed or rendered as inoperable in certain cases, as is useful in accordance with a particular application. Additionally, any signal arrows in the drawings/Figures should be considered only as exemplary, and not limiting, unless otherwise specifically noted. Furthermore, the term “or” as used herein is generally intended to mean “and/or” unless otherwise indicated. Combinations of components or steps will also be considered as being noted, where terminology is foreseen as rendering the ability to separate or combine is unclear.
As used in the description herein and throughout the claims that follow, “a”, “an”, and “the” includes plural references unless the context clearly dictates otherwise. Also, as used in the description herein and throughout the claims that follow, the meaning of “in” includes “in” and “on” unless the context clearly dictates otherwise. Variation from amounts specified in this teaching can be “about” or “substantially,” so as to accommodate tolerance for such as acceptable manufacturing tolerances.
The foregoing description of illustrated embodiments, including what is described in the Abstract and the Modes, and all disclosure and the implicated industrial applicability, are not intended to be exhaustive or to limit the subject matter to the precise forms disclosed herein. While specific embodiments of, and examples for, the subject matter are described herein for teaching-by-illustration purposes only, various equivalent modifications are possible within the spirit and scope of the present subject matter, as those skilled in the relevant art will recognize and appreciate. As indicated, these modifications may be made in light of the foregoing description of illustrated embodiments and are to be included, again, within the true spirit and scope of the subject matter disclosed herein.
This application claims priority to, and is a continuation of, PCT international application number PCT/US2023/029874, filed on Aug. 9, 2023, incorporated herein by reference in its entirety, which claims priority to, and the benefit of U.S. provisional patent application Ser. No. 63/398,301, filed on Aug. 16, 2022, incorporated herein by reference in its entirety. Priority is claimed to each of the foregoing applications.
Number | Date | Country | |
---|---|---|---|
63398301 | Aug 2022 | US |
Number | Date | Country | |
---|---|---|---|
Parent | PCT/US2023/029874 | Aug 2023 | WO |
Child | 19055408 | US |