FluxML / GeometricFlux.jl

Geometric Deep Learning for Flux
https://fluxml.ai/GeometricFlux.jl/stable/
MIT License
348 stars 30 forks source link

Integration of SuiteSparseGraphBLAS.jl #213

Open yuehhua opened 3 years ago

yuehhua commented 3 years ago

SuiteSparseGraphBLAS.jl provide the sparse representation of a graph and have better performance on algebraic operations, relative to SparseMatrixCSC in SparseArrays. It is suited for spectral-based graph convolutional layers like GCNConv or ChebConv. The integration will be made in GraphSignals.jl and GraphSignals.jl provides unified interfaces for graph convolutional layers to use.

CarloLucibello commented 3 years ago

That's a very nice project that we should definitely integrate (when it is AD and gpu ready)

rayegun commented 3 years ago

I'll have to figure out what we're looking at on the GPU front. GraphBLAST is a GPU implementation, but I'll have to write a shim since I don't believe it has a plain C .h file. SuiteSparse:GraphBLAS (the library I wrap) will support GPUs in the future; the author is working with Nvidia to get that working.

Does GeometricFlux support CPU compute as well? I could work towards getting it ready from the CPU side in the meantime?

yuehhua commented 3 years ago

@Wimmerer Thank you for your contribution and engagedness. I can realize that it is not easy and it requires large amount of work. Currently, GeometricFlux supports cpu and cuda for model training. So, for compatibility, if SuiteSparseGraphBLAS.jl is taken as the solution for GeometricFlux for now, and CUDA support is not ready for now, then CUSPARSE can be a candidate. For CPU part, it runs as expected. You can just feel free on your own working roadmap.