Neo4j GPU Accelerated Graph Algo Execution


(Archenroot) #1

Hello,

I am having 2 GPU accelerated libraries ported to Java:

  1. https://gunrock.github.io/ - C based API
  2. https://github.com/rapidsai/cugraph - part of Nvidia large effort to bring common GPU accelerated framework to the wild (has python API, but under heavy dev at moment) - C++ based API. its more complex and I will wait few months for stabilization/release to finalize some Java JNI bindings

The Gunrock JNI API is available here ready to use (I tested SSSP so far):

Now, I am interested in offloading lets say in first stage Shortest Path algo (I refer to SSSP version) from Neo4j data into GPU. In first stage result can be just dropped into some file, later I would like to integrate returend result back to Neo4j engine via some some result object.

I am not sure if I would like to go via Cypher in first stage. Maybe I will need just something like Storage parser where I can access all vertices and edges (forget about properties at moment, I don't do any kind of Label or property based filtering). Any hints where to start or what class of Neo4j I can utilize will help a lot.

Additional question (maybe I should raised it separately, but it has direct relationship to the case) is the storage format of Neo4j. I would like to do some benchmarking, so considering to use either Neo4j native storage format to parse, or convert it into general storage layouts: CSR/CSC/COO

Any comments well welcomed.

Thanks,

Ladislav