IP Library Granted Patent US 10,171,283
Granted Patent B2
US 10,171,283 · App. 15/376,886 · Granted Jan 1, 2019

Global production rules for distributed data

Inventors: Matthew R. Arnold (Ridgefield Park, NJ); Martin J. Hirzel (Ossining, NY); Vijay A. Saraswat (Mahopac, NY); Avraham E. Shinnar (Hawthorne, NY); Jerome Simeon (New York, NY); Lionel A. Villard (Yorktown Heights, NY)
Assignee: International Business Machines Corporation
H04L29/08135G06F9/46G06F17/30424G06N5/02G06Q30/0201H04L67/10G05B15/02
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 10,171,283
App. No.
15/376,886
Granted
Jan 1, 2019
Kind
B2
Abstract

Running a global production rule on data distributed over a plurality of machines may comprise receiving a local production rule that can run on each of the plurality of machines to jointly accomplish a global computation specified by the global production rule. The local production rule may be deployed to each of the plurality of machines, each of which stores a portion of the data and runs an instance of a rules engine that can run the local production rule. The plurality of machines are enabled to communicate intermediate data produced by the instance of the rules engine running the local production rule on said each of the machines. Coordinating between the plurality of machines is enabled to synchronize one or more local computations performed locally according to the local production rule on said each machine.

Claims (36)

1. A method of running a global production rule on data distributed over a plurality of machines, comprising:

receiving a local production rule that can run on each of the plurality of machines to jointly accomplish a global computation specified in a global production rule;

deploying the local production rule to each of the plurality of machines, said each of the plurality of machines storing a portion of the data and running an instance of a rules engine that can run the local rule;

allowing communicating between the plurality of machines, intermediate data produced by the instance of the rules engine running the local production rule on said each of the machines; and

allowing coordinating between the plurality of machines to synchronize one or more local computations performed locally according to the local production rule on said each machine,

wherein the global production rule is automatically translated into the local production rule,

wherein to translate the global production rule automatically translated into the local production rule, the global production rule is automatically translated into an intermediate language, the intermediate language is automatically transformed to add one or more explicit communication points, and the intermediate language is automatically translated to the local production rule.

2. The method of claim 1 , wherein the global production rule hides distribution of the global computation from a user.

3. The method of claim 1 , further comprising receiving the global production rule, the global production rule comprising the global computation to be performed on the data globally.

4. The method of claim 1 , wherein the global computation is bulk-synchronous, wherein computations of a phase performed in all of the machines are synchronized by global barrier, and wherein all the machines transition to a next phase after all the machines reach the global barrier.

5. The method of claim 1 , wherein the global computation is pipelined with communication between the machines, wherein the communication and the global computation overlap.

6. The method of claim 1 , wherein the global computation employs primitives of async representing non-blocking spawn of a remote activity and finish representing waiting for the non-blocking spawned async to complete.

7. The method of claim 1 , further comprising receiving a continuous stream of events, wherein the events are associated with time and the local production rule employs time as a condition in running of the local production rule.

8. The method of claim 1 , wherein the rules engine comprises incremental rules engine and wherein the global computation is performed incrementally by the instance of the rules engine.

9. A system for running a global production rule on data distributed over a plurality of machines, comprising:

a processor;

a module operable to execute on the processor and further operable to receive a local production rule that can run on each of the plurality of machines to jointly accomplish a global computation to be performed on the data globally and specified in the global production rule,

the module further operable to deploy the local production rule to each of the plurality of machines, said each of the plurality of machines storing a portion of the data and running an instance of a rules engine that can run the local production rule,

wherein communicating between the plurality of machines, intermediate data produced by the instance of the rules engine running the local production rule on said each of the machines, is allowed via execution of the local production rule; and

wherein coordinating between the plurality of machines to synchronize one or more local computations performed locally according to the local production rule on said each machine, is allowed via execution of the local production rule,

wherein the module receives a continuous stream of events, routes the events to the instance of the rules engine, and uses external events in the computation.

10. The system of claim 9 , wherein the global production rule hides distribution of the global computation from a user.

11. The system of claim 9 , wherein the global production rule is automatically translated into the local production rule.

12. The system of claim 11 , wherein to translate the global production rule automatically translated into the local production rule, the global production rule is automatically translated into an intermediate language, the intermediate language is automatically transformed to add one or more explicit communication points, and the intermediate language is automatically translated to the local production rule.

13. The system of claim 9 , wherein the global computation is bulk-synchronous, wherein computations of a phase performed in all of the machines are synchronized by global barrier, and wherein all the machines transition to a next phase after all the machines reach the global barrier.

14. A non-transitory computer readable storage medium storing a program of instructions executable by a machine to perform a method of running a global production rule on data distributed over a plurality of machines, the method comprising:

receiving a local production rule that can run on each of the plurality of machines to jointly accomplish a global computation to be performed on the data globally and specified in the global production rule;

deploying the local production rule to each of the plurality of machines, said each of the plurality of machines storing a portion of the data and running an instance of a rules engine that can run the local production rule;

allowing communicating between the plurality of machines, intermediate data produced by the instance of the rules engine running the local production rule on said each of the machines; and

allowing coordinating between the plurality of machines to synchronize one or more local computations performed locally according to the local production rule on said each machine,

wherein the global production rule is automatically translated into the local production rule,

wherein to translate the global production rule automatically translated into the local production rule, the global production rule is automatically translated into an intermediate language, the intermediate language is automatically transformed to add one or more explicit communication points, and the intermediate language is automatically translated to the local production rule.

15. The non-transitory computer readable storage medium of claim 14 , wherein the global production rule hides distribution of the global computation from a user.

16. The non-transitory computer readable storage medium of claim 14 , the global computation is pipelined with communication between the machines, wherein the communication and the global computation overlap.

17. The non-transitory computer readable storage medium of claim 14 , wherein the global computation is bulk-synchronous, wherein computations of a phase performed in all of the machines are synchronized by global barrier, and wherein all the machines transition to a next phase after all the machines reach the global barrier.

18. The non-transitory computer readable storage medium of claim 14 , wherein the global computation employs primitives of async representing non-blocking spawn of a remote activity and finish representing waiting for the non-blocking spawned async to complete.

Assignments (2)
CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE OF MATTHEW R. ARNOLD PREVIOUSLY RECORDED ON REEL 040721 FRAME 0828. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Dec 22, 2016
From: ARNOLD, MATTHEW R.; HIRZEL, MARTIN J.; SARASWAT, VIJAY A.; SHINNAR, AVRAHAM E.; SIMEON, JEROME; VILLARD, LIONEL A.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 041177/0546 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 13, 2016
From: ARNOLD, MATTHEW R.; HIRZEL, MARTIN J.; SARASWAT, VIJAY A.; SHINNAR, AVRAHAM E.; SIMEON, JEROME; VILLARD, LIONEL A.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 040721/0828 →
Continuity (2)
Continuation 14199285 · Mar 6, 2014
Related Publication 20170090443A1 · Mar 30, 2017