Benchmarks
All the following benchmarks have been carried out on a 2.3 GHz Intel Core i5 processor with 8GB RAM (with OpenMP enabled, this is 4 threads), with g++-9 compiler and Eigen version 3.3.7. The compiler flags that were utilized are the same are those mentioned in the CMakeLists.txt file.
Time Taken vs Tolerance
These benchmarks were performed for size of the matrix \(N = 1000000\), with the size of the leaf node set to \(M = 100\).
Tolerance |
Assembly(s) |
MatVec(s) |
|---|---|---|
\(10^{-2}\) |
19.8358 |
9.65095 |
\(10^{-4}\) |
49.7557 |
8.55117 |
\(10^{-6}\) |
70.4369 |
8.57725 |
\(10^{-8}\) |
126.125 |
12.9264 |
\(10^{-10}\) |
214.757 |
52.5742 |
\(10^{-12}\) |
419.34 |
47.0097 |
\(10^{-14}\) |
749.672 |
79.0786 |
Time Taken vs Size of Matrix
For these benchmarks, the leaf size was fixed at \(M = 100\), with tolerance set to \(10^{-12}\)
\(N\) |
Assembly(s) |
MatVec(s) |
|---|---|---|
\(5 \times 10^{3}\) |
0.309096 |
0.040681 |
\(10^{4}\) |
1.88374 |
0.062273 |
\(5 \times 10^{4}\) |
14.2385 |
0.47138 |
\(10^{5}\) |
29.3395 |
1.20935 |
\(5 \times 10^{5}\) |
244.375 |
42.0531 |
\(10^{6}\) |
419.34 |
47.0097 |