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
118
+
This order works by assigning vertices to buckets based on their dynamic degree, and then updating buckets iteratively by transfering vertices between them.
119
+
112
120
# Type parameters
113
121
114
122
- `degtype::Symbol`: can be `:forward` (for the forward degree) or `:back` (for the back degree)
115
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`)
116
124
117
-
# Settings
118
-
119
-
- `reproduce_colpack::Bool`: whether to manage the buckets in the exact 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 significant 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.
120
-
121
-
!!! danger
122
-
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.
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
-
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.
Instance of [`AbstractOrder`](@ref) which sorts vertices from highest to lowest using the dynamic back degree.
407
418
408
-
!!! danger
409
-
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.
Instance of [`AbstractOrder`](@ref) which sorts vertices from lowest to highest using the dynamic forward degree.
421
431
422
-
!!! danger
423
-
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.
0 commit comments