Skip to content

Add an option decompression_uplo for symmetric results - #294

Open
amontoison wants to merge 4 commits into
mainfrom
am/decompression_uplo
Open

Add an option decompression_uplo for symmetric results#294
amontoison wants to merge 4 commits into
mainfrom
am/decompression_uplo

Conversation

@amontoison

@amontoison amontoison commented Jan 4, 2026

Copy link
Copy Markdown
Collaborator

Add an argument decompression_uplo for StarSetColoringResult and TreeSetColoringResult such that we can specialize the decompression for bicoloring.
We can always use decompression_uplo = :L for the bicoloring.
For the bicoloring, decompress! only use the specialized version for SparseMatrixCSC since #288.

Everything is internal so it is not breaking.
Replace #289.

I will wait a review of Guillaume before that I merge this PR and future modifications.

@amontoison amontoison added performance Speeding things up benchmark Run benchmarks on PR labels Jan 4, 2026
@amontoison
amontoison requested a review from gdalle January 4, 2026 22:39
@codecov

codecov Bot commented Jan 4, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (31999f1) to head (a55cce6).

Additional details and impacted files
@@            Coverage Diff            @@
##              main      #294   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files           20        20           
  Lines         2027      2045   +18     
=========================================
+ Hits          2027      2045   +18     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@github-actions

github-actions Bot commented Jan 4, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results

main dd445bd... main / dd445bd...
coloring/nonsymmetric/bidirectional/direct/n=1000/p=0.002 1.88 ± 0.017 ms 1.81 ± 0.017 ms 1.04 ± 0.014
coloring/nonsymmetric/bidirectional/direct/n=1000/p=0.005 4.3 ± 0.043 ms 4.15 ± 0.043 ms 1.04 ± 0.015
coloring/nonsymmetric/bidirectional/direct/n=1000/p=0.01 9.7 ± 0.098 ms 9.49 ± 0.12 ms 1.02 ± 0.016
coloring/nonsymmetric/bidirectional/direct/n=100000/p=0.0001 2.68 ± 0.089 s 2.27 ± 0.042 s 1.18 ± 0.045
coloring/nonsymmetric/bidirectional/direct/n=100000/p=2.0e-5 0.342 ± 0.049 s 0.275 ± 0.029 s 1.24 ± 0.22
coloring/nonsymmetric/bidirectional/direct/n=100000/p=5.0e-5 0.953 ± 0.05 s 0.687 ± 0.032 s 1.39 ± 0.097
coloring/nonsymmetric/bidirectional/substitution/n=1000/p=0.002 2.94 ± 0.028 ms 2.81 ± 0.023 ms 1.05 ± 0.013
coloring/nonsymmetric/bidirectional/substitution/n=1000/p=0.005 7.75 ± 0.082 ms 7.25 ± 0.066 ms 1.07 ± 0.015
coloring/nonsymmetric/bidirectional/substitution/n=1000/p=0.01 18.6 ± 0.21 ms 17.3 ± 0.19 ms 1.07 ± 0.017
coloring/nonsymmetric/bidirectional/substitution/n=100000/p=0.0001 5.48 s 4.33 ± 0.15 s 1.27
coloring/nonsymmetric/bidirectional/substitution/n=100000/p=2.0e-5 0.685 ± 0.039 s 0.48 ± 0.067 s 1.43 ± 0.22
coloring/nonsymmetric/bidirectional/substitution/n=100000/p=5.0e-5 2.01 ± 0.11 s 1.39 ± 0.068 s 1.45 ± 0.11
coloring/nonsymmetric/column/direct/n=1000/p=0.002 0.465 ± 0.012 ms 0.463 ± 0.012 ms 1 ± 0.037
coloring/nonsymmetric/column/direct/n=1000/p=0.005 1.15 ± 0.011 ms 1.14 ± 0.0091 ms 1.01 ± 0.013
coloring/nonsymmetric/column/direct/n=1000/p=0.01 2.88 ± 0.016 ms 2.85 ± 0.015 ms 1.01 ± 0.0078
coloring/nonsymmetric/column/direct/n=100000/p=0.0001 0.588 ± 0.028 s 0.503 ± 0.053 s 1.17 ± 0.14
coloring/nonsymmetric/column/direct/n=100000/p=2.0e-5 0.0824 ± 0.0028 s 0.0801 ± 0.0026 s 1.03 ± 0.049
coloring/nonsymmetric/column/direct/n=100000/p=5.0e-5 0.232 ± 0.016 s 0.192 ± 0.0085 s 1.21 ± 0.1
coloring/nonsymmetric/row/direct/n=1000/p=0.002 0.463 ± 0.013 ms 0.462 ± 0.012 ms 1 ± 0.038
coloring/nonsymmetric/row/direct/n=1000/p=0.005 1.14 ± 0.011 ms 1.14 ± 0.01 ms 1 ± 0.013
coloring/nonsymmetric/row/direct/n=1000/p=0.01 2.84 ± 0.018 ms 2.84 ± 0.016 ms 1 ± 0.0085
coloring/nonsymmetric/row/direct/n=100000/p=0.0001 0.537 ± 0.0069 s 0.512 ± 0.019 s 1.05 ± 0.041
coloring/nonsymmetric/row/direct/n=100000/p=2.0e-5 0.0811 ± 0.0046 s 0.0777 ± 0.0021 s 1.04 ± 0.066
coloring/nonsymmetric/row/direct/n=100000/p=5.0e-5 0.229 ± 0.021 s 0.187 ± 0.0078 s 1.22 ± 0.12
coloring/symmetric/column/direct/n=1000/p=0.002 0.95 ± 0.0095 ms 0.96 ± 0.01 ms 0.989 ± 0.014
coloring/symmetric/column/direct/n=1000/p=0.005 2.22 ± 0.017 ms 2.24 ± 0.017 ms 0.992 ± 0.011
coloring/symmetric/column/direct/n=1000/p=0.01 4.96 ± 0.027 ms 4.97 ± 0.026 ms 0.998 ± 0.0075
coloring/symmetric/column/direct/n=100000/p=0.0001 1.08 ± 0.044 s 0.779 ± 0.016 s 1.39 ± 0.064
coloring/symmetric/column/direct/n=100000/p=2.0e-5 0.142 ± 0.0039 s 0.141 ± 0.0035 s 1.01 ± 0.037
coloring/symmetric/column/direct/n=100000/p=5.0e-5 0.415 ± 0.039 s 0.326 ± 0.01 s 1.27 ± 0.13
coloring/symmetric/column/substitution/n=1000/p=0.002 1.52 ± 0.019 ms 1.51 ± 0.016 ms 1 ± 0.017
coloring/symmetric/column/substitution/n=1000/p=0.005 3.89 ± 0.027 ms 3.87 ± 0.027 ms 1 ± 0.0098
coloring/symmetric/column/substitution/n=1000/p=0.01 9 ± 0.077 ms 8.91 ± 0.069 ms 1.01 ± 0.012
coloring/symmetric/column/substitution/n=100000/p=0.0001 2.06 ± 0.069 s 1.51 ± 0.037 s 1.36 ± 0.056
coloring/symmetric/column/substitution/n=100000/p=2.0e-5 0.243 ± 0.021 s 0.226 ± 0.011 s 1.07 ± 0.11
coloring/symmetric/column/substitution/n=100000/p=5.0e-5 0.716 ± 0.03 s 0.613 ± 0.045 s 1.17 ± 0.098
decompress/nonsymmetric/bidirectional/direct/n=1000/p=0.002 0.141 ± 0.011 ms 0.0682 ± 0.0023 ms 2.07 ± 0.18
decompress/nonsymmetric/bidirectional/direct/n=1000/p=0.005 0.227 ± 0.011 ms 0.128 ± 0.004 ms 1.78 ± 0.1
decompress/nonsymmetric/bidirectional/direct/n=1000/p=0.01 0.393 ± 0.015 ms 0.258 ± 0.011 ms 1.52 ± 0.088
decompress/nonsymmetric/bidirectional/direct/n=100000/p=0.0001 0.115 ± 0.0043 s 0.0634 ± 0.0036 s 1.82 ± 0.12
decompress/nonsymmetric/bidirectional/direct/n=100000/p=2.0e-5 31.3 ± 2.1 ms 18.5 ± 0.77 ms 1.69 ± 0.13
decompress/nonsymmetric/bidirectional/direct/n=100000/p=5.0e-5 0.0716 ± 0.0038 s 0.0414 ± 0.0021 s 1.73 ± 0.13
decompress/nonsymmetric/bidirectional/substitution/n=1000/p=0.002 0.163 ± 0.0082 ms 0.156 ± 0.0054 ms 1.04 ± 0.063
decompress/nonsymmetric/bidirectional/substitution/n=1000/p=0.005 0.327 ± 0.013 ms 0.316 ± 0.011 ms 1.03 ± 0.054
decompress/nonsymmetric/bidirectional/substitution/n=1000/p=0.01 0.644 ± 0.017 ms 0.633 ± 0.015 ms 1.02 ± 0.036
decompress/nonsymmetric/bidirectional/substitution/n=100000/p=0.0001 0.274 ± 0.014 s 0.182 ± 0.013 s 1.51 ± 0.13
decompress/nonsymmetric/bidirectional/substitution/n=100000/p=2.0e-5 0.0589 ± 0.0054 s 0.0345 ± 0.0014 s 1.7 ± 0.17
decompress/nonsymmetric/bidirectional/substitution/n=100000/p=5.0e-5 0.13 ± 0.0052 s 0.0727 ± 0.0065 s 1.79 ± 0.18
decompress/nonsymmetric/column/direct/n=1000/p=0.002 26 ± 1.6 μs 24.9 ± 1.5 μs 1.05 ± 0.088
decompress/nonsymmetric/column/direct/n=1000/p=0.005 0.0518 ± 0.0058 ms 0.0497 ± 0.0039 ms 1.04 ± 0.14
decompress/nonsymmetric/column/direct/n=1000/p=0.01 0.0925 ± 0.0065 ms 0.0927 ± 0.0096 ms 0.998 ± 0.12
decompress/nonsymmetric/column/direct/n=100000/p=0.0001 30 ± 3.4 ms 29.5 ± 2.5 ms 1.02 ± 0.14
decompress/nonsymmetric/column/direct/n=100000/p=2.0e-5 5.72 ± 0.71 ms 4.76 ± 0.41 ms 1.2 ± 0.18
decompress/nonsymmetric/column/direct/n=100000/p=5.0e-5 14.2 ± 1.3 ms 12.8 ± 0.32 ms 1.11 ± 0.11
decompress/nonsymmetric/row/direct/n=1000/p=0.002 25.4 ± 1.7 μs 24 ± 1.4 μs 1.06 ± 0.094
decompress/nonsymmetric/row/direct/n=1000/p=0.005 0.0448 ± 0.0023 ms 0.0426 ± 0.0017 ms 1.05 ± 0.068
decompress/nonsymmetric/row/direct/n=1000/p=0.01 0.0817 ± 0.006 ms 0.0784 ± 0.005 ms 1.04 ± 0.1
decompress/nonsymmetric/row/direct/n=100000/p=0.0001 12.1 ± 0.73 ms 11.1 ± 0.52 ms 1.09 ± 0.083
decompress/nonsymmetric/row/direct/n=100000/p=2.0e-5 3.45 ± 0.42 ms 2.99 ± 0.19 ms 1.15 ± 0.16
decompress/nonsymmetric/row/direct/n=100000/p=5.0e-5 6.1 ± 0.47 ms 5.7 ± 0.35 ms 1.07 ± 0.11
decompress/symmetric/column/direct/n=1000/p=0.002 25 ± 1.4 μs 23.7 ± 1.3 μs 1.05 ± 0.085
decompress/symmetric/column/direct/n=1000/p=0.005 0.0471 ± 0.0024 ms 0.0459 ± 0.0026 ms 1.03 ± 0.079
decompress/symmetric/column/direct/n=1000/p=0.01 0.0866 ± 0.0052 ms 0.0839 ± 0.0061 ms 1.03 ± 0.098
decompress/symmetric/column/direct/n=100000/p=0.0001 26.4 ± 1.5 ms 25 ± 1.9 ms 1.06 ± 0.1
decompress/symmetric/column/direct/n=100000/p=2.0e-5 5.17 ± 0.42 ms 3.96 ± 0.51 ms 1.3 ± 0.2
decompress/symmetric/column/direct/n=100000/p=5.0e-5 13.1 ± 0.52 ms 12.1 ± 0.97 ms 1.08 ± 0.097
decompress/symmetric/column/substitution/n=1000/p=0.002 0.0991 ± 0.0039 ms 0.0995 ± 0.003 ms 0.997 ± 0.05
decompress/symmetric/column/substitution/n=1000/p=0.005 0.208 ± 0.01 ms 0.205 ± 0.0093 ms 1.01 ± 0.069
decompress/symmetric/column/substitution/n=1000/p=0.01 0.408 ± 0.016 ms 0.405 ± 0.014 ms 1.01 ± 0.053
decompress/symmetric/column/substitution/n=100000/p=0.0001 0.108 ± 0.011 s 0.0966 ± 0.0037 s 1.12 ± 0.12
decompress/symmetric/column/substitution/n=100000/p=2.0e-5 26.1 ± 1.3 ms 24.9 ± 0.48 ms 1.05 ± 0.057
decompress/symmetric/column/substitution/n=100000/p=5.0e-5 0.0521 ± 0.0032 s 0.049 ± 0.0011 s 1.06 ± 0.07
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.002 0.719 ± 0.0088 ms 0.727 ± 0.009 ms 0.989 ± 0.017
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.005 2.52 ± 0.019 ms 2.53 ± 0.024 ms 0.996 ± 0.012
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.01 7.81 ± 0.058 ms 7.83 ± 0.063 ms 0.997 ± 0.011
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=0.0001 1.59 ± 0.11 s 1.92 ± 0.12 s 0.831 ± 0.079
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=2.0e-5 0.131 ± 0.003 s 0.138 ± 0.0025 s 0.951 ± 0.028
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=5.0e-5 0.492 ± 0.012 s 0.548 ± 0.046 s 0.898 ± 0.079
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.002 0.708 ± 0.0093 ms 0.711 ± 0.0094 ms 0.996 ± 0.019
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.005 2.52 ± 0.029 ms 2.53 ± 0.023 ms 0.997 ± 0.015
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.01 7.8 ± 0.079 ms 7.82 ± 0.065 ms 0.998 ± 0.013
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=0.0001 1.54 ± 0.055 s 1.87 ± 0.063 s 0.824 ± 0.04
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=2.0e-5 0.136 ± 0.0034 s 0.154 ± 0.0051 s 0.879 ± 0.036
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=5.0e-5 0.5 ± 0.016 s 0.576 ± 0.017 s 0.869 ± 0.038
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.002 0.716 ± 0.0093 ms 0.716 ± 0.0087 ms 1 ± 0.018
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.005 2.51 ± 0.034 ms 2.51 ± 0.038 ms 1 ± 0.02
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.01 7.98 ± 0.1 ms 7.75 ± 0.064 ms 1.03 ± 0.016
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=0.0001 1.6 ± 0.044 s 1.82 ± 0.046 s 0.882 ± 0.033
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=2.0e-5 0.144 ± 0.001 s 0.157 ± 0.0022 s 0.918 ± 0.015
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=5.0e-5 0.522 ± 0.021 s 0.592 ± 0.096 s 0.881 ± 0.15
order/nonsymmetric/column/SparseMatrixColorings.LargestFirst()/n=1000/p=0.002 0.298 ± 0.011 ms 0.301 ± 0.011 ms 0.99 ± 0.052
order/nonsymmetric/column/SparseMatrixColorings.LargestFirst()/n=1000/p=0.005 0.73 ± 0.01 ms 0.756 ± 0.0091 ms 0.965 ± 0.018
order/nonsymmetric/column/SparseMatrixColorings.LargestFirst()/n=1000/p=0.01 1.79 ± 0.014 ms 1.86 ± 0.15 ms 0.966 ± 0.078
order/nonsymmetric/column/SparseMatrixColorings.LargestFirst()/n=100000/p=0.0001 0.393 ± 0.011 s 0.301 ± 0.0087 s 1.31 ± 0.053
order/nonsymmetric/column/SparseMatrixColorings.LargestFirst()/n=100000/p=2.0e-5 0.0595 ± 0.00087 s 0.0589 ± 0.00053 s 1.01 ± 0.017
order/nonsymmetric/column/SparseMatrixColorings.LargestFirst()/n=100000/p=5.0e-5 0.144 ± 0.0039 s 0.135 ± 0.0022 s 1.07 ± 0.034
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.002 0.723 ± 0.0086 ms 0.72 ± 0.0083 ms 1 ± 0.017
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.005 2.51 ± 0.02 ms 2.53 ± 0.022 ms 0.993 ± 0.012
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.01 7.81 ± 0.064 ms 7.8 ± 0.066 ms 1 ± 0.012
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=0.0001 1.63 ± 0.067 s 1.82 ± 0.048 s 0.897 ± 0.044
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=2.0e-5 0.134 ± 0.0034 s 0.139 ± 0.0038 s 0.964 ± 0.036
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=5.0e-5 0.492 ± 0.011 s 0.55 ± 0.01 s 0.895 ± 0.027
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.002 0.712 ± 0.0088 ms 0.71 ± 0.0087 ms 1 ± 0.017
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.005 2.53 ± 0.028 ms 2.52 ± 0.021 ms 1.01 ± 0.014
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.01 7.8 ± 0.085 ms 7.79 ± 0.061 ms 1 ± 0.013
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=0.0001 1.6 ± 0.041 s 1.88 ± 0.069 s 0.851 ± 0.038
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=2.0e-5 0.14 ± 0.0039 s 0.145 ± 0.0056 s 0.96 ± 0.046
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=5.0e-5 0.499 ± 0.021 s 0.56 ± 0.026 s 0.892 ± 0.056
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.002 0.724 ± 0.0083 ms 0.726 ± 0.008 ms 0.997 ± 0.016
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.005 2.5 ± 0.023 ms 2.51 ± 0.022 ms 0.997 ± 0.013
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.01 7.82 ± 0.063 ms 7.76 ± 0.069 ms 1.01 ± 0.012
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=0.0001 1.57 ± 0.046 s 1.77 ± 0.043 s 0.885 ± 0.034
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=2.0e-5 0.15 ± 0.0044 s 0.155 ± 0.0042 s 0.966 ± 0.038
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=5.0e-5 0.513 ± 0.017 s 0.552 ± 0.021 s 0.929 ± 0.048
order/nonsymmetric/row/SparseMatrixColorings.LargestFirst()/n=1000/p=0.002 0.301 ± 0.011 ms 0.301 ± 0.011 ms 1 ± 0.051
order/nonsymmetric/row/SparseMatrixColorings.LargestFirst()/n=1000/p=0.005 0.753 ± 0.01 ms 0.762 ± 0.0069 ms 0.988 ± 0.016
order/nonsymmetric/row/SparseMatrixColorings.LargestFirst()/n=1000/p=0.01 1.88 ± 0.13 ms 1.87 ± 0.016 ms 1.01 ± 0.07
order/nonsymmetric/row/SparseMatrixColorings.LargestFirst()/n=100000/p=0.0001 0.296 ± 0.0052 s 0.307 ± 0.0061 s 0.964 ± 0.025
order/nonsymmetric/row/SparseMatrixColorings.LargestFirst()/n=100000/p=2.0e-5 0.0554 ± 0.0013 s 0.059 ± 0.00045 s 0.939 ± 0.023
order/nonsymmetric/row/SparseMatrixColorings.LargestFirst()/n=100000/p=5.0e-5 0.131 ± 0.0015 s 0.136 ± 0.0039 s 0.967 ± 0.03
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.002 0.219 ± 0.0063 ms 0.218 ± 0.0054 ms 1 ± 0.038
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.005 0.401 ± 0.012 ms 0.403 ± 0.012 ms 0.995 ± 0.042
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.01 0.667 ± 0.012 ms 0.671 ± 0.011 ms 0.994 ± 0.024
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=0.0001 0.174 ± 0.006 s 0.131 ± 0.0086 s 1.33 ± 0.098
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=2.0e-5 0.0477 ± 0.0016 s 0.0438 ± 0.00046 s 1.09 ± 0.039
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=5.0e-5 0.109 ± 0.0034 s 0.0798 ± 0.0042 s 1.37 ± 0.084
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.002 0.206 ± 0.0054 ms 0.208 ± 0.0045 ms 0.99 ± 0.034
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.005 0.385 ± 0.013 ms 0.387 ± 0.012 ms 0.996 ± 0.045
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.01 0.654 ± 0.012 ms 0.652 ± 0.011 ms 1 ± 0.025
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=0.0001 0.178 ± 0.0071 s 0.14 ± 0.0071 s 1.27 ± 0.082
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=2.0e-5 0.0469 ± 0.0022 s 0.0427 ± 0.002 s 1.1 ± 0.074
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=5.0e-5 0.108 ± 0.0038 s 0.0791 ± 0.0045 s 1.36 ± 0.091
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.002 0.186 ± 0.0084 ms 0.189 ± 0.0039 ms 0.983 ± 0.049
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.005 0.359 ± 0.012 ms 0.359 ± 0.011 ms 1 ± 0.047
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.01 0.598 ± 0.014 ms 0.594 ± 0.012 ms 1.01 ± 0.03
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=0.0001 0.172 ± 0.008 s 0.136 ± 0.011 s 1.26 ± 0.12
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=2.0e-5 0.0498 ± 0.0022 s 0.0403 ± 0.00038 s 1.23 ± 0.055
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=5.0e-5 0.104 ± 0.0038 s 0.073 ± 0.0039 s 1.42 ± 0.093
order/symmetric/column/SparseMatrixColorings.LargestFirst()/n=1000/p=0.002 0.108 ± 0.002 ms 0.111 ± 0.0021 ms 0.972 ± 0.026
order/symmetric/column/SparseMatrixColorings.LargestFirst()/n=1000/p=0.005 0.119 ± 0.005 ms 0.125 ± 0.0034 ms 0.948 ± 0.048
order/symmetric/column/SparseMatrixColorings.LargestFirst()/n=1000/p=0.01 0.149 ± 0.0046 ms 0.14 ± 0.0049 ms 1.06 ± 0.05
order/symmetric/column/SparseMatrixColorings.LargestFirst()/n=100000/p=0.0001 25.9 ± 0.24 ms 26.2 ± 0.17 ms 0.99 ± 0.011
order/symmetric/column/SparseMatrixColorings.LargestFirst()/n=100000/p=2.0e-5 21.7 ± 0.13 ms 21.9 ± 0.088 ms 0.988 ± 0.007
order/symmetric/column/SparseMatrixColorings.LargestFirst()/n=100000/p=5.0e-5 23.6 ± 0.15 ms 23.8 ± 0.19 ms 0.993 ± 0.01
time_to_load 0.275 ± 0.00047 s 0.28 ± 0.0026 s 0.98 ± 0.0092
main dd445bd... main / dd445bd...
coloring/nonsymmetric/bidirectional/direct/n=1000/p=0.002 0.52 k allocs: 2.33 MB 0.52 k allocs: 2.25 MB 1.03
coloring/nonsymmetric/bidirectional/direct/n=1000/p=0.005 0.53 k allocs: 3.91 MB 0.53 k allocs: 3.72 MB 1.05
coloring/nonsymmetric/bidirectional/direct/n=1000/p=0.01 0.54 k allocs: 6.85 MB 0.54 k allocs: 6.47 MB 1.06
coloring/nonsymmetric/bidirectional/direct/n=100000/p=0.0001 0.625 k allocs: 0.71 GB 0.625 k allocs: 0.672 GB 1.06
coloring/nonsymmetric/bidirectional/direct/n=100000/p=2.0e-5 0.595 k allocs: 0.247 GB 0.595 k allocs: 0.239 GB 1.03
coloring/nonsymmetric/bidirectional/direct/n=100000/p=5.0e-5 0.605 k allocs: 0.412 GB 0.605 k allocs: 0.393 GB 1.05
coloring/nonsymmetric/bidirectional/substitution/n=1000/p=0.002 0.678 k allocs: 2.84 MB 0.668 k allocs: 2.76 MB 1.03
coloring/nonsymmetric/bidirectional/substitution/n=1000/p=0.005 0.68 k allocs: 4.83 MB 0.67 k allocs: 4.64 MB 1.04
coloring/nonsymmetric/bidirectional/substitution/n=1000/p=0.01 0.68 k allocs: 8.34 MB 0.67 k allocs: 7.96 MB 1.05
coloring/nonsymmetric/bidirectional/substitution/n=100000/p=0.0001 0.69 k allocs: 0.813 GB 0.68 k allocs: 0.776 GB 1.05
coloring/nonsymmetric/bidirectional/substitution/n=100000/p=2.0e-5 0.69 k allocs: 0.273 GB 0.68 k allocs: 0.266 GB 1.03
coloring/nonsymmetric/bidirectional/substitution/n=100000/p=5.0e-5 0.69 k allocs: 0.473 GB 0.68 k allocs: 0.454 GB 1.04
coloring/nonsymmetric/column/direct/n=1000/p=0.002 0.135 k allocs: 0.354 MB 0.135 k allocs: 0.354 MB 1
coloring/nonsymmetric/column/direct/n=1000/p=0.005 0.135 k allocs: 0.578 MB 0.135 k allocs: 0.578 MB 1
coloring/nonsymmetric/column/direct/n=1000/p=0.01 0.135 k allocs: 0.967 MB 0.135 k allocs: 0.967 MB 1
coloring/nonsymmetric/column/direct/n=100000/p=0.0001 0.135 k allocs: 0.0931 GB 0.135 k allocs: 0.0931 GB 1
coloring/nonsymmetric/column/direct/n=100000/p=2.0e-5 0.135 k allocs: 0.0335 GB 0.135 k allocs: 0.0335 GB 1
coloring/nonsymmetric/column/direct/n=100000/p=5.0e-5 0.135 k allocs: 0.0558 GB 0.135 k allocs: 0.0558 GB 1
coloring/nonsymmetric/row/direct/n=1000/p=0.002 0.135 k allocs: 0.354 MB 0.135 k allocs: 0.354 MB 1
coloring/nonsymmetric/row/direct/n=1000/p=0.005 0.135 k allocs: 0.578 MB 0.135 k allocs: 0.578 MB 1
coloring/nonsymmetric/row/direct/n=1000/p=0.01 0.135 k allocs: 0.967 MB 0.135 k allocs: 0.967 MB 1
coloring/nonsymmetric/row/direct/n=100000/p=0.0001 0.135 k allocs: 0.0931 GB 0.135 k allocs: 0.0931 GB 1
coloring/nonsymmetric/row/direct/n=100000/p=2.0e-5 0.135 k allocs: 0.0335 GB 0.135 k allocs: 0.0335 GB 1
coloring/nonsymmetric/row/direct/n=100000/p=5.0e-5 0.135 k allocs: 0.0558 GB 0.135 k allocs: 0.0558 GB 1
coloring/symmetric/column/direct/n=1000/p=0.002 0.255 k allocs: 0.634 MB 0.255 k allocs: 0.634 MB 1
coloring/symmetric/column/direct/n=1000/p=0.005 0.265 k allocs: 1.03 MB 0.265 k allocs: 1.03 MB 1
coloring/symmetric/column/direct/n=1000/p=0.01 0.267 k allocs: 1.56 MB 0.267 k allocs: 1.56 MB 1
coloring/symmetric/column/direct/n=100000/p=0.0001 0.35 k allocs: 0.172 GB 0.35 k allocs: 0.172 GB 1
coloring/symmetric/column/direct/n=100000/p=2.0e-5 0.32 k allocs: 0.0608 GB 0.32 k allocs: 0.0608 GB 1
coloring/symmetric/column/direct/n=100000/p=5.0e-5 0.33 k allocs: 0.0952 GB 0.33 k allocs: 0.0952 GB 1
coloring/symmetric/column/substitution/n=1000/p=0.002 0.42 k allocs: 0.95 MB 0.42 k allocs: 0.95 MB 1
coloring/symmetric/column/substitution/n=1000/p=0.005 0.425 k allocs: 1.65 MB 0.425 k allocs: 1.65 MB 1
coloring/symmetric/column/substitution/n=1000/p=0.01 0.425 k allocs: 2.86 MB 0.425 k allocs: 2.86 MB 1
coloring/symmetric/column/substitution/n=100000/p=0.0001 0.435 k allocs: 0.276 GB 0.435 k allocs: 0.276 GB 1
coloring/symmetric/column/substitution/n=100000/p=2.0e-5 0.435 k allocs: 0.0901 GB 0.435 k allocs: 0.0901 GB 1
coloring/symmetric/column/substitution/n=100000/p=5.0e-5 0.435 k allocs: 0.16 GB 0.435 k allocs: 0.16 GB 1
decompress/nonsymmetric/bidirectional/direct/n=1000/p=0.002 0.045 k allocs: 0.197 MB 0.045 k allocs: 0.197 MB 1
decompress/nonsymmetric/bidirectional/direct/n=1000/p=0.005 0.045 k allocs: 0.419 MB 0.045 k allocs: 0.419 MB 1
decompress/nonsymmetric/bidirectional/direct/n=1000/p=0.01 0.045 k allocs: 0.803 MB 0.045 k allocs: 0.803 MB 1
decompress/nonsymmetric/bidirectional/direct/n=100000/p=0.0001 0.045 k allocs: 0.0782 GB 0.045 k allocs: 0.0782 GB 1
decompress/nonsymmetric/bidirectional/direct/n=100000/p=2.0e-5 0.045 k allocs: 19.1 MB 0.045 k allocs: 19.1 MB 1
decompress/nonsymmetric/bidirectional/direct/n=100000/p=5.0e-5 0.045 k allocs: 0.0409 GB 0.045 k allocs: 0.0409 GB 1
decompress/nonsymmetric/bidirectional/substitution/n=1000/p=0.002 0.045 k allocs: 0.197 MB 0.045 k allocs: 0.197 MB 1
decompress/nonsymmetric/bidirectional/substitution/n=1000/p=0.005 0.045 k allocs: 0.419 MB 0.045 k allocs: 0.419 MB 1
decompress/nonsymmetric/bidirectional/substitution/n=1000/p=0.01 0.045 k allocs: 0.803 MB 0.045 k allocs: 0.803 MB 1
decompress/nonsymmetric/bidirectional/substitution/n=100000/p=0.0001 0.045 k allocs: 0.0782 GB 0.045 k allocs: 0.0782 GB 1
decompress/nonsymmetric/bidirectional/substitution/n=100000/p=2.0e-5 0.045 k allocs: 19.1 MB 0.045 k allocs: 19.1 MB 1
decompress/nonsymmetric/bidirectional/substitution/n=100000/p=5.0e-5 0.045 k allocs: 0.0409 GB 0.045 k allocs: 0.0409 GB 1
decompress/nonsymmetric/column/direct/n=1000/p=0.002 0.045 k allocs: 0.197 MB 0.045 k allocs: 0.197 MB 1
decompress/nonsymmetric/column/direct/n=1000/p=0.005 0.045 k allocs: 0.419 MB 0.045 k allocs: 0.419 MB 1
decompress/nonsymmetric/column/direct/n=1000/p=0.01 0.045 k allocs: 0.803 MB 0.045 k allocs: 0.803 MB 1
decompress/nonsymmetric/column/direct/n=100000/p=0.0001 0.045 k allocs: 0.0782 GB 0.045 k allocs: 0.0782 GB 1
decompress/nonsymmetric/column/direct/n=100000/p=2.0e-5 0.045 k allocs: 19.1 MB 0.045 k allocs: 19.1 MB 1
decompress/nonsymmetric/column/direct/n=100000/p=5.0e-5 0.045 k allocs: 0.0409 GB 0.045 k allocs: 0.0409 GB 1
decompress/nonsymmetric/row/direct/n=1000/p=0.002 0.045 k allocs: 0.197 MB 0.045 k allocs: 0.197 MB 1
decompress/nonsymmetric/row/direct/n=1000/p=0.005 0.045 k allocs: 0.419 MB 0.045 k allocs: 0.419 MB 1
decompress/nonsymmetric/row/direct/n=1000/p=0.01 0.045 k allocs: 0.803 MB 0.045 k allocs: 0.803 MB 1
decompress/nonsymmetric/row/direct/n=100000/p=0.0001 0.045 k allocs: 0.0782 GB 0.045 k allocs: 0.0782 GB 1
decompress/nonsymmetric/row/direct/n=100000/p=2.0e-5 0.045 k allocs: 19.1 MB 0.045 k allocs: 19.1 MB 1
decompress/nonsymmetric/row/direct/n=100000/p=5.0e-5 0.045 k allocs: 0.0409 GB 0.045 k allocs: 0.0409 GB 1
decompress/symmetric/column/direct/n=1000/p=0.002 0.045 k allocs: 0.197 MB 0.045 k allocs: 0.197 MB 1
decompress/symmetric/column/direct/n=1000/p=0.005 0.045 k allocs: 0.419 MB 0.045 k allocs: 0.419 MB 1
decompress/symmetric/column/direct/n=1000/p=0.01 0.045 k allocs: 0.803 MB 0.045 k allocs: 0.803 MB 1
decompress/symmetric/column/direct/n=100000/p=0.0001 0.045 k allocs: 0.0782 GB 0.045 k allocs: 0.0782 GB 1
decompress/symmetric/column/direct/n=100000/p=2.0e-5 0.045 k allocs: 19.1 MB 0.045 k allocs: 19.1 MB 1
decompress/symmetric/column/direct/n=100000/p=5.0e-5 0.045 k allocs: 0.0409 GB 0.045 k allocs: 0.0409 GB 1
decompress/symmetric/column/substitution/n=1000/p=0.002 0.045 k allocs: 0.197 MB 0.045 k allocs: 0.197 MB 1
decompress/symmetric/column/substitution/n=1000/p=0.005 0.045 k allocs: 0.419 MB 0.045 k allocs: 0.419 MB 1
decompress/symmetric/column/substitution/n=1000/p=0.01 0.045 k allocs: 0.803 MB 0.045 k allocs: 0.803 MB 1
decompress/symmetric/column/substitution/n=100000/p=0.0001 0.045 k allocs: 0.0782 GB 0.045 k allocs: 0.0782 GB 1
decompress/symmetric/column/substitution/n=100000/p=2.0e-5 0.045 k allocs: 19.1 MB 0.045 k allocs: 19.1 MB 1
decompress/symmetric/column/substitution/n=100000/p=5.0e-5 0.045 k allocs: 0.0409 GB 0.045 k allocs: 0.0409 GB 1
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.002 0.105 k allocs: 0.196 MB 0.105 k allocs: 0.196 MB 1
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.005 0.105 k allocs: 0.202 MB 0.105 k allocs: 0.202 MB 1
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.01 0.105 k allocs: 0.216 MB 0.105 k allocs: 0.216 MB 1
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=0.0001 0.12 k allocs: 19.1 MB 0.12 k allocs: 19.1 MB 1
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=2.0e-5 0.105 k allocs: 19.1 MB 0.105 k allocs: 19.1 MB 1
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=5.0e-5 0.105 k allocs: 19.1 MB 0.105 k allocs: 19.1 MB 1
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.002 0.105 k allocs: 0.196 MB 0.105 k allocs: 0.196 MB 1
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.005 0.105 k allocs: 0.202 MB 0.105 k allocs: 0.202 MB 1
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.01 0.105 k allocs: 0.216 MB 0.105 k allocs: 0.216 MB 1
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=0.0001 0.12 k allocs: 19.1 MB 0.12 k allocs: 19.1 MB 1
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=2.0e-5 0.105 k allocs: 19.1 MB 0.105 k allocs: 19.1 MB 1
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=5.0e-5 0.105 k allocs: 19.1 MB 0.105 k allocs: 19.1 MB 1
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.002 0.105 k allocs: 0.196 MB 0.105 k allocs: 0.196 MB 1
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.005 0.105 k allocs: 0.202 MB 0.105 k allocs: 0.202 MB 1
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.01 0.105 k allocs: 0.216 MB 0.105 k allocs: 0.216 MB 1
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=0.0001 0.12 k allocs: 19.1 MB 0.12 k allocs: 19.1 MB 1
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=2.0e-5 0.105 k allocs: 19.1 MB 0.105 k allocs: 19.1 MB 1
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=5.0e-5 0.105 k allocs: 19.1 MB 0.105 k allocs: 19.1 MB 1
order/nonsymmetric/column/SparseMatrixColorings.LargestFirst()/n=1000/p=0.002 0.045 k allocs: 0.115 MB 0.045 k allocs: 0.115 MB 1
order/nonsymmetric/column/SparseMatrixColorings.LargestFirst()/n=1000/p=0.005 0.045 k allocs: 0.115 MB 0.045 k allocs: 0.115 MB 1
order/nonsymmetric/column/SparseMatrixColorings.LargestFirst()/n=1000/p=0.01 0.045 k allocs: 0.115 MB 0.045 k allocs: 0.115 MB 1
order/nonsymmetric/column/SparseMatrixColorings.LargestFirst()/n=100000/p=0.0001 0.045 k allocs: 11.4 MB 0.045 k allocs: 11.4 MB 1
order/nonsymmetric/column/SparseMatrixColorings.LargestFirst()/n=100000/p=2.0e-5 0.045 k allocs: 11.4 MB 0.045 k allocs: 11.4 MB 1
order/nonsymmetric/column/SparseMatrixColorings.LargestFirst()/n=100000/p=5.0e-5 0.045 k allocs: 11.4 MB 0.045 k allocs: 11.4 MB 1
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.002 0.105 k allocs: 0.196 MB 0.105 k allocs: 0.196 MB 1
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.005 0.105 k allocs: 0.202 MB 0.105 k allocs: 0.202 MB 1
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.01 0.105 k allocs: 0.216 MB 0.105 k allocs: 0.216 MB 1
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=0.0001 0.12 k allocs: 19.1 MB 0.12 k allocs: 19.1 MB 1
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=2.0e-5 0.105 k allocs: 19.1 MB 0.105 k allocs: 19.1 MB 1
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=5.0e-5 0.105 k allocs: 19.1 MB 0.105 k allocs: 19.1 MB 1
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.002 0.105 k allocs: 0.196 MB 0.105 k allocs: 0.196 MB 1
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.005 0.105 k allocs: 0.202 MB 0.105 k allocs: 0.202 MB 1
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.01 0.105 k allocs: 0.216 MB 0.105 k allocs: 0.216 MB 1
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=0.0001 0.12 k allocs: 19.1 MB 0.12 k allocs: 19.1 MB 1
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=2.0e-5 0.105 k allocs: 19.1 MB 0.105 k allocs: 19.1 MB 1
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=5.0e-5 0.105 k allocs: 19.1 MB 0.105 k allocs: 19.1 MB 1
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.002 0.105 k allocs: 0.196 MB 0.105 k allocs: 0.196 MB 1
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.005 0.105 k allocs: 0.202 MB 0.105 k allocs: 0.202 MB 1
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.01 0.105 k allocs: 0.216 MB 0.105 k allocs: 0.216 MB 1
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=0.0001 0.12 k allocs: 19.1 MB 0.12 k allocs: 19.1 MB 1
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=2.0e-5 0.105 k allocs: 19.1 MB 0.105 k allocs: 19.1 MB 1
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=5.0e-5 0.105 k allocs: 19.1 MB 0.105 k allocs: 19.1 MB 1
order/nonsymmetric/row/SparseMatrixColorings.LargestFirst()/n=1000/p=0.002 0.045 k allocs: 0.115 MB 0.045 k allocs: 0.115 MB 1
order/nonsymmetric/row/SparseMatrixColorings.LargestFirst()/n=1000/p=0.005 0.045 k allocs: 0.115 MB 0.045 k allocs: 0.115 MB 1
order/nonsymmetric/row/SparseMatrixColorings.LargestFirst()/n=1000/p=0.01 0.045 k allocs: 0.115 MB 0.045 k allocs: 0.115 MB 1
order/nonsymmetric/row/SparseMatrixColorings.LargestFirst()/n=100000/p=0.0001 0.045 k allocs: 11.4 MB 0.045 k allocs: 11.4 MB 1
order/nonsymmetric/row/SparseMatrixColorings.LargestFirst()/n=100000/p=2.0e-5 0.045 k allocs: 11.4 MB 0.045 k allocs: 11.4 MB 1
order/nonsymmetric/row/SparseMatrixColorings.LargestFirst()/n=100000/p=5.0e-5 0.045 k allocs: 11.4 MB 0.045 k allocs: 11.4 MB 1
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.002 0.09 k allocs: 0.156 MB 0.09 k allocs: 0.156 MB 1
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.005 0.09 k allocs: 0.156 MB 0.09 k allocs: 0.156 MB 1
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.01 0.09 k allocs: 0.157 MB 0.09 k allocs: 0.157 MB 1
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=0.0001 0.09 k allocs: 15.3 MB 0.09 k allocs: 15.3 MB 1
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=2.0e-5 0.09 k allocs: 15.3 MB 0.09 k allocs: 15.3 MB 1
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=5.0e-5 0.09 k allocs: 15.3 MB 0.09 k allocs: 15.3 MB 1
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.002 0.09 k allocs: 0.156 MB 0.09 k allocs: 0.156 MB 1
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.005 0.09 k allocs: 0.156 MB 0.09 k allocs: 0.156 MB 1
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.01 0.09 k allocs: 0.157 MB 0.09 k allocs: 0.157 MB 1
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=0.0001 0.09 k allocs: 15.3 MB 0.09 k allocs: 15.3 MB 1
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=2.0e-5 0.09 k allocs: 15.3 MB 0.09 k allocs: 15.3 MB 1
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=5.0e-5 0.09 k allocs: 15.3 MB 0.09 k allocs: 15.3 MB 1
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.002 0.09 k allocs: 0.156 MB 0.09 k allocs: 0.156 MB 1
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.005 0.09 k allocs: 0.156 MB 0.09 k allocs: 0.156 MB 1
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.01 0.09 k allocs: 0.157 MB 0.09 k allocs: 0.157 MB 1
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=0.0001 0.09 k allocs: 15.3 MB 0.09 k allocs: 15.3 MB 1
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=2.0e-5 0.09 k allocs: 15.3 MB 0.09 k allocs: 15.3 MB 1
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=5.0e-5 0.09 k allocs: 15.3 MB 0.09 k allocs: 15.3 MB 1
order/symmetric/column/SparseMatrixColorings.LargestFirst()/n=1000/p=0.002 0.05 k allocs: 0.116 MB 0.05 k allocs: 0.116 MB 1
order/symmetric/column/SparseMatrixColorings.LargestFirst()/n=1000/p=0.005 0.05 k allocs: 0.116 MB 0.05 k allocs: 0.116 MB 1
order/symmetric/column/SparseMatrixColorings.LargestFirst()/n=1000/p=0.01 0.05 k allocs: 0.116 MB 0.05 k allocs: 0.116 MB 1
order/symmetric/column/SparseMatrixColorings.LargestFirst()/n=100000/p=0.0001 0.05 k allocs: 11.4 MB 0.05 k allocs: 11.4 MB 1
order/symmetric/column/SparseMatrixColorings.LargestFirst()/n=100000/p=2.0e-5 0.05 k allocs: 11.4 MB 0.05 k allocs: 11.4 MB 1
order/symmetric/column/SparseMatrixColorings.LargestFirst()/n=100000/p=5.0e-5 0.05 k allocs: 11.4 MB 0.05 k allocs: 11.4 MB 1
time_to_load 0.149 k allocs: 11.2 kB 0.149 k allocs: 11.2 kB 1

@gdalle

gdalle commented Jan 14, 2026

Copy link
Copy Markdown
Member

I'm not sure I understand what this PR does. If we pre-specify the type of decompression when we do the coloring, doesn't it make the uplo argument useless? And if not, which uplo setting takes precedence, the one in the result or the one in the argument?

@amontoison

amontoison commented Jan 14, 2026

Copy link
Copy Markdown
Collaborator Author

Yes, it should make the uplo argument useless (if we specialize it in the result for :L or :U).
But for bicoloring, we don't specify the decompression uplo, it is always :L by design, we don't have issue here.

The one in the result always takes precedence.
Note that it is not exposed to the users for star and acyclic coloring with main function coloring.

@gdalle

gdalle commented Jan 29, 2026

Copy link
Copy Markdown
Member

I took a second look and the semantics of this are a bit confusing to me. From what I understand:

  • If you create the result with decompression_uplo = :L, you allow yourself to optimise the construction because you know that it will be used only inside bicoloring, and only with uplo = decompression_uplo = :L
  • But if you create the result with decompression_uplo = :F, then you must still account for the possibility that uplo != decompression_uplo?

@amontoison

amontoison commented Jan 29, 2026

Copy link
Copy Markdown
Collaborator Author

I took a second look and the semantics of this are a bit confusing to me. From what I understand:

* If you create the result with `decompression_uplo = :L`, you allow yourself to optimise the construction because you _know_ that it will be used only inside bicoloring, and only with `uplo = decompression_uplo = :L`

You are right!

* But if you create the result with `decompression_uplo = :F`, then you must still account for the possibility that `uplo != decompression_uplo`?

Yes, because the option decompression_uplo is not yet exposed for the users and I don't want to do breaking changes.
I want to only support uplo == decompression_uplo in the long run but we need to have a discussion together before such that we know where we are going in terms of API.
We don't need anymore the uplo argument for the decompression if we do that.

Comment thread src/decompression.jl
nzA = nonzeros(A)
check_compatible_pattern(A, ag, uplo)
if uplo == :F
if result.decompression_uplo == uplo

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this case not considered for the TreeSetColoringResult below?

@amontoison amontoison Sep 7, 2026

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because we only gain on the storage when the decompression is by substitution.
The code for the decompression itself is not impacted.

However, I forgot to add an assertion.
I fixed it in my last commit such that:

function decompress!(
    A::SparseMatrixCSC{R},
    B::AbstractMatrix{R},
    result::TreeSetColoringResult,
    uplo::Symbol=:F,
) where {R<:Real}
    check_compatible_pattern(A, result.ag, uplo)
    @assert result.decompression_uplo == uplo || result.decompression_uplo == :F
    decompress_csc!(nonzeros(A), A.colptr, B, result, uplo)
    return A
end

@amontoison
amontoison force-pushed the am/decompression_uplo branch from a55cce6 to c72b0c8 Compare September 7, 2026 20:37
@codecov

codecov Bot commented Sep 7, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 99.18%. Comparing base (a8fb3c4) to head (dd445bd).

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #294      +/-   ##
==========================================
+ Coverage   99.00%   99.18%   +0.18%     
==========================================
  Files          22       22              
  Lines        2303     2324      +21     
==========================================
+ Hits         2280     2305      +25     
+ Misses         23       19       -4     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@amontoison
amontoison requested a review from gdalle September 7, 2026 20:46
@amontoison

Copy link
Copy Markdown
Collaborator Author

I propose to merge first the support of AMD GPUs (#274).
A minor modification is needed for the extensions and I would to do it for both backends in the same PR.

@amontoison
amontoison force-pushed the am/decompression_uplo branch from c72b0c8 to dd445bd Compare September 9, 2026 03:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

benchmark Run benchmarks on PR performance Speeding things up

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants