You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The option `reproduce_colpack=true` induces a large slowdown to mirror the original implementation details of ColPack, it should not be used in performance-sensitive applications.
110
+
This setting is mostly for the purpose of reproducing past research results which rely on implementation details.
Instance of [`AbstractOrder`](@ref) which sorts vertices using a dynamically computed degree.
111
117
112
-
!!! danger
113
-
This order is still experimental and needs more tests, correctness is not yet guaranteed.
118
+
This order works by assigning vertices to buckets based on their dynamic degree, and then updating buckets iteratively by transfering vertices between them.
114
119
115
120
# Type parameters
116
121
117
122
- `degtype::Symbol`: can be `:forward` (for the forward degree) or `:back` (for the back degree)
118
123
- `direction::Symbol`: can be `:low2high` (if the order is defined from lowest to highest, i.e. `1` to `n`) or `:high2low` (if the order is defined from highest to lowest, i.e. `n` to `1`)
119
124
120
-
# Settings
121
-
122
-
- `reproduce_colpack::Bool`: whether to manage the buckets in the same way as the original ColPack implementation. When `reproduce_colpack=true`, we always append and remove vertices from the end of a bucket, which incurs a large performance penalty because every modification requires a circular permutation of the corresponding bucket. This setting is mostly for the purpose of reproducing past research results which rely on implementation details.
123
-
124
125
# Concrete variants
125
126
126
127
- [`IncidenceDegree`](@ref)
127
128
- [`SmallestLast`](@ref)
128
129
- [`DynamicLargestFirst`](@ref)
129
130
131
+
# Settings
132
+
133
+
- `reproduce_colpack::Bool`: whether to manage the buckets in the exact same way as the original ColPack implementation.
134
+
- When `reproduce_colpack=true`, we always append and remove vertices at the end of a bucket (unilateral).
135
+
- When `reproduce_colpack=false` (the default), we can append and remove vertices either at the start or at the end of a bucket (bilateral).
136
+
137
+
Allowing modifications on both sides of a bucket enables storage optimization, with a single fixed-size vector for all buckets instead of one dynamically-sized vector per bucket.
138
+
Our implementation is optimized for this bilateral setting, which means we pay a large performance penalty to artificially imitate the unilateral setting.
139
+
140
+
$COLPACK_WARNING
141
+
130
142
# References
131
143
132
144
- [_ColPack: Software for graph coloring and related problems in scientific computing_](https://dl.acm.org/doi/10.1145/2513109.2513110), Gebremedhin et al. (2013), Section 5
@@ -391,8 +403,7 @@ end
391
403
392
404
Instance of [`AbstractOrder`](@ref) which sorts vertices from lowest to highest using the dynamic back degree.
393
405
394
-
!!! danger
395
-
This order is still experimental and needs more tests, correctness is not yet guaranteed.
0 commit comments