Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.

Cluster_Sparse_Solver Beginner Questions

William_D_2
Beginner
480 Views

For the project I am working on I need to solve a very large system of sparse linear equations (3-4 Billion rows) describing flow along a network. Each edge of the network creates 4 matrix values with indexes with the form: (i,i) (i,j)  (j,i) (j,j). Each row of the matrix, corresponds to a particular node of the network and each node can connect to 4 to 5 edges. I need to sum the diagonal elements from all the edges that connect to each node. My objects describing the edges of the network are large and can not be fit on a single node. My question is, does the cluster sparse solver sum up elements that are repeated for me, or do i need to perform that work on my own? As an alternative, does PARDISO perform this type of summation?

Second question, I read somewhere that the entire matrix must be able to fit onto each node. Is this still true?

Finally, I have a performance question. I have the ability to create my matrix such that it is Positive Definite (really simple if just flip the signs of the matrix and rhs side vector). Is solving a positive definite matrix fast, more precise, or both when compared to a sparse indefinite?

0 Kudos
2 Replies
Alexander_K_Intel2
480 Views

Hi William,

please see my comments below

Thanks,

Alex

> My question is, does the cluster sparse solver sum up elements that are repeated for me, or do i need to perform that work on my own?

Cluster sparse solver sum only elements from different computational nodes based on fact that csr format on each node is ordered.  

>As an alternative, does PARDISO perform this type of summation?

In current version of MKL PARDISO doesn't support distributed format

>Second question, I read somewhere that the entire matrix must be able to fit onto each node. Is this still true?

 In current version entire matrix must be able to fit onto master node

>Finally, I have a performance question. I have the ability to create my matrix such that it is Positive Definite (really simple if just flip the signs of the matrix and rhs side vector). Is solving a positive definite matrix fast, more precise, or both when compared to a sparse indefinite?

Algorithm for spd matrices slightly faster in general then indefinite matrix algorithm.

0 Kudos
William_D_2
Beginner
480 Views

Hi Again,

As i am reading through the documentation of the 2017 MKL Cluster Sparse Solver, I have the need to revisit this question. 

I see that you have added the parMETIS package as an option under iparam[1]. I see in the description that the "Input matrix for reordering must be distributed amoung different MPI processes without intersection". Just for my clarity that means each row of the matrix must exist on one and only one mpi-process and can no longer be distributed as before.

As an example my current code might construct a matrix on two different processes with the following (trivial) example:

Process 1: <0,0,20>, <0,1,-20>,<1,0,-20>,<1,1,20>

Process 2: <0,1,25>,<1,1,25>,<1,2,-25>,<2,2,25>

The <> represent a triplet outling COO format for easy comparison.

Would this type of matrix be disallowed from using iparam[1]=10? Do you provide a function to help merge and remove the overlaps?

0 Kudos
Reply