cuopt-numerical-optimization-api-c

Original🇺🇸 English
Translated

LP, MILP, and QP (beta) with cuOpt — C API only. Use when the user is embedding LP, MILP, or QP in C/C++.

6installs
Added on

NPX Install

npx skill4agent add nvidia/skills cuopt-numerical-optimization-api-c

cuOpt Numerical Optimization — C API

Solve LP, MILP, and QP problems via the cuOpt C API. The same library, headers, build pattern, and core calls (
cuOptCreate*Problem
,
cuOptSolve
,
cuOptGetObjectiveValue
) apply across all three; QP extends the API with quadratic-objective creation calls.
Confirm problem type and formulation (variables, objective, constraints, variable types) before coding.
This skill is C only.

Quick Reference: C API

c
#include <cuopt/linear_programming/cuopt_c.h>

// CSR format for constraints
cuopt_int_t row_offsets[] = {0, 2, 4};
cuopt_int_t col_indices[] = {0, 1, 0, 1};
cuopt_float_t values[] = {2.0, 3.0, 4.0, 2.0};
char var_types[] = {CUOPT_CONTINUOUS, CUOPT_INTEGER};

cuOptCreateRangedProblem(
    num_constraints, num_variables, CUOPT_MINIMIZE,
    0.0, objective_coefficients,
    row_offsets, col_indices, values,
    constraint_lower, constraint_upper,
    var_lower, var_upper, var_types,
    &problem
);
cuOptSolve(problem, settings, &solution);
cuOptGetObjectiveValue(solution, &obj_value);

QP via C API (beta)

QP uses the same library, include/lib paths, and build pattern as LP/MILP — only the problem-creation call differs (it accepts a quadratic objective). See the cuOpt C headers (
cpp/include/cuopt/linear_programming/
) for the QP-specific creation/solve calls and the repo docs at
docs/cuopt/source/cuopt-c/lp-qp-milp/
for end-to-end QP examples.
QP rules:
  • MINIMIZE only (
    CUOPT_MINIMIZE
    ). To maximize
    f(x)
    , negate objective coefficients and Q entries.
  • Continuous variables only — set
    CUOPT_CONTINUOUS
    for every variable; integer QP is not supported.
  • Q should be PSD for a convex problem.

Debugging (MPS / C)

MPS parsing: Required sections in order: NAME, ROWS, COLUMNS, RHS, (optional) BOUNDS, ENDATA. Integer markers:
'MARKER'
,
'INTORG'
,
'INTEND'
.
OOM or slow: Check problem size (variables, constraints); use sparse matrix; set time limit and gap tolerance.

Examples

  • examples.md — LP/MILP with build instructions
  • assets/README.md — Build commands for all reference code below
  • lp_basic — Simple LP: create problem, solve, get solution
  • lp_duals — Dual values and reduced costs
  • lp_warmstart — PDLP warmstart (see README)
  • milp_basic — Simple MILP with integer variable
  • milp_production_planning — Production planning with resource constraints
  • mps_solver — Solve from MPS file via
    cuOptReadProblem
For CLI (MPS files), use
cuopt_cli
and product docs.

Escalate

For contribution or build-from-source, use product or repo documentation.