IP Library Granted Patent US 12,135,988
Granted Patent B2
US 12,135,988 · App. 17/496,024 · Granted Nov 5, 2024

System and method for batch evaluation programs

Inventors: Eugene E. Marinelli (Palo Alto, CA); Yogy Namara (Palo Alto, CA)
Assignee: Palantir Technologies Inc.
G06F9/4881G06F9/4843G06F9/547G06F2209/484
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 12,135,988
App. No.
17/496,024
Granted
Nov 5, 2024
Kind
B2
Abstract

A batching module that prepares a plurality of blocked expressions for batch evaluation. The plurality of blocked expressions comprises a plurality of expressions in a blocked state. The batching module divides the plurality of blocked expressions into one or more partitions. For each particular partition of the one or more partitions, a single batch processing call is dispatched to an application server to perform a batch evaluation.

Claims (53)

1. A method comprising:

in a stack evaluator:

starting evaluating an expression included in a current frame of a current stack, comprising having the expression inspected,

the current stack corresponding to a program subroutine associated with an application program that is running and including multiple frames;

determining that the current stack is unblocked;

completing evaluation of the expression in the current frame; and

repeating the starting, determining, and completing step for all frames of the current stack;

in a batching module;

inspecting a group of expressions in a plurality of stacks;

identifying a plurality of expressions for batch evaluation in one or more stacks of the plurality of stacks,

the plurality of expressions comprising the expression in the current frame of the current stack,

the plurality of stacks being in an unblocked state;

transitioning a state of each stack of the one or more stacks to the blocked state;

determining that every stack in the plurality of stacks is in a state or a completed state;

dividing, in response to the determining, the plurality of blocked expressions into one or more partitions,

wherein each partition of the one or more partitions comprises one or more blocked expressions associated with at least one similar characteristic,

wherein the dividing is based, at least in part, on the at least one similar characteristic;

for each particular partition of the one or more partitions, dispatching a single batch processing call to an application server to perform a batch evaluation of the one or more blocked expressions associated with the at least one similar characteristic, receiving results from the application server, and updating the one or more blocked expressions with the results; and

unblocking the one or more stacks,

wherein the method is performed using one or more processors.

2. The method of claim 1 , further comprising:

transitioning a state of each stack of the plurality of stacks in the blocked state to the unblocked state or the completed state.

3. The method of claim 1 , wherein identifying expressions for batch evaluation comprises determining whether the expressions have a particular characteristic that is included in a pre-determined list of characteristics that are associated with expressions that should be batch evaluated.

4. The method of claim 3 , wherein the pre-determined list of characteristics comprises a characteristic of an expression that is evaluated via a database call.

5. The method of claim 3 , wherein the pre-determined list of characteristics comprises a characteristic of an expression that specifies a plurality of inputs.

6. The method of claim 1 , wherein the current stack comprises a plurality of frames and wherein each frame of the plurality of frames corresponds to a particular evaluation iteration of the program subroutine.

7. The method of claim 1 , wherein the one similar characteristic comprises an attribute and wherein the attribute is one of: type of an expression, number of inputs specified in the expression, or a type of operation to be performed by the expression.

8. One or more non-transitory computer-readable media storing instructions, which when executed by one or more processors cause:

in a stack evaluator:

starting evaluating an expression included in a current frame of a current stack, comprising having the expression inspected,

the current stack corresponding to a program subroutine associated with an application program that is running and including multiple frames;

determining that the current stack is unblocked;

completing evaluation of the expression in the current frame; and

repeating the starting, determining, and completing step for all frames of the current stack;

in a batching module;

inspecting a group of expressions in a plurality of stacks;

identifying a plurality of expressions for batch evaluation in one or more stacks of the plurality of stacks,

the plurality of expressions comprising the expression in the current frame of the current stack,

the plurality of stacks being in an unblocked state;

transitioning a state of each stack of the one or more stacks to the blocked state;

determining that every stack in the plurality of stacks is in the blocked state or a completed state;

dividing, in response to the determining, the plurality of expressions into one or more partitions,

wherein each partition of the one or more partitions comprises one or more blocked expressions associated with at least one similar characteristic,

wherein the dividing is based, at least in part, on the at least one similar characteristic;

for each particular partition of the one or more partitions, dispatching a single batch processing call to an application server to perform a batch evaluation of the one or more blocked expressions associated with the at least one similar characteristic, receiving results from the application server, and updating the one or more blocked expressions with the results; and

unblocking the one or more stacks.

9. The one or more non-transitory computer-readable media of claim 8 , further comprising instructions, which when executed by the one or more processors cause:

transitioning a state of each stack of the plurality of stacks in the blocked state to the unblocked state or the completed state.

10. The one or more non-transitory computer-readable media of claim 8 , wherein identifying expressions for batch evaluation comprises determining whether the expressions have a particular characteristic that is included in a pre-determined list of characteristics that are associated with expressions that should be batch evaluated.

11. The one or more non-transitory computer-readable media of claim 10 , wherein the pre-determined list of characteristics comprises a characteristic of an expression that is evaluated via a database call.

12. The one or more non-transitory computer-readable media of claim 10 , wherein the pre-determined list of characteristics comprises a characteristic of an expression that specifies a plurality of inputs.

13. The one or more non-transitory computer-readable media of claim 8 , wherein the stack comprises a plurality of frames and wherein each frame of the plurality of frames corresponds to a particular evaluation iteration of the program subroutine.

14. The one or more non-transitory computer-readable media of claim 8 , wherein the one similar characteristic comprises an attribute and wherein the attribute is one of: type of an expression, number of inputs specified in the expression, or a type of operation to be performed by the expression.

Assignments (1)
SECURITY INTEREST Recorded Jul 3, 2022
From: PALANTIR TECHNOLOGIES INC.
To: WELLS FARGO BANK, N.A.
Reel/Frame 060572/0506 →
Continuity (4)
Continuation 15847720 · Dec 19, 2017
Continuation 15144602 · May 2, 2016
Continuation 13657635 · Oct 22, 2012
Related Publication 20220027195A1 · Jan 27, 2022