Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
314 commits
Select commit Hold shift + click to select a range
c60a47a
put dv formation on the GPU
Kh4ster Aug 22, 2025
d101565
Implement dv residual, dual residual, dw formation/residual, wv residual
hlinsen Aug 25, 2025
eac743b
move diag inv diag and diag sqrt to the gpu
Kh4ster Aug 25, 2025
280136f
add diag and inv diag gpu data to barrier and removed all copies appa…
Kh4ster Aug 25, 2025
6b23ec8
remove tmp device bound rhs but copy needs to be removed
Kh4ster Aug 25, 2025
52c235d
remove tmp device x but copy needs to be removed
Kh4ster Aug 25, 2025
b725545
remove tmp device z but copy needs to be removed
Kh4ster Aug 25, 2025
b31014f
remove tmp device w and v but copy needs to be removed
Kh4ster Aug 25, 2025
a6e12e2
remove tmp device upper_bounds but copy needs to be removed
Kh4ster Aug 25, 2025
5739158
remove tmp device tmp3 r1 r1_primle dy and dual residual but copy nee…
Kh4ster Aug 25, 2025
6d3dbd1
remove tmp device tmp4
Kh4ster Aug 25, 2025
64ffcfa
remove tmp device h but one host copy remains until solve adat is on …
Kh4ster Aug 25, 2025
2f28ead
remove tmp device dx but one host copy remains
Kh4ster Aug 25, 2025
53e6515
remove tmp device complementarity_xz_rhs complementarity_wv_rhs dual …
Kh4ster Aug 25, 2025
ba0ef1a
Fix d_dx residual
hlinsen Aug 25, 2025
4b1d94f
Merge branch 'chris-barrier' of github.com:Kh4ster/nvidia_cuopt into …
hlinsen Aug 25, 2025
fb59b8a
remove tmp device dz and dv but copies to host after write
Kh4ster Aug 25, 2025
c152c9e
remove tmp device y_residual
Kh4ster Aug 25, 2025
650eaf8
remove tmp dx_residual
Kh4ster Aug 25, 2025
0e40e48
remove tmp device dw
Kh4ster Aug 25, 2025
27adfa2
moved another uncessary copy in the debug code
Kh4ster Aug 25, 2025
c11e28f
Fill x values after resize
hlinsen Aug 26, 2025
4a5b07b
Remove device to device dw_residual copy
hlinsen Aug 26, 2025
a1007c5
Remove copy for d_wv_residual
hlinsen Aug 26, 2025
7e52044
Move xz residual to gpu
hlinsen Aug 26, 2025
10950b8
Remove dv copy in dv_residual block
hlinsen Aug 26, 2025
8507a80
removed all the size checking since it's already performed by resize
Kh4ster Aug 26, 2025
8c2226e
cleanup: add debug flag to pop range, allocate gpu data only if gpu m…
Kh4ster Aug 26, 2025
a040101
add more nvtx ranges and tmp fix using scoped ranges
Kh4ster Aug 26, 2025
78d2629
remove forgotten print
Kh4ster Aug 26, 2025
bb19101
more nvtx ranges
Kh4ster Aug 26, 2025
079c46e
move code after first compute_search_direction to the gpu
Kh4ster Aug 26, 2025
f839875
Implement after second compute search direction
hlinsen Aug 27, 2025
0b974e9
improve gpu_adat_multiply to remove the sync and tmp data creation + …
Kh4ster Aug 27, 2025
a2419da
move form_adat fully to the gpu and optimized scale columns kernel
Kh4ster Aug 27, 2025
99e015b
more nvtx ranges
Kh4ster Aug 27, 2025
d7471b8
implement gpu compute residuals
hlinsen Aug 27, 2025
a71c9d8
Reduce mu on device
hlinsen Aug 27, 2025
ca8787e
Implement inner product on gpu
hlinsen Aug 28, 2025
8c5681c
Clean up compute search direction
hlinsen Aug 28, 2025
4715d8c
fix wrong size given with permutation iterator
Kh4ster Aug 28, 2025
b8f045c
solve call with only device uvector, still not proted the path with d…
Kh4ster Aug 28, 2025
0cf9f5f
add presolve option to run pdlp
Kh4ster Aug 28, 2025
2ca18bc
removed atomic and other unused parameters
Kh4ster Aug 28, 2025
ffc8bd5
add a sync after the dot products
Kh4ster Aug 28, 2025
fa25ae9
First stab at folding. Correctly solves example in paper. neos5 is in…
chris-maes Aug 28, 2025
6bbe119
use pinned memory allocator for data often used on the host and device
Kh4ster Aug 28, 2025
f2839ee
add missing header
Kh4ster Aug 28, 2025
d9597da
Remove complementarity xz/wv copy
hlinsen Aug 28, 2025
a3466bd
Remove core buffers device to device copies after compute search
hlinsen Aug 28, 2025
d8d8315
Remove unecessary copies in vector ops
hlinsen Aug 28, 2025
3c7d0f2
Fix merge conflicts
hlinsen Aug 28, 2025
3def7af
Push all colors on the stack. Makes neos5 work
chris-maes Aug 29, 2025
5a95c62
remove removed file in cmake
Kh4ster Aug 29, 2025
4cc224b
fix problem where using cuopt host copy would go through a regular ve…
Kh4ster Aug 29, 2025
1c415b3
renamed the pinned allocator accordingly
Kh4ster Aug 29, 2025
edac146
fix add sync after async copies, fixed more pageable host copies
Kh4ster Aug 29, 2025
7c343af
moved c to a non tmp variable and removed one useless copy, moved b a…
Kh4ster Aug 29, 2025
68d9602
remove duplicate nvtx range
Kh4ster Aug 29, 2025
58d1aad
Add missing file
hlinsen Aug 29, 2025
9d0ae50
Fix dual objective compute
hlinsen Aug 29, 2025
1f24cc1
Fix merge conflicts
hlinsen Aug 29, 2025
a36dcf2
Disable print outs and debug code
chris-maes Aug 29, 2025
76e4e79
Refactor coloring code
chris-maes Aug 29, 2025
0c4b280
Factor out color_graph
chris-maes Aug 29, 2025
fa14c6f
Change queue type
chris-maes Aug 29, 2025
7589bd4
Avoid expensive copy of vertices
chris-maes Aug 29, 2025
2ca38d9
Fix uncorrect copy and remove unecessary allocation
hlinsen Sep 2, 2025
223a5b7
Fix debug mode
hlinsen Sep 2, 2025
f8ed85c
Fix diag computation
hlinsen Sep 3, 2025
8b982ee
Don't push largest new color on the stack. Should give log(n) complexity
chris-maes Sep 3, 2025
87266b5
remove old comment. Using an unordered_set should give better complexity
chris-maes Sep 3, 2025
de4865e
Updates to cuDSS to use multithreading for reordering. And print out …
chris-maes Sep 3, 2025
7ae312b
Fast return if coloring exceeds threshold on number of colors
chris-maes Sep 4, 2025
8d5192e
Change the way we compute row/column sums. a2864 coloring goes from 8…
chris-maes Sep 4, 2025
5e3858d
deps
rgsl888prabhu Sep 4, 2025
5d2a1c6
Merge branch 'add_cudss' of github.com:rgsl888prabhu/cuopt_public int…
rgsl888prabhu Sep 4, 2025
76da740
Add MT
rgsl888prabhu Sep 4, 2025
fd08386
add cahnges
rgsl888prabhu Sep 4, 2025
6eaa72a
add changes to supply libname to .cu
rgsl888prabhu Sep 4, 2025
5c49c4d
Switch to using streams to allow for concurrent runs
chris-maes Sep 4, 2025
15a21f0
Cherry-pick experimental version of augmented system
chris-maes Sep 4, 2025
276f1e4
Cherry-pick Make augmented system SQD. Use iterative refinement to r…
chris-maes Aug 26, 2025
fdeec8b
Don't use AMD ordering
chris-maes Aug 26, 2025
535013f
Fixes inside of compute_search_direction
chris-maes Sep 5, 2025
f55385c
Add missing sync
chris-maes Sep 5, 2025
af10c44
Merge branch 'folding' into barrier
chris-maes Sep 5, 2025
1cc8def
Add many checks to improve concurrent solve time
chris-maes Sep 5, 2025
05c8f51
Propagate folding parameter
chris-maes Sep 5, 2025
5dbe0db
Switch between augmented and ADAT based on parameter
chris-maes Sep 8, 2025
d056670
Switch from atomic to volatile int
chris-maes Sep 9, 2025
8cf0bb3
Send an user interrupt to cuDSS. Respond to halt in dense column code
chris-maes Sep 9, 2025
ec83e35
Clean up thread layer env var. Only set interrupt in 0.7
chris-maes Sep 9, 2025
512e50d
Fix bdry2 regression for old tolerance settings
hlinsen Sep 10, 2025
73b0cc9
Fixes for cuDSS
chris-maes Sep 11, 2025
1063531
Fix missing stream argument--causing issues for PDLP graph capture
chris-maes Sep 15, 2025
75b0430
Fix another stream argument
hlinsen Sep 15, 2025
b9164f1
Fix inclusive sum stream argument
hlinsen Sep 15, 2025
4dc827e
Fix merge conflicts
hlinsen Sep 17, 2025
aad443b
Add nvtx ranges for presolve
hlinsen Sep 17, 2025
af1d858
Fix bug where total number of colors is greater than max colors in co…
chris-maes Sep 16, 2025
a711422
Switch to augmented automatically
chris-maes Sep 17, 2025
53b4f45
Don't complain when cuDSS stopped during solve or factorize
chris-maes Sep 18, 2025
0b3a818
Use AMD when ADAT is dense
chris-maes Sep 18, 2025
b0cff9a
Fix reduced costs in crossover
chris-maes Sep 18, 2025
55b72c8
Use relaxed tolerance from PDLP. Have separate barrier relative toler…
chris-maes Sep 22, 2025
442fb9a
Fix dual solution when presolve removed empty rows
chris-maes Sep 22, 2025
7826f74
Use hypersparse solves in crossover
chris-maes Sep 22, 2025
b54a63a
Only save if better. Clarify presolve logs
chris-maes Sep 22, 2025
d35f8f5
Merge branch 'branch-25.10' into add_cudss
rgsl888prabhu Sep 22, 2025
88e9ce2
update
rgsl888prabhu Sep 22, 2025
0fe4204
Clean up log files
chris-maes Sep 22, 2025
d1b6eed
Merge branch 'branch-25.10' into barrier
chris-maes Sep 22, 2025
d7ce74c
Add in determinisitic mode for cuDSS. Don't use the gpu when computin…
chris-maes Sep 23, 2025
dc8b724
Add rmm mem handler for cudss
hlinsen Sep 23, 2025
7d18344
Fix performance bug: was doing O(# of colors) work at each refinement…
chris-maes Sep 23, 2025
48963ed
Merge branch 'barrier' of github.com:chris-maes/cuopt into gpu-barrier
hlinsen Sep 23, 2025
2e141c5
Turn down threshold to 50%. Dont attempt to fold big problems
chris-maes Sep 23, 2025
6a47e0c
Merge branch 'barrier' of github.com:chris-maes/cuopt into gpu-barrier
hlinsen Sep 23, 2025
111133c
Preload analyze phase
hlinsen Sep 23, 2025
2532790
Make folding a proper presolve reduction
chris-maes Sep 24, 2025
f9a6fb3
Don't solve reduced problem twice
chris-maes Sep 24, 2025
32bb1ab
Take into account barrier presolve time in barrier cumulative time
chris-maes Sep 24, 2025
e2157e3
Merge branch 'barrier' of github.com:chris-maes/cuopt into gpu-barrier
hlinsen Sep 24, 2025
58b1495
Merge branch 'barrier' of github.com:chris-maes/cuopt into gpu-barrier
hlinsen Sep 24, 2025
246b557
Use cuda api instead of rmm
hlinsen Sep 24, 2025
e4a4557
Merge branch 'gpu-barrier' of github.com:hlinsen/cuopt into gpu-barrier
hlinsen Sep 24, 2025
eeda746
Remove preload of cudss
hlinsen Sep 24, 2025
972d3d5
Fixes to cusparse_view to ensure determinism in cuSparse spMv. Fix bu…
chris-maes Sep 24, 2025
a92d3ff
Clean up folding. Fix bug in check_for_suboptimal
chris-maes Sep 25, 2025
cab64d5
Add setting to put cuDSS in deterministic mode
chris-maes Sep 25, 2025
e7ad1b5
Merge commit '88e9ce27126db84b80c8ff35a9359d08298da8b8' into barrier
chris-maes Sep 26, 2025
a12a882
Merge remote-tracking branch 'cuopt-nvidia/branch-25.10' into barrier
chris-maes Sep 26, 2025
abe66f0
style fixes
chris-maes Sep 26, 2025
c8ec9ca
Add ability to dualize problem in presolve
chris-maes Sep 26, 2025
4986e57
remove cudss deps in cuda13
rgsl888prabhu Sep 26, 2025
1a0fd5a
fix recipe
rgsl888prabhu Sep 26, 2025
6cbb4d4
Make barrier not work with CUDA 13
chris-maes Sep 26, 2025
4ee40d3
We cant handle nonzero lower bounds in dualize yet. Skip problems tha…
chris-maes Sep 26, 2025
5da6f7d
Fix preprocessor logic
chris-maes Sep 26, 2025
28c3a5a
Style fixes
chris-maes Sep 26, 2025
747260d
Merge remote-tracking branch 'cuopt-nvidia/branch-25.10' into barrier
chris-maes Sep 26, 2025
2c4384d
Tweaks to dualize heuristic
chris-maes Sep 26, 2025
e4dc8e0
Style fixes
chris-maes Sep 27, 2025
48eb46b
Eliminate empty rows/cols before handling free variables. Fixes for o…
chris-maes Sep 29, 2025
7769c78
Disable dualizing in presolve until postsolve is there
chris-maes Sep 29, 2025
9804dc7
Style fixes
chris-maes Sep 29, 2025
c598c6e
Merge remote-tracking branch 'origin/branch-25.10' into barrier
chris-maes Sep 29, 2025
c306c1a
Remove debug flags
chris-maes Sep 29, 2025
a76ee45
Style fix
chris-maes Sep 29, 2025
b531d49
Refactor folding and barrier
chris-maes Sep 29, 2025
d23407b
Style fixes
chris-maes Sep 29, 2025
c3d4509
Move member variables from barrier to iteration_data
chris-maes Sep 29, 2025
b0a90a1
Style fixes
chris-maes Sep 29, 2025
075f61a
Move more member variables
chris-maes Sep 29, 2025
7cd534d
Style fixes
chris-maes Sep 29, 2025
b369631
Move more member variables
chris-maes Sep 29, 2025
c51dd97
Style fixes
chris-maes Sep 29, 2025
ffd363a
Move more member variables
chris-maes Sep 29, 2025
7f10268
Style fixes
chris-maes Sep 29, 2025
059f5cf
Move more member variables
chris-maes Sep 29, 2025
caa5daf
Style fixes
chris-maes Sep 29, 2025
e5cb5e1
add python and server updates
Iroy30 Sep 30, 2025
e01df1f
Move pcg and iterative refinement to separate files. Style fixes
chris-maes Sep 30, 2025
51c0436
Add green ctx and eager mode for concurrent
hlinsen Sep 30, 2025
7d5893c
Add unit tests. Don't call AMD on 1x1 matrices -- it crashes
chris-maes Sep 30, 2025
de5208c
Merge remote-tracking branch 'origin/branch-25.10' into barrier
chris-maes Sep 30, 2025
d1169e2
Reconstruct primal solution from dual solution when dualizing
chris-maes Oct 1, 2025
8ca2e79
Enable dualizing by default
chris-maes Oct 1, 2025
906488f
Style fixes
chris-maes Oct 1, 2025
e3c66bd
Use 75% sm split
hlinsen Oct 1, 2025
251a7b0
update path
rgsl888prabhu Oct 1, 2025
e203d18
fix style
rgsl888prabhu Oct 1, 2025
98956d9
add MT to target link as well
rgsl888prabhu Oct 1, 2025
6adfd47
Make exits asserts in barrier.cu
chris-maes Oct 1, 2025
2d1b831
Merge remote-tracking branch 'chris_fork/barrier' into barrier
chris-maes Oct 1, 2025
98dba83
Style fixes
chris-maes Oct 1, 2025
d0c856b
Use AMD only for 5% dense problems
chris-maes Oct 1, 2025
495713a
Merge branch 'barrier' of github.com:chris-maes/cuopt into gpu-barrier
hlinsen Oct 1, 2025
3a47e3e
Re-disable cudss with cuda 13
hlinsen Oct 1, 2025
36e3f78
Re-disable cudss with cuda 13
hlinsen Oct 1, 2025
4c838ac
Remove stray printf
chris-maes Oct 1, 2025
a919970
Clean up sparse matrix kernels
hlinsen Oct 1, 2025
312feb3
Merge branch 'barrier' of github.com:chris-maes/cuopt into gpu-barrier
hlinsen Oct 1, 2025
8805dd0
Don't print info on SM split
chris-maes Oct 1, 2025
22b62c9
Merge remote-tracking branch 'chris_fork/barrier' into barrier
chris-maes Oct 1, 2025
4603b78
Temporarily disable destroy
hlinsen Oct 2, 2025
143c858
fixes
rgsl888prabhu Oct 2, 2025
d8e42fc
style fix
rgsl888prabhu Oct 2, 2025
1efc4c2
Enable cudss for cuda 13
rgsl888prabhu Oct 2, 2025
6f97e16
update CI fix
rgsl888prabhu Oct 2, 2025
b89b69e
fix stream issue
rgsl888prabhu Oct 2, 2025
e578fcd
Add driver check
hlinsen Oct 2, 2025
9455a2a
Merge branch 'branch-25.10' of github.com:NVIDIA/cuopt into gpu-barrier
hlinsen Oct 2, 2025
c7dfe8d
Merge pull request #1 from rgsl888prabhu/barrier_update
chris-maes Oct 2, 2025
c49ba24
Don't run barrier in this test
chris-maes Oct 2, 2025
0b069a7
Fix style
chris-maes Oct 2, 2025
e3c6408
Attempt to fix compliation errors
chris-maes Oct 2, 2025
52c3094
Fix link errors for CUDA 12
rg20 Oct 2, 2025
5846db0
Attempt to resolve another compiler error
chris-maes Oct 2, 2025
1e08d4f
Merge branch 'barrier' into barrier_update_2
chris-maes Oct 2, 2025
71df82d
Merge pull request #2 from rgsl888prabhu/barrier_update_2
chris-maes Oct 2, 2025
25e24c0
Merge remote-tracking branch 'origin/branch-25.10' into barrier
chris-maes Oct 3, 2025
ed3820e
Another fix. Did I already apply?
chris-maes Oct 3, 2025
418b73e
Merge remote-tracking branch 'chris_fork/barrier' into barrier
chris-maes Oct 3, 2025
0e324af
add python test for barrier
Iroy30 Oct 3, 2025
b385402
Merge remote-tracking branch 'origin/barrier' into barrier
Iroy30 Oct 3, 2025
2607cd9
Update test_lp_solver.py
Iroy30 Oct 3, 2025
4015f61
fix style check
Iroy30 Oct 3, 2025
e219c16
fix style check
Iroy30 Oct 3, 2025
1d556b0
Merge remote-tracking branch 'origin/barrier' into barrier
Iroy30 Oct 3, 2025
b38299e
Try to stop build link checker complaining about linking against libc…
chris-maes Oct 3, 2025
2903578
Merge remote-tracking branch 'chris_fork/barrier' into barrier
chris-maes Oct 3, 2025
4da1759
Merge remote-tracking branch 'origin/branch-25.10' into barrier
chris-maes Oct 3, 2025
762b969
Add build fixes
rgsl888prabhu Oct 3, 2025
8eeafef
update libcuopt install
rgsl888prabhu Oct 3, 2025
f6b5f3f
address review comments
rgsl888prabhu Oct 3, 2025
446f26b
Enable barrier for CUDA 13 now that cuDSS 0.7 is available
chris-maes Oct 3, 2025
e621f38
Merge remote-tracking branch 'chris_fork/barrier' into barrier
chris-maes Oct 3, 2025
610ddf2
Merge remote-tracking branch 'origin/branch-25.10' into barrier
chris-maes Oct 3, 2025
48a92b0
Style fixes
chris-maes Oct 3, 2025
9970ce9
Remove cruft
chris-maes Oct 3, 2025
e0437c4
Update python/libcuopt/pyproject.toml
chris-maes Oct 3, 2025
f8fbda1
Update conda/recipes/libcuopt/recipe.yaml
chris-maes Oct 3, 2025
2a3301e
Update conda/recipes/libcuopt/recipe.yaml
chris-maes Oct 3, 2025
610c122
Update conda/recipes/libcuopt/recipe.yaml
chris-maes Oct 3, 2025
59b80f6
Merge remote-tracking branch 'chris_fork/barrier' into barrier
chris-maes Oct 3, 2025
6d4364b
Remove commented lines
chris-maes Oct 3, 2025
6588e8b
Alphabetize
chris-maes Oct 3, 2025
f074c57
Revert unintentional flag change
chris-maes Oct 3, 2025
83702ea
address cmake
rgsl888prabhu Oct 3, 2025
3785eea
Merge remote-tracking branch 'origin/branch-25.10' into barrier
chris-maes Oct 3, 2025
1d352bd
fix style
rgsl888prabhu Oct 3, 2025
3587b98
address review comments
rgsl888prabhu Oct 3, 2025
66ddb50
Add ordering parameter. Try to fix 13 compiler error
chris-maes Oct 3, 2025
8a6d684
Merge remote-tracking branch 'chris_fork/barrier' into barrier
chris-maes Oct 3, 2025
318fb19
Disable green ctx to try to get through the build
chris-maes Oct 3, 2025
084e8c8
Style fixes
chris-maes Oct 3, 2025
e8164ed
Try RAFT_CUDA_TRY
chris-maes Oct 3, 2025
875e6e9
fix cuda version check
rgsl888prabhu Oct 4, 2025
be303ac
update vault
rgsl888prabhu Oct 4, 2025
b90b716
Update update_rockylinux_repo.sh
rgsl888prabhu Oct 4, 2025
22e0421
Update update_rockylinux_repo.sh
rgsl888prabhu Oct 4, 2025
53e7771
Update install_boost_tbb.sh
rgsl888prabhu Oct 4, 2025
03035db
Update install_cudss.sh
rgsl888prabhu Oct 4, 2025
42d4e8e
fix Rocky linux update
rgsl888prabhu Oct 4, 2025
edbf29c
fix rpath issue
rgsl888prabhu Oct 5, 2025
d3dd52a
Disable more things to get PR to build
chris-maes Oct 5, 2025
bc5ef06
Attempt to fix python build errors
chris-maes Oct 5, 2025
fc90fed
Set default values
chris-maes Oct 6, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions benchmarks/linear_programming/cuopt/run_pdlp.cu
Original file line number Diff line number Diff line change
Expand Up @@ -63,10 +63,10 @@ static void parse_arguments(argparse::ArgumentParser& program)
program.add_argument("--method")
.help(
"Method to solve the linear programming problem. 0: Concurrent (default), 1: PDLP, 2: "
"DualSimplex")
"DualSimplex, 3: Barrier")
.default_value(0)
.scan<'i', int>()
.choices(0, 1, 2);
.choices(0, 1, 2, 3);

program.add_argument("--crossover")
.help("Enable crossover. 0: disabled (default), 1: enabled")
Expand All @@ -79,6 +79,12 @@ static void parse_arguments(argparse::ArgumentParser& program)
"Path to PDLP hyper-params file to configure PDLP solver. Has priority over PDLP solver "
"modes.");

program.add_argument("--presolve")
.help("enable/disable presolve (default: true for MIP problems, false for LP problems)")
.default_value(0)
.scan<'i', int>()
.choices(0, 1);

program.add_argument("--solution-path").help("Path where solution file will be generated");
}

Expand Down Expand Up @@ -109,6 +115,7 @@ static cuopt::linear_programming::pdlp_solver_settings_t<int, double> create_sol
string_to_pdlp_solver_mode(program.get<std::string>("--pdlp-solver-mode"));
settings.method = static_cast<cuopt::linear_programming::method_t>(program.get<int>("--method"));
settings.crossover = program.get<int>("--crossover");
settings.presolve = program.get<int>("--presolve");

return settings;
}
Expand Down
10 changes: 10 additions & 0 deletions ci/build_wheel_cuopt.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,14 @@ set -euo pipefail

source rapids-init-pip

# Install rockylinux repo
if command -v dnf &> /dev/null; then
bash ci/utils/update_rockylinux_repo.sh
fi

# Install cudss
bash ci/utils/install_cudss.sh

package_dir="python/cuopt"
export SKBUILD_CMAKE_ARGS="-DCUOPT_BUILD_WHEELS=ON;-DDISABLE_DEPRECATION_WARNINGS=ON";

Expand All @@ -41,6 +49,8 @@ EXCLUDE_ARGS=(
--exclude "libraft.so"
--exclude "libcublas.so.*"
--exclude "libcublasLt.so.*"
--exclude "libcuda.so.1"
--exclude "libcudss.so.*"
--exclude "libcurand.so.*"
--exclude "libcusolver.so.*"
--exclude "libcusparse.so.*"
Expand Down
10 changes: 10 additions & 0 deletions ci/build_wheel_libcuopt.sh
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,11 @@ source rapids-init-pip
package_name="libcuopt"
package_dir="python/libcuopt"

# Install rockylinux repo
if command -v dnf &> /dev/null; then
bash ci/utils/update_rockylinux_repo.sh
fi

# Install Boost and TBB
bash ci/utils/install_boost_tbb.sh

Expand All @@ -34,6 +39,9 @@ else
echo "Building in release mode"
fi

# Install cudss
bash ci/utils/install_cudss.sh

rapids-logger "Generating build requirements"

CUOPT_MPS_PARSER_WHEELHOUSE=$(RAPIDS_PY_WHEEL_NAME="cuopt_mps_parser" rapids-download-wheels-from-github python)
Expand Down Expand Up @@ -62,6 +70,8 @@ EXCLUDE_ARGS=(
--exclude "libraft.so"
--exclude "libcublas.so.*"
--exclude "libcublasLt.so.*"
--exclude "libcuda.so.1"
--exclude "libcudss.so.*"
--exclude "libcurand.so.*"
--exclude "libcusolver.so.*"
--exclude "libcusparse.so.*"
Expand Down
2 changes: 0 additions & 2 deletions ci/utils/install_boost_tbb.sh
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,6 @@ if [ -f /etc/os-release ]; then
. /etc/os-release
if [[ "$ID" == "rocky" ]]; then
echo "Detected Rocky Linux. Installing Boost and TBB via dnf..."
dnf clean all
dnf -y update
dnf install -y epel-release
dnf install -y boost1.78-devel tbb-devel
if [[ "$(uname -m)" == "x86_64" ]]; then
Expand Down
34 changes: 34 additions & 0 deletions ci/utils/install_cudss.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#!/bin/bash

# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

set -euo pipefail

# Clean metadata & install cudss
if command -v dnf &> /dev/null; then
# Adding static library just to please CMAKE requirements
if [ "$(echo "$CUDA_VERSION" | cut -d. -f1)" -ge 13 ] && [ "$(echo "$CUDA_VERSION" | cut -d. -f1)" -lt 14 ]; then
dnf -y install libcudss0-static-cuda-13 libcudss0-devel-cuda-13 libcudss0-cuda-13
else
dnf -y install libcudss0-static-cuda-12 libcudss0-devel-cuda-12 libcudss0-cuda-12
fi
elif command -v apt-get &> /dev/null; then
apt-get update
apt-get install -y libcudss-devel
else
echo "Neither dnf nor apt-get found. Cannot install cudss dependencies."
exit 1
fi
88 changes: 88 additions & 0 deletions ci/utils/update_rockylinux_repo.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
#!/bin/bash

# SPDX-FileCopyrightText: Copyright (c) 2025, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

set -euo pipefail

REPO_DIR="/etc/yum.repos.d"

# Disable all existing Rocky repos to prevent mirror issues
for repo_file in ${REPO_DIR}/Rocky-*.repo; do
if [ -f "$repo_file" ]; then
sed -i 's/^enabled=1/enabled=0/g' "$repo_file"
fi
done

# Overwrite the main Rocky repos with stable URLs
# Using ONLY direct dl.rockylinux.org URLs (no mirrorlist) to avoid mirror sync issues
# This prevents DNF from trying unreliable/out-of-sync mirrors
cat <<'EOF' > ${REPO_DIR}/Rocky-BaseOS.repo
[baseos]
name=Rocky Linux 8.10 - BaseOS
baseurl=https://dl.rockylinux.org/pub/rocky/8.10/BaseOS/$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
retries=10
timeout=30
skip_if_unavailable=False
metadata_expire=1h
EOF

cat <<'EOF' > ${REPO_DIR}/Rocky-AppStream.repo
[appstream]
name=Rocky Linux 8.10 - AppStream
baseurl=https://dl.rockylinux.org/pub/rocky/8.10/AppStream/$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
retries=10
timeout=30
skip_if_unavailable=False
metadata_expire=1h
EOF

cat <<'EOF' > ${REPO_DIR}/Rocky-Extras.repo
[extras]
name=Rocky Linux 8.10 - Extras
baseurl=https://dl.rockylinux.org/pub/rocky/8.10/extras/$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
retries=10
timeout=30
skip_if_unavailable=False
metadata_expire=1h
EOF

# Clean DNF cache and refresh repository metadata with retry logic
dnf clean all

max_attempts=3
attempt=1
while [ $attempt -le $max_attempts ]; do
if dnf makecache --refresh; then
break
else
if [ $attempt -lt $max_attempts ]; then
sleep $((2 ** attempt))
else
echo "ERROR: Failed to refresh repository metadata after $max_attempts attempts"
exit 1
fi
fi
attempt=$((attempt + 1))
done
1 change: 1 addition & 0 deletions conda/environments/all_cuda-129_arch-aarch64.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ dependencies:
- gtest
- ipython
- jsonref==1.1.0
- libcudss-dev >=0.7
- libcurand-dev
- libcusolver-dev
- libcusparse-dev
Expand Down
1 change: 1 addition & 0 deletions conda/environments/all_cuda-129_arch-x86_64.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ dependencies:
- gtest
- ipython
- jsonref==1.1.0
- libcudss-dev >=0.7
- libcurand-dev
- libcusolver-dev
- libcusparse-dev
Expand Down
1 change: 1 addition & 0 deletions conda/environments/all_cuda-130_arch-aarch64.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ dependencies:
- gtest
- ipython
- jsonref==1.1.0
- libcudss-dev >=0.7
- libcurand-dev
- libcusolver-dev
- libcusparse-dev
Expand Down
1 change: 1 addition & 0 deletions conda/environments/all_cuda-130_arch-x86_64.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ dependencies:
- gtest
- ipython
- jsonref==1.1.0
- libcudss-dev >=0.7
- libcurand-dev
- libcusolver-dev
- libcusparse-dev
Expand Down
15 changes: 15 additions & 0 deletions conda/recipes/libcuopt/recipe.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,11 @@ cache:
- librmm =${{ dep_minor_version }}
- rapids-logger =0.1
- cuda-nvtx-dev
- libcudss-dev >=0.7
- libcurand-dev
- libcusparse-dev
- cuda-cudart-dev
- cuda-driver-dev
- boost
- tbb-devel
- zlib
Expand All @@ -87,6 +89,8 @@ outputs:
cmake --install cpp/libmps_parser/build
dynamic_linking:
overlinking_behavior: "error"
missing_dso_allowlist:
- libcuda.so.1
prefix_detection:
ignore:
# See https://github.com/rapidsai/build-planning/issues/160
Expand All @@ -111,6 +115,7 @@ outputs:
- cuda-version
- gtest
- libcurand
- libcudss
- libcusparse
- librmm
- libzlib
Expand All @@ -133,6 +138,8 @@ outputs:
cmake --install cpp/build
dynamic_linking:
overlinking_behavior: "error"
missing_dso_allowlist:
- libcuda.so.1
prefix_detection:
ignore:
# See https://github.com/rapidsai/build-planning/issues/160
Expand All @@ -149,20 +156,24 @@ outputs:
- rapids-logger =0.1
- librmm =${{ dep_minor_version }}
- cuda-cudart-dev
- cuda-driver-dev
- libcublas
- libcudss-dev >=0.7
- libcusparse-dev
run:
- ${{ pin_compatible("cuda-version", upper_bound="x", lower_bound="x") }}
- ${{ pin_subpackage("libmps-parser", exact=True) }}
- boost
- librmm =${{ dep_minor_version }}
- cuda-nvrtc
- libcudss
ignore_run_exports:
by_name:
- cuda-cudart
- cuda-nvtx
- cuda-version
- gtest
- libcudss
- libcurand
- libcusparse
- librmm
Expand All @@ -187,6 +198,8 @@ outputs:
cmake --install cpp/build --component testing
dynamic_linking:
overlinking_behavior: "error"
missing_dso_allowlist:
- libcuda.so.1
string: cuda${{ cuda_major }}_${{ date_string }}_${{ head_rev }}
requirements:
build:
Expand All @@ -200,6 +213,7 @@ outputs:
- gtest ${{ gtest_version }}
- cuda-cudart-dev
- libcublas
- libcudss-dev >=0.7
- libcusparse-dev
run:
- gmock ${{ gtest_version }}
Expand All @@ -214,6 +228,7 @@ outputs:
- gtest
- libcurand
- libcusparse
- libcudss
- librmm
- libboost
- libboost_iostreams
Expand Down
Loading