IP Library Granted Patent US 12,554,533
Granted Patent B2
US 12,554,533 · App. 17/708,187 · Granted Feb 17, 2026

Analytic engine for optimally distributing work between threads for dependency-based scheduling for concurrent online analytics

Inventors: Dane Henshall (Ottawa, CA); Matt Diener (Ottawa, CA); Philippe Cadieux-Pelletier (Ottawa, CA); Nathaniel Stanley (Ottawa, CA); Rob MacMillan (Ottawa, CA)
Assignee: Kinaxis, Inc.
G06F9/4881G06F8/433G06F9/3838G06F9/5038G06F9/5066G06F16/9024G06F9/3885G06Q10/0631
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,554,533
App. No.
17/708,187
Granted
Feb 17, 2026
Kind
B2
Abstract

A system, method and non-transitory computer-readable storage medium for computing a full dependency graph before obtaining a result of an analytic; and constructing a scheduling graph to optimally distribute work between the available threads, based on the full dependency graph. This may include receiving a request for a result of an algorithm executed on a node; checking, by the processor, the algorithm for a secondary dependency algorithm and executing, by the processor, the algorithm on the node.

Claims (35)

1 . A computer-implemented method for an analytics engine comprising:

computing, by a processor, a full dependency graph before obtaining a result of an analytic, the full dependency graph comprising a plurality of nodes and threads, where every node in the full dependency graph is an executable unit and at least some of the plurality of nodes depend on data from another of the plurality of nodes in order to compute a metric at the given node, and each of the threads of the full dependency graph is a separate processing unit the analytics engine iterates over as a graph edge;

constructing, by the processor, a scheduling graph from the full dependency graph to optimally distribute work between available threads of the full dependency graph;

receiving, by the processor, a request for a result of an algorithm executed on the given node;

checking, by the processor, the algorithm for a secondary dependency algorithm;

calculating, by the secondary dependency algorithm graph by recursively executing the secondary dependency algorithm on the given node; and

parallel scheduling, by the processor, on the secondary dependency algorithm graph to pre-calculate dependency results;

caching, by the processor, the pre-calculated dependency results; and

executing, by the processor, the algorithm on the given node based on the scheduling graph.

2 . The computer-implemented method of claim 1 , wherein executing the algorithm on the given node comprises:

calculating, by the processor, un-cached dependencies by the algorithm.

3 . A system comprising:

a processor for an analytics engine; and

a memory storing instructions that, when executed by the processor, configure the system to:

compute, by the processor, a full dependency graph before obtaining a result of an analytic the full dependency graph comprising a plurality of nodes where each node in the full dependency graph is an executable unit and at least some of the plurality of nodes depend on data from another of the plurality of nodes in order to compute a metric at a given node;

construct, by the processor, a scheduling graph from the full dependency graph to optimally distribute work between available threads of the full dependency graph, each of the threads of the full dependency graph being a separate processing unit the analytics engine iterates over;

receive, by the processor, a request for a result of an algorithm executed on the given node;

check, by the processor, the algorithm for secondary dependency algorithm;

calculate, by the processor, a secondary dependency algorithm graph by recursively executing the dependency algorithm on the given node; and

parallel schedule, by the processor on the secondary dependency algorithm graph to pre-calculate dependency results;

cache, by the processor the precalculated dependency results; and

execute, by the processor, the algorithm on the given node based on the scheduling graph.

4 . The system of claim 3 , wherein in executing the algorithm on the given node, the system is further configured to:

calculate, by the processor, un-cached dependencies by the algorithm.

5 . A non-transitory computer-readable storage medium, the computer-readable storage medium including instructions that when executed by a computer, cause the computer to:

compute, by a processor of an analytics engine, a full dependency graph before obtaining a result of an analytic, the full dependency graph comprising a plurality of nodes and threads, where each node in the full dependency graph is an executable unit and at least some of the plurality of nodes depend on data from another of the plurality of nodes in order to compute a metric at a given node, and each of the threads of the full dependency graph is a separate processing unit the analytics engine iterates over as a graph edge; and

construct, by the processor, a scheduling graph from the full dependency graph to optimally distribute work between available threads of the full dependency graph;

receive, by the processor, a request for a result of an algorithm executed on the given node;

check, by the processor, the algorithm for a secondary dependency algorithm;

calculate, by the processor, a secondary dependency algorithm graph by recursively executing the dependency algorithm on the given node; and

parallel schedule, by the processor on the secondary dependency algorithm graph to pre-calculate dependency results;

cache, by the processor, the pre-calculated dependency results; and

executing, by the processor, the algorithm on the given node based on the scheduling graph.

6 . The non-transitory computer-readable storage medium of claim 5 , wherein the instructions for executing the algorithm on the given node, further cause the computer to:

calculate, by the processor, un-cached dependencies by the algorithm.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 10, 2022
From: HENSHALL, DANE; DIENER, MATT; CADIEUX-PELLETIER, PHILIPPE; STANLEY, NATHANIEL; MACMILLAN, ROB
To: KINAXIS INC.
Reel/Frame 060159/0058 →
Continuity (2)
Provisional Application 63167808 · Mar 30, 2021
Related Publication 20220318054A1 · Oct 6, 2022
References Cited (30)
US 7664728B2 · Wortendyke et al. · 2010 [cited by applicant]
US 7698348B2 · Walker et al. · 2010 [cited by applicant]
US 7904892B2 · Babb, II · 2011 [cited by examiner]
US 9292573B2 · Walker et al. · 2016 [cited by applicant]
US 10474663B2 · Gray et al. · 2019 [cited by applicant]
US 10496528B2 · Hachmeister et al. · 2019 [cited by applicant]
US 10564946B1 · Wagner · 2020 [cited by examiner]
US 10725752B1 · Wagner · 2020 [cited by examiner]
US 10969929B2 · Vadapandeshwara · 2021 [cited by examiner]
US 11442784B2 · Sanchez · 2022 [cited by examiner]
US 20080275935A1 · Mohindra · 2008 [cited by examiner]
US 20110055484A1 · Eichenberger · 2011 [cited by examiner]
US 20120180067A1 · Funaoka · 2012 [cited by examiner]
US 20140325516A1 · Ventroux · 2014 [cited by examiner]
US 20150016257A1 · Kumar · 2015 [cited by examiner]
US 20150358198A1 · Mahajan · 2015 [cited by examiner]
US 20180075158A1 · Li · 2018 [cited by examiner]
US 20180089002A1 · Xia · 2018 [cited by examiner]
US 20180276040A1 · Hosmani · 2018 [cited by examiner]
US 20180314733A1 · Wen et al. · 2018 [cited by applicant]
US 20190005108A1 · Bregler · 2019 [cited by examiner]
US 20190220321A1 · Yang · 2019 [cited by examiner]
US 20200073861A1 · Gray et al. · 2020 [cited by applicant]
US 20200097333A1 · Jain · 2020 [cited by examiner]
US 20200125238A1 · Vadapandeshwara · 2020 [cited by examiner]
US 20200293916A1 · Li · 2020 [cited by examiner]
US 20200311076A1 · Lee · 2020 [cited by examiner]
US 20210263779A1 · Haghighat · 2021 [cited by examiner]
US 20220019476A1 · Sanchez · 2022 [cited by examiner]
A. Abdolrashidi, D. Tripathy, M. E. Belviranli, L. N. Bhuyan and D. Wong, “Wireframe: Supporting Data-dependent Parallelism through Dependency Graph Execution in GPUs,” 2017 50th Annual IEEE/ACM International Symposium … [cited by examiner]