Using dense matrix is faster than sparse matrix in LinearSolve [closed]

I'm doing FEM with Mathematica and have to deal with LinearSolve of a large matrix inside a Newton loop constantly. Hence I need to speed up the computation efficiency of LinearSolve. I'm aware of this post.

Similarly, I test with the following code. First I tried with dense matrix:

Clear["Global*"];
dim = 5000;
a = RandomReal[{1, 2}, {dim, dim}];
b = RandomReal[{1}, {dim}];
Table[SetSystemOptions["ParallelOptions" -> "MKLThreadNumber" -> i];
Print["Case=", i];
t = AbsoluteTime[];
LinearSolve[a, b];
time2 = AbsoluteTime[] - t;
Print["t(", i, ")=", time2];
Print["******"], {i, 4}];

The output is:

Case=1

t(1)=2.155357

******

Case=2

t(2)=1.279845

******

Case=3

t(3)=1.525075

******

Case=4

t(4)=1.246443

******

From the above test, it seems that the LinearSolve is automatically parallelized, which is good. My laptop has only 2 kennels hence no much improvement for 2,3, and 4 threads. Then I run it again with sparse matrix:

Clear["Global*"];
dim = 5000;
a = RandomReal[{1, 2}, {dim, dim}];
b = RandomReal[{1}, {dim}];
sa = SparseArray[a];
sb = SparseArray[b];
Table[SetSystemOptions["ParallelOptions" -> "MKLThreadNumber" -> i];
Print["Case=", i];
t = AbsoluteTime[];
LinearSolve[sa, sb];
time2 = AbsoluteTime[] - t;
Print["t(", i, ")=", time2];
Print["******"], {i, 4}];

However, it seems that LinearSolve needs much more time to deal with sparse matrix then with dense matrix.

Case=1

t(1)=11.346750

******

Case=2

t(2)=5.508803

******

Case=3

t(3)=5.551608

******

Case=4

t(4)=5.518430

******

This seems a little bit weird to me since I have experienced the improved efficiency by converting a dense matrix into sparse matrix in Matlab. Can anyone explain this? Is there any other way to speed up LinearSolve?

closed as off-topic by Daniel Lichtblau, Carl Woll, LCarvalho, J. M. will be back soon♦Nov 9 '17 at 14:18

This question appears to be off-topic. The users who voted to close gave this specific reason:

• "This question arises due to a simple mistake such as a trivial syntax error, incorrect capitalization, spelling mistake, or other typographical error and is unlikely to help any future visitors, or else it is easily found in the documentation." – Daniel Lichtblau, Carl Woll, LCarvalho, J. M. will be back soon
If this question can be reworded to fit the rules in the help center, please edit the question.

• Using a sparse array is effective when the array is actually sparse. You are converting a dense array into a sparse array that has a sparsity of 0, so I'm not surprised that sparse methods are slower. – Carl Woll Nov 8 '17 at 23:28
• If sparse matrix methods were faster than methods for dense matrices, when working with dense matrices, then the dense methods would disappear. Voting to close on grounds that there is no clear reason to expect behavior any different from what was observed. – Daniel Lichtblau Nov 9 '17 at 0:00
• As already noted, trying to use sparse methods on a demonstrably dense matrix is a fool's errand. You had chosen an especially poor example to present your premise. – J. M. will be back soon Nov 9 '17 at 0:55
• I'm voting to close this question as off-topic because the issued raised is not really a problem; it is arises from the OP's not having the necessary understanding of the Mathematica objects he is working with. – m_goldberg Nov 9 '17 at 2:09
• With only 2 kennels there is an upper bound how many dogs you can have running efficiently in parallell. – mathreadler Nov 9 '17 at 6:54