Skip to content

Conversation

@rapids-bot
Copy link
Contributor

@rapids-bot rapids-bot bot commented Oct 3, 2025

Forward-merge triggered by push to branch-25.10 that creates a PR to keep branch-25.12 up-to-date. If this PR is unable to be immediately merged due to conflicts, it will remain open for the team to manually merge. See forward-merger docs for more info.

This PR implement a parallel branch-and-bound procedure, which is split into two phases. In the first phase, the algorithm will greedily expand the search tree until a certain depth and then add the bottom nodes to a global heap. The parallel expansion is implemented using  `omp task`.

In the second phase, some threads will explore the tree using best first search with plunging, i.e., they take the first node from the global heap and then explore the entire branch that starts on this node. Any unexplored node are insert into the heap. The remaining threads will perform deep dives in order to find feasible solutions. The solver keep a small heap contains the most promising nodes to perform the dives, which is keep in sync with the global heap. 

This PR also
- Replace the `std::thread`-based parallelization in the strong branching with OpenMP in order to use dynamic scheduling. This ensures that all threads have similar amount of work and improve parallel performance.
- Fixed invalid memory access when trying to access the status of a fathomed node.   
- Replaced `std::mutex` with `omp atomic` whatever applicable. 
- Added dedicated classes  `dive_queue_t` and `search_tree_t` to store the diving heap and the search tree, respectively.

This is an extension of #305.
Closes #320.
Closes #417.

## Benchmark results (MIPLIB2017):

master branch (53d6e74)
```
Average Gap: 0.2174861712
```

This PR:
```
Average Gap: 0.1989485546
```

i.e., a `1.8%` improvement. In terms of the geomean of the gap ratio, this is equal to `1.62x`.

Authors:
  - Nicolas L. Guidotti (https://github.com/nguidotti)

Approvers:
  - Rajesh Gandham (https://github.com/rg20)
  - Chris Maes (https://github.com/chris-maes)

URL: #412
@rapids-bot rapids-bot bot requested a review from a team as a code owner October 3, 2025 19:01
@rapids-bot rapids-bot bot requested review from Kh4ster and rg20 and removed request for a team October 3, 2025 19:01
@GPUtester GPUtester merged commit adf2b83 into branch-25.12 Oct 3, 2025
@rapids-bot
Copy link
Contributor Author

rapids-bot bot commented Oct 3, 2025

SUCCESS - forward-merge complete.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants