Low-energy random number generation for dynamic grid stabilization of electricity system
By leveraging computational loads to generate random numbers at reduced energy costs and optimizing power usage within the grid, the system addresses the energy and carbon challenges posed by computationally intensive tasks, enhancing grid stability and reducing emissions.
Patent Information
- Application Number
- JP2024190216
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-11-30
- Filing Date
- 2024-10-30
- Publication Date
- 2025-06-17
AI Technical Summary
The growing energy consumption of computationally intensive tasks such as proof-of-work for blockchain systems and scientific machine learning, which account for a significant portion of global energy usage, poses challenges for power grid stability and carbon emissions.
A method and system that utilize computational loads to generate random numbers at a reduced energy cost by modifying proof-of-work protocols to output random values, which are then used in machine learning and other computations, while also implementing adaptive scheduling to optimize power usage based on grid availability.
This approach reduces the combined energy costs of blockchain and machine learning computations, enhances grid stability by utilizing surplus power, and minimizes carbon emissions associated with energy production.
Smart Images

Figure 2025090516000001_ABST
Abstract
Description
Technical Field
[0001] The present disclosure generally relates to systems and methods for reducing power consumption, reducing carbon dioxide emissions, and providing grid stabilization for a power system while maximizing the efficiency of scientific machine learning (SciML), AI, and other computationally intensive endeavors. More particularly, the present disclosure relates to systems and methods for reducing the combined energy cost of two or more computational loads (e.g., computational loads configured to be used as interruptible auxiliary power loads for grid stabilization), where the first computational load includes a proof-of-work task and the second computational load uses one or more random numbers as input.
Background Art
[0002] As industrial sectors (such as transportation) switch from fossil fuels to electricity and power generators use more renewable energy such as wind and solar power, issues related to power loads arise. For example, wind and solar power are not always available on demand. There may be times when no wind power is generated at all, or there may be times when more power can be generated than is currently needed. To efficiently transition to renewable power sources, it is desirable to be able to predict power availability, adjust power usage, and be flexible in responding to power consumption in order to maintain the stability and reliability of the power system.
[0003] The growth of renewable energy is also accompanied by the growth of distributed generation (e.g., homes with solar panels on their roofs), distributed energy storage (e.g., home battery systems), and advanced demand response capabilities (e.g., consumers in homes adjusting their energy usage based on changes in supply and price). All of these elements are sometimes managed together, making the power grid a more networked and complex entity.
[0004] One of the important issues is the energy consumption associated with computing, which accounts for a large portion of the world's energy usage. Examples of computations that consume large amounts of energy include proof-of-work computations related to blockchain systems (such as Bitcoin mining), and scientific and machine learning computations that require random numbers as input (such as Monte Carlo simulations). There are also estimates that the combined energy costs of blockchain computing, artificial intelligence / machine learning, and other scientific computations could grow to 20 percent of the world's total energy usage by 2030. For example, the proof-of-work computations related to Bitcoin, one of several blockchain systems, alone use an estimated over 100 terawatt-hours (TWh) of electricity globally per year, and approximately 35 percent of Bitcoin's proof-of-work hashes are attributable to the United States. See, e.g., S. Shankar, Energy Estimates Across Layers of Computing, https: / / arxiv.org / ftp / arxiv / papers / 2310 / 2310.07516.pdf. Previous attempts to reduce the energy consumption associated with Bitcoin's proof-of-work computations have not been successful. For example, some countries have tried to completely ban Bitcoin mining, but the main effect of such bans has not been to dramatically reduce the spread or energy costs of Bitcoin mining, but rather to shift Bitcoin mining to countries without the ban. Some researchers have proposed replacing Bitcoin with a cryptocurrency that requires proof-of-useful-work rather than the simple proof-of-work that Bitcoin requires. However, Bitcoin still leads the cryptocurrency market.
[0005] Another major source of increased computing load is artificial intelligence. Search engines such as Bing and Bard already incorporate AI, and more computing power is required for model training and execution. According to experts, this could increase not only the required computing power but also the energy used by up to five times per search. Furthermore, AI models need to be continuously retrained to keep up with the latest information.
[0006] In many cases, for AI and machine learning computations, computational fluid dynamics simulations, and other intense computational operations, it is necessary to use pseudo-random numbers as inputs. For example, many algorithms for training machine learning models are Monte Carlo algorithms, and the actions taken during training are based, at least in part, on random input values. As another example, in many algorithms for training image generation models, it is necessary to add random noise to the training images. Furthermore, algorithms for using machine-learned models after training may require random values. For example, text generators such as ChatGPT and Bard may use random inputs to randomly select an output from multiple options.
[0007] Overall, scientific computations that require pseudo-random numbers as input (including machine learning, etc.) use an estimated tens of terawatt-hours annually worldwide, and an estimated 10% of the energy cost associated with such computations is due to the generation of the random numbers used as input for those computations. Therefore, by reducing the energy cost associated with random number generation, it may be possible to reduce the energy usage by more than one terawatt-hour annually in some cases, which could lead to energy cost savings of more than $100 million. Additionally, reducing the energy usage may also, in some cases, reduce the amount of pollution associated with energy production from certain energy sources.
SUMMARY OF THE INVENTION
[0008] Aspects and advantages of systems and methods in accordance with the present disclosure are described in part in the following description, or will be apparent from the description, or can be learned through practice of the technology.
[0009] According to one embodiment, an exemplary method is provided. The exemplary method includes obtaining one or more work instructions associated with a proof-of-work protocol. The exemplary method includes performing one or more first tasks based at least in part on the work instructions. The exemplary method includes determining one or more random or pseudo-random values based on one or more values generated by one or more computing devices during one or more of the first tasks. The exemplary method includes performing one or more second tasks different from the one or more first tasks based on the one or more random or pseudo-random values.
[0010] According to another embodiment, a computing system is provided. The computing system includes one or more processors and one or more non-transitory computer-readable media storing instructions executable by the one or more processors to cause the computing system to perform one or more operations. The operations include obtaining one or more work instructions related to a proof-of-work protocol. The operations include performing one or more first tasks based at least in part on the work instructions. The operations include determining one or more random or pseudo-random values based on one or more values generated by one or more computing devices during the one or more first tasks. The operations include performing one or more second tasks different from the one or more first tasks based on the one or more random or pseudo-random values.
[0011] According to another embodiment, one or more non-transitory computer-readable media are provided. The non-transitory computer-readable media store instructions executable by one or more computing systems to perform one or more operations. The operations include obtaining one or more work instructions related to a proof-of-work protocol. The operations include performing one or more first tasks based at least in part on the work instructions. The operations include determining one or more random or pseudo-random values based on one or more values generated by one or more computing devices during the one or more first tasks. The operations include performing one or more second tasks different from the one or more first tasks based on the one or more random or pseudo-random values.
[0012] These and other features, aspects, and advantages of the present method will be better understood by reference to the following description and the appended claims. The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate embodiments of the technology and, together with the specification, serve to explain the principles of the technology.
Brief Description of the Drawings
[0013] A complete and enabling disclosure of the present system and method, including the best mode contemplated for making and using the system and method by those of ordinary skill in the art, is set forth in this specification with reference to the appended drawings.
Figure 1
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6
Figure 7
Best Mode for Carrying Out the Invention
[0014] Next, embodiments of the system and method of the present invention will be described in detail, and one or more examples thereof are shown in the drawings. Each example is provided for illustrative purposes and not to limit the technology. In fact, it will be apparent to those skilled in the art that modifications and variations can be made to the present technology without departing from the scope or spirit of the claimed technology. For example, features illustrated or described as part of one embodiment can be used with another embodiment to obtain still another embodiment. Accordingly, the present disclosure is intended to cover modifications and variations that fall within the scope of the appended claims and their equivalents.
[0015] As used herein, the term "exemplary" means "serving as an example, instance, or illustration." Any embodiment described herein as "exemplary" should not necessarily be construed as being more preferred or advantageous than other embodiments. Further, all embodiments described herein should be considered exemplary unless otherwise specified.
[0016] In the detailed description, numbers and letters are used to reference features in the drawings. Like or similar notations in the drawings and description are used to refer to like or similar parts of the present invention. As used herein, the terms "first," "second," and "third" can be used interchangeably to distinguish one component from another and are not intended to imply a position or importance of individual components.
[0017] Approximating words such as "about", "approximately", "generally", "substantially", etc. are not limited to the specified exact values. In at least some instances, the approximating terms may correspond to the accuracy of the instrument for measuring a value, or the accuracy of the method or machine for constructing or manufacturing a component and / or system. For example, at any of an individual value, a range of values, and / or the endpoints defining a range of values, it may refer to being within a margin of 1, 2, 4, 5, 10, 15, or 20 percent. When used in the context of an angle or direction, such terms include a range that is 10 degrees greater or less than the described angle or direction. For example, "substantially perpendicular" includes directions within 10 degrees of perpendicular in either direction, such as clockwise or counterclockwise.
[0018] Terms such as "coupled", "fixed", "attached", etc. refer to both direct coupling, fixing, or attachment and indirect coupling, fixing, or attachment via one or more intermediate components or features, unless otherwise specified herein. As used herein, the terms "comprises", "comprising", "includes", "including", "has", "having", or other variations are intended to cover non-exclusive inclusion. For example, a process, method, molded article, or apparatus consisting of a list of features is not necessarily limited to only those features, and may include other features not explicitly listed or inherent to such process, method, molded article, or apparatus. Further, unless explicitly stated to the contrary, "or" means "inclusive or" and not "exclusive or". For example, condition A or condition B is satisfied by any one of the following: A is true (or present) and B is false (or absent), A is false (or absent) and B is true (or present), and both A and B are true (or present).
[0019] Throughout this specification and the claims, limitations of ranges are combined, interchanged, and such ranges are identified and include all sub-ranges contained therein unless the context or language indicates otherwise. For example, all ranges disclosed herein include endpoints, and the endpoints are combinable independently of each other.
[0020] The present disclosure is generally directed to systems and methods for energy conservation, carbon minimization, and grid stabilization related to computing energy loads. More particularly, the present disclosure is directed to systems and methods for reducing the energy cost and carbon cost of a computing load (e.g., an auxiliary computing load configured for stabilizing a power grid, a stand-alone high-performance computing center, etc.), where the computing load may include one or more blockchain proof-of-work computations and one or more computing tasks or simulation tasks (e.g., machine learning, artificial intelligence, or scientific computing) that require a pseudo-random number as input.
[0021] In an exemplary aspect of the present disclosure, one or more auxiliary computing loads may be configured to provide on-demand grid stabilization, and excess power (e.g., related to a power grid; related to a local system, such as a home power generation system; etc.) may be productively used to perform one or more useful computations. For example, one or more computing devices can be operably connected to a control system related to one or more power systems. The control system can monitor the amount of available power related to one or more power sources of the power system. The control system can further monitor the power demand related to one or more power loads of the power system. In some embodiments, the control system can determine whether to initiate a computation (e.g., a machine learning computation; a blockchain proof-of-work computation; etc.) based on a comparison of the amount of available power and the power demand.
[0022] In some embodiments, on-demand grid stabilization can include routing computations to specific computing systems based on power availability data. For example, in some instances, a control system can be operatively connected to a plurality of computing systems (e.g., computing devices; data centers; portable modular skids including one or more computing devices and configured for grid stabilization; etc.). In such cases, the control system can obtain, for example, a computing load configured to be executed immediately. The control system can, for example, based on a comparison between a plurality of respective available power amounts (e.g., the available power amount from a wind power plant operatively connected to a data center, etc.) respectively associated with the plurality of computing systems, allocate the computing load to one or more of the plurality of computing systems (e.g., a data center). The allocation can also be based on, for example, a comparison between a plurality of respective power demands respectively associated with the plurality of computing systems. The allocation can also be based on, for example, one or more predictions of future demand or future energy availability.
[0023] In some cases, the control system can perform adaptive scheduling of tasks not requiring immediate execution. For example, the control system can obtain a computing load consisting of computations that do not need to be executed immediately (e.g., executable at any time such as the next day, week, month, etc.). The control system can, for example, based on a comparison between the current available power amount; the current power demand; a predicted amount of one or more future available power amounts; and a predicted amount of one or more future power demands, determine whether to start the computation immediately. In some embodiments, the control system can, based on such data, determine whether to pause a computation that has already started. In some cases, the control system can determine a specific time to start the computation based on one or more power predictions.
[0024] In an exemplary aspect of the present disclosure, the computational load utilizes a computing system (e.g., including one or more application specific integrated circuits (ASICs)) configured to perform a proof-of-work calculation (e.g., a blockchain proof-of-work, such as Bitcoin) to generate random numbers at a reduced energy cost for use in one or more calculations (e.g., machine learning calculations, Monte Carlo calculations, scientific calculations, etc.) that require random numbers as input. For example, in some examples, the work instructions associated with the blockchain proof-of-work protocol can be modified to cause a first computing system configured for proof-of-work calculations to output, in addition to the proof-of-work output associated with the original work instructions, a plurality of random or pseudo-random values (e.g., a sequence of cryptographic hash outputs having a random or pseudo-random output distribution). The plurality of output values can be communicated to a control computing system or a second computing system configured to perform one or more calculations that require random numbers as input. Based on the output values, the control computing system or the second computing system can generate random or pseudo-random values configured to be used as input in one or more calculations that require random numbers as input.
[0025] Generating a value configured to be used as an input can include, for example, scaling a value output by a first computing system. For example, the output value can be associated with the maximum possible output value and the minimum possible output value in some cases. In one embodiment, a computation that requires a random number as an input can be associated with a minimum input value that can be accepted (e.g., 0.0 for some Monte Carlo sampling computations) and a maximum input value that can be accepted (e.g., 1.0). In such cases, a scaled input value can be calculated based on the minimum input value, the maximum input value, and the output value. For example, the scaled input value can be as follows.
[0026] ((Random output value - Minimum output value) * (Maximum input value - Minimum input value)) / (Maximum output value - Minimum output value) + Minimum input value
[0027] In one embodiment, generating a value configured to be used as an input can include, for example, a sampling method configured to sample from a probability distribution based on a plurality of one-dimensional random inputs (e.g., two-dimensional probability distribution). In one embodiment, generating a value configured to be used as an input can include rejection sampling. In one embodiment, generating a value configured to be used as an input can be configured as Metropolis-Hastings sampling. In one embodiment, generating a value configured to be used as an input can include Gibbs sampling.
[0028] In some implementations, random numbers generated from a proof-of-work value can be utilized to support multiple computations that require random numbers as inputs (e.g., by saving and reusing random numbers, by operably connecting a proof-of-work system to two or more random number-based computing systems, etc.).
[0029] In some implementations, the integrated architecture can utilize one or more proof-of-work mining ASICs, or other computing platforms or ASICs, combined with one or more GPUs (e.g., combined in one computing system or computing device), and utilize these randomly generated numbers created at low energy cost to provide a net energy gain in the dual use of computing.
[0030] The systems and methods of the present disclosure have various technical effects and advantages. For example, the random number generation method of the present disclosure uses less energy than prior random number generation methods. For example, experiments according to the present disclosure compared the energy costs associated with separately executed blockchain calculations and Monte Carlo calculations with the energy costs of blockchain-Monte Carlo calculations using randomly generated numbers generated according to the present disclosure. The systems and methods of the present disclosure showed lower combined energy costs under various experimental conditions.
[0031] As another example, the scheduling method of the present disclosure can productively utilize preliminary renewable energy and minimize carbon emissions related to the computational load. Also, the systems and methods of the present disclosure can provide grid stabilization through interruptible "shock absorbers to the grid" while dissipating wasted energy while providing useful computational output. Furthermore, the systems and methods of the present disclosure can reduce the impact on the climate related to the blockchain of proof-of-work and the growing fields of artificial intelligence and machine learning by reducing the combined computational costs related to blockchain and machine learning calculations.
[0032] Prior approaches for reducing computational energy costs have generally focused on optimizing either blockchain computations or machine learning computations individually (rather than combining both) to reduce the energy usage or carbon dioxide emissions associated with one or the other. For example, some researchers have proposed energy-aware machine learning, where optimizing a machine learning model can reduce energy usage during inference. Similarly, the Kolmogorov learning cycle can measure how efficiently a machine learns in relation to the amount of energy used (e.g., the ratio of energy used to "decrease in entropy"). In the context of blockchain, specialized hardware such as application-specific integrated circuits (ASICs) for calculating cryptographic hashes has dramatically reduced the energy cost per hash when calculating the cryptographic hashes associated with Bitcoin's proof-of-work computations. However, there has been little prior research that comprehensively studies energy usage by combining computational resources connected to a power grid with dynamically varying loads.
[0033] Advantageously, the systems and methods of the present disclosure can be used in combination with prior optimization methods while providing additional energy savings and environmental benefits. For example, in some embodiments, an energy-aware machine learning algorithm can be Kolmogorov-trained using excess renewable energy and using random numbers generated at a reduced energy cost compared to previous random number generation. In such cases, the systems and methods of the present disclosure can be associated with reduced energy costs compared to using only prior energy optimization methods.
[0034] Next, referring to the drawings, FIG. 1 is a schematic diagram of an embodiment of a computing system 100. A control system 102 can provide one or more work instructions 104 to a proof-of-work system (work certification system) 106. The proof-of-work system 106 can generate one or more generated values 108 based on the work instructions 104 and transmit them to the control system 102 or a randomness-based computation-system 110. Based on the generated values 108, the control system 102 or the randomness-based computation system 110 can, in some cases, determine one or more random values 112 configured to be used in randomness-based calculations. Thereafter, the randomness-based computation system 110 can use the random values 112 to generate one or more calculation results 114.
[0035] The control system 102 can be, for example, one or more computing devices or one or more processors (e.g., a CPU, etc.), or can include them. In some embodiments, the control system 102 can be or include application-specific control hardware configured to control one or more application-specific integrated circuits, and the application-specific integrated circuits are configured to execute one or more proof-of-work tasks (e.g., cryptographic hashes, etc.). In some embodiments, the control system 102 can configure one or more proof-of-work control cards (e.g., Antminer S9i, etc.). In one embodiment, the functions of the control system 102 can be integrated into the proof-of-work system 106 or the randomness-based computation system 110.
[0036] The operation instruction 104 can be, or can include, one or more operation instructions related to, for example, a proof-of-work protocol (e.g., a blockchain proof-of-work protocol). In some embodiments, the operation instruction 104 can be an operation instruction modified based in part on an operation instruction related to a blockchain proof-of-work protocol. For example, in some embodiments, a blockchain proof-of-work protocol can be associated with a difficulty level, and the speed at which an output is generated can be inversely proportional to the difficulty level constituted by one or more operation instructions. In such a case, modifying the operation instruction can include reducing the difficulty level associated with the blockchain operation instruction so that an output is received more frequently from the proof-of-work system. Next, the control system 102 can process the generated value 108 to find one or more generated values that meet the difficulty level before modification for providing to the blockchain network. In some embodiments, the operation instruction 104 (e.g., the modified operation instruction) can be configured to cause the proof-of-work system 106 to generate one or more generated values 108 having random or pseudo-random characters. For example, in one embodiment, the operation instruction 104 can be configured to request the output of a large number (e.g., thousands per second, etc.) of cryptographic hash values having random or pseudo-random characters.
[0037] The proof-of-work system 106 can be, or can include, one or more computing devices that include, for example, one or more processors (e.g., CPUs, GPUs, application-specific integrated circuits, etc.). In some embodiments, the proof-of-work system 106 can be, or can include, one or more application-specific integrated circuits (ASICs) configured to execute a proof-of-work task (e.g., an ASIC configured to generate a cryptographic hash, such as an Antminer hash board, a GPU, etc.). In some cases, the proof-of-work system 106 can be the same as, or different from, the control system 102.
[0038] The generated value 108 can include, for example, computer-readable data. In one embodiment, the generated value 108 can include computer-readable data having random or pseudo-random characteristics (e.g., a sequence of characters, bits, numerical values, etc. that satisfy one or more statistical tests for randomness).
[0039] The randomness-based computing system 110 can include, for example, one or more computing devices configured to perform computations that require one or more random values (e.g., random numbers) as input. In some embodiments, the randomness-based computing system can include one or more application-specific integrated circuits (ASICs) configured to perform floating-point operations (e.g., a GPU, an ASIC configured for matrix multiplication, etc.).
[0040] In some embodiments, the proof-of-work system 106 can be implemented, configured, or implemented and configured, depending on whether it is the same as, the same as, or different from the control system 102 or the proof-of-work system 106. For example, in some examples, a single computing system, or even a single processor (e.g., a CPU), can execute one or more functions of the control system 102, the proof-of-work system 106, and the randomness-based computing system 110. A separate specialized processor (e.g., an ASIC) can, in some cases, execute proof-of-work and randomness-based functions more efficiently than a non-specialized processor (e.g., a CPU, etc.), but a single-processor system can, in some cases, be appropriate (e.g., using a specialized ASIC configured to execute all three functions, using a CPU with a specific ASIC-resistant proof-of-work protocol, etc.) and can, in some cases, reduce the latency and energy costs associated with communication between processors, as will be understood.
[0041] The random value 112 can include, for example, computer-readable data configured to be input into a computation that requires a random value as an input. For example, in some embodiments, the random value 112 can include one or more random or pseudo-random numbers (e.g., a uniform random number between 0.0 and 1.0 for a Monte Carlo computation, etc.).
[0042] The generation of the random value 112 may include, for example, obtaining a generated value 108 characterized by at least a portion of the generated value 108 being random or pseudorandom (e.g., satisfying one or more statistical tests of randomness). Generating the random value 112 may further include scaling the generated value 108, or the random or pseudorandom portion of the generated value 108, to a value configured to be used by the randomness-based computation system 110. For example, in some embodiments, the generated value 108 may include one or more random or pseudorandom ASCII codes encoding text-based data (e.g., 256 ASCII values encoding 256 characters). In such cases, each ASCII code can be characterized by a minimum possible value (e.g., 000 representing the "null" character) and a maximum possible value (e.g., 255 representing a special character similar to "y" with an "umlaut"). In some cases, randomness-based computations may require an input random variable characterized by a minimum and a maximum value. For example, among Monte Carlo calculations, there are those that can be used to randomly determine an action based on one or more action probabilities based on a random value 112 between 0.0 and 1.0. In such cases, the generated value 108 can be scaled to generate the random value 112 according to the following formula.
[0043] (((generated value 108 - minimum generated value)(maximum random value - minimum random value)) / (maximum generated value - minimum generated value)) + minimum random value
[0044] In some embodiments, generating one or more random values 112 can constitute a more complex sampling process (for the purpose of generating, for example, a more complex distribution of the random values 112, such as a multi-dimensional distribution associated with the random values of each dimension). Exemplary sampling processes can include rejection sampling, Metropolis-Hastings sampling, Gibbs sampling, and any other statistical sampling process configured to convert one-dimensional random values into a more complex distribution (rejection sampling, Metropolis-Hastings sampling, Gibbs sampling, and any other statistical sampling process configured to convert one-dimensional random values into a more complex distribution).
[0045] Rejection sampling can include determining a first random value associated with a first dimension (e.g., by scaling the generated value 108), determining a second random value associated with a second dimension (e.g., by scaling the generated value 108), comparing the first and second values to a curve describing the probability distribution to be sampled (e.g., a two-dimensional probability distribution), and accepting the first and second values if the point described by the first and second values falls within the probability distribution. The same process can also be applied to probability distributions having two or more dimensions (e.g., three-dimensional, four-dimensional, etc.). In some cases (e.g., for probability distributions with a large number of dimensions), Metropolis-Hastings sampling or Gibbs sampling can be used instead of, or in addition to, rejection sampling.
[0046] In some cases, a random value 112 can be generated based on a value other than the generated value 108. For example, the computational resources required to perform these operations can, in some cases, provide an opportunity to create a true random number generator based on measurements of the operating system. Measurements such as temperature, pressure, and flow rate obtained at discrete positions under operating conditions can, in some cases, provide multiple random data streams for providing random numbers (e.g., cryptographically secure random numbers). In addition to these easily measurable sequences, by measuring physical phenomena occurring in each computing unit (e.g., the movement of bubbles within a turbulent vortex associated with the cooling system of the computing system 100), a sequence with higher entropy can be obtained. These data streams can be further combined, if necessary, in accordance with one or more proofs by Vazirani and Santha to form a sequence with higher entropy.
[0047] The calculation result 114 can include, for example, computer-readable data generated during a calculation that requires a random value as an input. For example, in some embodiments, the calculation result 114 can include one or more results of machine learning calculations (e.g., a trained machine learning model or model update as a result of machine learning training calculations, a machine learning output as a result of machine learning inference calculations) or scientific calculations (e.g., molecular dynamics simulations, etc.).
[0048] Figure 2 is a schematic diagram of a power grid stabilization system according to an embodiment of the present disclosure. The power grid can include a power source 202 and a power load 204. The power source can include a continuous source 206 and an auxiliary source 208, and the power load can include a continuous load 210 and an auxiliary load 212. The grid stabilization system 214 can monitor power availability data 216 and power usage data 218 associated with the power source 202 and the power load 204, respectively. Based on the data 216, 218, the grid stabilization system 214 can send instructions 220 to the power source 202 and the power load 204. In one exemplary scenario, the instructions 220 can include instructions to initiate the operation of the auxiliary load 212 (e.g., the computing system 100 or other auxiliary load 212) to productively use the surplus power 222 from the continuous power source 206.
[0049] The power source 202 can be, for example, any system (e.g., a device, a machine, an apparatus, etc.) that can generate power (e.g., electricity) and is operably connected to a power system (e.g., a public power grid, a private power grid, an off-grid power system, etc.).
[0050] The power load 204 can be, for example, any system (e.g., a device, a machine, an apparatus, etc.) that is configured to use power (e.g., electricity) and is operably connected to a power system (e.g., a public power grid, a private power grid, an off-grid power system, etc.).
[0051] One or more continuous power sources 206 can include, for example, a power source configured to operate continuously for a period of time (e.g., several hours, several days, several minutes, etc.). In some embodiments, one or more continuous power sources 206 can include a power source that can be disabled, but is difficult, inconvenient, or otherwise undesirable to disable. For example, if a continuous power source 206 (e.g., a wind turbine; a solar panel) can generate power with little or no cost (e.g., monetary cost, environmental cost, etc.), and the power from the continuous power source 206 can be productively used in other ways, it may not be desirable to disable the continuous power source 206. In some embodiments, the continuous power source 206 can include a renewable power source (e.g., wind, sunlight, hydroelectric power, geothermal, bioenergy, ocean energy, etc.), where "renewable" means that the power source obtains its energy from a power source that can be replenished through natural processes (e.g., the growth of plants for plant-based fuels, the night / day cycle for solar power generation, etc.). "Renewable" is, for example, in contrast to fossil fuels. Fossil fuels are virtually non-renewable because they take millions of years to form. In some examples, the renewable power source can be a variable renewable power source having an output capacity that changes over time due to changes in the environment of the power source. For example, the output capacity of a wind, sunlight, or ocean power source changes with the weather, and hydroelectric power or ocean energy power sources depend on the conditions of the water body (precipitation, waves, currents, tides, etc.). In another exemplary example, the continuous power source 206 may require a certain amount of time (e.g., several hours) to be reconfigured to output a different (e.g., greater, smaller, zero) amount of power than the amount currently being generated. In some embodiments, this amount of time may be longer than the amount of time (e.g., minutes, seconds, etc.) associated with one or more changes in power demand or power usage related to the power system.
[0052] One or more auxiliary power sources 208 can include a power source that can be more readily (e.g., quickly, inexpensively, with reduced environmental costs, configured to output an increased / reduced amount of power) activated, deactivated, or adjusted (e.g., configured to output an increased / reduced amount of power) compared to, for example, one or more continuous power sources 206. In some embodiments, one or more auxiliary power sources 208 can be configured to be activated, deactivated, or adjusted on demand to adjust power output in response to power usage or demand.
[0053] Similarly, one or more continuous power loads 210 can include, for example, a power load configured to operate continuously for a period of time (e.g., several hours, several days, several minutes, etc.). In some embodiments, the continuous power load(s) 210 can include a power source that can be disabled but may be difficult, inconvenient, or otherwise undesirable to disable. For example, in some cases, one or more continuous power loads 210 can include an emergency or safety-sensitive power load (e.g., related to emergency medical, heating and cooling, time-sensitive industrial or computing operations, etc.), or a load related to a person (e.g., a power consumer) who cannot or is reluctant to reduce energy usage in response to a change in the power load.
[0054] One or more auxiliary power loads 212 can include power loads that can be more readily (e.g., quickly, inexpensively, with reduced environmental cost, configured to output increased / reduced amounts of power) activated, deactivated, or adjusted (e.g., configured to output increased / reduced amounts of power) compared to, for example, one or more continuous power loads 210. In some embodiments, one or more auxiliary power loads 212 can be configured to be activated, deactivated, or adjusted on demand to adjust power output in response to power usage or demand. Non-limiting examples can include, for example, computing operations that are non-time-sensitive or non-location sensitive (not limited to a particular time or location) (e.g., machine learning training operations that can be conveniently performed during off-peak hours), power loads associated with a "smart home" system configured to automatically adjust power usage in response to changing prices associated with changing demand, and the like.
[0055] In some examples, one or more auxiliary power loads 212 can constitute a network (e.g., a "grid") of computing devices (e.g., computing system 100) configured to distribute computing tasks across a number of machines. In such cases, the grid of networked computing devices can be configured to adjust power loads by diverting one or more computing tasks away from one or more computing devices operably connected to one or more power systems characterized by power shortages and towards one or more computing devices operably connected to one or more power systems characterized by power surpluses (e.g., surplus power 222). In this way, for example, the energy cost and pollution cost associated with one or more computing tasks can be reduced.
[0056] The availability data 216 can include, for example, computer-readable data that describes one or more amounts of electric power currently available from one or more power sources 202. This can include, for example, the amount of electric power currently being generated by one or more continuous power sources 206 and auxiliary power sources 208, the maximum amount of additional power available from auxiliary power sources 208 that are not currently fully operational, and the like. In some embodiments, the availability data 216 can include human-readable data configured to notify a human operator about power usage.
[0057] The usage data 218 can include, for example, computer-readable data that describes one or more amounts of electric power currently being used by one or more power loads 204. This can include, for example, the amount of electric power currently being used by one or more continuous power loads 210 and auxiliary power loads 212, the maximum amount of additional power available for use by one or more auxiliary power loads 212 that are not currently operating at full capacity, the maximum amount of power reduction associated with one or more auxiliary loads 212 operating above a minimum capacity, and the like. In one embodiment, the usage data 218 can include human-readable data configured to inform a human operator about the amount of power used.
[0058] The indication 220 may include computer-readable data or human-readable data configured to cause, for example, one or more power sources 202 or one or more power loads 204 to change their current operation (e.g., start or stop power generation; start or stop power usage; increase or decrease the amount of power being used or generated; etc.). Non-limiting examples can include, for example, computer-readable instructions configured to cause one or more processors to execute operations to change the current behavior of the power source 202 or power load 204, consumer alerts configured to cause one or more consumers to reduce their power usage, human-readable instructions configured to cause employees at one or more power plants to perform adjustments, and the like. In some embodiments, the indication 220 can comprise instructions for a carbon-minimizing scheduling algorithm or energy-aware machine learning.
[0059] As shown in FIG. 2, the surplus power 222 can include, for example, surplus power from a continuous power source 206 that is not currently being used by one or more power loads 204. Non-limiting exemplary examples can include sustainable power (e.g., generated by a wind turbine) that is not currently being used but can be productively used by one or more auxiliary loads 212. FIG. 2 depicts a surplus power scenario in which auxiliary loads are activated in response to power surplus, but those skilled in the art will recognize that other scenarios are possible (e.g., disabling auxiliary loads 212 in response to a deficit, or enabling an auxiliary power source 208, not enabling or disabling but reducing or increasing usage, etc.).
[0060] FIG. 3 is a schematic diagram of a computing system 300 according to an embodiment of the present disclosure. FIG. 3 depicts a computing system 300 that receives a work instruction 104 from a network 301. The work instruction can be sent to one or more CPUs 302 or one or more proof-of-work control cards 304. Based on the work instruction 104, the CPU(s) 302 or the proof-of-work control card 304 can generate a modified work instruction 306, and this modified work instruction 306 can be sent to one or more proof-of-work application-specific integrated circuits (ASICs) 308 via a universal asynchronous receiver-transmitter (UART) 310 or other protocols. Thereafter, the proof-of-work ASIC 308 can generate a generated value 108 and send it to the proof-of-work control card via the UART 310. Thereafter, the proof-of-work control card can send the generated value 108 to, for example, one or more floating-point application-specific integrated circuits 312 via a connection such as PCIe 314. The floating-point ASIC 312 can use the generated value 108 to perform calculations (such as machine learning calculations, scientific calculations, etc.) that require random numbers as inputs.
[0061] Although FIG. 3 depicts specific hardware components and specific communication standards, those skilled in the art will recognize that other hardware components and communication standards can be used without departing from the scope of the present disclosure.
[0062] The computing system 300 can, for example, include one or more computing devices (e.g., servers, desktops, laptops, cryptocurrency proof-of-work systems, etc.). In some instances, the computing system 300 can be, comprise, or be comprised by a computing system 100.
[0063] The network 301 can be, for example, the Internet or any other network configured to transfer computer-readable data between computing devices (e.g., LAN, WAN, peer-to-peer network, etc.), or can include them.
[0064] The CPU 302 can include, for example, any hardware configured to operate as a CPU (e.g., microprocessor, microcontroller, softcore processor, etc.).
[0065] The proof-of-work control card 304 can include, for example, any hardware or combination of hardware (e.g., processor, input / output hardware, etc.) configured to control one or more proof-of-work ASICs by sending one or more instructions to the ASIC and receiving one or more values in return. As a non-limiting example, the proof-of-work control card 304 can, in some instances, include one or more hardware component types associated with one or more Antminer control boards. In certain embodiments, the proof-of-work control card 304 can include modified firmware configured to provide modified work instructions 306 to one or more proof-of-work ASICs 308.
[0066] In some cases, it will be appreciated that computing system 300 can control one or more proof-of-work ASICs without using a proof-of-work control card. For example, in one embodiment, CPU 302 or a randomness-based computing system 110 can be configured to directly control one or more proof-of-work ASICs 308. This can be achieved, for example, when CPU 302 and proof-of-work ASIC 308 have a compatible communication interface and CPU 302 is appropriately programmed to control proof-of-work ASIC 308. In some cases, an adapter card can be used to enable communication between CPU 302 and proof-of-work ASIC 308. In one embodiment, proof-of-work ASIC 308 or modified work instruction 306 can be configured to separately output to proof-of-work ASIC 308 one or more proof-of-work outputs (e.g., blockchain difficulty) associated with work instruction 104 and one or more generated values 108 for use in randomness-based computing.
[0067] The modified work instruction 306 can include computer-readable instructions configured to cause one or more proof-of-work ASICs to return one or more generated values 108, for example. For example, in some embodiments, the work instruction 104 can constitute a difficulty level (e.g., the minimum number of leading zeros of the computed hash of information including a cryptographic "nonce" and details from one or more blockchain transactions). In such cases, a high difficulty level can be associated with a small number of generated outputs (e.g., one output every 15 days at a hash rate of 14.5 terahashes per second, with a 1 in 264 probability of the hash being successful) that may have non-random characteristics (e.g., having leading zeros of non-random numbers in each output) in some cases. In one embodiment, the modified work instruction 306 can constitute a lower difficulty than the difficulty of the work instruction 104. In some embodiments, the modified work instruction 306 can be configured to cause the proof-of-work ASIC 308 to output a greater number of generated values 108 (e.g., cryptographic hash values) that are characterized by a greater degree of randomness as compared to the generated values received from the work instruction 104 (e.g., 3300 per second at a hash rate of 14.5 terahashes per second, with a 1 in 232 probability of the hash being successful). For example, in some embodiments, the difficulty of the modified work instruction 306 can be set to a minimum difficulty such that a generated value 108 is output for each work (e.g., each cryptographic nonce for which a hash is computed) performed by the proof-of-work ASIC 308. In some cases, the modified work instruction 306 can include one or more firmware modifications to the proof-of-work ASIC 308.
[0068] The Proof-of-Work ASIC 308 can include, for example, hardware configured to efficiently perform a Proof-of-Work task (e.g., a cryptographic hash, such as a SHA-256 hash). As a non-limiting illustrative example, the Proof-of-Work ASIC 308 can include one or more hardware component types associated with one or more Antminer Proof-of-Work ASICs. In some embodiments, the Proof-of-Work ASIC 308 can be an ASIC configured to be used in the composite computational load of the present disclosure, including both Proof-of-Work and random number generation. For example, in some embodiments, the Proof-of-Work ASIC 308 can be configured to separately output one or more Proof-of-Work outputs associated with a work instruction 104 (e.g., in a blockchain difficulty) and one or more generated values 108 for use in random number-based calculations.
[0069] The UART 310 can include, for example, one or more devices capable of communicating using a universal asynchronous receiver-transmitter protocol. However, those skilled in the art will understand that other hardware types and other communication protocols can be used to perform the indicated communication tasks.
[0070] The floating-point ASIC 312 can include, for example, hardware (e.g., a GPU, an ASIC configured for matrix multiplication, etc.) configured to efficiently perform one or more floating-point operations.
[0071] FIG. 3 depicts that the generated value 108 is sent directly to the floating-point ASIC 312 for immediate use, but it will be understood that the generated value 108 or the random value 112 may be stored for later use using one or more computer-readable storage media (e.g., HBM, RAM, ROM, EPROM, EEPROM, flash memory, magnetic disk, etc.). For example, in some embodiments, a single computing system 300 may store one or more generated values 108 or random values 112 for later retrieval by the computing system 300. In other embodiments, one or more generated values 108 or random values 112 may be transferred from one computing system to another (e.g., via the network 301), and in some embodiments, may be stored in a computer-readable storage media before, during, or after such communication.
[0072] PCIe 314 can include any hardware configured to communicate (transmit) in accordance with, for example, the Peripheral Component Interconnect Express standard. However, those skilled in the art will understand that other hardware types and other communication standards can be used to perform the communication tasks described above.
[0073] FIG. 4 is a chart showing an example of the results according to the present disclosure. FIG. 4 shows the total energy usage 402 associated with three calculations, namely, a proof-of-work calculation 404 executed alone, a Monte Carlo calculation 406 executed alone, and a calculation 408 combining the Monte Carlo calculation and the proof-of-work calculation according to the present disclosure. The random numbers for the Monte Carlo calculation were generated based on the output of the proof-of-work calculation according to the system and method of the present disclosure. The total energy cost of calculation 408 was compared with the total 410 of the energy costs associated with the individual calculations 406, 404, and an energy savings 412 was calculated. The experimental results showed a positive energy savings 412 under various experimental conditions. In some examples, the energy savings 412 was equal to approximately half of the energy usage 402 associated with the proof-of-work calculation 404.
[0074] While FIG. 4 shows the energy savings with respect to the total cost of the proof-of-work calculation and the Monte Carlo calculation, other exemplary results show the magnitude of the energy savings with respect to the cost of random number generation itself. For example, in some experimental examples according to the present disclosure, the energy cost of generating random numbers in a C programming environment was compared with the energy cost associated with reading random numbers from RAM according to the system and method of the present disclosure. In such cases, the read from RAM resulted in a 90 percent energy savings compared to generating random numbers from zero. Thus, it will be appreciated that the system and method of the present disclosure improve the functionality of a computing system by enabling the execution of similar (e.g., the same) tasks at a reduced energy cost.
[0075] FIG. 5 shows a flowchart diagram of an exemplary method for generating random numbers in an energy-efficient manner according to an exemplary embodiment of the present disclosure. FIG. 5 depicts steps that are executed in a particular order for purposes of explanation and discussion, but the method of the present disclosure is not limited to the particular order or arrangement shown. The various steps of the exemplary method 500 can be omitted, rearranged, combined, and / or adapted in various ways without departing from the scope of the present disclosure.
[0076] At 502, the exemplary method 500 can include obtaining, by one or more computing devices, one or more work instructions related to a proof-of-work protocol. In some embodiments, the one or more work instructions can be, include, or be included in work instruction 104 or modified work instruction 306. Optionally, step 502 can include one or more steps described with respect to FIGS. 1 and 3.
[0077] At 504, the exemplary method 500 can include executing, by one or more computing devices, one or more first tasks that are at least partially based on the work instructions. In some embodiments, the one or more computing devices can include one or more proof-of-work systems 106 or proof-of-work ASICs 308. In some embodiments, step 504 can include one or more steps described with respect to FIG. 1 or FIG. 3.
[0078] At 506, the exemplary method 500 can include determining, by one or more computing devices, one or more random or pseudo-random values based on one or more values generated by the one or more computing devices during execution of the one or more first tasks. In one embodiment, the generated values during one or more of the first tasks can be generated value 108. In some embodiments, the random or pseudo-random values can be, consist of, or be constituted by random value 112. In one embodiment, step 506 can include one or more steps described with respect to FIG. 1 or FIG. 3.
[0079] In 508, the exemplary method 500 may include one or more computing devices executing one or more second tasks different from one or more first tasks based on one or more random values or pseudo - random values. In some embodiments, one or more computing systems may include one or more randomness - based computing systems 110 or floating - point ASICs 312. In some embodiments, step 508 can include one or more steps described with respect to FIG. 1 or FIG. 3.
[0080] FIG. 6 shows a flowchart diagram of an exemplary method for grid stabilization according to an exemplary embodiment of the present disclosure. Although FIG. 6 depicts steps executed in a particular order for purposes of explanation and discussion, the methods of the present disclosure are not particularly limited to the order or arrangement specifically shown. The various steps of the exemplary method 600 can be omitted, rearranged, combined, and / or adapted in various ways without departing from the scope of the present disclosure.
[0081] In 602, the exemplary method 600 may include one or more computing devices obtaining data indicative of a current power load. In some embodiments, the current power load may be, include, be included in, or be related to one or more power loads 204. In some embodiments, the data indicative of the current power load may be, include, or be included in usage data 218. In some embodiments, step 602 can include one or more steps described with respect to FIG. 2.
[0082] At 604, the exemplary method 600 can include obtaining, by one or more computing devices, data indicative of the amount of power currently available from one or more power sources. In some embodiments, the one or more power sources can be, can include, or can be included in the one or more power sources 202. In some embodiments, the data indicative of the amount of power currently available can be the availability data 216. In one embodiment, step 604 can include one or more steps described with respect to FIG. 2.
[0083] At 606, the exemplary method 600 can include determining whether to execute at least one computing task based on a comparison of the current power load and the amount of power currently available. In some embodiments, the computing task can be a proof-of-work task or a randomness-based computing task associated with the computing system 100, the computing system 300, or the auxiliary load 212. In some embodiments, step 606 can include one or more steps described with respect to FIGS. 1 - 3.
[0084] FIG. 7 shows a flowchart diagram of an exemplary method for generating random values in accordance with an exemplary embodiment of the present disclosure. Although FIG. 7 depicts steps being performed in a particular order for purposes of explanation and discussion, the methods of the present disclosure are not limited to the particular order or arrangement shown. The various steps of the exemplary method 700 can be omitted, rearranged, combined, and / or adapted in various ways without departing from the scope of the present disclosure.
[0085] At 702, the exemplary method 700 can include obtaining, by one or more computing devices, a first minimum value associated with a proof-of-work task. In some embodiments, the one or more computing devices can include one or more proof-of-work systems 106 or proof-of-work ASICs 308. In some embodiments, step 702 can include one or more steps described with respect to FIG. 1 or FIG. 3.
[0086] At 704, the exemplary method 700 can include obtaining, by one or more computing devices, a first maximum value associated with a proof-of-work task. In some examples, step 704 can include one or more steps described with respect to FIG. 1 or FIG. 3.
[0087] At 706, the exemplary method 700 can include obtaining, by one or more computing devices, a second minimum value associated with a probability distribution associated with one or more second tasks different from the proof-of-work task. In some embodiments, the one or more computing devices can include one or more randomness-based computing systems 110 or floating-point ASICs 312. In some embodiments, step 706 can include one or more steps described with respect to FIG. 1 or FIG. 3.
[0088] At 708, the exemplary method 700 can include obtaining, by one or more computing devices, a second maximum value associated with a probability distribution associated with one or more second tasks. In some embodiments, step 708 can include one or more steps described with respect to FIG. 1 or FIG. 3.
[0089] At 710, exemplary method 700 can include scaling, by one or more computing devices, one or more values generated during a proof-of-work task based on a first minimum value, a second minimum value, a first maximum value, and a second maximum value to generate one or more scaled random or pseudo-random values. In some embodiments, step 710 can include one or more of the steps described with respect to FIG. 1 or FIG. 3.
[0090] This specification discloses the invention, including the best mode, by way of examples, and enables any person skilled in the art to practice the invention, including making and using any device or system and performing any incorporated methods. The patentable scope of the invention is defined by the claims and can include other examples that occur to those skilled in the art. Such other examples are intended to be within the scope of the claims if they include structural elements that do not differ from the literal language of the claims, or if they include equivalent structural elements that do not differ from the literal language of the claims.
[0091] Further aspects of the invention are provided by the subject matter of the following clauses. [Embodiment 1] A computer-implemented method for reducing a combined computation cost of a proof-of-work computation and a computation requiring a source of randomness, comprising: obtaining, by one or more computing devices, one or more work instructions associated with a proof-of-work protocol; performing, by the one or more computing devices, one or more first tasks based at least in part on the work instructions; and determining, by the one or more computing devices and based on one or more values generated by the one or more computing devices during the one or more first tasks, one or more random or pseudo-random valuesone or more random or pseudorandom values), and performing, by the one or more computing devices and based on the one or more random or pseudorandom values, one or more second tasks different from the one or more first tasks), a method comprising: [Embodiment 2] obtaining, by the one or more computing devices, data indicative of a current power load; obtaining, by the one or more computing devices, data indicative of an amount of power currently available from one or more power supplies; and determining, based on a comparison between the current power load and the amount of power currently available, whether to perform at least one of the one or more first tasks and one or more second tasks; the method according to any of the preceding embodiments, further comprising. [Embodiment 3] the proof-of-work protocol is associated with one or more blockchain networks; the method according to any of the preceding embodiments. [Embodiment 4] The work instructions are first work instructions characterized by a first difficulty level, and performing the first task includes generating, by the one or more computing devices and based on the work instructions, one or more modified work instructions characterized by a second difficulty level that is lower than the first difficulty level; providing, by the one or more computing devices, the modified work instructions to one or more processors configured to output a number of generated values that is dependent on the difficulty level of the modified work instructions, wherein a lower difficulty level is associated with a higher number of generated values output; and receiving, by the one or more computing devices and from the one or more processors, one or more generated valuesby the one or more computing devices and from the one or more processors, one or more generated values) and, by the one or more computing devices and based on a comparison between the one or more generated values and the first difficulty level, determining whether at least one generated value of the one or more generated values has satisfied the first work instructions; and providing the at least one generated value to one or more computing systems associated with the one or more blockchain networks. The method according to any of the preceding embodiments., [Embodiment 5] Determining one or more random values or pseudo-random values comprises obtaining, by the one or more computing devices, a first minimum value associated with the proof-of-work protocol; obtaining, by the one or more computing devices, a first maximum value associated with the proof-of-work protocol; obtaining, by the one or more computing devices, a second minimum value associated with a probability distribution associated with the one or more second tasks; obtaining, by the one or more computing devices, a second maximum value associated with a probability distribution associated with the one or more second tasksa second maximum value associated with the probability distribution associated with the one or more second tasks), and scaling, by the one or more computing devices and based on the first minimum value, second minimum value, first maximum value, and second maximum value, the one or more values generated by the one or more computing devices during the first task to generate one or more scaled random or pseudorandom values), wherein a probability distribution associated with the scaled random or pseudorandom values corresponds to the probability distribution associated with the one or more second tasks), the method according to any of the preceding embodiments., [Embodiment 6] Determining whether to perform the at least one task comprises: identifying, based at least in part on the comparison between the current power load and the amount of power currently available, an amount of stranded power; and determining an amount of computation to perform based on the amount of stranded power, the method according to any one of the preceding embodiments. [Embodiment 7] The stranded power comprises power generated by at least one renewable power source, the method according to any one of the preceding embodiments. [Embodiment 8] Performing the one or more first tasks comprises performing one or more cryptographic hashes, the method according to any one of the preceding embodiments. [Embodiment 9] The one or more cryptographic hashes comprise one or more SHA-256 hashes, the method according to any one of the preceding embodiments. [Embodiment 10] The method according to any of the preceding embodiments, wherein the one or more values generated during the one or more first tasks comprise one or more cryptographic hash values. [Embodiment 11] The method according to any of the preceding embodiments, wherein the one or more computing devices comprise one or more application-specific integrated circuits configured for generating cryptographic hash values. [Embodiment 12] The method according to any of the preceding embodiments, wherein the one or more first tasks are performed using the one or more application-specific integrated circuits configured for generating cryptographic hash values. [Embodiment 13] The method according to any of the preceding embodiments, wherein the one or more second tasks comprise training one or more machine-learned models. [Embodiment 14] The method according to any preceding embodiment, wherein the one or more second tasks comprise performing inference using one or more machine-learned models. [Embodiment 15] The method according to any preceding embodiment, wherein the one or more second tasks comprise image generation. [Embodiment 16] The method according to any preceding embodiment, wherein the one or more second tasks comprise text generation. [Embodiment 17] The method according to any preceding embodiment, wherein the one or more computing devices comprise one or more application-specific integrated circuits configured for performing one or more floating-point operations. [Embodiment 18] The method according to any of the preceding embodiments, wherein the one or more application-specific integrated circuits configured for performing one or more floating-point operations comprise one or more graphics processing units. [Embodiment 19] The method according to any of the preceding embodiments, wherein the one or more second tasks are performed using the one or more graphics processing units. [Embodiment 20] The method according to any of the preceding embodiments, wherein the one or more second tasks comprise Monte Carlo sampling. [Embodiment 21] The method according to any of the preceding embodiments, wherein the one or more second tasks comprise rejection sampling. [Embodiment 22] The method according to any of the preceding embodiments, wherein the one or more second tasks comprise Metropolis-Hastings sampling. [Embodiment 23] The method according to any preceding embodiment, wherein the one or more second tasks comprise Gibbs sampling. [Embodiment 24] Storing, by the one or more computing devices and using one or more non-transitory computer-readable media, at least one of: the one or more values generated during the one or more first tasks; and the one or more random or pseudorandom values; and retrieving, by the one or more computing devices and from the one or more non-transitory computer-readable media, the values stored; the second tasks being performed using the retrieved values; the method according to any preceding embodiment. [Embodiment 25] communicating, from an application-specific integrated circuit associated with the first task and to an application-specific integrated circuit associated with the second task, one or more values; loading, into one or more random access memories associated with the application-specific integrated circuit associated with the second task, the communicated values; and performing the second task comprises accessing the communicated values using the one or more random access memories, the method according to any of the preceding embodiments. [Embodiment 26] A computing device comprising one or more processors and one or more non-transitory computer-readable media storing instructions that are executable by the one or more processors to cause the computing system to perform one or more operations, wherein the operations include obtaining one or more work instructions associated with a proof-of-work protocol, performing one or more first tasks based at least in part on the work instructions, determining, based on one or more values generated by the one or more computing devices during the one or more first tasks, one or more random or pseudorandom values, and performing, based on the one or more random or pseudorandom values, one or more second tasks that are different from the one or more first tasksincluding one or more second tasks different from the one or more first tasks, based on the one or more random or pseudorandom values [Embodiment 27] A computing device comprising one or more processors and one or more non-transitory computer-readable media storing instructions executable by the one or more processors to cause the computing system to perform one or more operations, the operations including performing the method described in any of the one or more preceding embodiments [Embodiment 28] One or more non-transitory computer-readable media storing instructions executable by one or more computing systems to perform one or more operations, the operations including obtaining one or more work instructions related to a proof-of-work protocol, performing one or more first tasks based at least in part on the work instructions, determining one or more random or pseudorandom values based on one or more values generated by one or more computing devices during the one or more first tasks, and performing one or more second tasks different from the one or more first tasks based on the one or more random or pseudorandom values [Embodiment 29] One or more non-transitory computer-readable media storing instructions executable by one or more computing systems to perform one or more operations, the operations including performing the method described in any of the one or more preceding embodiments [Explanation of Signs]
[0092] 100, 300: Computing system 102: Control system 104: Work instruction 106: Proof-of-work system 108: Generated value 110: Calculation system based on randomness 112: Random value 114: Calculation result 202: Power source 204: Power load 206: Continuous power source 208: Auxiliary power source 210: Continuous load 212: Auxiliary load 214: Grid stabilization system 216: Availability data 218: Power consumption data 220: Instruction 222: Surplus power 301: Network 302: CPU 303: Supervisory control 304: Proof-of-work control card 306: Modified work instruction 308: Proof-of-work application-specific integrated circuit / Proof-of-work ASIC 310: Universal asynchronous receiver / transmitter / UART 312: Floating-point application-specific integrated circuit / Floating-point ASIC 314: PCIe 402: Total energy consumption 404: Proof-of-work calculation 406: Monte Carlo calculation 408: Combination of MC and POW 410: Individual calculation of MC and POW 412: Energy conservation
Claims
1. 1. A computer-implemented method for reducing the combined computational cost of a proof-of-work calculation and a calculation requiring a source of randomness, comprising: obtaining, by one or more computing devices, one or more work instructions associated with a proof-of-work protocol; performing, with one or more computing devices, one or more first tasks based at least in part on the work instructions; determining, by the one or more computing devices, one or more random or pseudo-random values based on one or more values generated by the one or more computing devices during the one or more first tasks; and performing, by the one or more computing devices, one or more second tasks that differ from the one or more first tasks based on the one or more random or pseudo-random values.
2. obtaining, by one or more computing devices, data indicative of a current power load; obtaining, by one or more computing devices, data indicative of an amount of power currently available from one or more power supplies; 2. The method of claim 1, further comprising: determining whether to perform at least one of the one or more first tasks and the one or more second tasks based on a comparison of a current power load and an amount of power currently available.
3. 10. The method of claim 1, wherein the proof-of-work protocol is associated with one or more blockchain networks.
4. The work instruction is a first work instruction characterized by a first difficulty level, and performing the first task includes: generating, by the one or more computing devices, one or more modified work instructions based on the work instructions, the modified work instructions characterized by a second difficulty level that is lower than the first difficulty level; providing, by one or more computing devices, the modified work instructions to one or more processors configured to output a number of generated values that are dependent on a difficulty level of the modified work instructions; receiving, by one or more computing devices, one or more generated values from the one or more processors; determining, by the one or more computing devices, whether at least one generated value of the one or more generated values satisfies the first work instruction based on a comparison of the one or more generated values to the first difficulty level; and providing the at least one generated value to one or more computing systems associated with the one or more blockchain networks.
5. Determining one or more random or pseudorandom values includes: obtaining, by one or more computing devices, a first minimum associated with a proof-of-work protocol; obtaining, by one or more computing devices, a first maximum value associated with a proof-of-work protocol; obtaining, by the one or more computing devices, a second minimum associated with a probability distribution associated with the one or more second tasks; obtaining, by the one or more computing devices, a second maximum value associated with a probability distribution associated with the one or more second tasks; scaling, by the one or more computing devices, one or more values generated by the one or more computing devices during the first task based on the first minimum value, the second minimum value, the first maximum value, and the second maximum value to generate one or more scaled random or pseudo-random values; The method of claim 1 , wherein a probability distribution associated with the scaled random or pseudorandom values corresponds to a probability distribution associated with one or more second tasks.
6. Determining whether to execute the at least one task includes: determining an amount of excess power based at least in part on a comparison of a current power load to an amount of power currently available; and determining an amount of calculations to perform based on the amount of excess power.
7. The method of claim 6 , wherein the surplus electricity comprises electricity generated by at least one renewable power source.
8. The method of claim 1 , wherein performing one or more first tasks comprises performing one or more cryptographic hashes.
9. 9. The method of claim 8, wherein the one or more cryptographic hashes include one or more SHA-256 hashes.
10. The method of claim 1 , wherein the one or more values generated during the one or more first tasks include one or more cryptographic hash values.
11. 10. The method of claim 1, wherein the one or more computing devices include one or more application specific integrated circuits configured to generate cryptographic hash values or perform one or more floating point operations.
12. The method of claim 11 , wherein the one or more first tasks are performed using one or more application specific integrated circuits configured to generate cryptographic hash values.
13. The one or more second tasks include: training one or more machine learning models; performing inference using one or more machine learning models; Image generation, Text generation, Monte Carlo Sampling, Reject Sampling, Metropolis Hastings Sampling, Gibbs sampling.
14. 1. A computing system including one or more processors and one or more non-transitory computer-readable media storing instructions executable by the one or more processors to cause the computing system to perform one or more operations, the operations including: obtaining one or more work instructions associated with a proof-of-work protocol; performing one or more first tasks based at least in part on the work instructions; determining one or more random or pseudo-random values based on one or more values generated by the one or more computing devices during the one or more first tasks; and performing one or more second tasks, different from the one or more first tasks, based on the one or more random or pseudo-random values.
15. One or more non-transitory computer-readable media storing instructions executable by one or more computing systems to perform one or more operations, the operations comprising: obtaining one or more work instructions associated with a proof-of-work protocol; performing one or more first tasks based at least in part on the work instructions; determining one or more random or pseudo-random values based on one or more values generated by the one or more computing systems during the one or more first tasks; and performing one or more second tasks, different from the one or more first tasks, based on one or more random or pseudo-random values.