Extending scatter! to work with CUDA sparse arrays #648
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Aims to fix #647 by extending the signature of
scatter!to work withAbstractCuSparseArray, a CUDA array type notably excluded by the original method. With the proposed patch, callingscatter!with sparse arrays fromCUDA.CUSPARSEwill correctly call the CUDA-specialized method instead of calling the generic CPU method, which triggered a scalar indexing error. In my testing the existing CUDA kernels work perfectly fine withCuSparseArrayCSC.The proposed implementation, perhaps inelegantly, just expands the types in the signature with
Union{...}. I am open to discussing more beautiful ways of implementing this. Ideally,AbstractCuSparseArraywould be a subtype ofAnyCuArray.PR Checklist