Skip to content

Commit 3475ced

Browse files
committed
Fix errors introduced in update to latest release/26.02
1 parent 0e70c61 commit 3475ced

4 files changed

Lines changed: 49 additions & 41 deletions

File tree

cpp/src/linear_programming/solve.cu

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1771,7 +1771,14 @@ optimization_problem_solution_t<i_t, f_t> solve_lp(raft::handle_t const* handle_
17711771
bool problem_checking, \
17721772
bool use_pdlp_solver_mode); \
17731773
\
1774-
template void set_pdlp_solver_mode(pdlp_solver_settings_t<int, F_TYPE> const& settings);
1774+
template optimization_problem_solution_t<int, F_TYPE> batch_pdlp_solve( \
1775+
raft::handle_t const* handle_ptr, \
1776+
const cuopt::mps_parser::mps_data_model_t<int, F_TYPE>& mps_data_model, \
1777+
const std::vector<int>& fractional, \
1778+
const std::vector<F_TYPE>& root_soln_x, \
1779+
pdlp_solver_settings_t<int, F_TYPE> const& settings); \
1780+
\
1781+
template void set_pdlp_solver_mode(pdlp_solver_settings_t<int, F_TYPE>& settings);
17751782

17761783
#if MIP_INSTANTIATE_FLOAT
17771784
INSTANTIATE(float)

cpp/src/linear_programming/solver_solution.cu

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ optimization_problem_solution_t<i_t, f_t>::optimization_problem_solution_t(
2929
dual_solution_(std::make_unique<rmm::device_uvector<f_t>>(0, stream_view)),
3030
reduced_cost_(std::make_unique<rmm::device_uvector<f_t>>(0, stream_view)),
3131
is_device_memory_(true),
32-
termination_status_(termination_status),
32+
termination_status_{{termination_status}},
3333
error_status_(cuopt::logic_error("", cuopt::error_type_t::Success))
3434
{
3535
cuopt_assert(termination_stats_.size() == termination_status_.size(),
@@ -43,7 +43,7 @@ optimization_problem_solution_t<i_t, f_t>::optimization_problem_solution_t(
4343
dual_solution_(std::make_unique<rmm::device_uvector<f_t>>(0, stream_view)),
4444
reduced_cost_(std::make_unique<rmm::device_uvector<f_t>>(0, stream_view)),
4545
is_device_memory_(true),
46-
termination_status_(pdlp_termination_status_t::NoTermination),
46+
termination_status_{{pdlp_termination_status_t::NoTermination}},
4747
error_status_(error_status_)
4848
{
4949
cuopt_assert(termination_stats_.size() == termination_status_.size(),
@@ -58,7 +58,7 @@ optimization_problem_solution_t<i_t, f_t>::optimization_problem_solution_t(
5858
dual_solution_host_(std::make_unique<std::vector<f_t>>()),
5959
reduced_cost_host_(std::make_unique<std::vector<f_t>>()),
6060
is_device_memory_(false),
61-
termination_status_(termination_status),
61+
termination_status_{{termination_status}},
6262
error_status_(cuopt::logic_error("", cuopt::error_type_t::Success))
6363
{
6464
}
@@ -71,7 +71,7 @@ optimization_problem_solution_t<i_t, f_t>::optimization_problem_solution_t(
7171
dual_solution_host_(std::make_unique<std::vector<f_t>>()),
7272
reduced_cost_host_(std::make_unique<std::vector<f_t>>()),
7373
is_device_memory_(false),
74-
termination_status_(pdlp_termination_status_t::NoTermination),
74+
termination_status_{{pdlp_termination_status_t::NoTermination}},
7575
error_status_(error_status)
7676
{
7777
}
@@ -85,8 +85,8 @@ optimization_problem_solution_t<i_t, f_t>::optimization_problem_solution_t(
8585
const std::string objective_name,
8686
const std::vector<std::string>& var_names,
8787
const std::vector<std::string>& row_names,
88-
additional_termination_information_t& termination_stats,
89-
pdlp_termination_status_t termination_status)
88+
std::vector<additional_termination_information_t>&& termination_stats,
89+
std::vector<pdlp_termination_status_t>&& termination_status)
9090
: primal_solution_(std::make_unique<rmm::device_uvector<f_t>>(std::move(final_primal_solution))),
9191
dual_solution_(std::make_unique<rmm::device_uvector<f_t>>(std::move(final_dual_solution))),
9292
reduced_cost_(std::make_unique<rmm::device_uvector<f_t>>(std::move(final_reduced_cost))),
@@ -95,8 +95,8 @@ optimization_problem_solution_t<i_t, f_t>::optimization_problem_solution_t(
9595
objective_name_(objective_name),
9696
var_names_(std::move(var_names)),
9797
row_names_(std::move(row_names)),
98-
termination_stats_(termination_stats),
99-
termination_status_(termination_status),
98+
termination_stats_(std::move(termination_stats)),
99+
termination_status_(std::move(termination_status)),
100100
error_status_(cuopt::logic_error("", cuopt::error_type_t::Success))
101101
{
102102
cuopt_assert(termination_stats_.size() == termination_status_.size(),
@@ -111,13 +111,13 @@ optimization_problem_solution_t<i_t, f_t>::optimization_problem_solution_t(
111111
const std::string objective_name,
112112
const std::vector<std::string>& var_names,
113113
const std::vector<std::string>& row_names,
114-
additional_termination_information_t& termination_stats,
115-
pdlp_termination_status_t termination_status)
114+
std::vector<additional_termination_information_t>&& termination_stats,
115+
std::vector<pdlp_termination_status_t>&& termination_status)
116116
: primal_solution_(std::make_unique<rmm::device_uvector<f_t>>(std::move(final_primal_solution))),
117117
dual_solution_(std::make_unique<rmm::device_uvector<f_t>>(std::move(final_dual_solution))),
118118
reduced_cost_(std::make_unique<rmm::device_uvector<f_t>>(std::move(final_reduced_cost))),
119119
is_device_memory_(true),
120-
termination_status_(termination_status),
120+
termination_status_(std::move(termination_status)),
121121
termination_stats_(std::move(termination_stats)),
122122
objective_name_(objective_name),
123123
var_names_(std::move(var_names)),
@@ -147,8 +147,8 @@ optimization_problem_solution_t<i_t, f_t>::optimization_problem_solution_t(
147147
reduced_cost_(
148148
std::make_unique<rmm::device_uvector<f_t>>(final_reduced_cost, handler_ptr->get_stream())),
149149
is_device_memory_(true),
150-
termination_status_(termination_status),
151-
termination_stats_(termination_stats),
150+
termination_status_{{termination_status}},
151+
termination_stats_{{termination_stats}},
152152
objective_name_(objective_name),
153153
var_names_(var_names),
154154
row_names_(row_names),
@@ -171,8 +171,8 @@ optimization_problem_solution_t<i_t, f_t>::optimization_problem_solution_t(
171171
dual_solution_host_(std::make_unique<std::vector<f_t>>(std::move(dual_solution))),
172172
reduced_cost_host_(std::make_unique<std::vector<f_t>>(std::move(reduced_cost))),
173173
is_device_memory_(false),
174-
termination_status_(termination_status),
175-
termination_stats_(std::move(termination_stats)),
174+
termination_status_{{termination_status}},
175+
termination_stats_{{termination_stats}},
176176
objective_name_(objective_name),
177177
var_names_(var_names),
178178
row_names_(row_names),
@@ -625,7 +625,7 @@ template <typename i_t, typename f_t>
625625
void optimization_problem_solution_t<i_t, f_t>::set_termination_stats(
626626
const additional_termination_information_t& stats)
627627
{
628-
termination_stats_ = stats;
628+
termination_stats_[0] = stats;
629629
}
630630

631631
//============================================================================
@@ -635,43 +635,43 @@ void optimization_problem_solution_t<i_t, f_t>::set_termination_stats(
635635
template <typename i_t, typename f_t>
636636
f_t optimization_problem_solution_t<i_t, f_t>::get_l2_primal_residual() const
637637
{
638-
return termination_stats_.l2_primal_residual;
638+
return termination_stats_[0].l2_primal_residual;
639639
}
640640

641641
template <typename i_t, typename f_t>
642642
f_t optimization_problem_solution_t<i_t, f_t>::get_l2_dual_residual() const
643643
{
644-
return termination_stats_.l2_dual_residual;
644+
return termination_stats_[0].l2_dual_residual;
645645
}
646646

647647
template <typename i_t, typename f_t>
648648
f_t optimization_problem_solution_t<i_t, f_t>::get_primal_objective() const
649649
{
650-
return termination_stats_.primal_objective;
650+
return termination_stats_[0].primal_objective;
651651
}
652652

653653
template <typename i_t, typename f_t>
654654
f_t optimization_problem_solution_t<i_t, f_t>::get_dual_objective() const
655655
{
656-
return termination_stats_.dual_objective;
656+
return termination_stats_[0].dual_objective;
657657
}
658658

659659
template <typename i_t, typename f_t>
660660
f_t optimization_problem_solution_t<i_t, f_t>::get_gap() const
661661
{
662-
return termination_stats_.gap;
662+
return termination_stats_[0].gap;
663663
}
664664

665665
template <typename i_t, typename f_t>
666666
i_t optimization_problem_solution_t<i_t, f_t>::get_nb_iterations() const
667667
{
668-
return termination_stats_.number_of_steps_taken;
668+
return termination_stats_[0].number_of_steps_taken;
669669
}
670670

671671
template <typename i_t, typename f_t>
672672
bool optimization_problem_solution_t<i_t, f_t>::get_solved_by_pdlp() const
673673
{
674-
return termination_stats_.solved_by_pdlp;
674+
return termination_stats_[0].solved_by_pdlp;
675675
}
676676

677677
//============================================================================
@@ -681,43 +681,43 @@ bool optimization_problem_solution_t<i_t, f_t>::get_solved_by_pdlp() const
681681
template <typename i_t, typename f_t>
682682
void optimization_problem_solution_t<i_t, f_t>::set_l2_primal_residual(f_t value)
683683
{
684-
termination_stats_.l2_primal_residual = value;
684+
termination_stats_[0].l2_primal_residual = value;
685685
}
686686

687687
template <typename i_t, typename f_t>
688688
void optimization_problem_solution_t<i_t, f_t>::set_l2_dual_residual(f_t value)
689689
{
690-
termination_stats_.l2_dual_residual = value;
690+
termination_stats_[0].l2_dual_residual = value;
691691
}
692692

693693
template <typename i_t, typename f_t>
694694
void optimization_problem_solution_t<i_t, f_t>::set_primal_objective(f_t value)
695695
{
696-
termination_stats_.primal_objective = value;
696+
termination_stats_[0].primal_objective = value;
697697
}
698698

699699
template <typename i_t, typename f_t>
700700
void optimization_problem_solution_t<i_t, f_t>::set_dual_objective(f_t value)
701701
{
702-
termination_stats_.dual_objective = value;
702+
termination_stats_[0].dual_objective = value;
703703
}
704704

705705
template <typename i_t, typename f_t>
706706
void optimization_problem_solution_t<i_t, f_t>::set_gap(f_t value)
707707
{
708-
termination_stats_.gap = value;
708+
termination_stats_[0].gap = value;
709709
}
710710

711711
template <typename i_t, typename f_t>
712712
void optimization_problem_solution_t<i_t, f_t>::set_nb_iterations(i_t value)
713713
{
714-
termination_stats_.number_of_steps_taken = value;
714+
termination_stats_[0].number_of_steps_taken = value;
715715
}
716716

717717
template <typename i_t, typename f_t>
718718
void optimization_problem_solution_t<i_t, f_t>::set_solved_by_pdlp(bool value)
719719
{
720-
termination_stats_.solved_by_pdlp = value;
720+
termination_stats_[0].solved_by_pdlp = value;
721721
}
722722

723723
template <typename i_t, typename f_t>

cpp/tests/linear_programming/unit_tests/lp_solution_memory_test.cu

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,9 @@ TEST(pdlp_solution_memory, device_only_accessors_need_coderabbit_patch)
8787
var_names,
8888
row_names,
8989
stats,
90-
pdlp_termination_status_t::Optimal);
90+
pdlp_termination_status_t::Optimal,
91+
&handle,
92+
true);
9193

9294
EXPECT_TRUE(solution.is_device_memory());
9395
EXPECT_NO_THROW(solution.get_primal_solution());

python/cuopt/pyproject.toml

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ requires = [
99
] # This list was generated by `rapids-dependency-file-generator`. To make changes, edit ../../dependencies.yaml and run `rapids-dependency-file-generator`.
1010

1111
[project]
12-
name = "cuopt-cu13"
12+
name = "cuopt"
1313
dynamic = ["version"]
1414
description = "cuOpt - GPU Combinatorial Optimization"
1515
readme = { file = "README.md", content-type = "text/markdown" }
@@ -20,18 +20,18 @@ license = "Apache-2.0"
2020
requires-python = ">=3.10"
2121
dependencies = [
2222
"cuda-python>=13.0.1,<14.0",
23-
"cudf-cu13==26.2.*,>=0.0.0a0",
23+
"cudf==26.2.*,>=0.0.0a0",
2424
"cuopt-mps-parser==26.2.*,>=0.0.0a0",
2525
"cupy-cuda13x>=13.6.0",
26-
"libcuopt-cu13==26.2.*,>=0.0.0a0",
26+
"libcuopt==26.2.*,>=0.0.0a0",
2727
"numba-cuda>=0.22.1,<0.23.0",
2828
"numba>=0.60.0",
2929
"numpy>=1.23.5,<3.0",
3030
"pandas>=2.0",
31-
"pylibraft-cu13==26.2.*,>=0.0.0a0",
31+
"pylibraft==26.2.*,>=0.0.0a0",
3232
"pyyaml>=6.0.0",
3333
"rapids-logger==0.2.*,>=0.0.0a0",
34-
"rmm-cu13==26.2.*,>=0.0.0a0",
34+
"rmm==26.2.*,>=0.0.0a0",
3535
"scipy>=1.14.1",
3636
] # This list was generated by `rapids-dependency-file-generator`. To make changes, edit ../../dependencies.yaml and run `rapids-dependency-file-generator`.
3737
classifiers = [
@@ -97,17 +97,16 @@ regex = "(?P<value>.*)"
9797

9898
[tool.rapids-build-backend]
9999
build-backend = "scikit_build_core.build"
100-
commit-files = ["cuopt/GIT_COMMIT"]
101100
dependencies-file = "../../dependencies.yaml"
102101
matrix-entry = "cuda_suffixed=true;use_cuda_wheels=true"
103102
requires = [
104103
"cmake>=3.30.4",
105104
"cuopt-mps-parser==26.2.*,>=0.0.0a0",
106105
"cupy-cuda13x>=13.6.0",
107106
"cython>=3.0.3",
108-
"libcuopt-cu13==26.2.*,>=0.0.0a0",
107+
"libcuopt==26.2.*,>=0.0.0a0",
109108
"ninja",
110-
"pylibraft-cu13==26.2.*,>=0.0.0a0",
109+
"pylibraft==26.2.*,>=0.0.0a0",
111110
"rapids-logger==0.2.*,>=0.0.0a0",
112-
"rmm-cu13==26.2.*,>=0.0.0a0",
111+
"rmm==26.2.*,>=0.0.0a0",
113112
] # This list was generated by `rapids-dependency-file-generator`. To make changes, edit ../../dependencies.yaml and run `rapids-dependency-file-generator`.

0 commit comments

Comments
 (0)