Skip to content

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

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

amontoison
Copy link
Collaborator

@amontoison amontoison commented Feb 20, 2025

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
Copy link

codecov bot commented Feb 20, 2025

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
Copy link
Collaborator Author

amontoison commented Feb 20, 2025

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.

@amontoison
Copy link
Collaborator Author

amontoison commented Feb 21, 2025

@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
Copy link
Owner

gdalle commented Feb 22, 2025

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
Copy link
Collaborator Author

amontoison commented Mar 4, 2025

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

Copy link
Contributor

github-actions bot commented Mar 4, 2025

Benchmark Results

main 5afa464... main/5afa464d47b4dd...
coloring/nonsymmetric/bidirectional/direct/n=1000/p=0.002 1.92 ± 0.017 ms 1.72 ± 0.014 ms 1.12
coloring/nonsymmetric/bidirectional/direct/n=1000/p=0.005 4.37 ± 0.035 ms 4.04 ± 0.03 ms 1.08
coloring/nonsymmetric/bidirectional/direct/n=1000/p=0.01 9.8 ± 0.091 ms 9.25 ± 0.084 ms 1.06
coloring/nonsymmetric/bidirectional/direct/n=100000/p=0.0001 2.7 ± 0.14 s 2.15 ± 0.075 s 1.26
coloring/nonsymmetric/bidirectional/direct/n=100000/p=2.0e-5 0.351 ± 0.05 s 0.275 ± 0.0095 s 1.28
coloring/nonsymmetric/bidirectional/direct/n=100000/p=5.0e-5 1.18 ± 0.09 s 0.825 ± 0.041 s 1.43
coloring/nonsymmetric/bidirectional/substitution/n=1000/p=0.002 2.89 ± 0.021 ms 2.64 ± 0.02 ms 1.09
coloring/nonsymmetric/bidirectional/substitution/n=1000/p=0.005 7.57 ± 0.059 ms 7.02 ± 0.049 ms 1.08
coloring/nonsymmetric/bidirectional/substitution/n=1000/p=0.01 18.2 ± 0.23 ms 16.9 ± 0.16 ms 1.08
coloring/nonsymmetric/bidirectional/substitution/n=100000/p=0.0001 5.4 s 4.27 ± 0.1 s 1.27
coloring/nonsymmetric/bidirectional/substitution/n=100000/p=2.0e-5 0.591 ± 0.072 s 0.477 ± 0.044 s 1.24
coloring/nonsymmetric/bidirectional/substitution/n=100000/p=5.0e-5 2.14 ± 0.14 s 1.71 ± 0.048 s 1.25
coloring/nonsymmetric/column/direct/n=1000/p=0.002 0.487 ± 0.011 ms 0.491 ± 0.01 ms 0.992
coloring/nonsymmetric/column/direct/n=1000/p=0.005 1.2 ± 0.012 ms 1.22 ± 0.012 ms 0.983
coloring/nonsymmetric/column/direct/n=1000/p=0.01 2.98 ± 0.016 ms 3.02 ± 0.013 ms 0.986
coloring/nonsymmetric/column/direct/n=100000/p=0.0001 0.666 ± 0.037 s 0.585 ± 0.048 s 1.14
coloring/nonsymmetric/column/direct/n=100000/p=2.0e-5 0.0831 ± 0.0051 s 0.0812 ± 0.0026 s 1.02
coloring/nonsymmetric/column/direct/n=100000/p=5.0e-5 0.257 ± 0.028 s 0.212 ± 0.0095 s 1.21
coloring/nonsymmetric/row/direct/n=1000/p=0.002 0.475 ± 0.011 ms 0.48 ± 0.011 ms 0.989
coloring/nonsymmetric/row/direct/n=1000/p=0.005 1.19 ± 0.012 ms 1.2 ± 0.011 ms 0.992
coloring/nonsymmetric/row/direct/n=1000/p=0.01 2.97 ± 0.021 ms 3 ± 0.039 ms 0.991
coloring/nonsymmetric/row/direct/n=100000/p=0.0001 0.572 ± 0.08 s 0.538 ± 0.018 s 1.06
coloring/nonsymmetric/row/direct/n=100000/p=2.0e-5 0.0834 ± 0.0053 s 0.0799 ± 0.0022 s 1.04
coloring/nonsymmetric/row/direct/n=100000/p=5.0e-5 0.23 ± 0.049 s 0.218 ± 0.026 s 1.06
coloring/symmetric/column/direct/n=1000/p=0.002 1.05 ± 0.015 ms 1.04 ± 0.014 ms 1
coloring/symmetric/column/direct/n=1000/p=0.005 2.29 ± 0.014 ms 2.3 ± 0.016 ms 0.996
coloring/symmetric/column/direct/n=1000/p=0.01 4.97 ± 0.034 ms 4.99 ± 0.036 ms 0.995
coloring/symmetric/column/direct/n=100000/p=0.0001 0.862 ± 0.14 s 0.895 ± 0.045 s 0.963
coloring/symmetric/column/direct/n=100000/p=2.0e-5 0.155 ± 0.0056 s 0.149 ± 0.0048 s 1.05
coloring/symmetric/column/direct/n=100000/p=5.0e-5 0.386 ± 0.024 s 0.364 ± 0.025 s 1.06
coloring/symmetric/column/substitution/n=1000/p=0.002 1.59 ± 0.021 ms 1.6 ± 0.018 ms 0.997
coloring/symmetric/column/substitution/n=1000/p=0.005 3.95 ± 0.026 ms 3.95 ± 0.024 ms 1
coloring/symmetric/column/substitution/n=1000/p=0.01 8.97 ± 0.056 ms 8.98 ± 0.059 ms 0.998
coloring/symmetric/column/substitution/n=100000/p=0.0001 2.31 ± 0.041 s 1.72 ± 0.02 s 1.34
coloring/symmetric/column/substitution/n=100000/p=2.0e-5 0.253 ± 0.032 s 0.229 ± 0.0094 s 1.1
coloring/symmetric/column/substitution/n=100000/p=5.0e-5 0.894 ± 0.053 s 0.645 ± 0.021 s 1.39
decompress/nonsymmetric/bidirectional/direct/n=1000/p=0.002 0.155 ± 0.0096 ms 31.3 ± 1.5 μs 4.94
decompress/nonsymmetric/bidirectional/direct/n=1000/p=0.005 0.238 ± 0.0093 ms 0.0572 ± 0.0021 ms 4.17
decompress/nonsymmetric/bidirectional/direct/n=1000/p=0.01 0.384 ± 0.019 ms 0.106 ± 0.0045 ms 3.61
decompress/nonsymmetric/bidirectional/direct/n=100000/p=0.0001 0.0923 ± 0.0076 s 30.9 ± 1.4 ms 2.98
decompress/nonsymmetric/bidirectional/direct/n=100000/p=2.0e-5 31.6 ± 2.3 ms 6.64 ± 0.39 ms 4.75
decompress/nonsymmetric/bidirectional/direct/n=100000/p=5.0e-5 0.0601 ± 0.0015 s 15.3 ± 0.68 ms 3.92
decompress/nonsymmetric/bidirectional/substitution/n=1000/p=0.002 0.143 ± 0.0079 ms 0.126 ± 0.0032 ms 1.14
decompress/nonsymmetric/bidirectional/substitution/n=1000/p=0.005 0.279 ± 0.0098 ms 0.235 ± 0.01 ms 1.19
decompress/nonsymmetric/bidirectional/substitution/n=1000/p=0.01 0.558 ± 0.015 ms 0.474 ± 0.015 ms 1.18
decompress/nonsymmetric/bidirectional/substitution/n=100000/p=0.0001 0.173 ± 0.014 s 0.173 ± 0.016 s 0.998
decompress/nonsymmetric/bidirectional/substitution/n=100000/p=2.0e-5 0.0332 ± 0.0013 s 0.0403 ± 0.00086 s 0.823
decompress/nonsymmetric/bidirectional/substitution/n=100000/p=5.0e-5 0.0679 ± 0.0069 s 0.0715 ± 0.0041 s 0.95
decompress/nonsymmetric/column/direct/n=1000/p=0.002 25.3 ± 1.4 μs 25.4 ± 1.4 μs 0.997
decompress/nonsymmetric/column/direct/n=1000/p=0.005 0.0473 ± 0.0022 ms 0.0473 ± 0.0021 ms 0.998
decompress/nonsymmetric/column/direct/n=1000/p=0.01 0.0867 ± 0.0047 ms 0.0868 ± 0.0044 ms 0.998
decompress/nonsymmetric/column/direct/n=100000/p=0.0001 24.3 ± 1.3 ms 24.3 ± 1.2 ms 1
decompress/nonsymmetric/column/direct/n=100000/p=2.0e-5 4.27 ± 0.43 ms 4.2 ± 0.36 ms 1.02
decompress/nonsymmetric/column/direct/n=100000/p=5.0e-5 11.4 ± 0.52 ms 11.7 ± 0.81 ms 0.977
decompress/nonsymmetric/row/direct/n=1000/p=0.002 25.8 ± 1.3 μs 24.9 ± 1.3 μs 1.04
decompress/nonsymmetric/row/direct/n=1000/p=0.005 0.0437 ± 0.002 ms 0.0438 ± 0.0027 ms 0.998
decompress/nonsymmetric/row/direct/n=1000/p=0.01 0.0787 ± 0.0033 ms 0.0779 ± 0.0041 ms 1.01
decompress/nonsymmetric/row/direct/n=100000/p=0.0001 11.8 ± 0.64 ms 11 ± 0.67 ms 1.07
decompress/nonsymmetric/row/direct/n=100000/p=2.0e-5 3.07 ± 0.17 ms 2.89 ± 0.16 ms 1.06
decompress/nonsymmetric/row/direct/n=100000/p=5.0e-5 5.84 ± 0.36 ms 5.59 ± 0.34 ms 1.04
decompress/symmetric/column/direct/n=1000/p=0.002 26.1 ± 1.7 μs 24.8 ± 1.4 μs 1.05
decompress/symmetric/column/direct/n=1000/p=0.005 0.0484 ± 0.0027 ms 0.0446 ± 0.0022 ms 1.09
decompress/symmetric/column/direct/n=1000/p=0.01 0.0869 ± 0.0052 ms 0.0809 ± 0.0051 ms 1.07
decompress/symmetric/column/direct/n=100000/p=0.0001 24.6 ± 2.2 ms 21.3 ± 0.9 ms 1.15
decompress/symmetric/column/direct/n=100000/p=2.0e-5 5.2 ± 0.46 ms 4.03 ± 0.93 ms 1.29
decompress/symmetric/column/direct/n=100000/p=5.0e-5 11.9 ± 0.89 ms 10.2 ± 0.4 ms 1.16
decompress/symmetric/column/substitution/n=1000/p=0.002 0.0886 ± 0.003 ms 0.0892 ± 0.003 ms 0.993
decompress/symmetric/column/substitution/n=1000/p=0.005 0.174 ± 0.0076 ms 0.173 ± 0.0068 ms 1.01
decompress/symmetric/column/substitution/n=1000/p=0.01 0.344 ± 0.011 ms 0.343 ± 0.011 ms 1
decompress/symmetric/column/substitution/n=100000/p=0.0001 0.095 ± 0.0079 s 0.087 ± 0.0057 s 1.09
decompress/symmetric/column/substitution/n=100000/p=2.0e-5 22.6 ± 1.1 ms 23.2 ± 1.2 ms 0.974
decompress/symmetric/column/substitution/n=100000/p=5.0e-5 0.0446 ± 0.002 s 0.0436 ± 0.002 s 1.02
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.002 0.734 ± 0.0082 ms 0.735 ± 0.0082 ms 0.999
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.005 2.6 ± 0.022 ms 2.59 ± 0.022 ms 1
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.01 7.99 ± 0.062 ms 7.99 ± 0.073 ms 1
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=0.0001 1.7 ± 0.14 s 1.88 ± 0.071 s 0.905
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=2.0e-5 0.135 ± 0.0026 s 0.137 ± 0.0036 s 0.979
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=5.0e-5 0.511 ± 0.018 s 0.564 ± 0.033 s 0.905
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.002 0.728 ± 0.0079 ms 0.724 ± 0.0081 ms 1.01
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.005 2.6 ± 0.023 ms 2.6 ± 0.021 ms 0.999
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.01 8.07 ± 0.078 ms 8.07 ± 0.082 ms 0.999
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=0.0001 1.7 ± 0.027 s 1.69 ± 0.036 s 1
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=2.0e-5 0.135 ± 0.0018 s 0.138 ± 0.003 s 0.977
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=5.0e-5 0.537 ± 0.027 s 0.573 ± 0.031 s 0.937
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.002 0.734 ± 0.0089 ms 0.735 ± 0.0081 ms 0.998
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.005 2.56 ± 0.022 ms 2.58 ± 0.022 ms 0.995
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.01 8.03 ± 0.069 ms 8.01 ± 0.066 ms 1
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=0.0001 1.84 ± 0.028 s 1.67 ± 0.012 s 1.1
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=2.0e-5 0.148 ± 0.004 s 0.149 ± 0.0053 s 0.998
order/nonsymmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=5.0e-5 0.546 ± 0.012 s 0.561 ± 0.014 s 0.972
order/nonsymmetric/column/SparseMatrixColorings.LargestFirst()/n=1000/p=0.002 0.324 ± 0.0091 ms 0.325 ± 0.0087 ms 0.997
order/nonsymmetric/column/SparseMatrixColorings.LargestFirst()/n=1000/p=0.005 0.781 ± 0.0086 ms 0.784 ± 0.0059 ms 0.995
order/nonsymmetric/column/SparseMatrixColorings.LargestFirst()/n=1000/p=0.01 1.97 ± 0.053 ms 1.9 ± 0.0099 ms 1.04
order/nonsymmetric/column/SparseMatrixColorings.LargestFirst()/n=100000/p=0.0001 0.332 ± 0.012 s 0.323 ± 0.0035 s 1.03
order/nonsymmetric/column/SparseMatrixColorings.LargestFirst()/n=100000/p=2.0e-5 0.0605 ± 0.00085 s 0.0598 ± 0.0013 s 1.01
order/nonsymmetric/column/SparseMatrixColorings.LargestFirst()/n=100000/p=5.0e-5 0.143 ± 0.001 s 0.146 ± 0.0023 s 0.98
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.002 0.74 ± 0.0079 ms 0.731 ± 0.0079 ms 1.01
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.005 2.59 ± 0.022 ms 2.6 ± 0.022 ms 0.999
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.01 8.06 ± 0.061 ms 8.02 ± 0.079 ms 1.01
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=0.0001 1.58 ± 0.059 s 1.66 ± 0.036 s 0.952
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=2.0e-5 0.132 ± 0.0015 s 0.133 ± 0.0025 s 0.995
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=5.0e-5 0.507 ± 0.013 s 0.515 ± 0.015 s 0.984
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.002 0.727 ± 0.008 ms 0.732 ± 0.0097 ms 0.993
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.005 2.6 ± 0.02 ms 2.61 ± 0.022 ms 0.995
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.01 8.03 ± 0.078 ms 8.13 ± 0.06 ms 0.989
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=0.0001 1.68 ± 0.047 s 1.8 ± 0.073 s 0.935
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=2.0e-5 0.143 ± 0.002 s 0.14 ± 0.0034 s 1.02
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=5.0e-5 0.543 ± 0.017 s 0.632 ± 0.04 s 0.859
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.002 0.738 ± 0.0086 ms 0.738 ± 0.0091 ms 0.999
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.005 2.68 ± 0.025 ms 2.58 ± 0.022 ms 1.04
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.01 8.04 ± 0.076 ms 7.99 ± 0.065 ms 1.01
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=0.0001 1.68 ± 0.036 s 1.74 ± 0.028 s 0.967
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=2.0e-5 0.15 ± 0.0023 s 0.15 ± 0.0053 s 0.998
order/nonsymmetric/row/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=5.0e-5 0.546 ± 0.011 s 0.562 ± 0.033 s 0.97
order/nonsymmetric/row/SparseMatrixColorings.LargestFirst()/n=1000/p=0.002 0.324 ± 0.0089 ms 0.322 ± 0.009 ms 1.01
order/nonsymmetric/row/SparseMatrixColorings.LargestFirst()/n=1000/p=0.005 0.79 ± 0.0081 ms 0.786 ± 0.0058 ms 1.01
order/nonsymmetric/row/SparseMatrixColorings.LargestFirst()/n=1000/p=0.01 1.9 ± 0.0093 ms 1.92 ± 0.035 ms 0.99
order/nonsymmetric/row/SparseMatrixColorings.LargestFirst()/n=100000/p=0.0001 0.328 ± 0.0052 s 0.321 ± 0.0061 s 1.02
order/nonsymmetric/row/SparseMatrixColorings.LargestFirst()/n=100000/p=2.0e-5 0.0595 ± 0.00093 s 0.0605 ± 0.00069 s 0.984
order/nonsymmetric/row/SparseMatrixColorings.LargestFirst()/n=100000/p=5.0e-5 0.143 ± 0.0024 s 0.144 ± 0.0083 s 0.993
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.002 0.224 ± 0.01 ms 0.221 ± 0.0087 ms 1.01
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.005 0.402 ± 0.01 ms 0.408 ± 0.01 ms 0.985
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=1000/p=0.01 0.66 ± 0.011 ms 0.67 ± 0.011 ms 0.985
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=0.0001 0.14 ± 0.0097 s 0.138 ± 0.011 s 1.01
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=2.0e-5 0.0443 ± 0.0014 s 0.0442 ± 0.00091 s 1
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :high2low, false}()/n=100000/p=5.0e-5 0.083 ± 0.0074 s 0.0811 ± 0.0055 s 1.02
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.002 0.216 ± 0.0055 ms 0.217 ± 0.0063 ms 0.994
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.005 0.398 ± 0.0099 ms 0.399 ± 0.01 ms 0.999
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=1000/p=0.01 0.663 ± 0.01 ms 0.664 ± 0.01 ms 0.999
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=0.0001 0.139 ± 0.007 s 0.137 ± 0.0069 s 1.01
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=2.0e-5 0.0422 ± 0.0009 s 0.0417 ± 0.0011 s 1.01
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:back, :low2high, false}()/n=100000/p=5.0e-5 0.0788 ± 0.0049 s 0.0789 ± 0.0036 s 0.998
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.002 0.19 ± 0.0056 ms 0.195 ± 0.0052 ms 0.979
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.005 0.36 ± 0.0098 ms 0.359 ± 0.0097 ms 1
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=1000/p=0.01 0.582 ± 0.011 ms 0.578 ± 0.012 ms 1.01
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=0.0001 0.142 ± 0.0096 s 0.139 ± 0.0096 s 1.03
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=2.0e-5 0.0407 ± 0.0019 s 0.0409 ± 0.0023 s 0.997
order/symmetric/column/SparseMatrixColorings.DynamicDegreeBasedOrder{:forward, :low2high, false}()/n=100000/p=5.0e-5 0.0772 ± 0.0051 s 0.0756 ± 0.0035 s 1.02
order/symmetric/column/SparseMatrixColorings.LargestFirst()/n=1000/p=0.002 0.114 ± 0.0025 ms 0.115 ± 0.0034 ms 0.991
order/symmetric/column/SparseMatrixColorings.LargestFirst()/n=1000/p=0.005 0.127 ± 0.0041 ms 0.126 ± 0.0058 ms 1.01
order/symmetric/column/SparseMatrixColorings.LargestFirst()/n=1000/p=0.01 0.133 ± 0.021 ms 0.145 ± 0.018 ms 0.918
order/symmetric/column/SparseMatrixColorings.LargestFirst()/n=100000/p=0.0001 26.3 ± 0.52 ms 26.4 ± 0.19 ms 0.997
order/symmetric/column/SparseMatrixColorings.LargestFirst()/n=100000/p=2.0e-5 22 ± 0.11 ms 22.1 ± 0.11 ms 0.997
order/symmetric/column/SparseMatrixColorings.LargestFirst()/n=100000/p=5.0e-5 23.9 ± 0.11 ms 24 ± 0.14 ms 0.995
time_to_load 0.217 ± 0.0065 s 0.221 ± 0.0017 s 0.984
main 5afa464... main/5afa464d47b4dd...
coloring/nonsymmetric/bidirectional/direct/n=1000/p=0.002 0.475 k allocs: 2.35 MB 0.4 k allocs: 1.56 MB 1.5
coloring/nonsymmetric/bidirectional/direct/n=1000/p=0.005 0.485 k allocs: 3.96 MB 0.41 k allocs: 2.62 MB 1.51
coloring/nonsymmetric/bidirectional/direct/n=1000/p=0.01 0.495 k allocs: 6.99 MB 0.42 k allocs: 4.52 MB 1.55
coloring/nonsymmetric/bidirectional/direct/n=100000/p=0.0001 0.555 k allocs: 0.712 GB 0.48 k allocs: 0.466 GB 1.53
coloring/nonsymmetric/bidirectional/direct/n=100000/p=2.0e-5 0.525 k allocs: 0.24 GB 0.45 k allocs: 0.148 GB 1.63
coloring/nonsymmetric/bidirectional/direct/n=100000/p=5.0e-5 0.545 k allocs: 0.426 GB 0.47 k allocs: 0.271 GB 1.58
coloring/nonsymmetric/bidirectional/substitution/n=1000/p=0.002 0.638 k allocs: 2.82 MB 0.523 k allocs: 2.16 MB 1.31
coloring/nonsymmetric/bidirectional/substitution/n=1000/p=0.005 0.64 k allocs: 4.82 MB 0.525 k allocs: 3.78 MB 1.28
coloring/nonsymmetric/bidirectional/substitution/n=1000/p=0.01 0.64 k allocs: 8.33 MB 0.525 k allocs: 6.62 MB 1.26
coloring/nonsymmetric/bidirectional/substitution/n=100000/p=0.0001 0.645 k allocs: 0.812 GB 0.53 k allocs: 0.641 GB 1.27
coloring/nonsymmetric/bidirectional/substitution/n=100000/p=2.0e-5 0.645 k allocs: 0.272 GB 0.53 k allocs: 0.205 GB 1.33
coloring/nonsymmetric/bidirectional/substitution/n=100000/p=5.0e-5 0.645 k allocs: 0.472 GB 0.53 k allocs: 0.368 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.22 k allocs: 0.583 MB 0.22 k allocs: 0.583 MB 1
coloring/symmetric/column/direct/n=1000/p=0.005 0.23 k allocs: 0.932 MB 0.23 k allocs: 0.932 MB 1
coloring/symmetric/column/direct/n=1000/p=0.01 0.24 k allocs: 1.57 MB 0.24 k allocs: 1.57 MB 1
coloring/symmetric/column/direct/n=100000/p=0.0001 0.3 k allocs: 0.168 GB 0.3 k allocs: 0.168 GB 1
coloring/symmetric/column/direct/n=100000/p=2.0e-5 0.27 k allocs: 0.056 GB 0.27 k allocs: 0.056 GB 1
coloring/symmetric/column/direct/n=100000/p=5.0e-5 0.29 k allocs: 0.0995 GB 0.29 k allocs: 0.0995 GB 1
coloring/symmetric/column/substitution/n=1000/p=0.002 0.4 k allocs: 0.944 MB 0.4 k allocs: 0.944 MB 1
coloring/symmetric/column/substitution/n=1000/p=0.005 0.405 k allocs: 1.64 MB 0.405 k allocs: 1.64 MB 1
coloring/symmetric/column/substitution/n=1000/p=0.01 0.411 k allocs: 2.85 MB 0.411 k allocs: 2.85 MB 1
coloring/symmetric/column/substitution/n=100000/p=0.0001 0.416 k allocs: 0.276 GB 0.416 k allocs: 0.276 GB 1
coloring/symmetric/column/substitution/n=100000/p=2.0e-5 0.41 k allocs: 0.0897 GB 0.41 k allocs: 0.0897 GB 1
coloring/symmetric/column/substitution/n=100000/p=5.0e-5 0.41 k allocs: 0.159 GB 0.41 k allocs: 0.159 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.802 MB 0.045 k allocs: 0.802 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.802 MB 0.045 k allocs: 0.802 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.802 MB 0.045 k allocs: 0.802 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.802 MB 0.045 k allocs: 0.802 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.802 MB 0.045 k allocs: 0.802 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.802 MB 0.045 k allocs: 0.802 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.201 MB 0.105 k allocs: 0.201 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.201 MB 0.105 k allocs: 0.201 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.201 MB 0.105 k allocs: 0.201 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.201 MB 0.105 k allocs: 0.201 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.201 MB 0.105 k allocs: 0.201 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.201 MB 0.105 k allocs: 0.201 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.115 MB 0.05 k allocs: 0.115 MB 1
order/symmetric/column/SparseMatrixColorings.LargestFirst()/n=1000/p=0.005 0.05 k allocs: 0.115 MB 0.05 k allocs: 0.115 MB 1
order/symmetric/column/SparseMatrixColorings.LargestFirst()/n=1000/p=0.01 0.05 k allocs: 0.115 MB 0.05 k allocs: 0.115 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.159 k allocs: 11.2 kB 0.159 k allocs: 11.2 kB 1

@gdalle
Copy link
Owner

gdalle commented Mar 4, 2025

Hot damn!

@amontoison amontoison added the performance Speeding things up label Mar 4, 2025
@amontoison
Copy link
Collaborator Author

amontoison commented Mar 4, 2025

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
Copy link
Owner

gdalle commented Mar 5, 2025

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
Copy link
Owner

gdalle commented Mar 5, 2025

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
Copy link
Owner

gdalle commented Mar 5, 2025

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

@gdalle
Copy link
Owner

gdalle commented Mar 5, 2025

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

@gdalle
Copy link
Owner

gdalle commented Mar 5, 2025

@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
Copy link
Owner

gdalle commented Mar 5, 2025

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
@amontoison amontoison force-pushed the decompression_bicoloring branch from 07205ae to ca44a88 Compare March 17, 2025 01:07
@amontoison
Copy link
Collaborator Author

amontoison commented Mar 17, 2025

@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
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 from 0cbd45d to 8a0668a Compare April 11, 2025 17:32
@amontoison amontoison force-pushed the decompression_bicoloring branch from 8a0668a to 54b5bb2 Compare April 11, 2025 17:37
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