could anyone clarify that whether can we use Sparse matrix multiplication in parallel distributed system or is it restricted only to Distributed system? If so pls help me with algorithm
Let's be clear on "distributed" and "parallel". By definition, independent processes, whether they share or do not share memory, operate at the same time, in parallel. Typically, "distributed" refers to processes that do not share memory, even though they may occupy the same block of physical memory. Processes that share memory are typically referred to as "threads".
There are tools that make the memory occupied by distributed processes appear to be shared memory. A single matrix can thus be defined for a set of distributed processes. Matrix cells can then be accessed by the various processes using a single syntax of cell addressing. The trick is to be sure the part of the matrix mostly accessed by a given process resides in the memory of the accessing process. In that way, there is far less cross-memory message traffic.
Here is a good introductory video on the parallelization of matrix multiply across distributed processes, https://www.youtube.com/watch?v=agjUYNlbpoQ. While the video uses Java, MPI is also available for Fortran, C, C++, and Python.
Hi Anupama. The answer is yes, you can perform sparse matrix operations in a distributed sense (i.e., no shared memory). There are plenty of libraries that do this for you using MPI but the best of all them is Hypre. Here is the link: https://computing.llnl.gov/projects/hypre-scalable-linear-solvers-multigrid-methods It is very easy to build and use.