Are there any algorithms that allow efficient creation (element filling) of sparse (e.g. CSR or coordinate) matrix in parallel?
Asked
Active
Viewed 414 times
2 Answers
0
If you store your matrix as a coordinate map, any language which has a concurrent dictionary implementation available should do the job for you.
Java's got the ConcurrentHashMap
, and .NET 4 has ConcurrentDictionary
, both of which allow multi-threaded non-blocking (afaik) element insertion in parallel.

tzaman
- 46,925
- 11
- 90
- 115
-
Concurrency and parallelism are not the same thing. The problem here is truly data-parallel filling of elements into a sparse matrix. Specifically in my case I want to implement it on GPUs. – Fic Firic Aug 01 '10 at 19:42
0
There are no efficient algorithms for creating sparse matrices in data-parallel way. Plausible is coordinate matrix type which requires sorting after content filling, but that type is slow for matrix products etc.
Solution is you don't build sparse matrix - you don't keep it in memory; you do implicit operations in place when you're calculating elements of sparse matrix.

Fic Firic
- 41
- 2