Shared Sparse Arrays?

Wasn’t sure if this should be in performance or first steps so feel free to relocate it.

Are there any current/recommended implementations that handle altering sparse arrays in a parallel loop? I did some searches and didn’t come up with anything useful. I also tried and failed to get SharedArrays to be composable with a SparseArrays.

I think I can come up with ways to do this, but I feel like there’s probably some preferred implementation in some package somewhere that I’m failing to find. The most naive thing I can consider is distributing dictionaries whose keys are indices and whose values are the value in the array. Over-all this is still viable, but this requires a bit of leg-work and stitching together once the task is complete. I just don’t want to toss away the SparseArray syntax in doing so or use a bunch of allocations converting types.

Optionally, using just a shared array will be cumbersome and would limit the use of what I’m doing. The majority of values in the array are zero and are unimportant. Any tips or help appreciated.

1 Like