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.
graphyti
is only supported for Python 3
- Ubuntu LTS 16.04 and 18.04
numpy
pybind11
The following are required for Linux:
libaio-dev libatlas-base-dev zlib1g-dev
libnuma-dev libhwloc-dev
pip install graphyti
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")
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.
import graphyti as gt
c = gt.Configuration.create_default_configs()
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
We provide use case examples in the example
directory.