Matrix coloring comparison
A comparison between matrix coloring packages in Julia.
At the moment we include:
begin
using Pkg
Pkg.activate(mktempdir())
Pkg.add([
Pkg.PackageSpec("CairoMakie"),
Pkg.PackageSpec("Chairmarks"),
Pkg.PackageSpec(url="https://github.com/exanauts/ColPack.jl", rev="gd/super_upgrade_colpack"),
Pkg.PackageSpec("DataFrames"),
Pkg.PackageSpec("DataFramesMeta"),
Pkg.PackageSpec("LinearAlgebra"),
Pkg.PackageSpec("PlutoUI"),
Pkg.PackageSpec("ProgressLogging"),
Pkg.PackageSpec("SparseMatrixColorings"),
Pkg.PackageSpec("SparseArrays"),
Pkg.PackageSpec("StableRNGs"),
Pkg.PackageSpec("Statistics"),
Pkg.PackageSpec("Test"),
])
using CairoMakie
using Chairmarks
using ColPack
using DataFrames
using DataFramesMeta
using LinearAlgebra
using PlutoUI
using ProgressLogging
using SparseMatrixColorings
using SparseMatrixColorings: NaturalOrder
using SparseArrays
using StableRNGs
using Statistics
using Test
end
TableOfContents()
Setup
SparseMatrixColorings
smc_column_coloring (generic function with 1 method)
function smc_column_coloring(J)
return column_coloring(J, GreedyColoringAlgorithm(NaturalOrder()))
end
smc_row_coloring (generic function with 1 method)
function smc_row_coloring(J)
return row_coloring(J, GreedyColoringAlgorithm(NaturalOrder()))
end
smc_symmetric_coloring (generic function with 1 method)
function smc_symmetric_coloring(H)
return symmetric_coloring(H, GreedyColoringAlgorithm(NaturalOrder()))
end
colpack_column_coloring (generic function with 1 method)
function colpack_column_coloring(J)
method = "COLUMN_PARTIAL_DISTANCE_TWO"
order = "NATURAL"
coloring = ColPackPartialColoring(J, method, order)
return get_colors(coloring)
end
colpack_row_coloring (generic function with 1 method)
function colpack_row_coloring(J)
method = "ROW_PARTIAL_DISTANCE_TWO"
order = "NATURAL"
coloring = ColPackPartialColoring(J, method, order)
return get_colors(coloring)
end
colpack_symmetric_coloring (generic function with 1 method)
function colpack_symmetric_coloring(H)
method = "STAR"
order = "NATURAL"
coloring = ColPackColoring(H, method, order)
return get_colors(coloring)
end
Misc
d_values_small (generic function with 1 method)
d_values_small(n) = filter(<=(n), [5,10,20])
d_values (generic function with 1 method)
d_values(n) = filter(<=(n), [5,10,20,50,100])
:solid
:dash
:dashdot
:dashdotdot
:dot
linestyles = [:solid, :dash, :dashdot, :dashdotdot, :dot]
:circle
:star5
:rect
:utriangle
:cross
markers = [:circle, :star5, :rect, :utriangle, :cross]
Correctness
Jacobian
Some tests did not pass: 0 passed, 0 failed, 2 errored, 6 broken.
Here is what happened, the most recent locations are first:
- finish(ts::Test.DefaultTestSet; print_results::Bool) @ Test.jl:1195
- finish @ Test.jl:1170
- macro expansion @ This cell: line 1593
- Show more...
@testset "Column coloring" begin
@testset "n=$n - d=$d" for n in 10 .^ (1:3), d in d_values_small(n)
J = sprand(n, n + 1, d/n)
color1 = smc_column_coloring(J)
color2 = colpack_column_coloring(J)
@test_broken color1 == color2
end
end
Loading more cells...