IP Library Granted Patent US 10,423,693
Granted Patent B2
US 10,423,693 · App. 14/486,668 · Granted Sep 24, 2019

Parallel processing using a bottom up approach

Inventors: Timothy E. Abla (Pinckney, MI); Michael Alan Foster (Novi, MI); John T. Koerner (South Lyon, MI); Mikel L. Martin (South Lyon, MI); Dennis M. Mulonas (Commerce Township, MI); Matthew W. Smith (Plymouth, MI)
Assignee: AUTODESK, INC.
G06F17/10G06F9/5066G06F17/50G06F2209/5017
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,423,693
App. No.
14/486,668
Granted
Sep 24, 2019
Kind
B2
Abstract

A method, apparatus, system, computer program product, and computer readable storage medium provide the ability to parallel process hierarchical data. Hierarchical data is obtained. The hierarchical data is organized in a relationship graph having two or more nodes (consisting of parent nodes that are dependent on child nodes). The relationship graph requires bottom-up processing. Cycles are identified in the relationship graph. The relationship graph is leveled by traversing the graph and assigning all graph nodes into levels. The hierarchical data is processed by parallel processing the nodes in a first level of the one or more levels before parallel processing the nodes in a subsequent level.

Claims (122)

1. A computer-implemented method for parallel processing hierarchical data, comprising:

(a) obtaining the hierarchical data, wherein:

(i) the hierarchical data is organized in a relationship graph having two or more nodes, wherein the two or more nodes comprise one or more parent nodes and one or more child nodes, wherein the one or more parent nodes are dependent on the one or more child nodes; and

(ii) the relationship graph requires bottom-up processing wherein before processing a first parent node of the one or more parent nodes, all of the dependent children nodes of the first parent node are processed;

(b) identifying one or more cycles in the relationship graph, wherein the identifying comprises:

(i) selecting one node of the two or more nodes;

(ii) determining that the selected node has not yet been processed;

(viii) adding the selected node to a path from a current root node to the selected node;

(iv) maintaining a knowledge base, wherein the knowledge base notes when an edge from the selected node to the child node causes a cycle, and upon causing the cycle, the child node is skipped during a leveling of the relationship graph; and

(v) adding the selected node to a list of fully processed nodes, removing the selected node from the path, and repeating steps (i)-(v) for a remaining node that is not in the list of fully processed nodes;

(c) leveling the relationship graph by:

(i) traversing the relationship graph; and

(ii) assigning all of the two or more nodes into one or more levels;

wherein the traversing and assigning comprise:

(A) assigning child nodes that do not have any additional child nodes to the first level of the one or more levels, and removing the assigned child nodes from a set of unsorted nodes;

(B) defining a current level as the first level; and

(C) analyzing each parent node of each child node in the current level by assigning the analyzed parent node to a next level, of the one or more levels, from the current level, and removing the analyzed parent node from the set of unsorted nodes if:

(i) the analyzed parent node is not already assigned to one or more of the one or more levels;

(ii) no children of the analyzed parent node are in the set of unsorted nodes; and

(iii) no children of the analyzed parent node are in the next level; and

wherein:

the leveling breaks the one or more cycles; and

the leveling ensures that each node within a first level of the one or more levels will not depend on anything in the first level or a level above the first level; and

(d) processing the hierarchical data by parallel processing the nodes in the first level of the one or more levels before parallel processing the nodes in a second level of the one or more levels, wherein:

(i) the second level is above the first level;

(ii) each node in the first level can be processed in parallel with other nodes in the first level;

(iii) the hierarchical data comprises a product design data set for a solid modeling assembly;

(iv) multiple files relating to each other form a hierarchy of the hierarchical data;

(v) the processing comprises pushing or pulling the multiple files for the solid modeling assembly to/from a central repository; and

(vi) the processing maintains integrity of the product design data set.

2. The computer-implemented method of claim 1 , wherein the hierarchical data comprises a product design data set.

3. The computer-implemented method of claim 1 , wherein the hierarchical data comprises a solid modeling assembly.

4. The computer-implemented method of claim 1 , further comprising:

determining that the selected node has no children nodes; and

adding the selected node to a first level of the one or more levels.

5. The computer-implemented method of claim 1 , further comprising:

identifying the current root node from the two or more nodes; and

utilizing the current root node as the selected node.

6. The computer-implemented method of claim 1 , further comprising:

(d) incrementing the current level and repeating step (c)(C).

7. An apparatus for parallel processing hierarchical data in a computer system comprising:

a computer having a memory;

an application executing on the computer, wherein the application is configured to:

(a) obtain the hierarchical data, wherein:

(i) the hierarchical data is organized in a relationship graph having two or more nodes, wherein the two or more nodes comprise one or more parent nodes and one or more child nodes, wherein the one or more parent nodes are dependent on the one or more child nodes; and

(ii) the relationship graph requires bottom-up processing wherein before processing a first parent node of the one or more parent nodes, all of the dependent children nodes of the first parent node are processed;

(b) identify one or more cycles in the relationship graph by:

(i) selecting one node of the two or more nodes;

(ii) determining that the selected node has not yet been processed;

(iii) adding the selected node to a path from a current root node to the selected node;

(iv) maintaining a knowledge base, wherein the knowledge base notes when an edge from the selected node to the child node causes a cycle, and upon causing the cycle, the child node is skipped during a leveling of the relationship graph; and

(v) adding the selected node to a list of fully processed nodes, removing the selected node from the path, and repeating steps (i)-(v) for a remaining node that is not in the list of fully processed nodes;

(c) level the relationship graph by:

(i) traversing the relationship graph; and

(ii) assigning all of the two or more nodes into one or more levels;

wherein the traversing and assigning comprise:

(A) assigning child nodes that do not have any additional child nodes to the first level of the one or more levels, and removing the assigned child nodes from a set of unsorted nodes;

(B) defining a current level as the first level; and

(C) analyzing each parent node of each child node in the current level by assigning the analyzed parent node to a next level, of the one or more levels, from the current level, and removing the analyzed parent node from the set of unsorted nodes if:

(i) the analyzed parent node is not already assigned to one or more of the one or more levels;

(ii) no children of the analyzed parent node are in the set of unsorted nodes; and

(iii) no children of the analyzed parent node are in the next level; and

wherein:

the leveling breaks the one or more cycles; and

the leveling ensures that each node within a first level of the one or more levels will not depend on anything in the first level or a level above the first level; and

(4) process the hierarchical data by parallel processing the nodes in a first level of the one or more levels before parallel processing the nodes in a second level of the one or more levels, wherein:

(i) the second level is above the first level;

(ii) each node in the first level can be processed in parallel with other nodes in the first level;

(iii) the hierarchical data comprises a product design data set for a solid modeling assembly;

(iv) multiple files relating to each other form a hierarchy of the hierarchical data;

(v) the processing comprises pushing or pulling the multiple files for the solid modeling assembly to/from a central repository; and

(vi) the processing maintains integrity of the product design data set.

8. The apparatus of claim 7 , wherein the hierarchical data comprises a product design data set.

9. The apparatus of claim 7 , wherein the hierarchical data comprises a solid modeling assembly.

10. The apparatus of claim 7 , wherein the application is further configured to:

determine that the selected node has no children nodes; and

add the selected node to a first level of the one or more levels.

11. The apparatus of claim 7 , the application is further configured to:

identify the current root node from the two or more nodes; and

utilize the current root node as the selected node.

12. The apparatus of claim 7 , the application is further configured to:

(d) increment the current level and repeating step (c)(C).

13. A non-transitory computer readable storage medium encoded with computer program instructions which when accessed by a computer cause the computer to load the program instructions to a memory therein creating a special purpose data structure causing the computer to operate as a specially programmed computer, executing a method of parallel processing hierarchical data, comprising:

(a) obtaining, in the specially programmed computer, the hierarchical data, wherein:

(i) the hierarchical data is organized in a relationship graph having two or more nodes, wherein the two or more nodes comprise one or more parent nodes and one or more child nodes, wherein the one or more parent nodes are dependent on the one or more child nodes; and

(ii) the relationship graph requires bottom-up processing wherein before processing a first parent node of the one or more parent nodes, all of the dependent children nodes of the first parent node are processed;

(b) identifying, in the specially programmed computer, one or more cycles in the relationship graph by:

(i) selecting one node of the two or more nodes;

(ii) determining that the selected node has not yet been processed;

(iii) adding the selected node to a path from a current root node to the selected node;

(iv) maintaining a knowledge base, wherein the knowledge base notes when an edge from the selected node to the child node causes a cycle, and upon causing the cycle, the child node is skipped during a leveling of the relationship graph; and

(v) adding the selected node to a list of fully processed nodes, removing the selected node from the path, and repeating steps (i)-(v) for a remaining node that is not in the list of fully processed nodes;

(c) leveling, in the specially programmed computer, the relationship graph by:

(i) traversing the relationship graph; and

(ii) assigning all of the two or more nodes into one or more levels;

wherein the traversing and assigning comprise:

(A) assigning child nodes that do not have any additional child nodes to the first level of the one or more levels, and removing the assigned child nodes from a set of unsorted nodes;

(B) defining a current level as the first level; and

(C) analyze each parent node of each child node in the current level by assigning the analyzed parent node to a next level, of the one or more levels, from the current level, and removing the analyzed parent node from the set of unsorted nodes if:

(i) the analyzed parent node is not already assigned to one or more of the one or more levels;

(ii) no children of the analyzed parent node are in the set of unsorted nodes; and

(iii) no children of the analyzed parent node are in the next level;

wherein:

the leveling breaks the one or more cycles; and

the leveling ensures that each node within a first level of the one or more levels will not depend on anything in the first level or a level above the first level; and

(d) processing, in the specially programmed computer, the hierarchical data by parallel processing the nodes in a first level of the one or more levels before parallel processing the nodes in a second level of the one or more levels, wherein:

(i) the second level is above the first level;

(ii) each node in the first level can be processed in parallel with other nodes in the first level;

(iii) the hierarchical data comprises a product design data set for a solid modeling assembly;

(iv) multiple files relating to each other form a hierarchy of the hierarchical data;

(v) the processing comprises pushing or pulling the multiple files for the solid modeling assembly to/from a central repository; and

(vi) the processing maintains integrity of the product design data set.

14. The non-transitory computer readable storage medium of claim 13 , wherein the hierarchical data comprises a product design data set.

15. The non-transitory computer readable storage medium of claim 13 , wherein the hierarchical data comprises a solid modeling assembly.

16. The non-transitory computer readable storage medium of claim 13 , wherein the method further comprises:

determining that the selected node has no children nodes; and

adding the selected node to a first level of the one or more levels.

17. The non-transitory computer readable storage medium of claim 13 , wherein the method further comprises:

identifying the current root node from the two or more nodes; and

utilizing the current root node as the selected node.

18. The non-transitory computer readable storage medium of claim 13 , wherein the method further comprises:

(d) incrementing the current level and repeating step (c)(C).

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 15, 2014
From: ABLA, TIMOTHY E.; FOSTER, MICHAEL ALAN; KOERNER, JOHN T.; MARTIN, MIKEL L.; MULONAS, DENNIS M.; SMITH, MATTHEW W.
To: AUTODESK, INC.
Reel/Frame 033742/0965 →
Continuity (1)
Related Publication 20160078118A1 · Mar 17, 2016