COO matrices support
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- julia
- Ambito
- data, machine-learning
Direzione di ricerca
Inizia esaminando i livelli e le operazioni del grafo che devono funzionare con uno storage MatrixCOO sottostante, quindi confronta CPU SparseMatricesCOO.jl con CUDA CUSPARSE.CuSparseMatrixCOO e i relativi requisiti di ordinamento. Il lavoro è completato quando i livelli e le operazioni supportati funzionano con lo storage COO e il progetto ha deciso se i dati COO devono essere ordinati.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Currently, the default storage type for our graphs is the COO format, which for us is a tuple of 3 vectors, (source, target, edge_weight).
This format is convenient for gather/scatter operations. On the other hand, as we move to using more and more sparse-dense multiplication for efficiency, it would be nice to construct without allocations a COO Sparse Matrix type out of the tuple to perform algebraic allocations. AFAIK, this is also what PyG does.
On CPU, this should be doable using https://github.com/JuliaSmoothOptimizers/SparseMatricesCOO.jl
On CUDA, we have CUSPARSE.CuSparseMatrixCOO. Unfortunately, this format requires edge ordering, which we currently don't guarantee.
- additional note: PyG/pytorch coo matrix type doesn't enforce edge ordering. Do they bypass CUSPARSE and provide their own multiplication kernels?
What to do:
- make sure that most layers and operations work we construct a graph with underlying MatrixCOO storage
- decide if we want to require our COO storage to be sorted
- Lingua principale
- Julia
- Stelle
- 310
- Fork
- 74
- Merge medio
- 6g 18h
- PR unite (30g)
- 1
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di JuliaGraphs/GraphNeuralNetworks.jl
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
JuliaGraphs/GraphNeuralNetworks.jl#702 · 1 commento ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
JuliaGraphs/GraphNeuralNetworks.jl#655 · 12 commenti ·
Tutte le issue di JuliaGraphs/GraphNeuralNetworks.jl
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 73/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 76/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
SciML/OrdinaryDiffEq.jl#4907 ·
I maintainer di solito rispondono entro 4 giorni
-
documentation model-weights
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
FluxML/Metalhead.jl#311 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
jump-dev/MathOptInterface.jl#3113 ·
I maintainer di solito rispondono entro 1 giorno