-
Notifications
You must be signed in to change notification settings - Fork 122
B&B CPU determinism #798
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
aliceb-nv
wants to merge
429
commits into
NVIDIA:release/26.02
Choose a base branch
from
aliceb-nv:determinism
base: release/26.02
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+6,705
−1,083
Open
B&B CPU determinism #798
Changes from all commits
Commits
Show all changes
429 commits
Select commit
Hold shift + click to select a range
c374f69
fix copyright
aliceb-nv 2ae3d3e
Merge branch 'clang-tsan' into determinism
aliceb-nv d89c50a
flag to disable gpu heuristics
aliceb-nv 8dd2d08
fix incorrect termination status
nguidotti 1dcee03
replace upper bound lock with atomic
nguidotti 9e2e5c7
improve idling master thread
nguidotti 34f7eaa
added ramp-up-phase
nguidotti 769a3d8
refactoring
nguidotti c54033c
updating code to match the new parallel bnb
nguidotti 28c61b8
Merge branch 'main' into diving-heuristics
nguidotti 4bcf801
removed command line options
nguidotti d91369d
fix style
nguidotti d67f230
BSP b&b progress
aliceb-nv 4ee57f9
fix compilation failure
nguidotti b99a9c7
separated objective estimate and variable selection
nguidotti 43f8b31
separating objective estimate from variable selection
nguidotti a36bf03
added log
nguidotti d4c9d54
Merge branch 'node-queue' into diving-heuristics
nguidotti b9a14bf
Merge branch 'diving-heuristics' into parallel-bnb-v2
nguidotti 7c5c996
small refactor
nguidotti 5753de8
code cleanup
nguidotti 421cbfd
fix reporting frequency
nguidotti 6faeed0
fix style
nguidotti d7046e3
added missing stl headers. fix incorrect round-robin.
nguidotti eb6bc28
initial working impl on small problens
aliceb-nv d80667c
more instrumentation
aliceb-nv 14441d1
refactor to eliminate enum
nguidotti 8ed172a
keep basis when possible
aliceb-nv 89cc6de
fix race condition in guided diving
nguidotti 525f013
reliability branching from #599
nguidotti 0fa76f1
modfiied reliability branching to reuse basis from node
nguidotti 0926349
replaced mutex with a vector of mutexes
nguidotti 2c069c0
restrict reliability branching to main thread
nguidotti f043ac9
fixed unintialized pseudocost. added adaptive rule for the number of …
nguidotti 24a3838
re-enable reliability branching
nguidotti ccca7fe
setting reliable_threshold to 1
nguidotti 2a16ee6
merge and fix nondeterministic node compare
aliceb-nv ef777c6
more logs, cache cpu clock
aliceb-nv 6dcb062
plunging for deterministic search
aliceb-nv 35e8177
move to work_unit_scheduler to allow for mid-node syncs
aliceb-nv e06af9f
better debug printouts
aliceb-nv 99e9ec2
improve ins_vector coverage; fix case where instrumeted mem accesses …
aliceb-nv 8fdbff8
fix sync bug on termination
aliceb-nv b6d7ecc
revert disable heuristics
aliceb-nv 668391e
no presovle when determinsitic
aliceb-nv 3b6d532
restore nondeterminsitc codepath behavior
aliceb-nv 81aaf20
Merge branch 'main' into determinism
aliceb-nv 07cea4d
cleanup work
aliceb-nv 9fb0edd
more cleanup to test for regressions
aliceb-nv 21b5e29
move GPU determinism changes to another PR
aliceb-nv 8ed90ac
restore run_bounds_strengthening=false in DS presolve
aliceb-nv cdcd101
spring cleaning
aliceb-nv cd5d073
cleaning
aliceb-nv 14d3911
no bs changes
aliceb-nv 9289be4
memins on
aliceb-nv c1526b8
fix memins bug
aliceb-nv a6e18d7
no ins_wrapper for bound strengthening to allow autovectorization (co…
aliceb-nv ac57402
stripped down ins_wrapper
aliceb-nv 512a960
Revert "stripped down ins_wrapper"
aliceb-nv fb45144
merge attempt 1, needs cleanup
aliceb-nv 61c1563
initial detemrinistic diving impl
aliceb-nv bfb6611
separate time limit and work unit parameters
aliceb-nv 2f673e7
fix issue on presolved to optimality instances
aliceb-nv cfbb99b
restore gpu heurs
aliceb-nv 01747f4
fix BSP b&b getting starved too early
aliceb-nv e689154
same diving ratio as base solver
aliceb-nv 14eb9a7
cleanup work
aliceb-nv 7755bd7
further cleanup work
aliceb-nv a63f032
incorporating cpufj into the deterministic framework
aliceb-nv bc3bfde
fjcpu cleanup
aliceb-nv 50c574e
update terminology
aliceb-nv 2947a23
unify pseudocost computations
aliceb-nv 5f58f6d
parallelized the trial branching
nguidotti fbc17c9
added debug log
nguidotti a1eb6b8
solved early termination in CMS750_4. fixed hard coded number of thre…
nguidotti 8c5e9f6
policy system for solve_lp_
aliceb-nv 8116fea
Merge branch 'main' into fix-bugs
nguidotti c2bab57
Revert policy system to move it to a later PR
aliceb-nv f16db00
restore fixes
aliceb-nv 2b7859e
log ds features and bounds strenghtening
aliceb-nv af31388
fix logs
aliceb-nv f102139
timing stuff
aliceb-nv 5a62393
bump 1
aliceb-nv fc82a41
bump 2
aliceb-nv 115a0b1
silenced logs from the concurrent mode when running inside MIP. ignor…
nguidotti d50c064
Merge branch 'main' into fix-bugs
nguidotti 27d0d39
Merge branch 'fix-bugs' into reliability-branching
nguidotti c47adda
fixed merge errors
nguidotti 261bfc8
add bounds strenghtening predictor (unused yet)
aliceb-nv c0422ed
fixed crash
nguidotti a0a1d93
better num thread initialization
nguidotti 9f0fe29
fix compilation
nguidotti 0dcb5ff
Merge branch 'fix-bugs' into reliability-branching
nguidotti 298c68c
moved parameters to simplex_settings. added command line option
nguidotti 8a890fd
handle cli arguments
nguidotti 2c2c515
set additional openmp flags
nguidotti 1aca951
Fix issue with work limits that aren't multiples of the horizon steps
aliceb-nv e593d36
set the number of tasks for strong branching.
nguidotti 19210f0
propagate solutions to the solver in determinsitic mode
aliceb-nv 92a8705
fix envvar
aliceb-nv bbc966b
fix some issues with hashes
aliceb-nv cff46f3
bump1
aliceb-nv 254be07
bump2
aliceb-nv aa15d8e
added additional information in the logs when solving the root relaxa…
nguidotti ae98cbd
fix tie-breaking and ins_vector counters not being reset appropriately
aliceb-nv 83e0b37
bump1
aliceb-nv f6a908d
no CPUFJ
aliceb-nv 5ed3732
bump1
aliceb-nv ce0586c
Merge branch 'fix-bugs' into reliability-branching
nguidotti d604cb6
renamed macro
nguidotti 4a5270f
Refactoring, fix incorrect optimality, add tests
aliceb-nv 781dd36
Merge branch 'fix-bugs' into reliability-branching
nguidotti 2ed103c
add work limit as a parameter
aliceb-nv 16dcfa8
Merge branch 'main' into determinism
aliceb-nv 628c22b
changed the number of threads in probing cache
nguidotti 0d2226c
add parameter for MIP seed
aliceb-nv 6956bbc
fix type
nguidotti 409b1ee
restore probing cache
aliceb-nv addae13
bump1
aliceb-nv e9a5fac
bump2
aliceb-nv 4f75132
fix compute_hash using the defautl stream and breaking graph capture
aliceb-nv 2fd6859
bump1
aliceb-nv 6bdd587
changed the logs for the root relaxation
nguidotti 6d7007c
Merge branch 'fix-bugs' into reliability-branching
nguidotti a10ac30
fix concurrent LP solve and probing cache in deterministic mode
aliceb-nv 5000cda
more stats logging
aliceb-nv fab2ffe
horizon 0.15
aliceb-nv 183e2ce
horizon 0.25
aliceb-nv 24e4192
horizon 0.5
aliceb-nv 48b74c8
horizon step 1.00
aliceb-nv 12f7b87
restore
aliceb-nv fc1c60a
limited the number of candidates for strong branching. refactoring to…
nguidotti 444b95b
removed try_lock
nguidotti 61c5f77
fix incorrect optimal report
aliceb-nv a0137d1
Merge branch 'release/26.02' into determinism
aliceb-nv 90dcdc9
removed unused settings
nguidotti 5260b51
adjusted number of workers for rb
nguidotti 87098e3
adjusting number of workers for rb
nguidotti b66ebae
fix incorrect max tasks
nguidotti 9e8488c
fix pseudocost updates
aliceb-nv 30eb52e
w/ bounds strenght
aliceb-nv 9817131
fix holes in implementation
aliceb-nv 383e69a
no BS
aliceb-nv 585bdf0
no BS typo
aliceb-nv dcf0542
greater horizon
aliceb-nv 84d0567
removed ramp-up phase
nguidotti 175ffc8
BS back
aliceb-nv 0e89356
with logging
aliceb-nv 15dd371
add numericla restart to diving and lower bound ceiling updates in BSP
aliceb-nv 30a147a
cleanup
aliceb-nv dc2fd90
Merge branch 'release/26.02' into determinism
aliceb-nv 91c95e2
heap instead of rebuild
aliceb-nv 1fdd13e
fix root relaxation message when the solution is not optimal
nguidotti 5ea1621
cleanup, fix loss of determinism
aliceb-nv b9960c0
more cleanup
aliceb-nv 6b1bee8
Merge branch 'fix-bugs' into reliability-branching
nguidotti 66f6cfd
increase max_lookahead
nguidotti 2c6e12e
fix determinism test seed
aliceb-nv be15f63
fix fjcpu bug
aliceb-nv 3b93226
bump
aliceb-nv 9e4b2ee
add comment description
aliceb-nv 1b35ac9
Merge branch 'release/26.02' into determinism
aliceb-nv deff899
copyright fixes
aliceb-nv e46eba6
Merge branch 'release/26.02' into reliability-branching
nguidotti 0b0e65b
review comments
aliceb-nv c5438a4
fix wait_for_producers target
aliceb-nv 31b5285
set the reliable threshold dynamically
nguidotti 433ae0e
no cpufj for bench
aliceb-nv afd24ad
Merge branch 'release/26.02' into determinism
aliceb-nv 9448dd7
Revert "no cpufj for bench"
aliceb-nv 7bac62d
fixed incorrect threshold formula. fixed time limit violation.
nguidotti a6e055c
simplified parallel loop
nguidotti de4389b
added single-threaded mode for rins and submip
nguidotti 799f9f5
more logging for bounds strength
aliceb-nv eb51080
added missing mutexes
nguidotti f3567cb
fixed empty vector in shuffle
nguidotti 233933f
reverted some code changes
nguidotti 527754c
replaced with lock_guards
nguidotti 2251b87
fixed crash
nguidotti 7919288
fixed number of threads set to 0
nguidotti cec6f38
enable reliablity branching by default
nguidotti 6c408f2
fix logging
aliceb-nv 27ee927
set the solve mode based on the number of threads
nguidotti 4d1f684
disable RUNPATH
aliceb-nv 8810401
Revert "fix logging"
aliceb-nv a811e86
Revert "more logging for bounds strength"
aliceb-nv b761b22
naive prediction
aliceb-nv 8dfb7c3
scaled mem prediction
aliceb-nv d550547
no cpufj
aliceb-nv 4d75fb0
Revert "no cpufj"
aliceb-nv da6dfe0
Revert "disable RUNPATH"
aliceb-nv 25388d8
replace work predictor machinery with mem ops only
aliceb-nv e88d5ef
remove debug log machinery
aliceb-nv 6202972
Merge branch 'release/26.02' into determinism
aliceb-nv c91127b
refactoring and simplification work
aliceb-nv 12e095c
switch to openmp for syncs, add infeas test
aliceb-nv e68941e
minor touchups
aliceb-nv 00158e0
unify update_tree, fix timing issue
aliceb-nv 5f929f4
unify b&b worker struct
aliceb-nv 8c4f417
Revert "unify b&b worker struct"
aliceb-nv a23d8af
Merge branch 'release/26.02' into determinism
aliceb-nv f7d0c93
Merge branch 'reliability-branching' into determinism
aliceb-nv 71d1272
replaced locks with atomics
nguidotti cc14fee
cleanup
aliceb-nv 326037c
Merge branch 'reliability-branching' into determinism
aliceb-nv 70e6c73
cleanup
aliceb-nv faa4952
fix bsp deadlock on timelimit
aliceb-nv e23c16c
unify update_tree
aliceb-nv 222cda0
fix pseudocost update
nguidotti 649e295
Merge branch 'release/26.02' into reliability-branching
nguidotti cf2f577
more cleanup
aliceb-nv 3aab472
Merge branch 'reliability-branching' into determinism
aliceb-nv ff1aaf4
more cleanup
aliceb-nv a53b38a
deleted assignment in omp_mutex_t to avoid double destruction.
nguidotti 0826aba
addressing reviewer comments
nguidotti 929e0b5
fix compilation
nguidotti af718df
update naming
aliceb-nv 36b211b
additional refactoring
nguidotti 5edbfbf
variable renaming
nguidotti 2b9da53
fix compilation
nguidotti 62a058b
coderabbit suggestions
nguidotti 5a54f85
more cleanup
aliceb-nv 0f6df39
fix negative pseudocost
nguidotti 56d5ead
changed initial score
nguidotti a72c85c
adding more safeguards
nguidotti 0b14897
fix initial value
nguidotti ebe7aa3
Merge remote-tracking branch 'cuopt/release/26.02' into reliability-b…
nguidotti d65f258
renaming variables
nguidotti 725363d
split locks in pseudocost
nguidotti 4879d1f
progress
aliceb-nv 46d59b3
fix build
aliceb-nv d1989cc
fix crash in timtab1 due to double infinite pseudocost
nguidotti f6d2a94
fix race condition
aliceb-nv 6417074
small tweaks
nguidotti e5fdae1
Merge branch 'release/26.02' into reliability-branching
nguidotti 9e4b855
Merge branch 'reliability-branching' into determinism
aliceb-nv d5a7149
Merge branch 'reliability-branching' into determinism
aliceb-nv 91e0168
renamed variable
nguidotti fd4f5a8
Merge branch 'reliability-branching' into determinism
aliceb-nv 515d17c
fix incorrect lower bounds during the cut passes
nguidotti d8cde66
cleanup, fix race
aliceb-nv 084072a
Merge branch 'reliability-branching' into determinism
aliceb-nv 1df294b
more cleanup
aliceb-nv 0deb0fd
Merge branch 'release/26.02' into determinism
aliceb-nv a05d4c2
more cleanup
aliceb-nv 91bb13f
Merge branch 'release/26.02' into determinism
aliceb-nv 6914c8a
bump1
aliceb-nv ff47875
bump2
aliceb-nv 57129b7
address review comments
aliceb-nv 1332fbd
review comments
aliceb-nv File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Giving the user the option to set the random seed is important. I'm glad you added this.
My only suggestion is that we might want to call this just "seed" or "random_seed" as it is possible we would us this beyond MIP.