GCGT
efg
GCGT | efg | |
---|---|---|
1 | 2 | |
7 | 14 | |
- | - | |
10.0 | 4.7 | |
almost 4 years ago | 10 months ago | |
Cuda | C | |
MIT License | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
GCGT
-
Vectorizing Graph Neural Networks
> I believe you are not guaranteed for the edge data of adjacent nodes to be adjacent in memory
The edge data of a particular node is contiguous, but yes, the edge data of a collection of nodes is not contiguous. You can reorder (permute) the graph for some metric as a preprocessing step so that you get better locality. This only works for static graphs though.
> For float-based edge data I think quantization works well, and I believe you can further compress the ROW/COL indices
Yes, index compression is pretty well studied and understood. The challenge here is mostly good compression ratio and high decompression performance. There are a couple of works that I'm aware of that do this for gpus. This repo by Mo Sha et al. (https://github.com/desert0616/GCGT) is pretty good, and I also did some work in this space (https://github.com/pgera/efg).
efg
-
Vectorizing Graph Neural Networks
> I believe you are not guaranteed for the edge data of adjacent nodes to be adjacent in memory
The edge data of a particular node is contiguous, but yes, the edge data of a collection of nodes is not contiguous. You can reorder (permute) the graph for some metric as a preprocessing step so that you get better locality. This only works for static graphs though.
> For float-based edge data I think quantization works well, and I believe you can further compress the ROW/COL indices
Yes, index compression is pretty well studied and understood. The challenge here is mostly good compression ratio and high decompression performance. There are a couple of works that I'm aware of that do this for gpus. This repo by Mo Sha et al. (https://github.com/desert0616/GCGT) is pretty good, and I also did some work in this space (https://github.com/pgera/efg).
-
A Compressed Indexable Bitset
Btw, core EF is quite efficient on the decoding side even on GPUs. I wanted to do PEF, but that seemed a bit more involved and didn't have the time to do it. Here's a GPU implementation for graph problems if anyone is interested: https://github.com/pgera/efg
What are some alternatives?
nodevectors - Fastest network node embeddings in the west
pisa - PISA: Performant Indexes and Search for Academia
duckdb-pgq - DuckDB is an in-process SQL OLAP Database Management System
ds2i - A library of inverted index data structures
Folly - An open-source C++ library developed and used at Facebook.
tantivy - Tantivy is a full-text search engine library inspired by Apache Lucene and written in Rust