IP Library › Granted Patent US 11,475,342
Granted Patent B2
US 11,475,342 · App. 15/601,925 · Granted Oct 18, 2022

Systems, methods, and apparatuses for solving stochastic problems using probability distribution samples

Inventors: Eric M. Jonas (San Francisco, CA); Vikash K. Mansinghka (San Francisco, CA)
Assignee: salesforce.com, inc.
G06N7/005G06N5/04G06N5/043G06N5/045G06N5/048G06N20/00
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,475,342
App. No.
15/601,925
Granted
Oct 18, 2022
Kind
B2
Abstract

Techniques described herein may be used to solve a stochastic problem by dividing the stochastic problem into multiple fragments. In some cases, each fragment may be related to a random variable that forms a part of the problem, such that each fragment may produce samples from a probability distribution for that variable. Each fragment of the stochastic problem may then be assigned to a configurable circuit to solve the stochastic fragment. Configurable circuits may be implemented using any suitable combination of hardware and/or software, including using stochastic circuitry. In some embodiments, stochastic circuitry may include a stochastic tile and/or a stochastic memory.

Claims (84)

1. An apparatus comprising:

a configurable stochastic circuit configurable to implement as a stochastic tile to perform a clustering technique for solving stochastic problems via clustering received input, the configurable circuit comprising:

at least one customizable stochastic memory for storing and filtering information to be used in generating a probability distribution for a stochastic problem including a Conditional Probability Table to identify probabilities for a random input variable associated with the stochastic problem;

a multi-core processing unit configurable to implement the technique to generate the probability distribution related to the stochastic problem and to produce samples from the probability distribution based on the Conditional Probability Table;

a control circuit of the stochastic tile interfaced with the configurable stochastic circuit, the control circuit to receive data and instructions to control operations of the multi-core processing unit, wherein the control circuit selects a technique for solving the stochastic problem;

wherein the multi-core processing unit is to divide the stochastic problem into fragments, assign the fragments to one of a plurality of cores of the multi-core processing unit for parallel execution via threads of the control circuit;

wherein executing the fragments is controlled based on the instructions from the stochastic tile based on input accepted by the control circuit; and

wherein for each of the fragments assigned to a same one of the plurality of cores, the plurality of cores are reconfigured based on configuration information for fragment-core assignment to execute different threads at different times.

2. The apparatus of claim 1 :

wherein the stochastic problem is a first stochastic problem of the stochastic problems to be solved via the technique implemented by the configurable stochastic circuit;

wherein the configurable stochastic circuit comprises a stochastic memory; and

wherein the controller exercises a control to reconfigure the multi-core processing unit by providing information about the first stochastic problem to the multi-core processing unit at a first time and to provide information about a second stochastic problem to the multi-core processing unit at a second time.

3. The apparatus of claim 1 , wherein the controller is adapted to:

provide information regarding a first stochastic problem to the multi-core processing unit at a first time; make a selection of a next stochastic problem; and

provide information regarding the next stochastic problem to the multi-core processing unit at a second time.

4. The apparatus of claim 3 , wherein the controller is adapted to make the selection according to a predetermined order or is adapted to make the selection randomly.

5. The apparatus of claim 3 , wherein each of the plurality of stochastic problems is a stochastic fragment of a second stochastic problem.

6. The apparatus of claim 5 , wherein a first stochastic fragment is conditionally dependent upon a second stochastic fragment, and

wherein the controller is adapted to provide information regarding the first stochastic fragment to the multi-core processing unit by providing to the multi-core processing unit a sample produced from a probability distribution associated with the second stochastic fragment.

7. The apparatus of claim 1 :

wherein the stochastic problem is a first stochastic problem of the stochastic problems to be solved via the technique implemented by the configurable stochastic circuit; and

wherein the controller is adapted to provide information about a first stochastic fragment to the multi-core processing unit, the information about the first stochastic fragment comprising at least one sample generated from at least one second stochastic fragment.

8. The apparatus of claim 1 :

wherein the configurable stochastic circuit is a core of a multi-core system, wherein the controller configures the multi-core processing unit to solve the stochastic problem by assigning a processing unit of the multi-core processing unit to execute a first thread and providing a first thread stack to the multi-core processing unit, the first thread including instructions to produce samples from a first probability distribution; and

wherein the controller reconfigures the multi-core processing unit to solve a next stochastic problem by assigning the multi-core processing unit of the core to execute a second thread and providing a second thread stack to the multi-core processing unit, the second thread including instructions to produce samples from a second probability distribution.

9. The apparatus of claim 1 :

wherein the configurable stochastic circuit comprises a stochastic tile; and

wherein the controller is to configure the stochastic tile by providing information to the multi-core processing unit describing a current state of one or more variables and information describing the probability distribution from which to produce the samples.

10. The apparatus of claim 1 , wherein the control circuit is adapted to:

receive an instruction to include new data in the information to be used in generating the probability distribution; and

adjust, in response to the instruction to include the new data, the at least one value to reflect the new data.

11. The apparatus of claim 1 , wherein the control circuit is adapted to:

receive an instruction to remove previously-received data from the information to be used in generating the probability distribution; and

adjust, in response to the instruction to remove the previously-received data, the at least one value such that the at least one value does not reflect the previously-received data.

12. The apparatus of claim 1 , wherein the control circuit is adapted to:

receive an instruction to produce the sample from the probability distribution and in response to the instruction the control circuit is to:

generate the probability distribution based at least in part on the at least one value;

produce the sample from the probability distribution; and

output the sample.

13. A method for solving a stochastic problem using a configurable stochastic circuit implemented as a stochastic tile, the method comprising:

implementing, via the configurable stochastic circuit, the stochastic tile to perform a clustering technique for solving stochastic problems via clustering received input, the configurable circuit comprising:

at least one customizable stochastic memory for storing and filtering information to be used in generating a probability distribution for a stochastic problem including a Conditional Probability Table to identify probabilities for a random input variable associated with the stochastic problem;

a multi-core processing unit configurable to implement the technique to generate the probability distribution related to the stochastic problem and to produce samples from the probability distribution based on the Conditional Probability Table;

a control circuit of the stochastic tile interfaced with the configurable stochastic circuit, the control circuit to receive data and instructions to control operations of the multi-core processing unit, wherein the control circuit selects a technique for solving the stochastic problem;

wherein the multi-core processing unit is to divide the stochastic problem into fragments, assign the fragments to one of a plurality of cores of the multi-core processing unit for parallel execution via threads of the control circuit;

wherein executing the fragments is controlled based on the instructions from the stochastic tile based on input accepted by the control circuit; and

wherein for each of the fragments assigned to a same one of the plurality of cores, the plurality of cores are reconfigured based on configuration information for fragment-core assignment to execute different threads at different times.

14. The method of claim 13 :

wherein the stochastic problem is a first stochastic problem of a plurality of stochastic problems to be solved using the configurable stochastic circuit;

wherein the first stochastic problem is conditionally dependent on at least one other stochastic problem, and

wherein the method further comprises:

determining, based on the information describing the first stochastic problem, the other stochastic problem on which the first stochastic problem conditionally depends;

retrieving at least one sample previously generated by the other stochastic problem; and

providing the at least one sample to the configurable stochastic circuit as at least a part of the information describing the first stochastic problem.

15. The method of claim 13 :

wherein the stochastic problem is a first stochastic problem of the stochastic problems to be solved via the technique implemented by the configurable stochastic circuit;

wherein the configurable stochastic circuit comprises a stochastic memory; and

wherein the controller exercises a control to reconfigure the multi-core processing unit by providing information about the first stochastic problem to the multi-core processing unit at a first time and to provide information about a second stochastic problem to the multi-core processing unit at a second time.

16. The method of claim 13 , wherein the controller is adapted to:

provide information regarding a first stochastic problem to the multi-core processing unit at a first time; make a selection of a next stochastic problem; and

provide information regarding the next stochastic problem to the multi-core processing unit at a second time.

17. Non-transitory computer-readable storage media encoded with computer-executable instructions that, when executed by a computer, the computer-executable instructions cause the computer to implement a method for solving a stochastic problem using a configurable stochastic circuit implemented as a stochastic tile, wherein the operations performed by the method include:

implementing, via the configurable stochastic circuit, the stochastic tile to perform a clustering technique for solving stochastic problems via clustering received input, the configurable circuit comprising:

at least one customizable stochastic memory for storing and filtering information to be used in generating a probability distribution for a stochastic problem including a Conditional Probability Table to identify probabilities for a random input variable associated with the stochastic problem;

a multi-core processing unit configurable to implement the technique to generate the probability distribution related to the stochastic problem and to produce samples from the probability distribution based on the Conditional Probability Table;

a control circuit of the stochastic tile interfaced with the configurable stochastic circuit, the control circuit to receive data and instructions to control operations of the multi-core processing unit, wherein the control circuit selects a technique for solving the stochastic problem;

wherein the multi-core processing unit is to divide the stochastic problem into fragments, assign the fragments to one of a plurality of cores of the multi-core processing unit for parallel execution via threads of the control circuit;

wherein executing the fragments is controlled based on the instructions from the stochastic tile based on input accepted by the control circuit; and

wherein for each of the fragments assigned to a same one of the plurality of cores, the plurality of cores are reconfigured based on configuration information for fragment-core assignment to execute different threads at different times.

18. The non-transitory computer-readable storage media of claim 17 :

wherein the stochastic problem is a first stochastic problem of a plurality of stochastic problems to be solved using the configurable stochastic circuit;

wherein the first stochastic problem is conditionally dependent on at least one other stochastic problem, and

wherein the operations performed by the method further include:

determining, based on the information describing the first stochastic problem, the other stochastic problem on which the first stochastic problem conditionally depends;

retrieving at least one sample previously generated by the other stochastic problem; and

providing the at least one sample to the configurable stochastic circuit as at least a part of the information describing the first stochastic problem.

19. The non-transitory computer-readable storage media of claim 17 :

wherein the stochastic problem is a first stochastic problem of the stochastic problems to be solved via the technique implemented by the configurable stochastic circuit;

wherein the configurable stochastic circuit comprises a stochastic memory; and

wherein the controller exercises a control to reconfigure the multi-core processing unit by providing information about the first stochastic problem to the multi-core processing unit at a first time and to provide information about a second stochastic problem to the multi-core processing unit at a second time.

20. The non-transitory computer-readable storage media of claim 17 :

wherein the stochastic problem is a first stochastic problem of the stochastic problems to be solved via the technique implemented by the configurable stochastic circuit;

wherein the configurable stochastic circuit comprises a stochastic memory; and

wherein the controller exercises a control to reconfigure the multi-core processing unit by providing information about the first stochastic problem to the multi-core processing unit at a first time and to provide information about a second stochastic problem to the multi-core processing unit at a second time.

Assignments (2)
CHANGE OF NAME Recorded Aug 4, 2026
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 076118/0548 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 8, 2018
From: JONAS, ERIC M.; MANSINGHKA, VIKASH K.
To: SALESFORCE.COM, INC.
Reel/Frame 045150/0580 →
Continuity (4)
Division 14083850 · Nov 19, 2013
Division 13032054 · Feb 22, 2011
Provisional Application 61307015 · Feb 23, 2010
Related Publication 20170255870A1 · Sep 7, 2017