Skip to content

Latest commit

Β 

History

History
89 lines (62 loc) Β· 2.92 KB

File metadata and controls

89 lines (62 loc) Β· 2.92 KB

Octopus: Efficient Hypergraph Pattern Mining with Practical Processing-in-Memory Architecture

Project Overview

Octopus is an efficient hypergraph pattern mining (HPM) framework for the UPMEM Processing-in-Memory (PIM) architecture.

The goal of Octopus is to accelerate HPM tasks on large-scale hypergraphs using UPMEM DPUs. It integrates several system-level optimizations tailored for near-data processing architecture.


πŸš€ Key Features

  • Fast hypergraph pattern mining for large-scale hypergraphs.
  • Schedule-based compact data partitioning for collectively facilitate compact data organization.
  • Load-aware balanced task assignment for balanced execution across thousands of DPUs.
  • Hyperedge-level candidate generation for reduced computation.
  • Asynchronous loader–worker pipeline using WRAM FIFO.

πŸ“ Directory Structure

Octopus-AE/
β”œβ”€β”€ data/         # Hypergraph data  
β”œβ”€β”€ dpu/          # DPU-side programs (C for UPMEM)
β”œβ”€β”€ host/         # Host-side logic (C)
β”œβ”€β”€ include/      # Shared headers
β”œβ”€β”€ makefile      # Compilation rules
└── README.md     # Project description

πŸ›  Requirements

  • Linux environment
  • UPMEM SDK v2025.1.0.
  • GNU Make, C compiler (e.g., gcc)

βš™οΈ Build and Run Instructions

To run HPM on a hypergraph, use:

make clean
GRAPH=<hypergraph_name> PATTERN=<pattern_name> make test

Example:

GRAPH=SB PATTERN=HYP2_3_4_6 make test

πŸ’‘ The available values for GRAPH and PATTERN are defined in include/common.h.
To add new hypergraphs or patterns, modify common.h and recompile.

⚑ Optimization Options

Octopus provides an optional optimization that uses the number of overlapping vertices between hyperedges as a pruning strategy. This optimization can be enabled or disabled through the H2H macro definition in include/common.h (line 86).

  • Default state: The H2H macro is commented out (disabled by default)
  • To enable: Uncomment line 86 in include/common.h:
    #define H2H
  • To disable: Comment out or remove the H2H definition:
    //#define H2H

After modifying common.h, recompile the project for the changes to take effect.

πŸ“₯ Download Hypergraph Data

pip install -r requirements.txt
python data/download.py

πŸ™ Acknowledgments

We gratefully acknowledge the foundational contributions of PimPam [SIGMOD'24], which inspired and informed much of this work. We thank the authors for advancing the state of graph pattern mining on real Processing-in-Memory hardware and for generously releasing their implementation, which has been invaluable to our research.

Reference: Shuangyu Cai, Boyu Tian, Huanchen Zhang, and Mingyu Gao. PimPam: Efficient Graph Pattern Matching on Real Processing-in-Memory Hardware. In Proceedings of the ACM on Management of Data (SIGMOD '24), Volume 2, Issue 3, Article 161, Pages 1–25.