Skip to content

flashxio/graphyti

Repository files navigation

graphyti

The Graphyti library is a collection graph algorithms optimized for multicore Non-Uniform Memory Access Architectures (NUMA) and Semi-External Memory. Graphyti is built on the FlashGraph graph engine and uses a userspace file system called SAFS to perform I/O for (semi)-external memory usage.

Language

graphyti is only supported for Python 3

Tested OSes

  • Ubuntu LTS 16.04 and 18.04

Python Dependencies

  • numpy
  • pybind11

System Dependencies

The following are required for Linux:

  • libaio-dev libatlas-base-dev zlib1g-dev
  • libnuma-dev libhwloc-dev

Installation

pip install graphyti

Graph Conversion

Edge lists in plain text format can be converted to the FlashGraph format which creates an adjacency list file and an index file that can then be ingested into SAFS or used directed from the local filesystem for in-memory computation. One can do so as follows:

import graphyti as gt

formatter = gt.Format("location/of/configuration/file")
formatter.edge2graphyti("location/of/edgelist.txt",
    "location/of/adjacencylist.adj", "location/of/index.idx")

Out of core (External Memory) configuration

Automated configuration is a way to get started, but will not provide the best performance for your system. We recommend tuning the parameters according to the documentation here.

Automated configuration

import graphyti as gt
c = gt.Configuration.create_default_configs()

Docker

To build and run Graphyti using docker we provide a Dockerfile. Simply:

docker build -t graphyti .
docker run -i -t graphyti

To simply download a stable (but possibly out of date) docker image:

docker run -i -t flashxio/graphyti

If you already have the graphyti docker image then updating to the newest stable release can be done as follows:

docker pull flashxio/graphyti

Usage

We provide use case examples in the example directory.

About

Python bindings for FlashGraph Graphyti

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published