Skip to content

[bicoloring] Use Br and Bc directly for the decompression - #194

Open
amontoison wants to merge 2 commits into
mainfrom
decompression_bicoloring
Open

amontoison wants to merge 2 commits into
mainfrom
decompression_bicoloring

Conversation

@amontoison

@amontoison amontoison commented Feb 20, 2025

Copy link
Copy Markdown
Collaborator

Use a lazy representation of Br_and_Br.
The PR can be merged later but I wanted to check if it works to do the decompression like this.
I would like to describe the decompression of bicoloring with this approach is the paper where we directly use Br and Bc.

@amontoison amontoison added the benchmark Run benchmarks on PR label Feb 20, 2025
@codecov

codecov Bot commented Feb 20, 2025

Copy link
Copy Markdown

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 100.00%. Comparing base (763c8a4) to head (2a6d30e).

Additional details and impacted files
@@            Coverage Diff            @@
##              main      #194   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files           14        14           
  Lines         1635      1733   +98     
=========================================
+ Hits          1635      1733   +98     

☔ 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.

@amontoison

amontoison commented Feb 20, 2025

Copy link
Copy Markdown
Collaborator Author

It seems that compress can return Br and Bc with a different type (it's fine) and eltype (not fine)

  • Br -> Matrix{Int64}
  • Bc -> SparseArrays.SparseMatrixCSC{Bool, Int64}
ERROR: LoadError: MethodError: no method matching SparseMatrixColorings.JoinCompressed(::Int64, ::Int64, ::Int64, ::Matrix{Int64}, ::SparseArrays.SparseMatrixCSC{Bool, Int64}, ::Dict{Int64, Int64}, ::Dict{Int64, Int64})
The type `SparseMatrixColorings.JoinCompressed` exists, but no method is defined for this combination of argument types when trying to construct it.

I only got this error during the benchmarks.
All unit tests passed.

Comment thread src/decompression.jl Outdated
Comment thread src/decompression.jl
@amontoison

amontoison commented Feb 21, 2025

Copy link
Copy Markdown
Collaborator Author

@gdalle
For row_color_ind and col_color_ind, I propose to use two Vector{Int} instead of two Dict{Int,Int}.
get_index will be faster and we will use less memory:

julia> a = Dict{Int,Int}(i => i+1 for i = 1:100)
julia> Base.summarysize(a)
4464

julia> b = Vector{Int}(undef, 100)
julia> Base.summarysize(b)
840

We have a factor 5 in terms of storage.

@gdalle

gdalle commented Feb 22, 2025

Copy link
Copy Markdown
Member

The reason why they are dictionaries is that not every color is used for a row, or for a column. But we could probably put zeros as indices for unused colors

@amontoison
amontoison force-pushed the decompression_bicoloring branch from 3774330 to 451cb51 Compare March 4, 2025 04:23
@amontoison
amontoison requested a review from gdalle March 4, 2025 04:26
@amontoison

amontoison commented Mar 4, 2025

Copy link
Copy Markdown
Collaborator Author

@gdalle I rebased the branch but I will need your help to fix issue with compress for bicoloring.
It could return matrices Br and Bc of different types if one of them is empty.
The benchmarks are failing because of that.

Update: I fixed it. If the type of the matrice that we want to compress is Bool, we need to ensure to the type of the compressed matrix is Int. In the context of bicoloring, Br and Bc can have a different eltype because of that if the group of row colors / column colors is empty.

Comment thread src/decompression.jl Outdated
Comment thread src/decompression.jl Outdated
@github-actions

github-actions Bot commented Mar 4, 2025

Copy link
Copy Markdown
Contributor

Benchmark Results

main 1f98c32... main / 1f98c32...
coloring/nonsymmetric/bidirectional/direct/n=1000/p=0.002 1.85 ± 0.018 ms 1.66 ± 0.016 ms 1.11 ± 0.015
coloring/nonsymmetric/bidirectional/direct/n=1000/p=0.005 4.25 ± 0.04 ms 3.92 ± 0.027 ms 1.08 ± 0.013
coloring/nonsymmetric/bidirectional/direct/n=1000/p=0.01 9.64 ± 0.091 ms 9.01 ± 0.07 ms 1.07 ± 0.013
coloring/nonsymmetric/bidirectional/direct/n=100000/p=0.0001 2.04 ± 0.053 s 2.95 ± 0.043 s 0.692 ± 0.021
coloring/nonsymmetric/bidirectional/direct/n=100000/p=2.0e-5 0.285 ± 0.0075 s 0.314 ± 0.022 s 0.908 ± 0.069
coloring/nonsymmetric/bidirectional/direct/n=100000/p=5.0e-5 0.773 ± 0.0095 s 0.989 ± 0.083 s 0.781 ± 0.066
coloring/nonsymmetric/bidirectional/substitution/n=1000/p=0.002 2.74 ± 0.024 ms 2.53 ± 0.025 ms 1.08 ± 0.014
coloring/nonsymmetric/bidirectional/substitution/n=1000/p=0.005 7.4 ± 0.06 ms 6.87 ± 0.048 ms 1.08 ± 0.012
coloring/nonsymmetric/bidirectional/substitution/n=1000/p=0.01 18 ± 0.19 ms 16.9 ± 0.17 ms 1.07 ± 0.015
coloring/nonsymmetric/bidirectional/substitution/n=100000/p=0.0001 4.58 ± 0.11 s 5.02 s 0.912
coloring/nonsymmetric/bidirectional/substitution/n=100000/p=2.0e-5 0.454 ± 0.0091 s 0.562 ± 0.061 s 0.807 ± 0.089
coloring/nonsymmetric/bidirectional/substitution/n=100000/p=5.0e-5 1.68 ± 0.056 s 1.94 ± 0.033 s 0.867 ± 0.033
coloring/nonsymmetric/column/direct/n=1000/p=0.002 0.445 ± 0.012 ms 0.452 ± 0.013 ms 0.985 ± 0.04
coloring/nonsymmetric/column/direct/n=1000/p=0.005 1.12 ± 0.0073 ms 1.14 ± 0.012 ms 0.985 ± 0.012
coloring/nonsymmetric/column/direct/n=1000/p=0.01 2.81 ± 0.014 ms 2.84 ± 0.041 ms 0.991 ± 0.015
coloring/nonsymmetric/column/direct/n=100000/p=0.0001 0.501 ± 0.012 s 0.594 ± 0.022 s 0.844 ± 0.036
coloring/nonsymmetric/column/direct/n=100000/p=2.0e-5 0.073 ± 0.00057 s 0.0754 ± 0.0011 s 0.968 ± 0.016
coloring/nonsymmetric/column/direct/n=100000/p=5.0e-5 0.187 ± 0.0016 s 0.21 ± 0.0056 s 0.894 ± 0.025
coloring/nonsymmetric/row/direct/n=1000/p=0.002 0.445 ± 0.012 ms 0.443 ± 0.012 ms 1 ± 0.038
coloring/nonsymmetric/row/direct/n=1000/p=0.005 1.13 ± 0.0081 ms 1.13 ± 0.011 ms 0.999 ± 0.012
coloring/nonsymmetric/row/direct/n=1000/p=0.01 2.86 ± 0.022 ms 2.85 ± 0.016 ms 1 ± 0.0096
coloring/nonsymmetric/row/direct/n=100000/p=0.0001 0.494 ± 0.0082 s 0.545 ± 0.031 s 0.906 ± 0.054
coloring/nonsymmetric/row/direct/n=100000/p=2.0e-5 0.0727 ± 0.00032 s 0.0713 ± 0.0025 s 1.02 ± 0.036
coloring/nonsymmetric/row/direct/n=100000/p=5.0e-5 0.196 ± 0.0053 s 0.208 ± 0.0078 s 0.944 ± 0.044
coloring/symmetric/column/direct/n=1000/p=0.002 0.936 ± 0.0056 ms 0.946 ± 0.0092 ms 0.99 ± 0.011
coloring/symmetric/column/direct/n=1000/p=0.005 2.16 ± 0.012 ms 2.17 ± 0.015 ms 0.994 ± 0.0088
coloring/symmetric/column/direct/n=1000/p=0.01 4.78 ± 0.032 ms 4.79 ± 0.026 ms 0.998 ± 0.0086
coloring/symmetric/column/direct/n=100000/p=0.0001 0.795 ± 0.0023 s 0.987 ± 0.05 s 0.805 ± 0.041
coloring/symmetric/column/direct/n=100000/p=2.0e-5 0.136 ± 0.00095 s 0.145 ± 0.0073 s 0.934 ± 0.047
coloring/symmetric/column/direct/n=100000/p=5.0e-5 0.319 ± 0.0027 s 0.381 ± 0.049 s 0.836 ± 0.11
coloring/symmetric/column/substitution/n=1000/p=0.002 1.45 ± 0.014 ms 1.45 ± 0.015 ms 1 ± 0.014
coloring/symmetric/column/substitution/n=1000/p=0.005 3.76 ± 0.019 ms 3.8 ± 0.028 ms 0.992 ± 0.0088
coloring/symmetric/column/substitution/n=1000/p=0.01 8.76 ± 0.049 ms 8.89 ± 0.073 ms 0.986 ± 0.0098
coloring/symmetric/column/substitution/n=100000/p=0.0001 1.67 ± 0.055 s 1.65 ± 0.042 s 1.01 ± 0.042
coloring/symmetric/column/substitution/n=100000/p=2.0e-5 0.21 ± 0.0016 s 0.204 ± 0.0023 s 1.03 ± 0.014
coloring/symmetric/column/substitution/n=100000/p=5.0e-5 0.612 ± 0.0092 s 0.59 ± 0.021 s 1.04 ± 0.04
decompress/nonsymmetric/bidirectional/direct/n=1000/p=0.002 0.127 ± 0.012 ms 0.0326 ± 0.0016 ms 3.89 ± 0.42
decompress/nonsymmetric/bidirectional/direct/n=1000/p=0.005 0.213 ± 0.0076 ms 0.0656 ± 0.0018 ms 3.25 ± 0.15
decompress/nonsymmetric/bidirectional/direct/n=1000/p=0.01 0.363 ± 0.012 ms 0.123 ± 0.0049 ms 2.95 ± 0.15
decompress/nonsymmetric/bidirectional/direct/n=100000/p=0.0001 0.117 ± 0.005 s 27.7 ± 0.78 ms 4.22 ± 0.21
decompress/nonsymmetric/bidirectional/direct/n=100000/p=2.0e-5 0.0336 ± 0.0012 s 6.3 ± 0.22 ms 5.32 ± 0.27
decompress/nonsymmetric/bidirectional/direct/n=100000/p=5.0e-5 0.0648 ± 0.0013 s 14.8 ± 0.58 ms 4.38 ± 0.19
decompress/nonsymmetric/bidirectional/substitution/n=1000/p=0.002 0.165 ± 0.012 ms 0.142 ± 0.01 ms 1.16 ± 0.12
decompress/nonsymmetric/bidirectional/substitution/n=1000/p=0.005 0.339 ± 0.012 ms 0.284 ± 0.011 ms 1.19 ± 0.061
decompress/nonsymmetric/bidirectional/substitution/n=1000/p=0.01 0.676 ± 0.014 ms 0.57 ± 0.017 ms 1.18 ± 0.043
decompress/nonsymmetric/bidirectional/substitution/n=100000/p=0.0001 0.254 ± 0.033 s 0.287 ± 0.02 s 0.887 ± 0.13
decompress/nonsymmetric/bidirectional/substitution/n=100000/p=2.0e-5 0.0376 ± 0.0044 s 0.0489 ± 0.002 s 0.769 ± 0.096
decompress/nonsymmetric/bidirectional/substitution/n=100000/p=5.0e-5 0.087 ± 0.01 s 0.114 ± 0.0067 s 0.763 ± 0.1
decompress/nonsymmetric/column/direct/n=1000/p=0.002 23.8 ± 1.7 μs 24.1 ± 1.4 μs 0.987 ± 0.091
decompress/nonsymmetric/column/direct/n=1000/p=0.005 0.0461 ± 0.0015 ms 0.0473 ± 0.0018 ms 0.975 ± 0.049
decompress/nonsymmetric/column/direct/n=1000/p=0.01 0.0848 ± 0.0034 ms 0.0868 ± 0.0044 ms 0.977 ± 0.064
decompress/nonsymmetric/column/direct/n=100000/p=0.0001 27.7 ± 0.45 ms 29 ± 1.1 ms 0.954 ± 0.039
decompress/nonsymmetric/column/direct/n=100000/p=2.0e-5 5.3 ± 0.47 ms 5.69 ± 0.23 ms 0.932 ± 0.09
decompress/nonsymmetric/column/direct/n=100000/p=5.0e-5 13.2 ± 0.34 ms 13.4 ± 0.39 ms 0.985 ± 0.039
decompress/nonsymmetric/row/direct/n=1000/p=0.002 23.7 ± 1.9 μs 23.1 ± 1.7 μs 1.02 ± 0.11
decompress/nonsymmetric/row/direct/n=1000/p=0.005 0.0419 ± 0.0018 ms 0.0419 ± 0.0023 ms 1 ± 0.071
decompress/nonsymmetric/row/direct/n=1000/p=0.01 0.0749 ± 0.0032 ms 0.0748 ± 0.0035 ms 1 ± 0.064
decompress/nonsymmetric/row/direct/n=100000/p=0.0001 11.9 ± 0.28 ms 12 ± 0.54 ms 0.989 ± 0.05
decompress/nonsymmetric/row/direct/n=100000/p=2.0e-5 3.15 ± 0.12 ms 3.12 ± 0.18 ms 1.01 ± 0.072
decompress/nonsymmetric/row/direct/n=100000/p=5.0e-5 6.33 ± 0.37 ms 6.11 ± 0.38 ms 1.04 ± 0.089
decompress/symmetric/column/direct/n=1000/p=0.002 23.4 ± 1.8 μs 23.6 ± 1.5 μs 0.993 ± 0.098
decompress/symmetric/column/direct/n=1000/p=0.005 0.0447 ± 0.0022 ms 0.045 ± 0.0015 ms 0.994 ± 0.059
decompress/symmetric/column/direct/n=1000/p=0.01 0.0829 ± 0.0041 ms 0.0818 ± 0.0027 ms 1.01 ± 0.06
decompress/symmetric/column/direct/n=100000/p=0.0001 26.9 ± 1.2 ms 25.5 ± 0.56 ms 1.05 ± 0.054
decompress/symmetric/column/direct/n=100000/p=2.0e-5 5.39 ± 0.38 ms 3.91 ± 0.56 ms 1.38 ± 0.22
decompress/symmetric/column/direct/n=100000/p=5.0e-5 12.6 ± 0.5 ms 12.2 ± 0.41 ms 1.04 ± 0.054
decompress/symmetric/column/substitution/n=1000/p=0.002 0.0987 ± 0.01 ms 0.0984 ± 0.0034 ms 1 ± 0.11
decompress/symmetric/column/substitution/n=1000/p=0.005 0.209 ± 0.0058 ms 0.208 ± 0.0061 ms 1 ± 0.041
decompress/symmetric/column/substitution/n=1000/p=0.01 0.404 ± 0.012 ms 0.401 ± 0.012 ms 1.01 ± 0.042
decompress/symmetric/column/substitution/n=100000/p=0.0001 0.107 ± 0.0081 s 0.0944 ± 0.0029 s 1.14 ± 0.093
decompress/symmetric/column/substitution/n=100000/p=2.0e-5 25.5 ± 0.87 ms 24.3 ± 0.24 ms 1.05 ± 0.037
decompress/symmetric/column/substitution/n=100000/p=5.0e-5 0.0511 ± 0.0021 s 0.0483 ± 0.00065 s 1.06 ± 0.046
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.002 0.735 ± 0.0089 ms 0.737 ± 0.0098 ms 0.997 ± 0.018
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.005 2.54 ± 0.021 ms 2.55 ± 0.024 ms 0.995 ± 0.012
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.01 7.95 ± 0.11 ms 7.91 ± 0.062 ms 1.01 ± 0.016
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=0.0001 1.88 ± 0.044 s 1.96 ± 0.012 s 0.955 ± 0.023
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=2.0e-5 0.136 ± 0.0033 s 0.142 ± 0.0048 s 0.963 ± 0.04
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=5.0e-5 0.575 ± 0.032 s 0.639 ± 0.031 s 0.9 ± 0.066
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.002 0.722 ± 0.0091 ms 0.727 ± 0.0096 ms 0.994 ± 0.018
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.005 2.57 ± 0.024 ms 2.57 ± 0.02 ms 0.997 ± 0.012
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.01 8.03 ± 0.075 ms 8.11 ± 0.069 ms 0.989 ± 0.013
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=0.0001 1.97 ± 0.066 s 1.99 ± 0.075 s 0.99 ± 0.05
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=2.0e-5 0.149 ± 0.02 s 0.157 ± 0.0038 s 0.948 ± 0.13
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=5.0e-5 0.635 ± 0.036 s 0.68 ± 0.034 s 0.934 ± 0.07
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.002 0.725 ± 0.0091 ms 0.727 ± 0.0091 ms 0.997 ± 0.018
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.005 2.51 ± 0.022 ms 2.52 ± 0.021 ms 0.998 ± 0.012
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.01 7.94 ± 0.088 ms 7.95 ± 0.071 ms 0.999 ± 0.014
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=0.0001 2.08 ± 0.02 s 2.01 ± 0.047 s 1.04 ± 0.026
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=2.0e-5 0.151 ± 0.0027 s 0.16 ± 0.0057 s 0.948 ± 0.038
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=5.0e-5 0.616 ± 0.037 s 0.622 ± 0.029 s 0.989 ± 0.075
order/nonsymmetric/column/SparseMatrixColorings.LargestFirst()/n=1000/p=0.002 0.301 ± 0.01 ms 0.305 ± 0.011 ms 0.988 ± 0.049
order/nonsymmetric/column/SparseMatrixColorings.LargestFirst()/n=1000/p=0.005 0.733 ± 0.0095 ms 0.76 ± 0.015 ms 0.964 ± 0.022
order/nonsymmetric/column/SparseMatrixColorings.LargestFirst()/n=1000/p=0.01 1.8 ± 0.0099 ms 1.75 ± 0.013 ms 1.03 ± 0.0097
order/nonsymmetric/column/SparseMatrixColorings.LargestFirst()/n=100000/p=0.0001 0.29 ± 0.0072 s 0.302 ± 0.0074 s 0.96 ± 0.033
order/nonsymmetric/column/SparseMatrixColorings.LargestFirst()/n=100000/p=2.0e-5 0.0562 ± 0.00039 s 0.0576 ± 0.00025 s 0.977 ± 0.008
order/nonsymmetric/column/SparseMatrixColorings.LargestFirst()/n=100000/p=5.0e-5 0.135 ± 0.0058 s 0.135 ± 0.0015 s 0.997 ± 0.044
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.002 0.733 ± 0.009 ms 0.736 ± 0.01 ms 0.996 ± 0.019
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.005 2.54 ± 0.023 ms 2.57 ± 0.045 ms 0.987 ± 0.019
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.01 7.91 ± 0.1 ms 7.96 ± 0.16 ms 0.993 ± 0.023
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=0.0001 1.54 ± 0.016 s 1.83 ± 0.023 s 0.838 ± 0.014
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=2.0e-5 0.13 ± 0.00044 s 0.135 ± 0.0022 s 0.968 ± 0.016
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=5.0e-5 0.493 ± 0.013 s 0.583 ± 0.015 s 0.845 ± 0.031
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.002 0.725 ± 0.0084 ms 0.723 ± 0.011 ms 1 ± 0.019
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.005 2.57 ± 0.025 ms 2.55 ± 0.021 ms 1.01 ± 0.013
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.01 8.02 ± 0.082 ms 7.97 ± 0.12 ms 1.01 ± 0.018
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=0.0001 1.99 ± 0.12 s 1.57 ± 0.029 s 1.27 ± 0.081
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=2.0e-5 0.15 ± 0.012 s 0.13 ± 0.00067 s 1.15 ± 0.089
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=5.0e-5 0.626 ± 0.03 s 0.497 ± 0.014 s 1.26 ± 0.069
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.002 0.723 ± 0.0088 ms 0.731 ± 0.0097 ms 0.989 ± 0.018
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.005 2.52 ± 0.022 ms 2.51 ± 0.035 ms 1 ± 0.016
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.01 7.91 ± 0.083 ms 7.86 ± 0.08 ms 1.01 ± 0.015
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=0.0001 2 ± 0.058 s 1.98 ± 0.028 s 1.01 ± 0.032
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=2.0e-5 0.177 ± 0.03 s 0.16 ± 0.0045 s 1.1 ± 0.19
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=5.0e-5 0.683 ± 0.044 s 0.636 ± 0.017 s 1.07 ± 0.075
order/nonsymmetric/row/SparseMatrixColorings.LargestFirst()/n=1000/p=0.002 0.3 ± 0.011 ms 0.302 ± 0.01 ms 0.996 ± 0.05
order/nonsymmetric/row/SparseMatrixColorings.LargestFirst()/n=1000/p=0.005 0.736 ± 0.0096 ms 0.717 ± 0.0084 ms 1.03 ± 0.018
order/nonsymmetric/row/SparseMatrixColorings.LargestFirst()/n=1000/p=0.01 1.79 ± 0.035 ms 1.77 ± 0.034 ms 1.01 ± 0.028
order/nonsymmetric/row/SparseMatrixColorings.LargestFirst()/n=100000/p=0.0001 0.293 ± 0.011 s 0.283 ± 0.0038 s 1.04 ± 0.04
order/nonsymmetric/row/SparseMatrixColorings.LargestFirst()/n=100000/p=2.0e-5 0.0566 ± 0.00066 s 0.0557 ± 0.0016 s 1.02 ± 0.032
order/nonsymmetric/row/SparseMatrixColorings.LargestFirst()/n=100000/p=5.0e-5 0.135 ± 0.01 s 0.131 ± 0.0018 s 1.03 ± 0.079
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.002 0.236 ± 0.01 ms 0.228 ± 0.0075 ms 1.03 ± 0.056
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.005 0.419 ± 0.012 ms 0.416 ± 0.012 ms 1.01 ± 0.042
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.01 0.685 ± 0.01 ms 0.69 ± 0.011 ms 0.993 ± 0.022
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=0.0001 0.17 ± 0.017 s 0.173 ± 0.0068 s 0.98 ± 0.11
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=2.0e-5 0.0467 ± 0.0014 s 0.0442 ± 0.00054 s 1.06 ± 0.035
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=5.0e-5 0.0948 ± 0.0054 s 0.104 ± 0.0035 s 0.915 ± 0.06
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.002 0.213 ± 0.0075 ms 0.211 ± 0.0091 ms 1.01 ± 0.056
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.005 0.398 ± 0.012 ms 0.391 ± 0.012 ms 1.02 ± 0.044
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.01 0.675 ± 0.011 ms 0.66 ± 0.012 ms 1.02 ± 0.025
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=0.0001 0.17 ± 0.0077 s 0.175 ± 0.0049 s 0.975 ± 0.052
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=2.0e-5 0.0448 ± 0.0024 s 0.0455 ± 0.0017 s 0.985 ± 0.065
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=5.0e-5 0.0934 ± 0.0065 s 0.0983 ± 0.004 s 0.95 ± 0.077
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.002 0.194 ± 0.0073 ms 0.191 ± 0.0064 ms 1.02 ± 0.052
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.005 0.365 ± 0.012 ms 0.363 ± 0.012 ms 1.01 ± 0.048
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.01 0.604 ± 0.013 ms 0.602 ± 0.013 ms 1 ± 0.03
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=0.0001 0.16 ± 0.012 s 0.162 ± 0.0066 s 0.987 ± 0.085
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=2.0e-5 0.0506 ± 0.0074 s 0.0446 ± 0.0036 s 1.14 ± 0.19
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=5.0e-5 0.1 ± 0.011 s 0.091 ± 0.008 s 1.1 ± 0.15
order/symmetric/column/SparseMatrixColorings.LargestFirst()/n=1000/p=0.002 0.107 ± 0.0022 ms 0.105 ± 0.0023 ms 1.02 ± 0.031
order/symmetric/column/SparseMatrixColorings.LargestFirst()/n=1000/p=0.005 0.138 ± 0.013 ms 0.123 ± 0.015 ms 1.12 ± 0.18
order/symmetric/column/SparseMatrixColorings.LargestFirst()/n=1000/p=0.01 0.158 ± 0.0033 ms 0.151 ± 0.003 ms 1.04 ± 0.03
order/symmetric/column/SparseMatrixColorings.LargestFirst()/n=100000/p=0.0001 25.7 ± 0.23 ms 25.5 ± 0.2 ms 1.01 ± 0.012
order/symmetric/column/SparseMatrixColorings.LargestFirst()/n=100000/p=2.0e-5 22 ± 0.12 ms 21.7 ± 0.11 ms 1.01 ± 0.0075
order/symmetric/column/SparseMatrixColorings.LargestFirst()/n=100000/p=5.0e-5 23.9 ± 0.11 ms 23.6 ± 0.18 ms 1.01 ± 0.0088
time_to_load 0.295 ± 0.00092 s 0.296 ± 0.0024 s 0.996 ± 0.0085
main 1f98c32... main / 1f98c32...
coloring/nonsymmetric/bidirectional/direct/n=1000/p=0.002 0.515 k allocs: 2.33 MB 0.47 k allocs: 1.7 MB 1.37
coloring/nonsymmetric/bidirectional/direct/n=1000/p=0.005 0.525 k allocs: 3.91 MB 0.48 k allocs: 2.95 MB 1.33
coloring/nonsymmetric/bidirectional/direct/n=1000/p=0.01 0.535 k allocs: 6.85 MB 0.49 k allocs: 5.15 MB 1.33
coloring/nonsymmetric/bidirectional/direct/n=100000/p=0.0001 0.62 k allocs: 0.71 GB 0.575 k allocs: 0.538 GB 1.32
coloring/nonsymmetric/bidirectional/direct/n=100000/p=2.0e-5 0.59 k allocs: 0.247 GB 0.545 k allocs: 0.169 GB 1.46
coloring/nonsymmetric/bidirectional/direct/n=100000/p=5.0e-5 0.6 k allocs: 0.412 GB 0.555 k allocs: 0.293 GB 1.4
coloring/nonsymmetric/bidirectional/substitution/n=1000/p=0.002 0.668 k allocs: 2.84 MB 0.553 k allocs: 2.17 MB 1.31
coloring/nonsymmetric/bidirectional/substitution/n=1000/p=0.005 0.67 k allocs: 4.83 MB 0.555 k allocs: 3.79 MB 1.27
coloring/nonsymmetric/bidirectional/substitution/n=1000/p=0.01 0.67 k allocs: 8.34 MB 0.555 k allocs: 6.63 MB 1.26
coloring/nonsymmetric/bidirectional/substitution/n=100000/p=0.0001 0.68 k allocs: 0.813 GB 0.565 k allocs: 0.642 GB 1.27
coloring/nonsymmetric/bidirectional/substitution/n=100000/p=2.0e-5 0.68 k allocs: 0.273 GB 0.565 k allocs: 0.206 GB 1.32
coloring/nonsymmetric/bidirectional/substitution/n=100000/p=5.0e-5 0.68 k allocs: 0.473 GB 0.565 k allocs: 0.369 GB 1.28
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.25 k allocs: 0.633 MB 0.25 k allocs: 0.633 MB 1
coloring/symmetric/column/direct/n=1000/p=0.005 0.26 k allocs: 1.03 MB 0.26 k allocs: 1.03 MB 1
coloring/symmetric/column/direct/n=1000/p=0.01 0.262 k allocs: 1.56 MB 0.262 k allocs: 1.56 MB 1
coloring/symmetric/column/direct/n=100000/p=0.0001 0.345 k allocs: 0.172 GB 0.345 k allocs: 0.172 GB 1
coloring/symmetric/column/direct/n=100000/p=2.0e-5 0.315 k allocs: 0.0608 GB 0.315 k allocs: 0.0608 GB 1
coloring/symmetric/column/direct/n=100000/p=5.0e-5 0.325 k allocs: 0.0952 GB 0.325 k allocs: 0.0952 GB 1
coloring/symmetric/column/substitution/n=1000/p=0.002 0.41 k allocs: 0.95 MB 0.41 k allocs: 0.95 MB 1
coloring/symmetric/column/substitution/n=1000/p=0.005 0.415 k allocs: 1.65 MB 0.415 k allocs: 1.65 MB 1
coloring/symmetric/column/substitution/n=1000/p=0.01 0.415 k allocs: 2.86 MB 0.415 k allocs: 2.86 MB 1
coloring/symmetric/column/substitution/n=100000/p=0.0001 0.425 k allocs: 0.276 GB 0.425 k allocs: 0.276 GB 1
coloring/symmetric/column/substitution/n=100000/p=2.0e-5 0.425 k allocs: 0.0901 GB 0.425 k allocs: 0.0901 GB 1
coloring/symmetric/column/substitution/n=100000/p=5.0e-5 0.425 k allocs: 0.16 GB 0.425 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.201 k allocs: 11.8 kB 0.201 k allocs: 11.8 kB 1

@gdalle

gdalle commented Mar 4, 2025

Copy link
Copy Markdown
Member

Hot damn!

@amontoison amontoison added the performance Speeding things up label Mar 4, 2025
@amontoison

amontoison commented Mar 4, 2025

Copy link
Copy Markdown
Collaborator Author

Capture d’écran du 2025-03-04 17-02-34

I don't understand these results. I am wondering if Br and Bc are dense matrices or not in the benchmarks.
All other results are excellent.

@gdalle

gdalle commented Mar 5, 2025

Copy link
Copy Markdown
Member

I just profiled the problematic case and we're spending most of the time in the new getindex, as I feared. Even though both Br and Bc are dense.

Screenshot 2025-03-05 at 08 53 50

@gdalle

gdalle commented Mar 5, 2025

Copy link
Copy Markdown
Member

On the other hand, in the previous version of the code (the one on main), I see that Br or Bc can be sparse (!!!). This means the benchmarking will be biased because they should be dense in the first place. I'll try to fix that first.

@gdalle

gdalle commented Mar 5, 2025

Copy link
Copy Markdown
Member

We also should use random ordering in the benchmarks, otherwise the results will be trivial.

@gdalle

gdalle commented Mar 5, 2025

Copy link
Copy Markdown
Member

I just merged the modifications from #198, the upcoming benchmarks will be more realistic

@gdalle

gdalle commented Mar 5, 2025

Copy link
Copy Markdown
Member

@amontoison the benchmarks are updated and now we don't see any significant speedups, but we still have the huge slowdowns on some instances. I'm not sure it's worth the memory savings, what do you think?

@gdalle

gdalle commented Mar 5, 2025

Copy link
Copy Markdown
Member

Another issue with the benchmarks is that, in the current state, we're unable to pre-allocate Br_and_Bc due to mismatched decompression_eltype. #199 fixes that

@amontoison
amontoison force-pushed the decompression_bicoloring branch 2 times, most recently from 0d5e732 to fcf052b Compare March 6, 2025 05:58
Comment thread src/decompression.jl Outdated
Comment thread src/decompression.jl Outdated
@amontoison
amontoison force-pushed the decompression_bicoloring branch from 07205ae to ca44a88 Compare March 17, 2025 01:07
@amontoison

amontoison commented Mar 17, 2025

Copy link
Copy Markdown
Collaborator Author

@gdalle
Capture d’écran du 2025-03-17 02-42-13
Capture d’écran du 2025-03-17 02-42-35

Note that I still need to do an efficient decompression for acyclic bicoloring.

@amontoison

Copy link
Copy Markdown
Collaborator Author

@gdalle The PR is finally ready for review!

@amontoison
amontoison force-pushed the decompression_bicoloring branch 2 times, most recently from 186b22b to 6843a14 Compare April 11, 2025 01:55
@amontoison
amontoison force-pushed the decompression_bicoloring branch 2 times, most recently from 8a0668a to 54b5bb2 Compare April 11, 2025 17:37
@amontoison
amontoison force-pushed the decompression_bicoloring branch from 5afa464 to 81e5fc3 Compare September 18, 2026 17:42
@amontoison
amontoison force-pushed the decompression_bicoloring branch from 81e5fc3 to 93459cb Compare September 18, 2026 17:43
@codecov

codecov Bot commented Sep 18, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 99.21569% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 99.15%. Comparing base (e951ff2) to head (1f98c32).

Files with missing lines Patch % Lines
ext/SparseMatrixColoringsGPUArraysExt.jl 77.77% 2 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #194      +/-   ##
==========================================
- Coverage   99.17%   99.15%   -0.02%     
==========================================
  Files          22       22              
  Lines        2304     2499     +195     
==========================================
+ Hits         2285     2478     +193     
- Misses         19       21       +2     

☔ 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.

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