Skip to content

CPUFJ for local search + simple rounding#405

Merged
rapids-bot[bot] merged 290 commits intobranch-25.10from
merge-progressive
Sep 29, 2025
Merged

CPUFJ for local search + simple rounding#405
rapids-bot[bot] merged 290 commits intobranch-25.10from
merge-progressive

Conversation

@aliceb-nv
Copy link
Copy Markdown
Contributor

@aliceb-nv aliceb-nv commented Sep 22, 2025

This PR introduces a host-side implementation of Feasibility Jump 2.0 (Efficient Local Search), with CPU-specific tweaks and optimizations. This heuristic is run in parallel with GPU FJ during local search, and the best resulting solution is picked.

Also included in this PR:

  • Implementation of the simple rounding algorithm (up/down-lock based rounding, cf. "Rounding and Propagation Heuristics for Mixed Integer Programming")
  • Some crash/assert trigger fixes
  • Minor hyperparameter tuning
  • build.sh option to emit lineinfo for host source files

Benchmark results:

Main branch 53d6e74:

Regression Baseline Summary (Time Limit: 600s):
  Feasible instances: 221/240
  Average gap: 0.207478
  Average integral: 0.261499

Excel results

PR (cad9773):

cuopt 600s: 
feasible 222/240 
gap 0.176733 
integral 0.241953

Excel results

closes #360

@aliceb-nv
Copy link
Copy Markdown
Contributor Author

/ok to test 6e4e9b4

@aliceb-nv
Copy link
Copy Markdown
Contributor Author

/ok to test 323de70

Comment thread cpp/src/mip/diversity/diversity_manager.cu Outdated
Comment thread cpp/src/mip/diversity/diversity_manager.cu
Comment thread cpp/src/mip/diversity/diversity_manager.cu Outdated
Comment thread cpp/src/mip/diversity/population.cuh Outdated
Comment thread cpp/src/mip/diversity/population.cuh
Comment thread cpp/src/mip/feasibility_jump/feasibility_jump.cuh Outdated
Comment thread cpp/src/mip/feasibility_jump/feasibility_jump_impl_common.cuh Outdated
Comment thread cpp/src/mip/local_search/local_search.cu
Comment thread cpp/src/mip/local_search/local_search.cu Outdated
Comment thread cpp/src/mip/local_search/local_search.cu
aliceb-nv and others added 4 commits September 25, 2025 19:29
Co-authored-by: Rajesh Gandham <rgandham@nvidia.com>
Co-authored-by: Rajesh Gandham <rgandham@nvidia.com>
Co-authored-by: Rajesh Gandham <rgandham@nvidia.com>
Co-authored-by: Rajesh Gandham <rgandham@nvidia.com>
Copy link
Copy Markdown
Contributor

@tmckayus tmckayus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

infra/ci lgtm

jameslamb and others added 5 commits September 26, 2025 13:33
Fixes two small packaging issues with `cuopt-server`:

* removes unnecessary dependency on `httpx` (`cuopt-server` does not use this)
* declares dependency on `psutil` (this is declared in wheels but was missing in conda packages)

## Notes for Reviewers

### How I found these

Was looking at the conda recipes and checked these things, similar to this:

```shell
git grep httpx
```

#

Authors:
  - James Lamb (https://github.com/jameslamb)

Approvers:
  - Ramakrishnap (https://github.com/rgsl888prabhu)

URL: #413
This dataset was disabled in PR #335 since the website was down, the services have been restored as of now, so enabling this back.

And also adding details to README to benchmark mittleman and miplib.

## Issue
#335

Authors:
  - Ramakrishnap (https://github.com/rgsl888prabhu)

Approvers:
  - Rajesh Gandham (https://github.com/rg20)

URL: #414
Adds 2 more video links to docs

Authors:
  - Ramakrishnap (https://github.com/rgsl888prabhu)

Approvers:
  - Trevor McKay (https://github.com/tmckayus)

URL: #416
Copy link
Copy Markdown
Contributor

@nguidotti nguidotti left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great work Alice! The code looks good to me. I left a few suggestions below.

Comment thread cpp/src/mip/local_search/local_search.cu Outdated
Comment thread cpp/src/mip/diversity/population.cu
Comment thread cpp/src/mip/local_search/rounding/simple_rounding.cu Outdated
Comment thread cpp/src/mip/local_search/rounding/simple_rounding.cu Outdated
@aliceb-nv
Copy link
Copy Markdown
Contributor Author

/ok to test acaa643

@aliceb-nv
Copy link
Copy Markdown
Contributor Author

/ok to test bb86c49

@rg20
Copy link
Copy Markdown
Contributor

rg20 commented Sep 29, 2025

/merge

@rapids-bot rapids-bot bot merged commit dbc994f into branch-25.10 Sep 29, 2025
257 of 260 checks passed
@rg20 rg20 removed the request for review from vyasr September 29, 2025 15:45
@rgsl888prabhu rgsl888prabhu deleted the merge-progressive branch October 29, 2025 16:24
jieyibi pushed a commit to yining043/cuopt that referenced this pull request Mar 26, 2026
This PR introduces a host-side implementation of Feasibility Jump 2.0 (Efficient Local Search), with CPU-specific tweaks and optimizations. This heuristic is run in parallel with GPU FJ during local search, and the best resulting solution is picked. 

Also included in this PR:

- Implementation of the simple rounding algorithm (up/down-lock based rounding, cf. "Rounding and Propagation Heuristics for Mixed Integer Programming")
- Some crash/assert trigger fixes
- Minor hyperparameter tuning
- `build.sh` option to emit lineinfo for host source files

**Benchmark results:**

Main branch [53d6e74](NVIDIA@53d6e74):
```
Regression Baseline Summary (Time Limit: 600s):
  Feasible instances: 221/240
  Average gap: 0.207478
  Average integral: 0.261499
```
[Excel results](https://docs.google.com/spreadsheets/d/1caQCORK0n-1ynOpxkIrt00rq6mKiAhg2/edit?usp=drive_link&ouid=101768445160958513821&rtpof=true&sd=true)

PR (cad9773):
```
cuopt 600s: 
feasible 222/240 
gap 0.176733 
integral 0.241953
```
[Excel results](https://docs.google.com/spreadsheets/d/1qt1dIjp-FNBaNQwFiQ2Fdzx1hOAyc8et/edit?usp=drive_link&ouid=101768445160958513821&rtpof=true&sd=true)

closes NVIDIA#360

Authors:
  - Alice Boucher (https://github.com/aliceb-nv)
  - Akif ÇÖRDÜK (https://github.com/akifcorduk)
  - Kumar Aatish (https://github.com/kaatish)
  - Rajesh Gandham (https://github.com/rg20)
  - Hugo Linsenmaier (https://github.com/hlinsen)
  - Ramakrishnap (https://github.com/rgsl888prabhu)
  - Ishika Roy (https://github.com/Iroy30)
  - James Lamb (https://github.com/jameslamb)

Approvers:
  - Trevor McKay (https://github.com/tmckayus)
  - Rajesh Gandham (https://github.com/rg20)

URL: NVIDIA#405
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

improvement Improves an existing functionality non-breaking Introduces a non-breaking change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] Feasibility Jump makes some solutions infeasible

10 participants