Graph Partitioning and Update Buffering for Data Propagation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Graph processing systems face inefficiencies due to high data movement between storage and memory, leading to increased processing time, power consumption, and I/O operations, particularly when dealing with large-scale graph processing where vertices and edges exceed available memory limits.

Innovation Solution

The method involves partitioning graph vertices based on their incoming and outgoing edges, placing those with fewer edges in earlier partitions, and using a pipeline architecture with compute units and writers to generate and propagate updates efficiently, reducing synchronization overhead and I/O accesses by buffering and distributing updates across multiple threads and memory banks.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of time

If graph processing systems propagate values calculated during one iteration to a later iteration to reduce I/O accesses, then I/O operations are reduced, but memory usage increases and processing complexity increases

Engineering Contradiction:
ImproveI/O access timeVSAvoidmemory usage
Core Design Contradiction:
Loss of timeVSQuantity of substance

Solution Approach 1:

The patent divides the graph into multiple partitions based on vertex degree (number of edges), creating a hierarchical structure where high-degree vertices are separated from low-degree vertices. This segmentation allows the system to process different partitions with different memory requirements, enabling propagation of calculated values for high-degree vertices without requiring all graph data to remain in memory simultaneously.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent applies different processing strategies to different parts of the graph based on local characteristics. High-degree vertices (hubs) receive special treatment with full propagation of calculated values, while low-degree vertices use simpler processing. This local quality approach optimizes memory usage by focusing propagation resources on vertices that provide the most benefit.

Inventive Principle:
Principle #3Local quality

2Quantity of substance

If the graph is partitioned into more partitions to fit memory constraints, then memory usage is reduced, but the number of I/O operations increases

Engineering Contradiction:
Improvememory usageVSAvoidI/O operation count
Core Design Contradiction:
Quantity of substanceVSLoss of time

Solution Approach 1:

The patent performs preliminary partitioning of the graph based on vertex degree before processing begins. By pre-identifying high-degree vertices and creating partitions that group them together, the system prepares the data structure to maximize propagation opportunities in advance, reducing the need for repeated I/O operations during subsequent processing iterations.

Inventive Principle:
Principle #10Preliminary action

3Productivity

If vertices with more edges are processed earlier to maximize propagation, then processing efficiency improves, but memory requirements increase

Engineering Contradiction:
Improveprocessing efficiencyVSAvoidmemory requirements
Core Design Contradiction:
ProductivityVSQuantity of substance

Solution Approach 1:

The patent segments the graph processing into distinct phases based on vertex degree. High-degree vertices are processed in dedicated partitions that can be loaded into memory, processed with full propagation, and then unloaded. This segmentation allows efficient processing of memory-intensive operations on only the necessary subset of vertices at any given time.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS12073256B2Systems, methods, and devices for data propagation in graph processing
Publication Date: 2024.08.27 SAMSUNG ELECTRONICS CO LTD
  • US12073256B2 patent drawing
  • US12073256B2 patent drawing
  • US12073256B2 patent drawing

AI summary

A method of partitioning a graph for processing may include sorting two or more vertices of the graph based on incoming edges and outgoing edges, placing a first one of the vertices with fewer incoming edges in a first partition, and placing a second one of the vertices with fewer outgoing edges in a second partition. The first one of the vertices may have a lowest number of incoming edges, and the first one of the vertices may be placed in a first available partition. The second one of the vertices may have a lowest number of outgoing edges, and the second one of the vertices may be placed in a second available partition. A method for updating vertices of a graph may include storing a first update in a first buffer, storing a second update in a second buffer, and transferring the first and second updates to a memory using different threads.