[BUG] CUOPT_MIP_PRESOLVE is declared in constants.h but is not a registered parameter
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
cpp/include/cuopt/mathematical_optimization/constants.h と cpp/src/math_optimization/solver_settings.cu から始め、次に近くにある MIP 関連のパラメーターを調べ、拒否された cuOptSetParameter 呼び出しを再現します。CUOPT_MIP_PRESOLVE が登録されることを意図されていたのか、それとも削除されたのかを判断します。公開定数と登録済みパラメーターが一致し、生成されたバインディングで拒否されたパラメーターが公開されなくなれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Describe the bug
CUOPT_MIP_PRESOLVE is declared in the public constants header but is not a real parameter:
cpp/include/cuopt/mathematical_optimization/constants.h:66:#define CUOPT_MIP_PRESOLVE "mip_presolve"
It is registered nowhere in cpp/src/math_optimization/solver_settings.cu and referenced nowhere else in the tree, so cuOptSetParameter(settings, CUOPT_MIP_PRESOLVE, ...) is rejected as an unknown parameter.
Comparing the two directions: all 109 distinct parameter names registered in solver_settings.cu are declared in constants.h, and CUOPT_MIP_PRESOLVE is the single declared name with no registration.
Steps/Code to reproduce bug
cuOptSolverSettings settings = NULL;
cuOptCreateSolverSettings(&settings);
cuOptSetParameter(settings, CUOPT_MIP_PRESOLVE, "1"); /* CUOPT_INVALID_ARGUMENT */
Expected behavior
Either register the parameter, or remove the constant. A public header should not advertise a parameter the solver rejects.
Additional context
This matters more than a stray macro because bindings are generated from this header rather than from a runtime list — the approach @mlubin confirmed in #1705. The Java bindings generate CuOptConstants.java from constants.h at build time, so CuOptConstants.CUOPT_MIP_PRESOLVE exists today and any caller using it gets a runtime error. The same would apply to any future Go, Rust, or C# binding generated the same way.
Note there is a separate, real mip_presolve-adjacent parameter set (CUOPT_MIP_PROBING, the CUOPT_MIP_HYPER_HEURISTIC_PRESOLVE_MAX_ROUNDS family), so the fix is not simply renaming — it needs someone who knows whether a mip_presolve toggle was intended.
Found while verifying #1705.
- 主要言語
- Cuda
- スター
- 1.1k
- フォーク
- 249
- 平均マージ
- 1日 11時間
- マージ済み PR(30日)
- 123
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
NVIDIA/cuopt のほかの issue
-
[BUG] Constraint validation reports CSR offset count as the number of rows対応中かも @0z5a が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
ci: pr-test-summary job shows red when the GitHub API returns persistent 5xx errors対応中かも @0z5a が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 82/100
メンテナーはふだん 1 日以内に返信
-
[BUG] Dataset downloader reports success and replaces data after a failed download対応中かも @0z5a が今日担当しました。 オープン
難易度 3/5 1〜2日 初心者へのやさしさ 75/100
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
メンテナーはふだん 1 日以内に返信
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
SAP/crossplane-provider-btp#1175 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
huggingface/deep-rl-class#723 ·
-
enhancement ui
難易度 2/5 1〜3時間 初心者へのやさしさ 69/100
hashtopolis/server#2613 ·
メンテナーはふだん 1 日以内に返信
-
adk: stream concatenation errors bypass retry and failover対応中かも @OUAO-FRANK が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 83/100
メンテナーはふだん 2 日以内に返信