From 9e8fba9e7b4311d6b5db0f91ba2f0d7a0e5d1b73 Mon Sep 17 00:00:00 2001 From: Christopher Brissette Date: Tue, 7 Jul 2026 14:19:39 -0400 Subject: [PATCH 1/5] Java bindings for LP/MIP/QP --- .../source/cuopt-java/convex/convex-api.rst | 188 ++ .../cuopt-java/convex/convex-examples.rst | 182 ++ docs/cuopt/source/cuopt-java/convex/index.rst | 26 + docs/cuopt/source/cuopt-java/index.rst | 42 + docs/cuopt/source/cuopt-java/mip/index.rst | 24 + docs/cuopt/source/cuopt-java/mip/mip-api.rst | 119 ++ .../source/cuopt-java/mip/mip-examples.rst | 114 ++ docs/cuopt/source/cuopt-java/quick-start.rst | 170 ++ java/cuopt/API_PARITY.md | 273 +++ java/cuopt/CMakeLists.txt | 67 + java/cuopt/README.md | 25 + java/cuopt/TESTS.md | 193 ++ java/cuopt/hs_err_pid101.log | 1600 +++++++++++++++ java/cuopt/hs_err_pid1440122.log | 1711 ++++++++++++++++ java/cuopt/hs_err_pid1449708.log | 1716 ++++++++++++++++ java/cuopt/pom.xml | 95 + java/cuopt/scripts/build_native.sh | 65 + java/cuopt/scripts/generate_constants.sh | 35 + java/cuopt/scripts/test.sh | 39 + .../cuopt/linearprogramming/BatchSolve.java | 41 + .../linearprogramming/BatchSolveResult.java | 31 + .../cuopt/linearprogramming/Constraint.java | 122 ++ .../linearprogramming/ConstraintSense.java | 30 + .../cuopt/linearprogramming/CsrMatrix.java | 46 + .../linearprogramming/CuOptException.java | 18 + .../cuopt/linearprogramming/DataModel.java | 586 ++++++ .../cuopt/linearprogramming/LPStats.java | 41 + .../linearprogramming/LinearExpression.java | 183 ++ .../cuopt/linearprogramming/MIPStats.java | 47 + .../MipCallbackSolution.java | 25 + .../MipSetSolutionCallback.java | 10 + .../MipSolutionCallback.java | 10 + .../cuopt/linearprogramming/NativeCuOpt.java | 191 ++ .../linearprogramming/ObjectiveSense.java | 20 + .../linearprogramming/PDLPSolverMode.java | 23 + .../linearprogramming/PDLPWarmStartData.java | 198 ++ .../cuopt/linearprogramming/Problem.java | 731 +++++++ .../linearprogramming/ProblemCategory.java | 31 + .../QuadraticConstraint.java | 86 + .../QuadraticExpression.java | 195 ++ .../cuopt/linearprogramming/Solution.java | 184 ++ .../cuopt/linearprogramming/SolverMethod.java | 32 + .../linearprogramming/SolverSettings.java | 223 +++ .../linearprogramming/TerminationStatus.java | 40 + .../cuopt/linearprogramming/Variable.java | 111 ++ .../cuopt/linearprogramming/VariableType.java | 30 + .../src/main/native/cuopt_java_native_api.cpp | 395 ++++ .../src/main/native/cuopt_java_native_api.hpp | 92 + java/cuopt/src/main/native/cuopt_jni.cpp | 1725 +++++++++++++++++ .../NativeIntegrationTest.java | 255 +++ .../ProblemModelingTest.java | 95 + .../linearprogramming/PythonParityTest.java | 1367 +++++++++++++ .../test/resources/python_binding_parity.py | 291 +++ .../cuopt/linearprogramming/BatchSolve.class | Bin 0 -> 3226 bytes .../linearprogramming/BatchSolveResult.class | Bin 0 -> 1835 bytes .../cuopt/linearprogramming/Constraint.class | Bin 0 -> 5055 bytes .../linearprogramming/ConstraintSense.class | Bin 0 -> 2133 bytes .../cuopt/linearprogramming/CsrMatrix.class | Bin 0 -> 1305 bytes .../linearprogramming/CuOptConstants.class | Bin 0 -> 9640 bytes .../linearprogramming/CuOptException.class | Bin 0 -> 573 bytes .../DataModel$NativeHandle.class | Bin 0 -> 953 bytes .../cuopt/linearprogramming/DataModel.class | Bin 0 -> 19715 bytes .../cuopt/linearprogramming/LPStats.class | Bin 0 -> 1209 bytes .../linearprogramming/LinearExpression.class | Bin 0 -> 8253 bytes .../cuopt/linearprogramming/MIPStats.class | Bin 0 -> 1175 bytes .../MipCallbackSolution.class | Bin 0 -> 709 bytes .../MipSetSolutionCallback.class | Bin 0 -> 336 bytes .../MipSolutionCallback.class | Bin 0 -> 277 bytes .../cuopt/linearprogramming/NativeCuOpt.class | Bin 0 -> 5582 bytes .../linearprogramming/ObjectiveSense.class | Bin 0 -> 1288 bytes .../linearprogramming/PDLPSolverMode.class | Bin 0 -> 1453 bytes .../linearprogramming/PDLPWarmStartData.class | Bin 0 -> 3904 bytes .../cuopt/linearprogramming/Problem$1.class | Bin 0 -> 863 bytes .../Problem$MatrixBuild.class | Bin 0 -> 1150 bytes .../cuopt/linearprogramming/Problem.class | Bin 0 -> 30615 bytes .../linearprogramming/ProblemCategory.class | Bin 0 -> 2133 bytes .../QuadraticConstraint.class | Bin 0 -> 2431 bytes .../QuadraticExpression$QuadraticTerm.class | Bin 0 -> 1080 bytes .../QuadraticExpression.class | Bin 0 -> 7929 bytes .../Solution$NativeHandle.class | Bin 0 -> 949 bytes .../cuopt/linearprogramming/Solution.class | Bin 0 -> 6972 bytes .../linearprogramming/SolverMethod.class | Bin 0 -> 1694 bytes .../SolverSettings$NativeHandle.class | Bin 0 -> 985 bytes .../linearprogramming/SolverSettings.class | Bin 0 -> 9592 bytes .../linearprogramming/TerminationStatus.class | Bin 0 -> 2295 bytes .../cuopt/linearprogramming/Variable.class | Bin 0 -> 3000 bytes .../linearprogramming/VariableType.class | Bin 0 -> 2131 bytes .../linearprogramming/CuOptConstants.java | 151 ++ .../compile/default-compile/createdFiles.lst | 34 + .../compile/default-compile/inputFiles.lst | 28 + .../default-testCompile/createdFiles.lst | 7 + .../default-testCompile/inputFiles.lst | 3 + ...2026-07-07T10-51-16_754-jvmRun1.dumpstream | 345 ++++ ...inearprogramming.NativeIntegrationTest.xml | 71 + ....linearprogramming.ProblemModelingTest.xml | 64 + ...opt.linearprogramming.PythonParityTest.xml | 71 + ...inearprogramming.NativeIntegrationTest.txt | 4 + ....linearprogramming.ProblemModelingTest.txt | 4 + ...opt.linearprogramming.PythonParityTest.txt | 4 + .../NativeIntegrationTest.class | Bin 0 -> 18609 bytes .../ProblemModelingTest.class | Bin 0 -> 6338 bytes .../PythonParityTest$CaseSpec.class | Bin 0 -> 9779 bytes .../PythonParityTest$JavaResult.class | Bin 0 -> 5946 bytes .../PythonParityTest$ProcessResult.class | Bin 0 -> 642 bytes .../PythonParityTest$PythonResult.class | Bin 0 -> 3423 bytes .../linearprogramming/PythonParityTest.class | Bin 0 -> 29441 bytes .../test-classes/python_binding_parity.py | 291 +++ 107 files changed, 15266 insertions(+) create mode 100644 docs/cuopt/source/cuopt-java/convex/convex-api.rst create mode 100644 docs/cuopt/source/cuopt-java/convex/convex-examples.rst create mode 100644 docs/cuopt/source/cuopt-java/convex/index.rst create mode 100644 docs/cuopt/source/cuopt-java/index.rst create mode 100644 docs/cuopt/source/cuopt-java/mip/index.rst create mode 100644 docs/cuopt/source/cuopt-java/mip/mip-api.rst create mode 100644 docs/cuopt/source/cuopt-java/mip/mip-examples.rst create mode 100644 docs/cuopt/source/cuopt-java/quick-start.rst create mode 100644 java/cuopt/API_PARITY.md create mode 100644 java/cuopt/CMakeLists.txt create mode 100644 java/cuopt/README.md create mode 100644 java/cuopt/TESTS.md create mode 100644 java/cuopt/hs_err_pid101.log create mode 100644 java/cuopt/hs_err_pid1440122.log create mode 100644 java/cuopt/hs_err_pid1449708.log create mode 100644 java/cuopt/pom.xml create mode 100644 java/cuopt/scripts/build_native.sh create mode 100755 java/cuopt/scripts/generate_constants.sh create mode 100644 java/cuopt/scripts/test.sh create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/BatchSolve.java create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/BatchSolveResult.java create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Constraint.java create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/ConstraintSense.java create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/CsrMatrix.java create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/CuOptException.java create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/DataModel.java create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/LPStats.java create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/LinearExpression.java create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MIPStats.java create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MipCallbackSolution.java create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MipSetSolutionCallback.java create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MipSolutionCallback.java create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/NativeCuOpt.java create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/ObjectiveSense.java create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/PDLPSolverMode.java create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/PDLPWarmStartData.java create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Problem.java create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/ProblemCategory.java create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/QuadraticConstraint.java create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/QuadraticExpression.java create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Solution.java create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/SolverMethod.java create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/SolverSettings.java create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/TerminationStatus.java create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Variable.java create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/VariableType.java create mode 100644 java/cuopt/src/main/native/cuopt_java_native_api.cpp create mode 100644 java/cuopt/src/main/native/cuopt_java_native_api.hpp create mode 100644 java/cuopt/src/main/native/cuopt_jni.cpp create mode 100644 java/cuopt/src/test/java/com/nvidia/cuopt/linearprogramming/NativeIntegrationTest.java create mode 100644 java/cuopt/src/test/java/com/nvidia/cuopt/linearprogramming/ProblemModelingTest.java create mode 100644 java/cuopt/src/test/java/com/nvidia/cuopt/linearprogramming/PythonParityTest.java create mode 100644 java/cuopt/src/test/resources/python_binding_parity.py create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/BatchSolve.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/BatchSolveResult.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Constraint.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/ConstraintSense.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/CsrMatrix.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/CuOptConstants.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/CuOptException.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/DataModel$NativeHandle.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/DataModel.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/LPStats.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/LinearExpression.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/MIPStats.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/MipCallbackSolution.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/MipSetSolutionCallback.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/MipSolutionCallback.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/NativeCuOpt.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/ObjectiveSense.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/PDLPSolverMode.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/PDLPWarmStartData.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Problem$1.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Problem$MatrixBuild.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Problem.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/ProblemCategory.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/QuadraticConstraint.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/QuadraticExpression$QuadraticTerm.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/QuadraticExpression.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Solution$NativeHandle.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Solution.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/SolverMethod.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/SolverSettings$NativeHandle.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/SolverSettings.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/TerminationStatus.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Variable.class create mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/VariableType.class create mode 100644 java/cuopt/target/generated-sources/cuopt/com/nvidia/cuopt/linearprogramming/CuOptConstants.java create mode 100644 java/cuopt/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 java/cuopt/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 java/cuopt/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst create mode 100644 java/cuopt/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst create mode 100644 java/cuopt/target/surefire-reports/2026-07-07T10-51-16_754-jvmRun1.dumpstream create mode 100644 java/cuopt/target/surefire-reports/TEST-com.nvidia.cuopt.linearprogramming.NativeIntegrationTest.xml create mode 100644 java/cuopt/target/surefire-reports/TEST-com.nvidia.cuopt.linearprogramming.ProblemModelingTest.xml create mode 100644 java/cuopt/target/surefire-reports/TEST-com.nvidia.cuopt.linearprogramming.PythonParityTest.xml create mode 100644 java/cuopt/target/surefire-reports/com.nvidia.cuopt.linearprogramming.NativeIntegrationTest.txt create mode 100644 java/cuopt/target/surefire-reports/com.nvidia.cuopt.linearprogramming.ProblemModelingTest.txt create mode 100644 java/cuopt/target/surefire-reports/com.nvidia.cuopt.linearprogramming.PythonParityTest.txt create mode 100644 java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/NativeIntegrationTest.class create mode 100644 java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/ProblemModelingTest.class create mode 100644 java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/PythonParityTest$CaseSpec.class create mode 100644 java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/PythonParityTest$JavaResult.class create mode 100644 java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/PythonParityTest$ProcessResult.class create mode 100644 java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/PythonParityTest$PythonResult.class create mode 100644 java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/PythonParityTest.class create mode 100644 java/cuopt/target/test-classes/python_binding_parity.py diff --git a/docs/cuopt/source/cuopt-java/convex/convex-api.rst b/docs/cuopt/source/cuopt-java/convex/convex-api.rst new file mode 100644 index 0000000000..21529d40b7 --- /dev/null +++ b/docs/cuopt/source/cuopt-java/convex/convex-api.rst @@ -0,0 +1,188 @@ +=================================== +Convex Optimization API Reference +=================================== + +The Java LP/QP bindings are in the package +``com.nvidia.cuopt.linearprogramming``. The public API is documented below by +role. Method names are Java names and therefore use fluent methods instead of +Python operator overloads. + +High-level model +---------------- + +``Problem`` is the recommended entry point for models built in Java. + +.. list-table:: ``Problem`` + :header-rows: 1 + :widths: 28 72 + + * - API + - Description + * - ``new Problem()`` / ``new Problem(String name)`` + - Create an empty model, optionally with a problem name. + * - ``addVariable(...)`` + - Add a variable with lower/upper bounds, objective coefficient, variable type, and name. + * - ``addConstraint(Constraint, String name)`` + - Add a linear or quadratic constraint. + * - ``setObjective(LinearExpression, ObjectiveSense)`` + - Set a linear objective. + * - ``setObjective(QuadraticExpression, ObjectiveSense)`` + - Set a quadratic objective with optional linear and constant terms. + * - ``solve()`` / ``solve(SolverSettings)`` + - Convert the model to a native ``DataModel`` and return a ``Solution``. + * - ``toDataModel()`` + - Materialize the high-level model as the lower-level native data model. + * - ``getCSR()`` / ``getQCSR()`` + - Inspect the linear or quadratic objective matrix in CSR form. + * - ``writeMPS(String)`` / ``read(String)`` / ``readMPS(String)`` + - Write or load MPS/QPS-backed models. The fixed-format overloads accept a boolean flag. + * - ``update()`` / ``updateConstraint(...)`` / ``updateObjective(...)`` + - Update model state and reset solved values where appropriate. + * - ``relax()`` + - Return a copy with variables converted to continuous type. + +The model also exposes ``getVariables``, ``getVariable``, ``getConstraints``, +``getConstraint``, ``getNumVariables``, ``getNumConstraints``, +``getNumNonZeros``, ``isMip``, ``isSolved``, ``getStatus``, +``getObjectiveValue``, and ``getSolveTime``. + +Low-level data model +-------------------- + +``DataModel`` is useful when the problem is already available as arrays or +when direct access to native CSR and quadratic data is required. + +Create a model with one of the following factories: + +.. code-block:: java + + DataModel.createProblem( + numConstraints, numVariables, objectiveSense, objectiveOffset, + objectiveCoefficients, constraintMatrix, constraintSense, rhs, + variableLowerBounds, variableUpperBounds, variableTypes); + + DataModel.createRangedProblem( + numConstraints, numVariables, objectiveSense, objectiveOffset, + objectiveCoefficients, constraintMatrix, constraintLowerBounds, + constraintUpperBounds, variableLowerBounds, variableUpperBounds, + variableTypes); + +``CsrMatrix`` stores ``rowOffsets``, ``columnIndices``, and ``values``. The +arrays are available through ``getRowOffsets``, ``getColumnIndices``, and +``getValues``. + +The mutable ``DataModel`` setters cover: + +* objective sense, coefficients, offset, and scaling factor; +* linear constraint CSR arrays, row types, RHS, and ranged bounds; +* variable bounds, types, names, and row names; +* objective and problem names; +* initial primal and dual solutions; and +* quadratic objective matrices and quadratic constraints. + +The corresponding getters include ``getConstraintMatrix``, +``getConstraintMatrixValues``, ``getConstraintMatrixIndices``, +``getConstraintMatrixOffsets``, ``getConstraintRhs``, +``getConstraintLowerBounds``, ``getConstraintUpperBounds``, +``getQuadraticObjectiveValues``, ``getQuadraticObjectiveIndices``, +``getQuadraticObjectiveOffsets``, ``getQuadraticConstraints``, +``getVariableNames``, ``getRowNames``, ``getObjectiveName``, +``getProblemName``, ``getProblemCategory``, and ``toDict``. + +Use ``clearQuadraticConstraints`` to remove all quadratic constraints from a +mutable data model. ``DataModel`` implements ``AutoCloseable``. + +Variables, expressions, and constraints +---------------------------------------- + +``Variable`` stores the model index, bounds, objective coefficient, type, +name, solved value, reduced cost, and optional MIP start. Its mutable methods +return the variable so calls can be chained: + +.. code-block:: java + + Variable x = problem.addVariable( + 0.0, Double.POSITIVE_INFINITY, 1.0, + VariableType.CONTINUOUS, "x"); + x.setUpperBound(100.0).setObjectiveCoefficient(2.0); + +``LinearExpression`` supports ``of``, ``ofConstant``, ``plus``, ``minus``, +``times``, ``dividedBy``, ``constant``, and the comparison methods ``le``, +``ge``, and ``eq``. Comparisons return a ``Constraint``. + +``QuadraticExpression`` supports quadratic terms through +``QuadraticExpression.of(first, second, coefficient)`` and the same fluent +arithmetic pattern. It can also contain linear and constant terms. Its +``le`` and ``ge`` methods return quadratic constraints; ``eq`` throws because +equality quadratic constraints are not supported. + +The enums used in model construction are: + +* ``ObjectiveSense.MINIMIZE`` and ``ObjectiveSense.MAXIMIZE``; +* ``ConstraintSense.LE``, ``ConstraintSense.GE``, and ``ConstraintSense.EQ``; +* ``VariableType.CONTINUOUS``, ``VariableType.INTEGER``, and + ``VariableType.SEMI_CONTINUOUS``; and +* ``ProblemCategory`` for the native problem classification. + +``Constraint`` provides ``getSense``, ``getRHS``, ``getCoefficient``, +``getLinearExpression``, ``getQuadraticExpression``, ``isQuadratic``, +``computeSlack``, ``getSlack``, and ``getDualValue``. + +Solver settings +--------------- + +``SolverSettings`` owns native solver configuration and implements +``AutoCloseable``. Parameters can be set with the overloaded +``setParameter`` methods for ``String``, ``int``, ``double``, and ``boolean`` +values. Use ``getParameter`` or ``getParameterAsString`` for the native string +representation, and ``getTypedParameter`` when a Java ``Boolean``, +``Integer``, ``Double``, or ``String`` value is preferred. + +The settings API also includes: + +* ``getSolverParameterNames`` and the static setting accessors; +* ``setMethod`` and ``setPdlpSolverMode``; +* ``setOptimalityTolerance``; +* primal and dual initial solutions; +* ``dumpParametersToFile`` and ``loadParametersFromFile``; +* ``toDict``; +* ``setPdlpWarmStartData``; and +* MIP callback registration through ``setMipCallback``. + +``SolverMethod`` includes ``PDLP``, ``DUAL_SIMPLEX``, ``BARRIER``, +``CONCURRENT``, and ``UNSET``. ``PDLPSolverMode`` exposes the supported PDLP +solver modes. + +Solutions and statistics +------------------------ + +``Solution`` implements ``AutoCloseable`` and exposes: + +* ``getPrimalSolution``, ``getDualSolution``, and ``getReducedCost``; +* ``getPrimalObjective`` and ``getDualObjective``; +* ``getTerminationStatus`` and ``getTerminationReason``; +* ``getErrorStatus`` and ``getErrorMessage``; +* ``getSolveTime`` and ``getProblemCategory``; and +* ``getVars`` when variable names are available. + +LP solutions additionally expose ``getLpStats`` and PDLP warm-start data. +``LPStats`` contains primal residual, dual residual, gap, iteration count, and +the ``SolverMethod`` used. MIP-only solution fields are documented in +:doc:`../mip/mip-api`. + +MPS, batching, and errors +------------------------- + +``DataModel.read``, ``DataModel.parseMps``, ``Problem.read``, and +``Problem.readMPS`` support MPS/QPS parsing, including a fixed-format boolean +overload. ``writeMPS`` writes a model for round trips or use by another cuOpt +interface. + +``BatchSolve.solve(List, SolverSettings)`` is a sequential Java +compatibility entry point. It returns ``BatchSolveResult``, containing the +solutions and elapsed solve time. + +Native failures are reported as ``CuOptException`` with a cuOpt status code +available through ``getStatusCode``. Accessing an LP-only field on a MIP +solution, or a MIP-only field on an LP solution, raises +``IllegalStateException``. diff --git a/docs/cuopt/source/cuopt-java/convex/convex-examples.rst b/docs/cuopt/source/cuopt-java/convex/convex-examples.rst new file mode 100644 index 0000000000..d3cd907025 --- /dev/null +++ b/docs/cuopt/source/cuopt-java/convex/convex-examples.rst @@ -0,0 +1,182 @@ +============================ +Convex Optimization Examples +============================ + +These examples show the Java modeling patterns corresponding to the Python +LP/QP examples. They assume the Java module has been compiled as described in +:doc:`../quick-start` and that the application can load ``libcuopt_jni``. + +Simple linear programming +-------------------------- + +The high-level API uses fluent expressions and explicit comparison methods. + +.. code-block:: java + + import com.nvidia.cuopt.linearprogramming.*; + + try (Problem problem = new Problem("simple-lp")) { + Variable x = problem.addVariable( + 0.0, Double.POSITIVE_INFINITY, 1.0, + VariableType.CONTINUOUS, "x"); + Variable y = problem.addVariable( + 0.0, Double.POSITIVE_INFINITY, 1.0, + VariableType.CONTINUOUS, "y"); + + problem.addConstraint( + LinearExpression.of(x).plus(y).ge(10.0), "demand"); + problem.setObjective( + LinearExpression.of(x).plus(y), ObjectiveSense.MINIMIZE); + + try (SolverSettings settings = new SolverSettings() + .setMethod(SolverMethod.PDLP); + Solution solution = problem.solve(settings)) { + System.out.println("Status: " + solution.getTerminationStatus()); + System.out.println("x = " + x.getValue()); + System.out.println("y = " + y.getValue()); + System.out.println("Objective = " + solution.getPrimalObjective()); + } + } + +``Problem.solve`` copies the model to a native ``DataModel`` and populates +the ``Variable`` and ``Constraint`` objects after the solve. The solution +object remains available for detailed native results and statistics. + +Low-level CSR linear program +----------------------------- + +Use ``DataModel`` when the input is already in CSR form: + +.. code-block:: java + + CsrMatrix matrix = new CsrMatrix( + new int[] {0, 2}, // row offsets + new int[] {0, 1}, // column indices + new double[] {1.0, 1.0}); + + try (DataModel model = DataModel.createProblem( + 1, 2, + ObjectiveSense.MINIMIZE, + 0.0, + new double[] {1.0, 1.0}, + matrix, + new byte[] {(byte) 'G'}, + new double[] {10.0}, + new double[] {0.0, 0.0}, + new double[] {Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY}, + new byte[] {(byte) 'C', (byte) 'C'}); + SolverSettings settings = new SolverSettings().setMethod(SolverMethod.PDLP); + Solution solution = model.solve(settings)) { + System.out.println(solution.getPrimalObjective()); + System.out.println(model.getConstraintMatrix().getRowOffsets().length); + } + +For ranged rows, use ``createRangedProblem`` with +``constraintLowerBounds`` and ``constraintUpperBounds`` instead of row sense +and RHS arrays. The mutable setters provide the same representation after an +empty ``new DataModel()``. + +Simple quadratic programming +----------------------------- + +Quadratic objectives combine quadratic, linear, and constant terms: + +.. code-block:: java + + try (Problem problem = new Problem("simple-qp")) { + Variable x = problem.addVariable(0.0, 10.0, 0.0, VariableType.CONTINUOUS, "x"); + Variable y = problem.addVariable(0.0, 10.0, 0.0, VariableType.CONTINUOUS, "y"); + + QuadraticExpression objective = QuadraticExpression + .of(x, x, 1.0) + .plus(y, y, 1.0) + .plus(LinearExpression.of(x).times(-1.0)) + .plus(LinearExpression.of(y).times(-1.0)); + + problem.addConstraint( + LinearExpression.of(x).plus(y).eq(1.0), "sum"); + problem.setObjective(objective, ObjectiveSense.MINIMIZE); + + try (Solution solution = problem.solve()) { + System.out.println("x = " + x.getValue()); + System.out.println("y = " + y.getValue()); + System.out.println("Objective = " + solution.getPrimalObjective()); + System.out.println("LP stats gap = " + solution.getLpStats().getGap()); + } + } + +The lower-level equivalent is ``DataModel.setQuadraticObjective`` with a +``QuadraticExpression`` or ``setQuadraticObjectiveMatrix`` with quadratic CSR +arrays. For QP solutions, ``getPrimalSolution``, ``getDualSolution``, +``getReducedCost``, ``getDualObjective``, and ``getLpStats`` are available when +the solver returns the corresponding values. + +Quadratic constraints +--------------------- + +Quadratic constraints can be added to a high-level ``Problem`` or directly to +a ``DataModel``: + +.. code-block:: java + + try (Problem problem = new Problem("quadratic-constraint")) { + Variable x = problem.addVariable(0.0, 10.0, 1.0, VariableType.CONTINUOUS, "x"); + Variable y = problem.addVariable(0.0, 10.0, 1.0, VariableType.CONTINUOUS, "y"); + + QuadraticExpression radius = QuadraticExpression + .of(x, x, 1.0) + .plus(y, y, 1.0); + problem.addConstraint(radius.le(4.0), "radius"); + problem.setObjective( + LinearExpression.of(x).plus(y), ObjectiveSense.MAXIMIZE); + + try (Solution solution = problem.solve()) { + System.out.println(solution.getTerminationStatus()); + } + } + +Only ``LE`` and ``GE`` quadratic constraints are supported. Calling +``QuadraticExpression.eq`` or adding an equality quadratic constraint raises +``IllegalArgumentException``. + +Reading and writing MPS/QPS +--------------------------- + +``DataModel`` and ``Problem`` expose both extension-dispatch and direct MPS +entry points: + +.. code-block:: java + + try (DataModel model = DataModel.read("model.mps")) { + System.out.println("Variables: " + model.getNumVariables()); + System.out.println("QP terms: " + model.getQuadraticObjectiveValues().length); + model.writeMPS("roundtrip.mps"); + } + + try (DataModel fixed = DataModel.parseMps("fixed-format.mps", true)) { + // Use fixed-format parsing explicitly. + } + +``Problem.read`` and ``Problem.readMPS`` build the high-level Java model from +the parsed data. Parsing failures are reported as ``CuOptException`` with the +cuOpt status code available from ``getStatusCode``. + +Inspecting solutions and PDLP warm starts +------------------------------------------ + +LP solutions expose residuals and solver metadata through ``LPStats``. When +PDLP warm-start data is available, retrieve a defensive-copy representation: + +.. code-block:: java + + try (SolverSettings settings = new SolverSettings().setMethod(SolverMethod.PDLP); + Solution solution = problem.solve(settings)) { + if (solution.hasPdlpWarmStartData()) { + PDLPWarmStartData warmStart = solution.getPdlpWarmStartData(); + System.out.println(warmStart.getCurrentPrimalSolution().length); + System.out.println(warmStart.getTotalPdlpIterations()); + } + } + +The same ``PDLPWarmStartData`` can be supplied to +``SolverSettings.setPdlpWarmStartData`` for a subsequent compatible LP solve. diff --git a/docs/cuopt/source/cuopt-java/convex/index.rst b/docs/cuopt/source/cuopt-java/convex/index.rst new file mode 100644 index 0000000000..add551d187 --- /dev/null +++ b/docs/cuopt/source/cuopt-java/convex/index.rst @@ -0,0 +1,26 @@ +===================================== +Convex Optimization (LP/QP) +===================================== + +This section documents the Java bindings for continuous linear and quadratic +optimization. The Java API includes both: + +* a high-level modeling API based on ``Problem``, ``Variable``, expressions, + and constraints; and +* a lower-level ``DataModel`` API that exposes CSR data, ranged bounds, + quadratic matrices, MPS I/O, and solver results. + +Quadratic constraints are supported for ``LE`` and ``GE`` constraints. Equality +quadratic constraints are rejected by the Java API. Dedicated SOCP modeling +helpers are not currently exposed; cone models can be represented through the +supported quadratic-expression API when they satisfy cuOpt's quadratic +constraint requirements. + +.. toctree:: + :maxdepth: 3 + :caption: LP/QP Java API + :name: LP/QP Java API Reference + :titlesonly: + + convex-api.rst + convex-examples.rst diff --git a/docs/cuopt/source/cuopt-java/index.rst b/docs/cuopt/source/cuopt-java/index.rst new file mode 100644 index 0000000000..a4de800c03 --- /dev/null +++ b/docs/cuopt/source/cuopt-java/index.rst @@ -0,0 +1,42 @@ +==================================== +Java API (Beta) +==================================== + +NVIDIA cuOpt provides experimental Java bindings for linear programming (LP), +mixed-integer linear programming (MILP), quadratic programming (QP), and +quadratic constraints through JNI. + +The Java bindings are a separately compiled beta module for the LP/MILP/QP +surface. They are not part of the repository-level cuOpt build and do not +provide routing or distance-engine bindings. See :doc:`quick-start` before +using the API. + +.. note:: + + This Java module is currently intended for the customer beta described by + your cuOpt distribution. Build it from ``java/cuopt`` against an existing + cuOpt installation; do not expect ``build.sh`` to compile it. + +.. toctree:: + :maxdepth: 3 + :caption: Java API Overview + :name: Java API Overview + :titlesonly: + + quick-start.rst + +.. toctree:: + :maxdepth: 3 + :caption: Convex Optimization (LP/QP) + :name: LP/QP Java API + :titlesonly: + + Convex Optimization + +.. toctree:: + :maxdepth: 3 + :caption: Mixed Integer Programming (MIP) + :name: MIP Java API + :titlesonly: + + Mixed Integer Programming diff --git a/docs/cuopt/source/cuopt-java/mip/index.rst b/docs/cuopt/source/cuopt-java/mip/index.rst new file mode 100644 index 0000000000..18566cca1b --- /dev/null +++ b/docs/cuopt/source/cuopt-java/mip/index.rst @@ -0,0 +1,24 @@ +===================================== +Mixed Integer Programming (MIP) +===================================== + +.. note:: + + The cuOpt MIP solver is in beta and under active development. Finding + high-quality feasible solutions and proving optimality have different + performance characteristics; inspect termination status, MIP gap, and + solution bound in production workflows. + +The Java MIP API uses the same ``Problem``, ``DataModel``, +``SolverSettings``, and ``Solution`` classes as the LP/QP API. MIP models are +identified by one or more variables with ``INTEGER`` or ``SEMI_CONTINUOUS`` +type. + +.. toctree:: + :maxdepth: 3 + :caption: MIP Java API + :name: MIP Java API Reference + :titlesonly: + + mip-api.rst + mip-examples.rst diff --git a/docs/cuopt/source/cuopt-java/mip/mip-api.rst b/docs/cuopt/source/cuopt-java/mip/mip-api.rst new file mode 100644 index 0000000000..97d39c7077 --- /dev/null +++ b/docs/cuopt/source/cuopt-java/mip/mip-api.rst @@ -0,0 +1,119 @@ +================= +MIP API Reference +================= + +MIP uses the shared Java modeling and solve APIs documented in +:doc:`../convex/convex-api`. The following features are particularly relevant +to mixed-integer models. + +Variable types +-------------- + +Use ``VariableType`` when adding a variable or updating an existing variable: + +.. code-block:: java + + Variable integer = problem.addVariable( + 0.0, 100.0, 3.0, + VariableType.INTEGER, "integer"); + + Variable semiContinuous = problem.addVariable( + 0.0, 100.0, 1.0, + VariableType.SEMI_CONTINUOUS, "semi"); + +The supported values are ``CONTINUOUS``, ``INTEGER``, and +``SEMI_CONTINUOUS``. ``Problem.isMip()``, ``DataModel.isMip()``, and +``Solution.isMip()`` report whether a model or result contains a noncontinuous +variable. + +MIP starts +---------- + +MIP starts can be provided per variable through ``Variable.setMipStart``. The +high-level ``Problem.solve`` collects defined variable starts and passes them +to the native solver. A complete start can also be supplied directly through +``SolverSettings.addMipStart(double[])``. + +.. code-block:: java + + x.setMipStart(3.0); + y.setMipStart(2.0); + + try (SolverSettings settings = new SolverSettings()) { + // The array follows the model's variable-index order. + settings.addMipStart(new double[] {3.0, 2.0}); + try (Solution solution = problem.solve(settings)) { + System.out.println(solution.getMipGap()); + } + } + +MIP settings +------------ + +All solver parameters are set through ``SolverSettings``. Use the overloaded +``setParameter`` methods for string, integer, floating-point, and boolean +values. MIP-relevant settings include time and node limits, MIP tolerances, +presolve, heuristics, scaling, determinism, and cut controls. Parameter names +are available at runtime through ``SolverSettings.getSolverParameterNames``; +the generated ``CuOptConstants`` class contains string and integer constants +from the cuOpt public constants header. + +MIP callbacks +------------- + +``SolverSettings.setMipCallback`` accepts either callback interface: + +``MipSolutionCallback`` receives each incumbent solution: + +.. code-block:: java + + settings.setMipCallback( + (solution, objectiveValue, solutionBound, userData) -> { + System.out.println("incumbent objective = " + objectiveValue); + }, + "my-user-data", + problem.getNumVariables()); + +``MipSetSolutionCallback`` returns a candidate solution and objective when the +native solver asks Java for one: + +.. code-block:: java + + settings.setMipCallback( + (solutionBound, userData) -> + new MipCallbackSolution(new double[] {3.0, 2.0}, 19.0), + null, + problem.getNumVariables()); + +Callbacks are native-runtime features. Keep the callback and any user data +valid for the duration of the solve, and close the ``SolverSettings`` after the +solve completes. Registered callbacks can be inspected with +``getMipCallbacks``. + +MIP solution fields +------------------- + +For a MIP ``Solution``: + +* ``getPrimalSolution`` returns the incumbent primal vector; +* ``getPrimalObjective`` returns its objective value; +* ``getMipGap`` returns the current relative MIP gap; +* ``getSolutionBound`` returns the best bound reported by the solver; +* ``getMipStats`` returns ``MIPStats``; and +* ``getTerminationStatus``, ``getTerminationReason``, ``getErrorStatus``, + ``getErrorMessage``, and ``getSolveTime`` describe the solve. + +``MIPStats`` contains presolve time, maximum constraint violation, maximum +integer violation, maximum variable-bound violation, node count, and simplex +iteration count. LP-only accessors such as ``getDualSolution``, +``getReducedCost``, and ``getLpStats`` raise ``IllegalStateException`` for a +MIP result. + +Relaxing and inspecting a MIP +----------------------------- + +``Problem.relax()`` returns a separate continuous model while preserving +variable names, bounds, objective, and constraints. This is useful for +inspecting the LP relaxation without changing the original MIP. The original +model can also be inspected through ``getCSR``, ``getQCSR``, ``toDataModel``, +and ``getIncumbentValues``. diff --git a/docs/cuopt/source/cuopt-java/mip/mip-examples.rst b/docs/cuopt/source/cuopt-java/mip/mip-examples.rst new file mode 100644 index 0000000000..6c07fb69e9 --- /dev/null +++ b/docs/cuopt/source/cuopt-java/mip/mip-examples.rst @@ -0,0 +1,114 @@ +============ +MIP Examples +============ + +These examples show mixed-integer modeling, MIP starts, semi-continuous +variables, and incumbent callbacks in Java. + +Simple MILP +----------- + +.. code-block:: java + + import com.nvidia.cuopt.linearprogramming.*; + + try (Problem problem = new Problem("simple-milp")) { + Variable x = problem.addVariable( + 0.0, 100.0, 3.0, VariableType.INTEGER, "x"); + Variable y = problem.addVariable( + 0.0, 100.0, 5.0, VariableType.INTEGER, "y"); + + problem.addConstraint( + LinearExpression.of(x).times(2.0).plus(y).le(8.0), "capacity"); + problem.setObjective( + LinearExpression.of(x).times(3.0).plus(y, 5.0), + ObjectiveSense.MAXIMIZE); + + try (SolverSettings settings = new SolverSettings() + .setParameter(CuOptConstants.CUOPT_TIME_LIMIT, 10.0); + Solution solution = problem.solve(settings)) { + System.out.println("Status: " + solution.getTerminationStatus()); + System.out.println("x = " + x.getValue()); + System.out.println("y = " + y.getValue()); + System.out.println("Objective = " + solution.getPrimalObjective()); + System.out.println("MIP gap = " + solution.getMipGap()); + System.out.println("Bound = " + solution.getSolutionBound()); + System.out.println("Nodes = " + solution.getMipStats().getNumNodes()); + } + } + +The MIP solver can return a feasible solution before proving optimality. Use +the termination status, MIP gap, and solution bound together when interpreting +the result. + +Semi-continuous variables +------------------------- + +``SEMI_CONTINUOUS`` variables are zero or lie within their declared bounds. + +.. code-block:: java + + try (Problem problem = new Problem("semi-continuous")) { + Variable production = problem.addVariable( + 10.0, 100.0, 1.0, + VariableType.SEMI_CONTINUOUS, "production"); + problem.setObjective(production, ObjectiveSense.MINIMIZE); + + try (Solution solution = problem.solve()) { + System.out.println("production = " + production.getValue()); + } + } + +MIP starts +---------- + +Set starts on variables when using the high-level ``Problem`` API: + +.. code-block:: java + + x.setMipStart(3.0); + y.setMipStart(2.0); + + try (SolverSettings settings = new SolverSettings(); + Solution solution = problem.solve(settings)) { + System.out.println(solution.getPrimalObjective()); + } + +For a lower-level model, pass a full variable-index-ordered array through +``SolverSettings.addMipStart``. + +Incumbent callback +------------------ + +Register an incumbent callback before solving: + +.. code-block:: java + + try (SolverSettings settings = new SolverSettings()) { + settings.setMipCallback( + (incumbent, objective, bound, userData) -> { + System.out.println( + "incumbent objective=" + objective + ", bound=" + bound); + }, + null, + problem.getNumVariables()); + + try (Solution solution = problem.solve(settings)) { + System.out.println("Final status: " + solution.getTerminationStatus()); + } + } + +The callback receives a defensive Java array containing the incumbent vector, +the incumbent objective, the current solution bound, and the user data object. + +LP relaxation +------------- + +Create a continuous relaxation without changing the original MIP: + +.. code-block:: java + + try (Problem relaxed = problem.relax(); + Solution solution = relaxed.solve()) { + System.out.println("LP relaxation objective = " + solution.getPrimalObjective()); + } diff --git a/docs/cuopt/source/cuopt-java/quick-start.rst b/docs/cuopt/source/cuopt-java/quick-start.rst new file mode 100644 index 0000000000..4bd65ea88d --- /dev/null +++ b/docs/cuopt/source/cuopt-java/quick-start.rst @@ -0,0 +1,170 @@ +Java Quick Start +================ + +The Java bindings live in ``java/cuopt`` and are built explicitly as a +standalone beta module. They are not part of the repository-level cuOpt build +and do not modify the main C/C++ or Python bindings. + +Requirements +------------ + +The Java module requires: + +* Java 11 or newer, with ``JAVA_HOME`` pointing to a JDK; +* a C++20 compiler; +* an existing cuOpt installation containing ``libcuopt.so``; and +* a CUDA-enabled runtime for solving models. + +The module uses Maven for Java compilation and a Java-local CMake project for +the JNI library. The standalone native build links to +``$CUOPT_PREFIX/lib/libcuopt.so`` and places ``libcuopt_jni.so`` under +``java/cuopt/build/native``. + +.. code-block:: bash + + cd /path/to/cuopt/java/cuopt + export JAVA_HOME=/path/to/jdk-11 + export CUOPT_PREFIX=/path/to/cuopt/conda/environment + bash scripts/build_native.sh + +This builds ``java/cuopt/build/native/libcuopt_jni.so``. Java is intentionally +not part of the default cuOpt build. + +To build the native library in a different directory, set +``CUOPT_JAVA_NATIVE_BUILD_DIR``. If CUDA headers are installed outside the +usual locations, pass ``-DCUOPT_CUDA_INCLUDE_DIR=/path/to/cuda/include`` to +the CMake configure step. + +Native Loading +-------------- + +At runtime the bindings load ``libcuopt_jni``. For local development, point Java +at the directory containing the built native library: + +.. code-block:: bash + + cd java/cuopt + export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 + export CUOPT_PREFIX=/path/to/cuopt/conda/environment + export LD_LIBRARY_PATH=$CUOPT_PREFIX/targets/x86_64-linux/lib:$CUOPT_PREFIX/lib:build/native + mvn test -Dcuopt.native.dir=build/native + +The helper script combines the native build and Maven test steps: + +.. code-block:: bash + + cd /path/to/cuopt/java/cuopt + export JAVA_HOME=/path/to/jdk-11 + export CUOPT_PREFIX=/path/to/cuopt/conda/environment + bash scripts/test.sh + +To run one test class, pass its Maven property to the helper: + +.. code-block:: bash + + bash scripts/test.sh -Dtest=PythonParityTest + +Application code can use the same property: + +.. code-block:: bash + + java -Dcuopt.native.dir=/path/to/java/cuopt/build/native ... + +The Java classes load ``libcuopt_jni`` when the first binding object is +created. ``cuopt.native.dir`` must contain that library, and the cuOpt and +CUDA runtime libraries must be discoverable through ``LD_LIBRARY_PATH`` or the +native library's runtime path. The standalone native build embeds the CUDA +runtime path for the configured ``CUOPT_PREFIX``; the helper script also +exports it for Maven. + +LP Example +---------- + +The modeling API mirrors the Python concepts while using Java builder methods +instead of operator overloading. + +.. code-block:: java + + import com.nvidia.cuopt.linearprogramming.*; + + Problem problem = new Problem("simple"); + Variable x = problem.addVariable(0, Double.POSITIVE_INFINITY, 0, + VariableType.CONTINUOUS, "x"); + Variable y = problem.addVariable(0, Double.POSITIVE_INFINITY, 0, + VariableType.CONTINUOUS, "y"); + + problem.addConstraint(LinearExpression.of(x).plus(y).ge(1.0), "c0"); + problem.setObjective(LinearExpression.of(x).plus(y), ObjectiveSense.MINIMIZE); + + try (SolverSettings settings = new SolverSettings().setMethod(SolverMethod.PDLP); + Solution solution = problem.solve(settings)) { + System.out.println(solution.getTerminationStatus()); + System.out.println(solution.getPrimalObjective()); + System.out.println(solution.getLpStats().getSolvedBy()); + } + +MILP Example +------------ + +.. code-block:: java + + Problem problem = new Problem("integer"); + Variable x = problem.addVariable(0, 10, 1.0, VariableType.INTEGER, "x"); + problem.addConstraint(LinearExpression.of(x).ge(1.0)); + + try (SolverSettings settings = new SolverSettings() + .setParameter(CuOptConstants.CUOPT_TIME_LIMIT, 10.0); + Solution solution = problem.solve(settings)) { + System.out.println(solution.getMipGap()); + System.out.println(solution.getMipStats().getNumNodes()); + } + +QP Example +---------- + +``DataModel`` exposes the lower-level CSR API and quadratic hooks from the C API. + +.. code-block:: java + + CsrMatrix matrix = new CsrMatrix( + new int[] {0, 2}, + new int[] {0, 1}, + new double[] {1.0, 1.0}); + + try (DataModel model = DataModel.createProblem( + 1, 2, ObjectiveSense.MINIMIZE, 0.0, + new double[] {-8.0, -16.0}, + matrix, + new byte[] {(byte) 'G'}, + new double[] {5.0}, + new double[] {0.0, 0.0}, + new double[] {10.0, 10.0}, + new byte[] {(byte) 'C', (byte) 'C'})) { + Problem shell = new Problem(); + Variable x0 = shell.addVariable(); + Variable x1 = shell.addVariable(); + model.setQuadraticObjective( + QuadraticExpression.of(x0, x0, 1.0).plus(x1, x1, 4.0)); + } + +MPS I/O +------- + +.. code-block:: java + + try (DataModel model = DataModel.read("model.mps")) { + model.writeMPS("roundtrip.mps"); + } + +Lifecycle +--------- + +``DataModel``, ``SolverSettings``, and ``Solution`` own native handles and +implement ``AutoCloseable``. Prefer try-with-resources. They also register a +``Cleaner`` fallback, but deterministic close keeps native memory pressure +predictable. + +The Java module is not a drop-in translation of Python syntax. Java uses +fluent expression methods such as ``plus``, ``minus``, ``le``, ``ge``, and +``eq`` instead of Python operator overloads. The following pages document the +implemented LP/MILP/QP surface and its Java names. diff --git a/java/cuopt/API_PARITY.md b/java/cuopt/API_PARITY.md new file mode 100644 index 0000000000..b558c4e2b0 --- /dev/null +++ b/java/cuopt/API_PARITY.md @@ -0,0 +1,273 @@ + + +# Java/Python cuOpt binding parity plan + +This document tracks what it would mean for the Java bindings to be at parity +with the Python bindings and for tests to check behavioral parity. + +## Scope choices + +There are two materially different interpretations of "Python binding parity": + +1. **Full `cuopt` Python package parity.** This includes: + - `cuopt.linear_programming` + - `cuopt.routing` + - `cuopt.distance_engine` + - public helper functions exported by those packages + + The current Java source tree only has `com.nvidia.cuopt.linearprogramming`. + Full package parity would require new Java routing and distance-engine + packages plus new JNI/native wrappers for those C++ APIs. + +2. **Linear-programming package parity.** This covers the APIs currently closest + to the Java module: + - `cuopt.linear_programming.DataModel` + - `cuopt.linear_programming.Problem` + - `cuopt.linear_programming.SolverSettings` + - `cuopt.linear_programming.Solve` + - `cuopt.linear_programming.BatchSolve` + - `cuopt.linear_programming.Solution` + - `cuopt.linear_programming.Read` + - `cuopt.linear_programming.ParseMps` + + This is the realistic first parity target for the current Java module. + +## Current Java binding scope + +The Java module currently exposes LP/MILP/QP functionality through: + +- `DataModel` +- `Problem` +- `Variable` +- `Constraint` +- `LinearExpression` +- `QuadraticExpression` +- `SolverSettings` +- `Solution` +- `LPStats` +- `MIPStats` +- `PDLPWarmStartData` +- MIP callback interfaces + +It is backed by `java/cuopt/src/main/native/cuopt_jni.cpp` and the C LP API in +`cpp/include/cuopt/linear_programming/cuopt_c.h`. + +## Existing parity tests + +`PythonParityTest` currently verifies a representative set of LP/MILP solve +flows against Python cuOpt: + +- `lp_min_ge_unique_solution` +- `lp_max_le_unique_solution` +- `lp_equal_with_offset` +- `lp_ranged_bounds` +- `lp_mixed_bounds_negative_coefficients` +- `lp_max_ranged_bounds` +- `milp_integer_unique_solution` +- `milp_mixed_integer_continuous_max` +- `qp_diagonal_objective` +- `lp_infeasible_status` + +These are useful regression tests with model, solve, solution, LP-stat, +MIP-stat, and QP coverage, but they do not prove every Python binding function +has a Java equivalent or matching behavior. + +## Linear-programming API gap matrix + +### `DataModel` + +| Python API | Java status | Test status | +| --- | --- | --- | +| `__init__` plus incremental setters | Supported by the public no-argument `DataModel` constructor and fluent setters. | Native contract coverage. | +| `set_maximize` / `get_sense` | Supported via `ObjectiveSense` at creation and `getObjectiveSense`. | Covered by parity cases. | +| `set_csr_constraint_matrix` / matrix getters | Supported through `CsrMatrix` at creation and `getConstraintMatrix`. | Covered by parity cases. | +| `set_constraint_bounds`, `set_row_types`, RHS/row-type getters | Supported at creation plus `getConstraintRhs`, `getConstraintSense`. | Covered by parity cases. | +| `set_constraint_lower_bounds`, `set_constraint_upper_bounds`, bound getters | Supported through ranged factory plus getters. | Covered by ranged parity case. | +| `set_objective_coefficients`, `set_objective_offset`, getters | Supported at creation plus getters. | Covered by parity cases. | +| `set_objective_scaling_factor`, `get_objective_scaling_factor` | Supported by mutable Java `DataModel`. | Python oracle compares the scaling factor. | +| `set_quadratic_objective_matrix`, quadratic objective matrix getters | Supported alongside the expression-based quadratic setter. | Python oracle compares Q values, indices, and offsets. | +| `add_quadratic_constraint`, `clear_quadratic_constraints`, `get_quadratic_constraints` | Supported with a public `QuadraticConstraint` host representation. | Native contract coverage includes add/get/clear and row names. | +| `set_variable_lower_bounds`, `set_variable_upper_bounds`, bound getters | Supported at creation plus getters. | Covered by parity cases. | +| `set_variable_types`, `get_variable_types` | Supported at creation plus getter. | Covered by parity cases. | +| `set_variable_names`, `get_variable_names` | Supported by Java `DataModel`. | Python oracle compares names, including multi-character names. | +| `set_row_names`, `get_row_names` | Supported by Java `DataModel`. | Python oracle compares names. | +| `set_objective_name`, `get_objective_name` | Supported by Java `DataModel`. | Python oracle compares the objective name. | +| `set_problem_name`, `get_problem_name` | Supported by Java `DataModel`. | Python oracle compares the problem name. | +| `set_initial_primal_solution`, `set_initial_dual_solution`, getters | Supported on both `DataModel` and `SolverSettings`. | Native contract coverage verifies defensive copies and dimensions. | +| `get_ascii_row_types` | Supported as `getAsciiRowTypes`; `getRowTypes` and `getSense` aliases are also available. | Native contract coverage. | +| `writeMPS` | Supported as `writeMPS`. | Native MPS write/read/ParseMps/Problem.read round-trip coverage. | + +### `SolverSettings` + +| Python API | Java status | Test status | +| --- | --- | --- | +| `get_solver_parameter_names` | Supported. | Smoke-tested. | +| `get_solver_setting` | Supported as `SolverSettings.getSolverSetting`; Java also exposes a typed `getParameter`. | Native settings coverage. | +| `set_parameter`, `get_parameter` | Supported. | Lightly covered; not full parameter sweep. | +| `set_optimality_tolerance` | Supported as `setOptimalityTolerance`. | Native settings contract coverage. | +| `set_pdlp_warm_start_data` | Supported. | Not parity-tested end-to-end. | +| `get_pdlp_warm_start_data` on settings | Supported. | Java contract coverage; solution warm-start extraction is exercised by LP smoke tests. | +| `set_mip_callback` | Supported with Java callback interfaces. | Native registration/list contract coverage; callback invocation remains runtime-only. | +| `get_mip_callbacks` | Supported as an immutable Java view. | Java contract coverage through callback registration state. | +| `dump_parameters_to_file`, `load_parameters_from_file`, `toDict` | Supported through JNI/C API parameter-file bindings. | Native settings round-trip coverage. | + +### `Solution` + +| Python API | Java status | Test status | +| --- | --- | --- | +| `get_primal_solution` | Supported. | Covered by parity cases except infeasible solution values. | +| `get_dual_solution` | Supported for LP. | Covered for LP availability and values. | +| `get_reduced_cost` | Supported for LP. | Covered for LP availability and values. | +| `get_primal_objective` | Supported as `getPrimalObjective`. | Covered by parity cases. | +| `get_dual_objective` | Supported as `getDualObjective`. | Covered for non-MIP parity cases. | +| `get_termination_status` | Supported. | Covered by parity cases. | +| `get_termination_reason` | Supported as `getTerminationReason`. | Covered by the parity status assertions. | +| `get_error_status`, `get_error_message` | Supported. | Covered by parity cases. | +| `get_solve_time` | Supported. | Covered as non-negative when available, with `NaN` allowed when unavailable. Exact parity is not expected because Java and Python solve independently. | +| `get_solved_by`, `get_solved_by_pdlp` | Supported as `getSolvedBy` and deprecated-compatible `getSolvedByPdlp`. | LP parity compares solved-by method; helper is covered by API compilation. | +| `get_vars` | Supported as an immutable name-to-primal-value map when variable names are present. | Metadata/QP parity case covers the name-preserving path. | +| `get_lp_stats` | Supported through `LPStats`. | Availability and field parity are covered for LP/QP-style parity cases. | +| `get_milp_stats` | Supported through `MIPStats`, plus `getMipGap` and `getSolutionBound`. | Availability and field parity are covered, except elapsed presolve time is checked as non-negative when available, with `NaN` allowed when unavailable. | +| `get_pdlp_warm_start_data` | Supported. | LP smoke coverage plus field accessors; full field-by-field cross-language comparison remains runtime-only. | +| `get_problem_category` | Supported as `ProblemCategory`, while retaining `isMip`. | LP/MIP/QP parity compares category behavior. | + +### `Problem`, `Variable`, `LinearExpression`, `QuadraticExpression`, `Constraint` + +| Python API area | Java status | Test status | +| --- | --- | --- | +| Variable bounds, objective coefficient, type, name, value, MIP start | Mostly supported. | Lightly covered by modeling tests; no full parity oracle. | +| Linear expression arithmetic and comparisons | Java uses fluent methods instead of Python operator overloads. | Lightly covered. | +| Quadratic expression arithmetic and comparisons | Java has a smaller fluent API. Python operator coverage is broader. | QP smoke and Java-vs-Python diagonal-QP parity coverage exist. Broader quadratic expression/operator behavior remains open. | +| Constraint sense, RHS, coefficient, slack | Supported, including quadratic slack evaluation. | Pure-Java modeling coverage. | +| Problem add variable/constraint/objective, solve, read/write, getters | Supported for the LP/MILP/QP surface listed here. | Pure-Java, native, and parity coverage. | +| Problem update APIs: `update`, `updateConstraint`, `updateObjective`, `reset_solved_values` | Supported with fluent Java modeling equivalents. | Pure-Java modeling coverage. | +| Problem incumbent/warm-start helpers | Supported, including incumbent lookup and warm-start aliases. | Pure-Java/API contract coverage. | +| Problem `getQCSR`, `getQcsr`, `getQuadraticConstraints` | Supported. | Pure-Java quadratic modeling coverage. | +| Problem `relax` | Supported and preserves names/bounds/objective while converting variables to continuous. | Pure-Java modeling coverage. | +| Python operator overloads | Not one-to-one in Java by language design. | Should be mapped to equivalent fluent-method behavior, not copied literally. | + +### Top-level solver and parser APIs + +| Python API | Java status | Test status | +| --- | --- | --- | +| `Solve` | Supported as `DataModel.solve` and `Problem.solve`. | Covered by smoke and parity cases. | +| `BatchSolve` | Supported as a sequential Java compatibility entry point returning `BatchSolveResult`. | Native integration coverage. | +| `Read` | Supported as `DataModel.read` and `Problem.read`, including fixed-format dispatch. | Missing-file and generated-MPS round-trip coverage; successful execution requires native build/runtime. | +| `ParseMps` with fixed-MPS flag | Supported as `DataModel.parseMps` and `Problem.readMPS`. | Generated-MPS round-trip coverage; successful execution requires native build/runtime. | +| `toDict` | Supported as `DataModel.toDict`. | Native metadata/data-model coverage. | + +## Non-linear-programming package gaps + +### Routing + +Python exposes routing APIs through `cuopt.routing`, including: + +- `DataModel` +- `SolverSettings` +- `Solve` +- `BatchSolve` +- `Assignment` +- `SolutionStatus` +- `Objective` +- `DatasetDistribution` +- routing utility functions + +There is no Java routing package in the current source tree. Full parity here +requires new Java classes, JNI wrappers, and routing-specific parity tests. + +### Distance engine + +Python exposes `cuopt.distance_engine.WaypointMatrix` with: + +- `compute_cost_matrix` +- `compute_waypoint_sequence` +- `compute_shortest_path_costs` + +There is no Java distance-engine package in the current source tree. Full +parity here requires new Java classes, JNI wrappers, and distance-engine parity +tests. + +## Recommended implementation phases + +### Phase 1: Exhaustive tests for existing Java LP APIs + +No new Java binding APIs. Expand tests so every currently exposed Java +LP/MILP/QP binding method has either: + +- a Python behavior comparison, when Python has a true equivalent; or +- a Java-only contract test, when the method is Java-specific plumbing such as + lifecycle closing. + +Remaining targets: + +- parity-test `writeMPS`/`read` round trips on generated tiny models; +- parity-test `SolverSettings.getParameter` after string/int/float/bool set; +- parity-test PDLP warm-start data presence and field shapes; +- parity-test MIP callbacks with a tiny deterministic MILP if stable enough. + +Already covered by the expanded parity harness: + +- `DataModel.getNumNonZeros`; +- `Solution.getDualObjective`; +- `Solution.getErrorStatus` and `getErrorMessage`; +- `getSolveTime` behavior on both sides, allowing `NaN` when unavailable; +- deterministic `LPStats` fields, with `NaN` parity handled explicitly; +- deterministic `MIPStats` fields, with presolve time checked as non-negative + when available; +- a diagonal QP solve path. + +### Phase 2: Fill missing LP/MILP/QP binding APIs — implemented + +The current Java module now includes the following APIs mapped to the current +C API or existing JNI layer: + +- mutable `DataModel` construction and all LP/MIP/QP setters/getters; +- quadratic objective matrix and quadratic-constraint accessors; +- `BatchSolve` compatibility entry point; +- `Read`/`ParseMps` fixed-format entry points; +- solution category, termination-reason, solved-by, and variable-map helpers; +- problem update, relaxation, incumbent, QCSR, and warm-start helpers; +- parameter dump/load/to-map equivalents. + +The remaining validation work is successful parser round-trip execution and +stable callback/warm-start end-to-end checks on a CUDA-enabled build. + +### Phase 3: Decide how to handle Python-only modeling conveniences + +Python operator overloads do not translate directly to Java. The parity target +should be equivalent behavior through Java idioms: + +- fluent `plus`, `minus`, `times`, `le`, `ge`, `eq` methods; +- builder/factory APIs instead of Python's mutable empty `DataModel`, if that + remains the chosen Java style. + +Each intentional Java design difference should be documented in the matrix and +covered by behavior tests. + +### Phase 4: Routing and distance-engine parity, if full package parity is required + +This is a separate project-sized effort: + +- design Java package names and API style; +- add native wrappers for routing and distance-engine C++ APIs; +- port Python routing/distance model construction tests to Java; +- add Java-vs-Python oracle tests like `PythonParityTest`; +- decide which Python utility functions are public API versus examples/helpers. + +## Definition of done for "every binding function" + +A binding function is considered covered only when one of these is true: + +1. **Parity-covered:** Java exposes equivalent behavior and a test compares it + against Python on the same input. +2. **Contract-covered:** Java exposes behavior that has no Python equivalent, + and a Java-only test checks the Java contract. +3. **Intentionally unsupported:** The function is listed in this matrix with a + reason, and there is no silent gap. + +The LP/MILP/QP API surface is substantially covered, but the suite is not at +the full-package definition of done until parser round trips and the optional +callback/warm-start runtime checks run in a CUDA-enabled environment. diff --git a/java/cuopt/CMakeLists.txt b/java/cuopt/CMakeLists.txt new file mode 100644 index 0000000000..9cee48904f --- /dev/null +++ b/java/cuopt/CMakeLists.txt @@ -0,0 +1,67 @@ +# SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. +# SPDX-License-Identifier: Apache-2.0 + +cmake_minimum_required(VERSION 3.22) +project(cuopt_java_native LANGUAGES CXX) + +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_POSITION_INDEPENDENT_CODE ON) + +find_package(JNI REQUIRED) + +set(CUOPT_PREFIX "" CACHE PATH "cuOpt installation prefix") +if(NOT CUOPT_PREFIX) + set(CUOPT_PREFIX "$ENV{CONDA_PREFIX}") +endif() +if(NOT CUOPT_PREFIX) + message(FATAL_ERROR "Set CUOPT_PREFIX to the cuOpt conda environment") +endif() + +set(CUOPT_INCLUDE_DIR "${CUOPT_PREFIX}/include") +set(CUOPT_LIBRARY "${CUOPT_PREFIX}/lib/libcuopt.so") +set(CUOPT_CUDA_RUNTIME_DIR "${CUOPT_PREFIX}/targets/x86_64-linux/lib" + CACHE PATH "CUDA runtime library directory") +set(CUOPT_CUDA_INCLUDE_DIR "" CACHE PATH "CUDA toolkit include directory") +if(NOT CUOPT_CUDA_INCLUDE_DIR AND DEFINED ENV{CUDA_HOME}) + set(CUOPT_CUDA_INCLUDE_DIR "$ENV{CUDA_HOME}/include") +endif() +if(NOT CUOPT_CUDA_INCLUDE_DIR AND EXISTS "/usr/local/cuda/include") + set(CUOPT_CUDA_INCLUDE_DIR "/usr/local/cuda/include") +endif() +if(NOT EXISTS "${CUOPT_LIBRARY}") + message(FATAL_ERROR "cuOpt shared library was not found at ${CUOPT_LIBRARY}") +endif() +set(CUOPT_CUDART_LIBRARY "${CUOPT_CUDA_RUNTIME_DIR}/libcudart.so") +if(NOT EXISTS "${CUOPT_CUDART_LIBRARY}") + message(FATAL_ERROR "CUDA runtime library was not found at ${CUOPT_CUDART_LIBRARY}") +endif() + +add_library(cuopt_jni SHARED + src/main/native/cuopt_java_native_api.cpp + src/main/native/cuopt_jni.cpp) + +target_include_directories(cuopt_jni PRIVATE + ${JNI_INCLUDE_DIRS} + ${CUOPT_INCLUDE_DIR} + ${CUOPT_PREFIX}/include/rapids + ${CUOPT_PREFIX}/targets/x86_64-linux/include + ${CUOPT_CUDA_INCLUDE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/../../cpp/src) + +target_link_libraries(cuopt_jni PRIVATE "${CUOPT_LIBRARY}" "${CUOPT_CUDART_LIBRARY}") + +# The Java module is built outside the main cuOpt build. Keep its native +# loader self-contained while allowing the script to add the cuOpt runtime +# directory supplied by the selected conda environment. +set_target_properties(cuopt_jni PROPERTIES + BUILD_RPATH "$ORIGIN" + INSTALL_RPATH "$ORIGIN") + +if(CUOPT_RUNTIME_LIBRARY_DIR) + set_property(TARGET cuopt_jni APPEND PROPERTY + BUILD_RPATH "${CUOPT_RUNTIME_LIBRARY_DIR}") +endif() + +set_property(TARGET cuopt_jni APPEND PROPERTY BUILD_RPATH "${CUOPT_CUDA_RUNTIME_DIR}") +set_property(TARGET cuopt_jni APPEND PROPERTY INSTALL_RPATH "${CUOPT_CUDA_RUNTIME_DIR}") diff --git a/java/cuopt/README.md b/java/cuopt/README.md new file mode 100644 index 0000000000..852e18a436 --- /dev/null +++ b/java/cuopt/README.md @@ -0,0 +1,25 @@ +# cuOpt Java bindings (beta) + +This directory is an isolated, customer-specific beta module for the cuOpt +LP, MILP, and QP Java bindings. It is intentionally not connected to the +repository-level `build.sh`, CMake targets, public C/C++ headers, dependency +manifest, or Python build. + +The Java module must be compiled separately against an existing cuOpt +installation: + +```bash +cd java/cuopt +CUOPT_PREFIX=/path/to/cuopt/conda/environment bash scripts/build_native.sh +CUOPT_PREFIX=/path/to/cuopt/conda/environment bash scripts/test.sh +``` + +`build_native.sh` builds `libcuopt_jni.so` in `build/native`. `test.sh` builds +that library and runs the Maven tests. Java 11 or newer and a C++20 compiler +are required. The native solve and Python-parity tests require a CUDA driver; +they skip automatically when one is unavailable. + +The standalone native project links to `${CUOPT_PREFIX}/lib/libcuopt.so` and +uses private cuOpt headers from the checkout only to implement the Java-local +bridge. No Java-specific symbol or source file is required by the main cuOpt +build. diff --git a/java/cuopt/TESTS.md b/java/cuopt/TESTS.md new file mode 100644 index 0000000000..226c929409 --- /dev/null +++ b/java/cuopt/TESTS.md @@ -0,0 +1,193 @@ + + +# cuOpt Java binding tests + +This module currently has three Java test classes under +`src/test/java/com/nvidia/cuopt/linearprogramming`: + +- `ProblemModelingTest`: pure Java modeling tests. +- `NativeIntegrationTest`: JNI/native cuOpt smoke tests. +- `PythonParityTest`: Java-vs-Python cuOpt parity tests. + +The full suite has 22 test executions: 3 modeling tests, 9 native integration +tests, and 10 Python parity dynamic tests. + +For the broader API coverage and Java/Python parity backlog, see +`API_PARITY.md`. + +## How to run + +Run these commands from a shell that can see the GPU. A good quick check is: + +```bash +nvidia-smi +``` + +The Java module has its own native CMake project. It does not add a target to +the repository-level `build.sh` and does not modify the main cuOpt C/C++ API. +Build the JNI library first: + +```bash +cd /home/cbrissette/cuopt/java/cuopt + +CUOPT_PREFIX=/home/cbrissette/cuopt/.cuopt_env \ +bash scripts/build_native.sh +``` + +The native helper preserves the compiler recorded in an existing Java CMake +cache and clears inherited conda `CFLAGS`, `CXXFLAGS`, `CPPFLAGS`, and +`LDFLAGS` while configuring/building. This prevents conda's host compiler flags +from exposing incompatible CUDA FP4/FP6 headers in the standalone JNI build. + +Then run only the Python parity suite: + +```bash +cd /home/cbrissette/cuopt/java/cuopt + +JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 \ +LD_LIBRARY_PATH=/home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib:/home/cbrissette/cuopt/.cuopt_env/lib:/home/cbrissette/cuopt/java/cuopt/build/native \ +mvn clean test -Dtest=PythonParityTest \ + -Dcuopt.native.dir=/home/cbrissette/cuopt/java/cuopt/build/native \ + -Dcuopt.python=/home/cbrissette/cuopt/.cuopt_env/bin/python +``` + +To run the full Java binding suite: + +```bash +cd /home/cbrissette/cuopt/java/cuopt + +JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 \ +LD_LIBRARY_PATH=/home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib:/home/cbrissette/cuopt/.cuopt_env/lib:/home/cbrissette/cuopt/java/cuopt/build/native \ +mvn test \ + -Dcuopt.native.dir=/home/cbrissette/cuopt/java/cuopt/build/native \ + -Dcuopt.python=/home/cbrissette/cuopt/.cuopt_env/bin/python +``` + +The helper script combines both steps and accepts Maven arguments: + +```bash +cd /home/cbrissette/cuopt/java/cuopt +CUOPT_PREFIX=/home/cbrissette/cuopt/.cuopt_env bash scripts/test.sh -Dtest=PythonParityTest +``` + +Important runtime inputs: + +- `cuopt.native.dir` must point at the Java module's native build directory, + containing `libcuopt_jni`. +- `cuopt.python` should point at a Python environment with Python cuOpt + installed. +- `LD_LIBRARY_PATH` needs the CUDA runtime directory, the conda environment + libraries, and the local cuOpt native build directory when invoking Maven + directly. `scripts/test.sh` configures these paths automatically. + +## `ProblemModelingTest` + +These tests do not require the native library, Python cuOpt, or a GPU. They +exercise the Java modeling layer before anything crosses into JNI. + +| Test | What it verifies | +| --- | --- | +| `buildsLinearModelAndCsr` | Builds a small two-variable MIP through the high-level `Problem` API. It checks variable indices, MIP detection, CSR row offsets, column indices, matrix values, objective setup, constraint count, and RHS adjustment when a constraint expression has a constant term. | +| `duplicateLinearTermsAreMergedForSlack` | Adds the same variable twice to one linear expression and verifies the coefficients are merged. It also checks slack computation and confirms the model is not marked as MIP when all variables are continuous. | + +## `NativeIntegrationTest` + +These tests verify that the Java bindings can load and call the JNI/native cuOpt +library. Tests that solve models also require a visible CUDA driver. + +| Test | What it verifies | +| --- | --- | +| `solverParameterNamesAreAvailable` | Loads the native library and confirms solver parameter names can be queried through `SolverSettings`. This is a low-cost JNI smoke test. | +| `settingsExposeTypedValuesAndParameterFileRoundTrip` | Checks typed parameter reads, optimality-tolerance propagation, callback registration state, the settings map view, and native parameter dump/load bindings. | +| `emptyDataModelCanBeClosed` | Verifies a JNI-created empty `DataModel` can be closed without crossing the native ownership boundary incorrectly. | +| `mutableDataModelExposesPythonMetadataAndQuadraticFields` | Exercises mutable DataModel setters, names, objective scaling, initial vectors, Q-CSR getters, quadratic-constraint add/get/clear, and `toDict`. | +| `solvesSmallLpAndReportsStats` | Builds a tiny LP directly as a `DataModel`, solves it with PDLP, checks the termination status and primal objective, verifies the primal solution satisfies the single constraint, and confirms LP-only stats are available while MIP stats are rejected. | +| `solvesProblemApiMilpAndLifecycleCloseIsIdempotent` | Builds a one-variable integer problem through the high-level `Problem` API, solves it, checks the integer solution value, verifies MIP stats are available and dual values are rejected, and confirms calling `Solution.close()` twice is safe. | +| `solvesSmallQp` | Starts from the tiny LP model, adds a quadratic objective, solves it, and verifies the Java binding can retrieve a primal solution for a QP-shaped model. | +| `rejectsMissingFileThroughCuOptException` | Calls `DataModel.read` on a missing MPS file and verifies the Java API raises `CuOptException` with the expected MPS file error status. | +| `writesAndReadsMpsThroughReadAndParseMps` | Writes a generated MPS model and reads it through both extension-dispatch and direct MPS parser APIs, plus the high-level `Problem.read` path. | +| `batchSolveCompatibilityReturnsAllSolutions` | Verifies the Java BatchSolve compatibility entry point returns one solution per model and reports elapsed time. | + +## `PythonParityTest` + +`PythonParityTest` is a dynamic JUnit test factory. For each case below, Java +constructs a `DataModel`, writes the same model data to a temporary JSON file, +and invokes `src/test/resources/python_binding_parity.py` as the Python oracle. +The Python helper builds the same model with Python cuOpt, solves it with the +same deterministic settings, and emits `CUOPT_COMPARE key=value` lines for Java +to compare. + +Each parity case compares both model data and solve behavior: + +- model dimensions and nonzero count; +- objective sense, offset, scaling factor, and coefficients; +- CSR matrix values, column indices, and row offsets; +- variable bounds, variable types, variable names, row names, and model names; +- quadratic objective values, column indices, and row offsets for the QP case; +- row sense/RHS for row-sense models, or constraint lower/upper bounds for + ranged-bound models; +- solution category, termination status, error status/message, and solve time + that is either non-negative or `NaN` when unavailable; +- primal objective and primal solution for cases expected to have solution + values; +- dual, dual-objective, and reduced-cost availability and values for LP/QP + solutions; +- LP-stat availability, residuals, gap, iteration count, and solved-by method; +- MIP-stat availability, MIP gap, solution bound, presolve time that is either + non-negative or `NaN` when unavailable, violation fields, node count, and + simplex-iteration count. + +The infeasible case only compares status and availability-style behavior, not +solution vectors. + +| Dynamic test | What it verifies | +| --- | --- | +| `lp_min_ge_unique_solution` | Compares a small continuous minimization LP with one greater-than-or-equal constraint, bounded variables, and a nonzero objective offset. | +| `lp_max_le_unique_solution` | Compares a continuous maximization LP with three less-than-or-equal constraints. This exercises maximize sense handling and a denser multi-row CSR matrix. | +| `lp_equal_with_offset` | Compares a continuous LP with an equality constraint and a nonzero objective offset. This checks equality row type handling and objective-offset parity. | +| `lp_ranged_bounds` | Compares a continuous LP created through the ranged-constraint API using explicit constraint lower and upper bounds instead of row sense plus RHS. | +| `lp_mixed_bounds_negative_coefficients` | Compares an LP with negative variable lower bounds, negative objective coefficients, equality constraints, and a nonzero negative objective offset. | +| `lp_max_ranged_bounds` | Compares a maximization LP built with ranged constraints to cover maximize sense and ranged-bound handling together. | +| `milp_integer_unique_solution` | Compares a small integer minimization model. This checks integer variable type propagation, MIP solve behavior, and MIP-specific stat availability. | +| `milp_mixed_integer_continuous_max` | Compares a maximization MILP with one integer and one continuous variable, exercising mixed variable types and fractional continuous values in a MIP solution. | +| `qp_diagonal_objective` | Compares a convex QP with a diagonal quadratic objective matrix, one quadratic constraint, linear objective terms, named variables/rows, objective scaling, ranged constraints, and bounded continuous variables. | +| `lp_infeasible_status` | Compares a contradictory one-variable LP with lower and upper row requirements that cannot both hold. This verifies Java and Python agree on infeasible termination behavior. | + +## Python oracle helper + +`src/test/resources/python_binding_parity.py` is not a standalone JUnit test, but +it is part of the parity suite. + +It supports two modes: + +- `--probe`: imports Python cuOpt and emits `CUOPT_COMPARE probe=ok`; the Java + tests use this to skip cleanly if Python cuOpt is unavailable. +- `case_file`: reads a JSON model spec, builds the matching Python cuOpt + `DataModel`, solves it, and emits model/solution fields for Java assertions. + +You can run the probe by hand: + +```bash +/home/cbrissette/cuopt/.cuopt_env/bin/python \ + /home/cbrissette/cuopt/java/cuopt/src/test/resources/python_binding_parity.py --probe +``` + +## Pass, fail, and skip behavior + +The expected successful Maven result is `BUILD SUCCESS`. + +Some tests intentionally skip instead of fail when prerequisites are missing: + +- native tests skip when `cuopt.native.dir` is unset or `libcuopt_jni` is not + present; +- GPU solve tests skip when `nvidia-smi` cannot see a CUDA driver; +- Python parity tests skip when Python cuOpt cannot be imported. + +If a test fails or the forked JVM crashes, inspect: + +```text +/home/cbrissette/cuopt/java/cuopt/target/surefire-reports +``` diff --git a/java/cuopt/hs_err_pid101.log b/java/cuopt/hs_err_pid101.log new file mode 100644 index 0000000000..2c0b1ea5b8 --- /dev/null +++ b/java/cuopt/hs_err_pid101.log @@ -0,0 +1,1600 @@ +# +# A fatal error has been detected by the Java Runtime Environment: +# +# SIGBUS (0x7) at pc=0x00007f41ff060c00, pid=101, tid=102 +# +# JRE version: OpenJDK Runtime Environment (11.0.24+8) (build 11.0.24+8-post-Ubuntu-1ubuntu322.04) +# Java VM: OpenJDK 64-Bit Server VM (11.0.24+8-post-Ubuntu-1ubuntu322.04, mixed mode, sharing, tiered, compressed oops, g1 gc, linux-amd64) +# Problematic frame: +# C [libcuopt.so+0x59fc00] cuopt::linear_programming::problem_and_stream_view_t::~problem_and_stream_view_t()+0x30 +# +# Core dump will be written. Default location: Core dumps may be processed with "/wsl-capture-crash %t %E %p %s" (or dumping to /home/cbrissette/cuopt/java/cuopt/core.101) +# +# If you would like to submit a bug report, please visit: +# https://bugs.launchpad.net/ubuntu/+source/openjdk-lts +# The crash happened outside the Java Virtual Machine in native code. +# See problematic frame for where to report the bug. +# + +--------------- S U M M A R Y ------------ + +Command Line: /home/cbrissette/cuopt/java/cuopt/target/surefire/surefirebooter-20260707090606534_3.jar /home/cbrissette/cuopt/java/cuopt/target/surefire 2026-07-07T09-06-06_415-jvmRun1 surefire-20260707090606534_1tmp surefire_0-20260707090606534_2tmp + +Host: 13th Gen Intel(R) Core(TM) i7-13800H, 20 cores, 15G, Ubuntu 22.04.5 LTS +Time: Tue Jul 7 09:06:07 2026 EDT elapsed time: 0.528521 seconds (0d 0h 0m 0s) + +--------------- T H R E A D --------------- + +Current thread (0x00007f428c016000): JavaThread "main" [_thread_in_native, id=102, stack(0x00007f4291069000,0x00007f4291169000)] + +Stack: [0x00007f4291069000,0x00007f4291169000], sp=0x00007f4291164910, free space=1006k +Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code) +C [libcuopt.so+0x59fc00] cuopt::linear_programming::problem_and_stream_view_t::~problem_and_stream_view_t()+0x30 + +Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) +j com.nvidia.cuopt.linearprogramming.NativeCuOpt.destroyProblem(J)V+0 +j com.nvidia.cuopt.linearprogramming.DataModel$NativeHandle.run()V+13 +J 707 c1 jdk.internal.ref.CleanerImpl$PhantomCleanableRef.performCleanup()V java.base@11.0.24 (10 bytes) @ 0x00007f4275060974 [0x00007f4275060840+0x0000000000000134] +J 706 c1 jdk.internal.ref.PhantomCleanable.clean()V java.base@11.0.24 (16 bytes) @ 0x00007f427505f73c [0x00007f427505f560+0x00000000000001dc] +j com.nvidia.cuopt.linearprogramming.DataModel.close()V+4 +j com.nvidia.cuopt.linearprogramming.NativeIntegrationTest.mutableDataModelExposesPythonMetadataAndQuadraticFields()V+576 +v ~StubRoutines::call_stub +j jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+0 java.base@11.0.24 +j jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+100 java.base@11.0.24 +j jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+6 java.base@11.0.24 +j java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+59 java.base@11.0.24 +j org.junit.platform.commons.util.ReflectionUtils.invokeMethod(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+42 +j org.junit.jupiter.engine.execution.MethodInvocation.proceed()Ljava/lang/Object;+16 +j org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed()Ljava/lang/Object;+8 +j org.junit.jupiter.engine.extension.TimeoutExtension.intercept(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/TimeoutDuration;Lorg/junit/jupiter/engine/extension/TimeoutExtension$TimeoutProvider;)Ljava/lang/Object;+28 +j org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/TimeoutExtension$TimeoutProvider;)Ljava/lang/Object;+31 +j org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)V+9 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda$189.apply(Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)V+5 +j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(Lorg/junit/jupiter/engine/execution/InterceptingExecutableInvoker$ReflectiveInterceptorCall$VoidMethodInterceptorCall;Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)Ljava/lang/Void;+6 +j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall$$Lambda$190.apply(Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)Ljava/lang/Object;+9 +j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(Lorg/junit/jupiter/engine/execution/InterceptingExecutableInvoker$ReflectiveInterceptorCall;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;)Ljava/lang/Object;+6 +j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$$Lambda$389.apply(Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;)Ljava/lang/Object;+14 +j org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed()Ljava/lang/Object;+12 +j org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;)Ljava/lang/Object;+1 +j org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/engine/execution/InvocationInterceptorChain$InterceptorCall;Ljava/util/List;)Ljava/lang/Object;+24 +j org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/engine/execution/InvocationInterceptorChain$InterceptorCall;)Ljava/lang/Object;+31 +j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/engine/execution/InterceptingExecutableInvoker$ReflectiveInterceptorCall;)Ljava/lang/Object;+15 +j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(Ljava/lang/reflect/Method;Ljava/lang/Object;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/engine/execution/InterceptingExecutableInvoker$ReflectiveInterceptorCall;)Ljava/lang/Object;+55 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$8(Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)V+28 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda$410.execute()V+12 +j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)V+21 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;+44 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;+6 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6()V+79 +j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$308.execute()V+4 +j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+15 +j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$307.invoke(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+5 +j org.junit.platform.engine.support.hierarchical.Node.around(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$Invocation;)V+2 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9()V+14 +j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$306.execute()V+4 +j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively()V+31 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.execute()V+55 +j org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService$$Lambda$312.accept(Ljava/lang/Object;)V+4 +j java.util.ArrayList.forEach(Ljava/util/function/Consumer;)V+46 java.base@11.0.24 +j org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(Ljava/util/List;)V+6 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6()V+116 +j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$308.execute()V+4 +j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+15 +j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$307.invoke(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+5 +j org.junit.platform.engine.support.hierarchical.Node.around(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$Invocation;)V+2 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9()V+14 +j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$306.execute()V+4 +j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively()V+31 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.execute()V+55 +j org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService$$Lambda$312.accept(Ljava/lang/Object;)V+4 +j java.util.ArrayList.forEach(Ljava/util/function/Consumer;)V+46 java.base@11.0.24 +j org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(Ljava/util/List;)V+6 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6()V+116 +j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$308.execute()V+4 +j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+15 +j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$307.invoke(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+5 +j org.junit.platform.engine.support.hierarchical.Node.around(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$Invocation;)V+2 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9()V+14 +j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$306.execute()V+4 +j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively()V+31 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.execute()V+55 +j org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(Lorg/junit/platform/engine/support/hierarchical/HierarchicalTestExecutorService$TestTask;)Ljava/util/concurrent/Future;+1 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute()Ljava/util/concurrent/Future;+74 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(Lorg/junit/platform/engine/ExecutionRequest;)V+31 +j org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(Lorg/junit/platform/engine/TestDescriptor;Lorg/junit/platform/engine/EngineExecutionListener;Lorg/junit/platform/engine/ConfigurationParameters;Lorg/junit/platform/engine/TestEngine;)V+24 +j org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(Lorg/junit/platform/launcher/core/LauncherDiscoveryResult;Lorg/junit/platform/engine/EngineExecutionListener;)V+115 +j org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(Lorg/junit/platform/launcher/core/InternalTestPlan;Lorg/junit/platform/engine/EngineExecutionListener;Lorg/junit/platform/launcher/TestExecutionListener;)V+55 +j org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(Lorg/junit/platform/launcher/core/InternalTestPlan;Lorg/junit/platform/launcher/TestExecutionListener;)V+6 +j org.junit.platform.launcher.core.EngineExecutionOrchestrator$$Lambda$259.accept(Ljava/lang/Object;)V+12 +j org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(Lorg/junit/platform/engine/ConfigurationParameters;Lorg/junit/platform/launcher/core/ListenerRegistry;Ljava/util/function/Consumer;)V+51 +j org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(Lorg/junit/platform/launcher/core/InternalTestPlan;[Lorg/junit/platform/launcher/TestExecutionListener;)V+23 +j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/launcher/core/InternalTestPlan;[Lorg/junit/platform/launcher/TestExecutionListener;)V+6 +j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;[Lorg/junit/platform/launcher/TestExecutionListener;)V+34 +j org.junit.platform.launcher.core.DelegatingLauncher.execute(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;[Lorg/junit/platform/launcher/TestExecutionListener;)V+6 +j org.apache.maven.surefire.junitplatform.LazyLauncher.execute(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;[Lorg/junit/platform/launcher/TestExecutionListener;)V+6 +j org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.execute(Lorg/apache/maven/surefire/api/util/TestsToRun;Lorg/apache/maven/surefire/junitplatform/RunListenerAdapter;)V+70 +j org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(Lorg/apache/maven/surefire/api/util/TestsToRun;Lorg/apache/maven/surefire/junitplatform/RunListenerAdapter;)V+3 +j org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(Ljava/lang/Object;)Lorg/apache/maven/surefire/api/suite/RunResult;+95 +j org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess()V+8 +j org.apache.maven.surefire.booter.ForkedBooter.execute()V+1 +j org.apache.maven.surefire.booter.ForkedBooter.run(Lorg/apache/maven/surefire/booter/ForkedBooter;[Ljava/lang/String;)V+27 +j org.apache.maven.surefire.booter.ForkedBooter.main([Ljava/lang/String;)V+10 +v ~StubRoutines::call_stub + +siginfo: si_signo: 7 (SIGBUS), si_code: 128 (SI_KERNEL), si_addr: 0x0000000000000000 + +Register to memory mapping: + +RAX=0x0 is NULL +RBX=0x00007f428cc1eee0 points into unknown readable memory: 0x0000000700000000 | 00 00 00 00 07 00 00 00 +RCX=0x0000000000000060 is an unknown value +RDX=0x00007f428c000090 points into unknown readable memory: 0x00007f428d0868b0 | b0 68 08 8d 42 7f 00 00 +RSP=0x00007f4291164910 is pointing into the stack for thread: 0x00007f428c016000 +RBP=0x696c2f5345474153 is an unknown value +RSI=0x0 is NULL +RDI=0x0 is NULL +R8 ={method} {0x00007f425fc1b9a8} 'destroyProblem' '(J)V' in 'com/nvidia/cuopt/linearprogramming/NativeCuOpt' +R9 =0x0 is NULL +R10=0x00007f41feb23e08: in /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so at 0x00007f41feac1000 +R11=0x00007f41ff060cb0: cuOptDestroyProblem+0x0000000000000000 in /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so at 0x00007f41feac1000 +R12=0x00007f429286c6d0: __pthread_key_create+0x0000000000000000 in /lib/x86_64-linux-gnu/libc.so.6 at 0x00007f42927d6000 +R13={method} {0x00007f425fc1b9a8} 'destroyProblem' '(J)V' in 'com/nvidia/cuopt/linearprogramming/NativeCuOpt' +R14=0x00007f4291164a18 is pointing into the stack for thread: 0x00007f428c016000 +R15=0x00007f428c016000 is a thread + + +Registers: +RAX=0x0000000000000000, RBX=0x00007f428cc1eee0, RCX=0x0000000000000060, RDX=0x00007f428c000090 +RSP=0x00007f4291164910, RBP=0x696c2f5345474153, RSI=0x0000000000000000, RDI=0x0000000000000000 +R8 =0x00007f425fc1b9a8, R9 =0x0000000000000000, R10=0x00007f41feb23e08, R11=0x00007f41ff060cb0 +R12=0x00007f429286c6d0, R13=0x00007f425fc1b9a8, R14=0x00007f4291164a18, R15=0x00007f428c016000 +RIP=0x00007f41ff060c00, EFLAGS=0x0000000000010206, CSGSFS=0x002b000000000033, ERR=0x0000000000000000 + TRAPNO=0x000000000000000c + +Top of Stack: (sp=0x00007f4291164910) +0x00007f4291164910: 00007f4291164a18 00007f4291164958 +0x00007f4291164920: 00007f428cc1eee0 00007f41ff060cce +0x00007f4291164930: 00007f428cc1eee0 00007f428cc1eee0 +0x00007f4291164940: 00007f42911649f0 00007f425e361ff8 + +Instructions: (pc=0x00007f41ff060c00) +0x00007f41ff060b00: 00 eb d6 0f 1f 44 00 00 48 8b 07 ff 90 38 01 00 +0x00007f41ff060b10: 00 eb c6 0f 1f 44 00 00 48 8b 07 ff 90 30 01 00 +0x00007f41ff060b20: 00 eb b6 0f 1f 44 00 00 b8 01 00 00 00 5b c3 48 +0x00007f41ff060b30: 89 c7 48 89 d0 e9 33 3a d0 ff 66 0f 1f 44 00 00 +0x00007f41ff060b40: 48 85 d2 74 3b 48 85 ff 74 36 80 3f 00 75 31 48 +0x00007f41ff060b50: 8b 7f 10 48 85 ff 74 28 53 48 89 d3 83 fe 0c 74 +0x00007f41ff060b60: 4f 83 fe 10 74 3a 83 fe 0b 75 25 48 8b 07 ff 90 +0x00007f41ff060b70: 40 01 00 00 89 03 31 c0 5b c3 66 0f 1f 44 00 00 +0x00007f41ff060b80: b8 01 00 00 00 c3 66 2e 0f 1f 84 00 00 00 00 00 +0x00007f41ff060b90: b8 01 00 00 00 5b c3 66 0f 1f 84 00 00 00 00 00 +0x00007f41ff060ba0: 48 8b 07 ff 90 68 01 00 00 eb c9 0f 1f 44 00 00 +0x00007f41ff060bb0: 48 8b 07 ff 90 48 01 00 00 eb b9 48 89 c7 48 89 +0x00007f41ff060bc0: d0 e9 c8 39 d0 ff 66 2e 0f 1f 84 00 00 00 00 00 +0x00007f41ff060bd0: 55 53 48 89 fb 48 83 ec 08 48 8b 7f 08 48 85 ff +0x00007f41ff060be0: 74 06 48 8b 07 ff 50 08 48 8b 7b 10 48 85 ff 74 +0x00007f41ff060bf0: 06 48 8b 07 ff 50 08 48 8b 6b 50 48 85 ed 74 47 +0x00007f41ff060c00: 48 8b 45 00 48 8d 15 a5 da e1 ff 48 8b 40 08 48 +0x00007f41ff060c10: 39 d0 0f 85 88 00 00 00 48 8b 05 99 70 c4 00 48 +0x00007f41ff060c20: 8d 7d 48 48 83 c0 10 48 89 45 00 e8 d0 e0 e1 ff +0x00007f41ff060c30: 48 8d 7d 30 e8 e7 df e1 ff be 60 00 00 00 48 89 +0x00007f41ff060c40: ef ff 15 21 e1 c3 00 48 8b 7b 48 48 85 ff 74 0b +0x00007f41ff060c50: be 08 00 00 00 ff 15 0d e1 c3 00 48 8b 7b 30 48 +0x00007f41ff060c60: 85 ff 74 0d 48 8b 73 40 48 29 fe ff 15 f7 e0 c3 +0x00007f41ff060c70: 00 48 8b 7b 18 48 85 ff 74 16 48 8b 73 28 48 83 +0x00007f41ff060c80: c4 08 5b 5d 48 29 fe ff 25 db e0 c3 00 0f 1f 00 +0x00007f41ff060c90: 48 83 c4 08 5b 5d c3 66 0f 1f 84 00 00 00 00 00 +0x00007f41ff060ca0: 48 89 ef ff d0 eb a0 66 0f 1f 84 00 00 00 00 00 +0x00007f41ff060cb0: 48 85 ff 74 3b 55 53 48 89 fb 48 83 ec 08 48 8b +0x00007f41ff060cc0: 2f 48 85 ed 74 1d 48 89 ef e8 02 ff ff ff be 58 +0x00007f41ff060cd0: 00 00 00 48 89 ef ff 15 8c e0 c3 00 48 c7 03 00 +0x00007f41ff060ce0: 00 00 00 48 83 c4 08 5b 5d c3 66 0f 1f 44 00 00 +0x00007f41ff060cf0: c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 + + +Stack slot to memory mapping: +stack at sp + 0 slots: 0x00007f4291164a18 is pointing into the stack for thread: 0x00007f428c016000 +stack at sp + 1 slots: 0x00007f4291164958 is pointing into the stack for thread: 0x00007f428c016000 +stack at sp + 2 slots: 0x00007f428cc1eee0 points into unknown readable memory: 0x0000000700000000 | 00 00 00 00 07 00 00 00 +stack at sp + 3 slots: 0x00007f41ff060cce: cuOptDestroyProblem+0x000000000000001e in /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so at 0x00007f41feac1000 +stack at sp + 4 slots: 0x00007f428cc1eee0 points into unknown readable memory: 0x0000000700000000 | 00 00 00 00 07 00 00 00 +stack at sp + 5 slots: 0x00007f428cc1eee0 points into unknown readable memory: 0x0000000700000000 | 00 00 00 00 07 00 00 00 +stack at sp + 6 slots: 0x00007f42911649f0 is pointing into the stack for thread: 0x00007f428c016000 +stack at sp + 7 slots: 0x00007f425e361ff8: Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_destroyProblem+0x0000000000000098 in /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so at 0x00007f425e340000 + + +--------------- P R O C E S S --------------- + +Threads class SMR info: +_java_thread_list=0x00007f428c6b7b30, length=17, elements={ +0x00007f428c016000, 0x00007f428c253800, 0x00007f428c255800, 0x00007f428c25d800, +0x00007f428c25f800, 0x00007f428c262000, 0x00007f428c264000, 0x00007f428c266000, +0x00007f423409d800, 0x00007f428c299000, 0x00007f428c3f1800, 0x00007f428c3fe800, +0x00007f42300cd000, 0x00007f423819d000, 0x00007f423819f000, 0x00007f428c6b4000, +0x00007f428c6b6000 +} + +Java Threads: ( => current thread ) +=>0x00007f428c016000 JavaThread "main" [_thread_in_native, id=102, stack(0x00007f4291069000,0x00007f4291169000)] + 0x00007f428c253800 JavaThread "Reference Handler" daemon [_thread_blocked, id=111, stack(0x00007f425f27b000,0x00007f425f37b000)] + 0x00007f428c255800 JavaThread "Finalizer" daemon [_thread_blocked, id=112, stack(0x00007f425f17b000,0x00007f425f27b000)] + 0x00007f428c25d800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=113, stack(0x00007f425f07b000,0x00007f425f17b000)] + 0x00007f428c25f800 JavaThread "Service Thread" daemon [_thread_blocked, id=114, stack(0x00007f425ef7b000,0x00007f425f07b000)] + 0x00007f428c262000 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=115, stack(0x00007f425ee7b000,0x00007f425ef7b000)] + 0x00007f428c264000 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=117, stack(0x00007f425ed7b000,0x00007f425ee7b000)] + 0x00007f428c266000 JavaThread "Sweeper thread" daemon [_thread_blocked, id=118, stack(0x00007f425ec7b000,0x00007f425ed7b000)] + 0x00007f423409d800 JavaThread "C1 CompilerThread1" daemon [_thread_blocked, id=119, stack(0x00007f425eb7b000,0x00007f425ec7b000)] + 0x00007f428c299000 JavaThread "Common-Cleaner" daemon [_thread_blocked, id=121, stack(0x00007f425e97a000,0x00007f425ea7a000)] + 0x00007f428c3f1800 JavaThread "surefire-forkedjvm-stream-flusher" daemon [_thread_blocked, id=122, stack(0x00007f425e87a000,0x00007f425e97a000)] + 0x00007f428c3fe800 JavaThread "surefire-forkedjvm-command-thread" daemon [_thread_in_native, id=123, stack(0x00007f425e77a000,0x00007f425e87a000)] + 0x00007f42300cd000 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=124, stack(0x00007f425e67a000,0x00007f425e77a000)] + 0x00007f423819d000 JavaThread "C1 CompilerThread2" daemon [_thread_blocked, id=125, stack(0x00007f425e57a000,0x00007f425e67a000)] + 0x00007f423819f000 JavaThread "C1 CompilerThread3" daemon [_thread_blocked, id=126, stack(0x00007f425e47a000,0x00007f425e57a000)] + 0x00007f428c6b4000 JavaThread "process reaper" daemon [_thread_blocked, id=128, stack(0x00007f4264024000,0x00007f4264046000)] + 0x00007f428c6b6000 JavaThread "Cleaner-0" daemon [_thread_blocked, id=129, stack(0x00007f425e37a000,0x00007f425e47a000)] + +Other Threads: + 0x00007f428c250800 VMThread "VM Thread" [stack: 0x00007f425f37c000,0x00007f425f47c000] [id=110] + 0x00007f428c296800 WatcherThread [stack: 0x00007f425ea7b000,0x00007f425eb7b000] [id=120] + 0x00007f428c030000 GCTaskThread "GC Thread#0" [stack: 0x00007f4290d2f000,0x00007f4290e2f000] [id=103] + 0x00007f428c08d800 ConcurrentGCThread "G1 Main Marker" [stack: 0x00007f42742d7000,0x00007f42743d7000] [id=104] + 0x00007f428c08f800 ConcurrentGCThread "G1 Conc#0" [stack: 0x00007f42741d6000,0x00007f42742d6000] [id=105] + 0x00007f428c1ab000 ConcurrentGCThread "G1 Refine#0" [stack: 0x00007f425fdff000,0x00007f425feff000] [id=108] + 0x00007f428c1ac800 ConcurrentGCThread "G1 Young RemSet Sampling" [stack: 0x00007f425fcfe000,0x00007f425fdfe000] [id=109] + +Threads with active compile tasks: + +VM state:not at safepoint (normal execution) + +VM Mutex/Monitor currently owned by a thread: None + +Heap address: 0x0000000709200000, size: 3950 MB, Compressed Oops mode: Zero based, Oop shift amount: 3 +Narrow klass base: 0x0000000800000000, Narrow klass shift: 3 +Compressed class space size: 1073741824 Address: 0x0000000840000000 + +Heap: + garbage-first heap total 256000K, used 21200K [0x0000000709200000, 0x0000000800000000) + region size 1024K, 22 young (22528K), 0 survivors (0K) + Metaspace used 6868K, capacity 8529K, committed 8704K, reserved 1056768K + class space used 842K, capacity 1167K, committed 1280K, reserved 1048576K +Heap Regions: E=young(eden), S=young(survivor), O=old, HS=humongous(starts), HC=humongous(continues), CS=collection set, F=free, A=archive, TAMS=top-at-mark-start (previous, next) +| 0|0x0000000709200000, 0x0000000709200000, 0x0000000709300000| 0%| F| |TAMS 0x0000000709200000, 0x0000000709200000| Untracked +| 1|0x0000000709300000, 0x0000000709300000, 0x0000000709400000| 0%| F| |TAMS 0x0000000709300000, 0x0000000709300000| Untracked +| 2|0x0000000709400000, 0x0000000709400000, 0x0000000709500000| 0%| F| |TAMS 0x0000000709400000, 0x0000000709400000| Untracked +| 3|0x0000000709500000, 0x0000000709500000, 0x0000000709600000| 0%| F| |TAMS 0x0000000709500000, 0x0000000709500000| Untracked +| 4|0x0000000709600000, 0x0000000709600000, 0x0000000709700000| 0%| F| |TAMS 0x0000000709600000, 0x0000000709600000| Untracked +| 5|0x0000000709700000, 0x0000000709700000, 0x0000000709800000| 0%| F| |TAMS 0x0000000709700000, 0x0000000709700000| Untracked +| 6|0x0000000709800000, 0x0000000709800000, 0x0000000709900000| 0%| F| |TAMS 0x0000000709800000, 0x0000000709800000| Untracked +| 7|0x0000000709900000, 0x0000000709900000, 0x0000000709a00000| 0%| F| |TAMS 0x0000000709900000, 0x0000000709900000| Untracked +| 8|0x0000000709a00000, 0x0000000709a00000, 0x0000000709b00000| 0%| F| |TAMS 0x0000000709a00000, 0x0000000709a00000| Untracked +| 9|0x0000000709b00000, 0x0000000709b00000, 0x0000000709c00000| 0%| F| |TAMS 0x0000000709b00000, 0x0000000709b00000| Untracked +| 10|0x0000000709c00000, 0x0000000709c00000, 0x0000000709d00000| 0%| F| |TAMS 0x0000000709c00000, 0x0000000709c00000| Untracked +| 11|0x0000000709d00000, 0x0000000709d00000, 0x0000000709e00000| 0%| F| |TAMS 0x0000000709d00000, 0x0000000709d00000| Untracked +| 12|0x0000000709e00000, 0x0000000709e00000, 0x0000000709f00000| 0%| F| |TAMS 0x0000000709e00000, 0x0000000709e00000| Untracked +| 13|0x0000000709f00000, 0x0000000709f00000, 0x000000070a000000| 0%| F| |TAMS 0x0000000709f00000, 0x0000000709f00000| Untracked +| 14|0x000000070a000000, 0x000000070a000000, 0x000000070a100000| 0%| F| |TAMS 0x000000070a000000, 0x000000070a000000| Untracked +| 15|0x000000070a100000, 0x000000070a100000, 0x000000070a200000| 0%| F| |TAMS 0x000000070a100000, 0x000000070a100000| Untracked +| 16|0x000000070a200000, 0x000000070a200000, 0x000000070a300000| 0%| F| |TAMS 0x000000070a200000, 0x000000070a200000| Untracked +| 17|0x000000070a300000, 0x000000070a300000, 0x000000070a400000| 0%| F| |TAMS 0x000000070a300000, 0x000000070a300000| Untracked +| 18|0x000000070a400000, 0x000000070a400000, 0x000000070a500000| 0%| F| |TAMS 0x000000070a400000, 0x000000070a400000| Untracked +| 19|0x000000070a500000, 0x000000070a500000, 0x000000070a600000| 0%| F| |TAMS 0x000000070a500000, 0x000000070a500000| Untracked +| 20|0x000000070a600000, 0x000000070a600000, 0x000000070a700000| 0%| F| |TAMS 0x000000070a600000, 0x000000070a600000| Untracked +| 21|0x000000070a700000, 0x000000070a700000, 0x000000070a800000| 0%| F| |TAMS 0x000000070a700000, 0x000000070a700000| Untracked +| 22|0x000000070a800000, 0x000000070a800000, 0x000000070a900000| 0%| F| |TAMS 0x000000070a800000, 0x000000070a800000| Untracked +| 23|0x000000070a900000, 0x000000070a900000, 0x000000070aa00000| 0%| F| |TAMS 0x000000070a900000, 0x000000070a900000| Untracked +| 24|0x000000070aa00000, 0x000000070aa00000, 0x000000070ab00000| 0%| F| |TAMS 0x000000070aa00000, 0x000000070aa00000| Untracked +| 25|0x000000070ab00000, 0x000000070ab00000, 0x000000070ac00000| 0%| F| |TAMS 0x000000070ab00000, 0x000000070ab00000| Untracked +| 26|0x000000070ac00000, 0x000000070ac00000, 0x000000070ad00000| 0%| F| |TAMS 0x000000070ac00000, 0x000000070ac00000| Untracked +| 27|0x000000070ad00000, 0x000000070ad00000, 0x000000070ae00000| 0%| F| |TAMS 0x000000070ad00000, 0x000000070ad00000| Untracked +| 28|0x000000070ae00000, 0x000000070ae00000, 0x000000070af00000| 0%| F| |TAMS 0x000000070ae00000, 0x000000070ae00000| Untracked +| 29|0x000000070af00000, 0x000000070af00000, 0x000000070b000000| 0%| F| |TAMS 0x000000070af00000, 0x000000070af00000| Untracked +| 30|0x000000070b000000, 0x000000070b000000, 0x000000070b100000| 0%| F| |TAMS 0x000000070b000000, 0x000000070b000000| Untracked +| 31|0x000000070b100000, 0x000000070b100000, 0x000000070b200000| 0%| F| |TAMS 0x000000070b100000, 0x000000070b100000| Untracked +| 32|0x000000070b200000, 0x000000070b200000, 0x000000070b300000| 0%| F| |TAMS 0x000000070b200000, 0x000000070b200000| Untracked +| 33|0x000000070b300000, 0x000000070b300000, 0x000000070b400000| 0%| F| |TAMS 0x000000070b300000, 0x000000070b300000| Untracked +| 34|0x000000070b400000, 0x000000070b400000, 0x000000070b500000| 0%| F| |TAMS 0x000000070b400000, 0x000000070b400000| Untracked +| 35|0x000000070b500000, 0x000000070b500000, 0x000000070b600000| 0%| F| |TAMS 0x000000070b500000, 0x000000070b500000| Untracked +| 36|0x000000070b600000, 0x000000070b600000, 0x000000070b700000| 0%| F| |TAMS 0x000000070b600000, 0x000000070b600000| Untracked +| 37|0x000000070b700000, 0x000000070b700000, 0x000000070b800000| 0%| F| |TAMS 0x000000070b700000, 0x000000070b700000| Untracked +| 38|0x000000070b800000, 0x000000070b800000, 0x000000070b900000| 0%| F| |TAMS 0x000000070b800000, 0x000000070b800000| Untracked +| 39|0x000000070b900000, 0x000000070b900000, 0x000000070ba00000| 0%| F| |TAMS 0x000000070b900000, 0x000000070b900000| Untracked +| 40|0x000000070ba00000, 0x000000070ba00000, 0x000000070bb00000| 0%| F| |TAMS 0x000000070ba00000, 0x000000070ba00000| Untracked +| 41|0x000000070bb00000, 0x000000070bb00000, 0x000000070bc00000| 0%| F| |TAMS 0x000000070bb00000, 0x000000070bb00000| Untracked +| 42|0x000000070bc00000, 0x000000070bc00000, 0x000000070bd00000| 0%| F| |TAMS 0x000000070bc00000, 0x000000070bc00000| Untracked +| 43|0x000000070bd00000, 0x000000070bd00000, 0x000000070be00000| 0%| F| |TAMS 0x000000070bd00000, 0x000000070bd00000| Untracked +| 44|0x000000070be00000, 0x000000070be00000, 0x000000070bf00000| 0%| F| |TAMS 0x000000070be00000, 0x000000070be00000| Untracked +| 45|0x000000070bf00000, 0x000000070bf00000, 0x000000070c000000| 0%| F| |TAMS 0x000000070bf00000, 0x000000070bf00000| Untracked +| 46|0x000000070c000000, 0x000000070c000000, 0x000000070c100000| 0%| F| |TAMS 0x000000070c000000, 0x000000070c000000| Untracked +| 47|0x000000070c100000, 0x000000070c100000, 0x000000070c200000| 0%| F| |TAMS 0x000000070c100000, 0x000000070c100000| Untracked +| 48|0x000000070c200000, 0x000000070c200000, 0x000000070c300000| 0%| F| |TAMS 0x000000070c200000, 0x000000070c200000| Untracked +| 49|0x000000070c300000, 0x000000070c300000, 0x000000070c400000| 0%| F| |TAMS 0x000000070c300000, 0x000000070c300000| Untracked +| 50|0x000000070c400000, 0x000000070c400000, 0x000000070c500000| 0%| F| |TAMS 0x000000070c400000, 0x000000070c400000| Untracked +| 51|0x000000070c500000, 0x000000070c500000, 0x000000070c600000| 0%| F| |TAMS 0x000000070c500000, 0x000000070c500000| Untracked +| 52|0x000000070c600000, 0x000000070c600000, 0x000000070c700000| 0%| F| |TAMS 0x000000070c600000, 0x000000070c600000| Untracked +| 53|0x000000070c700000, 0x000000070c700000, 0x000000070c800000| 0%| F| |TAMS 0x000000070c700000, 0x000000070c700000| Untracked +| 54|0x000000070c800000, 0x000000070c800000, 0x000000070c900000| 0%| F| |TAMS 0x000000070c800000, 0x000000070c800000| Untracked +| 55|0x000000070c900000, 0x000000070c900000, 0x000000070ca00000| 0%| F| |TAMS 0x000000070c900000, 0x000000070c900000| Untracked +| 56|0x000000070ca00000, 0x000000070ca00000, 0x000000070cb00000| 0%| F| |TAMS 0x000000070ca00000, 0x000000070ca00000| Untracked +| 57|0x000000070cb00000, 0x000000070cb00000, 0x000000070cc00000| 0%| F| |TAMS 0x000000070cb00000, 0x000000070cb00000| Untracked +| 58|0x000000070cc00000, 0x000000070cc00000, 0x000000070cd00000| 0%| F| |TAMS 0x000000070cc00000, 0x000000070cc00000| Untracked +| 59|0x000000070cd00000, 0x000000070cd00000, 0x000000070ce00000| 0%| F| |TAMS 0x000000070cd00000, 0x000000070cd00000| Untracked +| 60|0x000000070ce00000, 0x000000070ce00000, 0x000000070cf00000| 0%| F| |TAMS 0x000000070ce00000, 0x000000070ce00000| Untracked +| 61|0x000000070cf00000, 0x000000070cf00000, 0x000000070d000000| 0%| F| |TAMS 0x000000070cf00000, 0x000000070cf00000| Untracked +| 62|0x000000070d000000, 0x000000070d000000, 0x000000070d100000| 0%| F| |TAMS 0x000000070d000000, 0x000000070d000000| Untracked +| 63|0x000000070d100000, 0x000000070d100000, 0x000000070d200000| 0%| F| |TAMS 0x000000070d100000, 0x000000070d100000| Untracked +| 64|0x000000070d200000, 0x000000070d200000, 0x000000070d300000| 0%| F| |TAMS 0x000000070d200000, 0x000000070d200000| Untracked +| 65|0x000000070d300000, 0x000000070d300000, 0x000000070d400000| 0%| F| |TAMS 0x000000070d300000, 0x000000070d300000| Untracked +| 66|0x000000070d400000, 0x000000070d400000, 0x000000070d500000| 0%| F| |TAMS 0x000000070d400000, 0x000000070d400000| Untracked +| 67|0x000000070d500000, 0x000000070d500000, 0x000000070d600000| 0%| F| |TAMS 0x000000070d500000, 0x000000070d500000| Untracked +| 68|0x000000070d600000, 0x000000070d600000, 0x000000070d700000| 0%| F| |TAMS 0x000000070d600000, 0x000000070d600000| Untracked +| 69|0x000000070d700000, 0x000000070d700000, 0x000000070d800000| 0%| F| |TAMS 0x000000070d700000, 0x000000070d700000| Untracked +| 70|0x000000070d800000, 0x000000070d800000, 0x000000070d900000| 0%| F| |TAMS 0x000000070d800000, 0x000000070d800000| Untracked +| 71|0x000000070d900000, 0x000000070d900000, 0x000000070da00000| 0%| F| |TAMS 0x000000070d900000, 0x000000070d900000| Untracked +| 72|0x000000070da00000, 0x000000070da00000, 0x000000070db00000| 0%| F| |TAMS 0x000000070da00000, 0x000000070da00000| Untracked +| 73|0x000000070db00000, 0x000000070db00000, 0x000000070dc00000| 0%| F| |TAMS 0x000000070db00000, 0x000000070db00000| Untracked +| 74|0x000000070dc00000, 0x000000070dc00000, 0x000000070dd00000| 0%| F| |TAMS 0x000000070dc00000, 0x000000070dc00000| Untracked +| 75|0x000000070dd00000, 0x000000070dd00000, 0x000000070de00000| 0%| F| |TAMS 0x000000070dd00000, 0x000000070dd00000| Untracked +| 76|0x000000070de00000, 0x000000070de00000, 0x000000070df00000| 0%| F| |TAMS 0x000000070de00000, 0x000000070de00000| Untracked +| 77|0x000000070df00000, 0x000000070df00000, 0x000000070e000000| 0%| F| |TAMS 0x000000070df00000, 0x000000070df00000| Untracked +| 78|0x000000070e000000, 0x000000070e000000, 0x000000070e100000| 0%| F| |TAMS 0x000000070e000000, 0x000000070e000000| Untracked +| 79|0x000000070e100000, 0x000000070e100000, 0x000000070e200000| 0%| F| |TAMS 0x000000070e100000, 0x000000070e100000| Untracked +| 80|0x000000070e200000, 0x000000070e200000, 0x000000070e300000| 0%| F| |TAMS 0x000000070e200000, 0x000000070e200000| Untracked +| 81|0x000000070e300000, 0x000000070e300000, 0x000000070e400000| 0%| F| |TAMS 0x000000070e300000, 0x000000070e300000| Untracked +| 82|0x000000070e400000, 0x000000070e400000, 0x000000070e500000| 0%| F| |TAMS 0x000000070e400000, 0x000000070e400000| Untracked +| 83|0x000000070e500000, 0x000000070e500000, 0x000000070e600000| 0%| F| |TAMS 0x000000070e500000, 0x000000070e500000| Untracked +| 84|0x000000070e600000, 0x000000070e600000, 0x000000070e700000| 0%| F| |TAMS 0x000000070e600000, 0x000000070e600000| Untracked +| 85|0x000000070e700000, 0x000000070e700000, 0x000000070e800000| 0%| F| |TAMS 0x000000070e700000, 0x000000070e700000| Untracked +| 86|0x000000070e800000, 0x000000070e800000, 0x000000070e900000| 0%| F| |TAMS 0x000000070e800000, 0x000000070e800000| Untracked +| 87|0x000000070e900000, 0x000000070e900000, 0x000000070ea00000| 0%| F| |TAMS 0x000000070e900000, 0x000000070e900000| Untracked +| 88|0x000000070ea00000, 0x000000070ea00000, 0x000000070eb00000| 0%| F| |TAMS 0x000000070ea00000, 0x000000070ea00000| Untracked +| 89|0x000000070eb00000, 0x000000070eb00000, 0x000000070ec00000| 0%| F| |TAMS 0x000000070eb00000, 0x000000070eb00000| Untracked +| 90|0x000000070ec00000, 0x000000070ec00000, 0x000000070ed00000| 0%| F| |TAMS 0x000000070ec00000, 0x000000070ec00000| Untracked +| 91|0x000000070ed00000, 0x000000070ed00000, 0x000000070ee00000| 0%| F| |TAMS 0x000000070ed00000, 0x000000070ed00000| Untracked +| 92|0x000000070ee00000, 0x000000070ee00000, 0x000000070ef00000| 0%| F| |TAMS 0x000000070ee00000, 0x000000070ee00000| Untracked +| 93|0x000000070ef00000, 0x000000070ef00000, 0x000000070f000000| 0%| F| |TAMS 0x000000070ef00000, 0x000000070ef00000| Untracked +| 94|0x000000070f000000, 0x000000070f000000, 0x000000070f100000| 0%| F| |TAMS 0x000000070f000000, 0x000000070f000000| Untracked +| 95|0x000000070f100000, 0x000000070f100000, 0x000000070f200000| 0%| F| |TAMS 0x000000070f100000, 0x000000070f100000| Untracked +| 96|0x000000070f200000, 0x000000070f200000, 0x000000070f300000| 0%| F| |TAMS 0x000000070f200000, 0x000000070f200000| Untracked +| 97|0x000000070f300000, 0x000000070f300000, 0x000000070f400000| 0%| F| |TAMS 0x000000070f300000, 0x000000070f300000| Untracked +| 98|0x000000070f400000, 0x000000070f400000, 0x000000070f500000| 0%| F| |TAMS 0x000000070f400000, 0x000000070f400000| Untracked +| 99|0x000000070f500000, 0x000000070f500000, 0x000000070f600000| 0%| F| |TAMS 0x000000070f500000, 0x000000070f500000| Untracked +| 100|0x000000070f600000, 0x000000070f600000, 0x000000070f700000| 0%| F| |TAMS 0x000000070f600000, 0x000000070f600000| Untracked +| 101|0x000000070f700000, 0x000000070f700000, 0x000000070f800000| 0%| F| |TAMS 0x000000070f700000, 0x000000070f700000| Untracked +| 102|0x000000070f800000, 0x000000070f800000, 0x000000070f900000| 0%| F| |TAMS 0x000000070f800000, 0x000000070f800000| Untracked +| 103|0x000000070f900000, 0x000000070f900000, 0x000000070fa00000| 0%| F| |TAMS 0x000000070f900000, 0x000000070f900000| Untracked +| 104|0x000000070fa00000, 0x000000070fa00000, 0x000000070fb00000| 0%| F| |TAMS 0x000000070fa00000, 0x000000070fa00000| Untracked +| 105|0x000000070fb00000, 0x000000070fb00000, 0x000000070fc00000| 0%| F| |TAMS 0x000000070fb00000, 0x000000070fb00000| Untracked +| 106|0x000000070fc00000, 0x000000070fc00000, 0x000000070fd00000| 0%| F| |TAMS 0x000000070fc00000, 0x000000070fc00000| Untracked +| 107|0x000000070fd00000, 0x000000070fd00000, 0x000000070fe00000| 0%| F| |TAMS 0x000000070fd00000, 0x000000070fd00000| Untracked +| 108|0x000000070fe00000, 0x000000070fe00000, 0x000000070ff00000| 0%| F| |TAMS 0x000000070fe00000, 0x000000070fe00000| Untracked +| 109|0x000000070ff00000, 0x000000070ff00000, 0x0000000710000000| 0%| F| |TAMS 0x000000070ff00000, 0x000000070ff00000| Untracked +| 110|0x0000000710000000, 0x0000000710000000, 0x0000000710100000| 0%| F| |TAMS 0x0000000710000000, 0x0000000710000000| Untracked +| 111|0x0000000710100000, 0x0000000710100000, 0x0000000710200000| 0%| F| |TAMS 0x0000000710100000, 0x0000000710100000| Untracked +| 112|0x0000000710200000, 0x0000000710200000, 0x0000000710300000| 0%| F| |TAMS 0x0000000710200000, 0x0000000710200000| Untracked +| 113|0x0000000710300000, 0x0000000710300000, 0x0000000710400000| 0%| F| |TAMS 0x0000000710300000, 0x0000000710300000| Untracked +| 114|0x0000000710400000, 0x0000000710400000, 0x0000000710500000| 0%| F| |TAMS 0x0000000710400000, 0x0000000710400000| Untracked +| 115|0x0000000710500000, 0x0000000710500000, 0x0000000710600000| 0%| F| |TAMS 0x0000000710500000, 0x0000000710500000| Untracked +| 116|0x0000000710600000, 0x0000000710600000, 0x0000000710700000| 0%| F| |TAMS 0x0000000710600000, 0x0000000710600000| Untracked +| 117|0x0000000710700000, 0x0000000710700000, 0x0000000710800000| 0%| F| |TAMS 0x0000000710700000, 0x0000000710700000| Untracked +| 118|0x0000000710800000, 0x0000000710800000, 0x0000000710900000| 0%| F| |TAMS 0x0000000710800000, 0x0000000710800000| Untracked +| 119|0x0000000710900000, 0x0000000710900000, 0x0000000710a00000| 0%| F| |TAMS 0x0000000710900000, 0x0000000710900000| Untracked +| 120|0x0000000710a00000, 0x0000000710a00000, 0x0000000710b00000| 0%| F| |TAMS 0x0000000710a00000, 0x0000000710a00000| Untracked +| 121|0x0000000710b00000, 0x0000000710b00000, 0x0000000710c00000| 0%| F| |TAMS 0x0000000710b00000, 0x0000000710b00000| Untracked +| 122|0x0000000710c00000, 0x0000000710c00000, 0x0000000710d00000| 0%| F| |TAMS 0x0000000710c00000, 0x0000000710c00000| Untracked +| 123|0x0000000710d00000, 0x0000000710d00000, 0x0000000710e00000| 0%| F| |TAMS 0x0000000710d00000, 0x0000000710d00000| Untracked +| 124|0x0000000710e00000, 0x0000000710e00000, 0x0000000710f00000| 0%| F| |TAMS 0x0000000710e00000, 0x0000000710e00000| Untracked +| 125|0x0000000710f00000, 0x0000000710f00000, 0x0000000711000000| 0%| F| |TAMS 0x0000000710f00000, 0x0000000710f00000| Untracked +| 126|0x0000000711000000, 0x0000000711000000, 0x0000000711100000| 0%| F| |TAMS 0x0000000711000000, 0x0000000711000000| Untracked +| 127|0x0000000711100000, 0x0000000711100000, 0x0000000711200000| 0%| F| |TAMS 0x0000000711100000, 0x0000000711100000| Untracked +| 128|0x0000000711200000, 0x0000000711200000, 0x0000000711300000| 0%| F| |TAMS 0x0000000711200000, 0x0000000711200000| Untracked +| 129|0x0000000711300000, 0x0000000711300000, 0x0000000711400000| 0%| F| |TAMS 0x0000000711300000, 0x0000000711300000| Untracked +| 130|0x0000000711400000, 0x0000000711400000, 0x0000000711500000| 0%| F| |TAMS 0x0000000711400000, 0x0000000711400000| Untracked +| 131|0x0000000711500000, 0x0000000711500000, 0x0000000711600000| 0%| F| |TAMS 0x0000000711500000, 0x0000000711500000| Untracked +| 132|0x0000000711600000, 0x0000000711600000, 0x0000000711700000| 0%| F| |TAMS 0x0000000711600000, 0x0000000711600000| Untracked +| 133|0x0000000711700000, 0x0000000711700000, 0x0000000711800000| 0%| F| |TAMS 0x0000000711700000, 0x0000000711700000| Untracked +| 134|0x0000000711800000, 0x0000000711800000, 0x0000000711900000| 0%| F| |TAMS 0x0000000711800000, 0x0000000711800000| Untracked +| 135|0x0000000711900000, 0x0000000711900000, 0x0000000711a00000| 0%| F| |TAMS 0x0000000711900000, 0x0000000711900000| Untracked +| 136|0x0000000711a00000, 0x0000000711a00000, 0x0000000711b00000| 0%| F| |TAMS 0x0000000711a00000, 0x0000000711a00000| Untracked +| 137|0x0000000711b00000, 0x0000000711b00000, 0x0000000711c00000| 0%| F| |TAMS 0x0000000711b00000, 0x0000000711b00000| Untracked +| 138|0x0000000711c00000, 0x0000000711c00000, 0x0000000711d00000| 0%| F| |TAMS 0x0000000711c00000, 0x0000000711c00000| Untracked +| 139|0x0000000711d00000, 0x0000000711d00000, 0x0000000711e00000| 0%| F| |TAMS 0x0000000711d00000, 0x0000000711d00000| Untracked +| 140|0x0000000711e00000, 0x0000000711e00000, 0x0000000711f00000| 0%| F| |TAMS 0x0000000711e00000, 0x0000000711e00000| Untracked +| 141|0x0000000711f00000, 0x0000000711f00000, 0x0000000712000000| 0%| F| |TAMS 0x0000000711f00000, 0x0000000711f00000| Untracked +| 142|0x0000000712000000, 0x0000000712000000, 0x0000000712100000| 0%| F| |TAMS 0x0000000712000000, 0x0000000712000000| Untracked +| 143|0x0000000712100000, 0x0000000712100000, 0x0000000712200000| 0%| F| |TAMS 0x0000000712100000, 0x0000000712100000| Untracked +| 144|0x0000000712200000, 0x0000000712200000, 0x0000000712300000| 0%| F| |TAMS 0x0000000712200000, 0x0000000712200000| Untracked +| 145|0x0000000712300000, 0x0000000712300000, 0x0000000712400000| 0%| F| |TAMS 0x0000000712300000, 0x0000000712300000| Untracked +| 146|0x0000000712400000, 0x0000000712400000, 0x0000000712500000| 0%| F| |TAMS 0x0000000712400000, 0x0000000712400000| Untracked +| 147|0x0000000712500000, 0x0000000712500000, 0x0000000712600000| 0%| F| |TAMS 0x0000000712500000, 0x0000000712500000| Untracked +| 148|0x0000000712600000, 0x0000000712600000, 0x0000000712700000| 0%| F| |TAMS 0x0000000712600000, 0x0000000712600000| Untracked +| 149|0x0000000712700000, 0x0000000712700000, 0x0000000712800000| 0%| F| |TAMS 0x0000000712700000, 0x0000000712700000| Untracked +| 150|0x0000000712800000, 0x0000000712800000, 0x0000000712900000| 0%| F| |TAMS 0x0000000712800000, 0x0000000712800000| Untracked +| 151|0x0000000712900000, 0x0000000712900000, 0x0000000712a00000| 0%| F| |TAMS 0x0000000712900000, 0x0000000712900000| Untracked +| 152|0x0000000712a00000, 0x0000000712a00000, 0x0000000712b00000| 0%| F| |TAMS 0x0000000712a00000, 0x0000000712a00000| Untracked +| 153|0x0000000712b00000, 0x0000000712b00000, 0x0000000712c00000| 0%| F| |TAMS 0x0000000712b00000, 0x0000000712b00000| Untracked +| 154|0x0000000712c00000, 0x0000000712c00000, 0x0000000712d00000| 0%| F| |TAMS 0x0000000712c00000, 0x0000000712c00000| Untracked +| 155|0x0000000712d00000, 0x0000000712d00000, 0x0000000712e00000| 0%| F| |TAMS 0x0000000712d00000, 0x0000000712d00000| Untracked +| 156|0x0000000712e00000, 0x0000000712e00000, 0x0000000712f00000| 0%| F| |TAMS 0x0000000712e00000, 0x0000000712e00000| Untracked +| 157|0x0000000712f00000, 0x0000000712f00000, 0x0000000713000000| 0%| F| |TAMS 0x0000000712f00000, 0x0000000712f00000| Untracked +| 158|0x0000000713000000, 0x0000000713000000, 0x0000000713100000| 0%| F| |TAMS 0x0000000713000000, 0x0000000713000000| Untracked +| 159|0x0000000713100000, 0x0000000713100000, 0x0000000713200000| 0%| F| |TAMS 0x0000000713100000, 0x0000000713100000| Untracked +| 160|0x0000000713200000, 0x0000000713200000, 0x0000000713300000| 0%| F| |TAMS 0x0000000713200000, 0x0000000713200000| Untracked +| 161|0x0000000713300000, 0x0000000713300000, 0x0000000713400000| 0%| F| |TAMS 0x0000000713300000, 0x0000000713300000| Untracked +| 162|0x0000000713400000, 0x0000000713400000, 0x0000000713500000| 0%| F| |TAMS 0x0000000713400000, 0x0000000713400000| Untracked +| 163|0x0000000713500000, 0x0000000713500000, 0x0000000713600000| 0%| F| |TAMS 0x0000000713500000, 0x0000000713500000| Untracked +| 164|0x0000000713600000, 0x0000000713600000, 0x0000000713700000| 0%| F| |TAMS 0x0000000713600000, 0x0000000713600000| Untracked +| 165|0x0000000713700000, 0x0000000713700000, 0x0000000713800000| 0%| F| |TAMS 0x0000000713700000, 0x0000000713700000| Untracked +| 166|0x0000000713800000, 0x0000000713800000, 0x0000000713900000| 0%| F| |TAMS 0x0000000713800000, 0x0000000713800000| Untracked +| 167|0x0000000713900000, 0x0000000713900000, 0x0000000713a00000| 0%| F| |TAMS 0x0000000713900000, 0x0000000713900000| Untracked +| 168|0x0000000713a00000, 0x0000000713a00000, 0x0000000713b00000| 0%| F| |TAMS 0x0000000713a00000, 0x0000000713a00000| Untracked +| 169|0x0000000713b00000, 0x0000000713b00000, 0x0000000713c00000| 0%| F| |TAMS 0x0000000713b00000, 0x0000000713b00000| Untracked +| 170|0x0000000713c00000, 0x0000000713c00000, 0x0000000713d00000| 0%| F| |TAMS 0x0000000713c00000, 0x0000000713c00000| Untracked +| 171|0x0000000713d00000, 0x0000000713d00000, 0x0000000713e00000| 0%| F| |TAMS 0x0000000713d00000, 0x0000000713d00000| Untracked +| 172|0x0000000713e00000, 0x0000000713e00000, 0x0000000713f00000| 0%| F| |TAMS 0x0000000713e00000, 0x0000000713e00000| Untracked +| 173|0x0000000713f00000, 0x0000000713f00000, 0x0000000714000000| 0%| F| |TAMS 0x0000000713f00000, 0x0000000713f00000| Untracked +| 174|0x0000000714000000, 0x0000000714000000, 0x0000000714100000| 0%| F| |TAMS 0x0000000714000000, 0x0000000714000000| Untracked +| 175|0x0000000714100000, 0x0000000714100000, 0x0000000714200000| 0%| F| |TAMS 0x0000000714100000, 0x0000000714100000| Untracked +| 176|0x0000000714200000, 0x0000000714200000, 0x0000000714300000| 0%| F| |TAMS 0x0000000714200000, 0x0000000714200000| Untracked +| 177|0x0000000714300000, 0x0000000714300000, 0x0000000714400000| 0%| F| |TAMS 0x0000000714300000, 0x0000000714300000| Untracked +| 178|0x0000000714400000, 0x0000000714400000, 0x0000000714500000| 0%| F| |TAMS 0x0000000714400000, 0x0000000714400000| Untracked +| 179|0x0000000714500000, 0x0000000714500000, 0x0000000714600000| 0%| F| |TAMS 0x0000000714500000, 0x0000000714500000| Untracked +| 180|0x0000000714600000, 0x0000000714600000, 0x0000000714700000| 0%| F| |TAMS 0x0000000714600000, 0x0000000714600000| Untracked +| 181|0x0000000714700000, 0x0000000714700000, 0x0000000714800000| 0%| F| |TAMS 0x0000000714700000, 0x0000000714700000| Untracked +| 182|0x0000000714800000, 0x0000000714800000, 0x0000000714900000| 0%| F| |TAMS 0x0000000714800000, 0x0000000714800000| Untracked +| 183|0x0000000714900000, 0x0000000714900000, 0x0000000714a00000| 0%| F| |TAMS 0x0000000714900000, 0x0000000714900000| Untracked +| 184|0x0000000714a00000, 0x0000000714a00000, 0x0000000714b00000| 0%| F| |TAMS 0x0000000714a00000, 0x0000000714a00000| Untracked +| 185|0x0000000714b00000, 0x0000000714b00000, 0x0000000714c00000| 0%| F| |TAMS 0x0000000714b00000, 0x0000000714b00000| Untracked +| 186|0x0000000714c00000, 0x0000000714c00000, 0x0000000714d00000| 0%| F| |TAMS 0x0000000714c00000, 0x0000000714c00000| Untracked +| 187|0x0000000714d00000, 0x0000000714d00000, 0x0000000714e00000| 0%| F| |TAMS 0x0000000714d00000, 0x0000000714d00000| Untracked +| 188|0x0000000714e00000, 0x0000000714e00000, 0x0000000714f00000| 0%| F| |TAMS 0x0000000714e00000, 0x0000000714e00000| Untracked +| 189|0x0000000714f00000, 0x0000000714f00000, 0x0000000715000000| 0%| F| |TAMS 0x0000000714f00000, 0x0000000714f00000| Untracked +| 190|0x0000000715000000, 0x0000000715000000, 0x0000000715100000| 0%| F| |TAMS 0x0000000715000000, 0x0000000715000000| Untracked +| 191|0x0000000715100000, 0x0000000715100000, 0x0000000715200000| 0%| F| |TAMS 0x0000000715100000, 0x0000000715100000| Untracked +| 192|0x0000000715200000, 0x0000000715200000, 0x0000000715300000| 0%| F| |TAMS 0x0000000715200000, 0x0000000715200000| Untracked +| 193|0x0000000715300000, 0x0000000715300000, 0x0000000715400000| 0%| F| |TAMS 0x0000000715300000, 0x0000000715300000| Untracked +| 194|0x0000000715400000, 0x0000000715400000, 0x0000000715500000| 0%| F| |TAMS 0x0000000715400000, 0x0000000715400000| Untracked +| 195|0x0000000715500000, 0x0000000715500000, 0x0000000715600000| 0%| F| |TAMS 0x0000000715500000, 0x0000000715500000| Untracked +| 196|0x0000000715600000, 0x0000000715600000, 0x0000000715700000| 0%| F| |TAMS 0x0000000715600000, 0x0000000715600000| Untracked +| 197|0x0000000715700000, 0x0000000715700000, 0x0000000715800000| 0%| F| |TAMS 0x0000000715700000, 0x0000000715700000| Untracked +| 198|0x0000000715800000, 0x0000000715800000, 0x0000000715900000| 0%| F| |TAMS 0x0000000715800000, 0x0000000715800000| Untracked +| 199|0x0000000715900000, 0x0000000715900000, 0x0000000715a00000| 0%| F| |TAMS 0x0000000715900000, 0x0000000715900000| Untracked +| 200|0x0000000715a00000, 0x0000000715a00000, 0x0000000715b00000| 0%| F| |TAMS 0x0000000715a00000, 0x0000000715a00000| Untracked +| 201|0x0000000715b00000, 0x0000000715b00000, 0x0000000715c00000| 0%| F| |TAMS 0x0000000715b00000, 0x0000000715b00000| Untracked +| 202|0x0000000715c00000, 0x0000000715c00000, 0x0000000715d00000| 0%| F| |TAMS 0x0000000715c00000, 0x0000000715c00000| Untracked +| 203|0x0000000715d00000, 0x0000000715d00000, 0x0000000715e00000| 0%| F| |TAMS 0x0000000715d00000, 0x0000000715d00000| Untracked +| 204|0x0000000715e00000, 0x0000000715e00000, 0x0000000715f00000| 0%| F| |TAMS 0x0000000715e00000, 0x0000000715e00000| Untracked +| 205|0x0000000715f00000, 0x0000000715f00000, 0x0000000716000000| 0%| F| |TAMS 0x0000000715f00000, 0x0000000715f00000| Untracked +| 206|0x0000000716000000, 0x0000000716000000, 0x0000000716100000| 0%| F| |TAMS 0x0000000716000000, 0x0000000716000000| Untracked +| 207|0x0000000716100000, 0x0000000716100000, 0x0000000716200000| 0%| F| |TAMS 0x0000000716100000, 0x0000000716100000| Untracked +| 208|0x0000000716200000, 0x0000000716200000, 0x0000000716300000| 0%| F| |TAMS 0x0000000716200000, 0x0000000716200000| Untracked +| 209|0x0000000716300000, 0x0000000716300000, 0x0000000716400000| 0%| F| |TAMS 0x0000000716300000, 0x0000000716300000| Untracked +| 210|0x0000000716400000, 0x0000000716400000, 0x0000000716500000| 0%| F| |TAMS 0x0000000716400000, 0x0000000716400000| Untracked +| 211|0x0000000716500000, 0x0000000716500000, 0x0000000716600000| 0%| F| |TAMS 0x0000000716500000, 0x0000000716500000| Untracked +| 212|0x0000000716600000, 0x0000000716600000, 0x0000000716700000| 0%| F| |TAMS 0x0000000716600000, 0x0000000716600000| Untracked +| 213|0x0000000716700000, 0x0000000716700000, 0x0000000716800000| 0%| F| |TAMS 0x0000000716700000, 0x0000000716700000| Untracked +| 214|0x0000000716800000, 0x0000000716800000, 0x0000000716900000| 0%| F| |TAMS 0x0000000716800000, 0x0000000716800000| Untracked +| 215|0x0000000716900000, 0x0000000716900000, 0x0000000716a00000| 0%| F| |TAMS 0x0000000716900000, 0x0000000716900000| Untracked +| 216|0x0000000716a00000, 0x0000000716a00000, 0x0000000716b00000| 0%| F| |TAMS 0x0000000716a00000, 0x0000000716a00000| Untracked +| 217|0x0000000716b00000, 0x0000000716b00000, 0x0000000716c00000| 0%| F| |TAMS 0x0000000716b00000, 0x0000000716b00000| Untracked +| 218|0x0000000716c00000, 0x0000000716c00000, 0x0000000716d00000| 0%| F| |TAMS 0x0000000716c00000, 0x0000000716c00000| Untracked +| 219|0x0000000716d00000, 0x0000000716d00000, 0x0000000716e00000| 0%| F| |TAMS 0x0000000716d00000, 0x0000000716d00000| Untracked +| 220|0x0000000716e00000, 0x0000000716e00000, 0x0000000716f00000| 0%| F| |TAMS 0x0000000716e00000, 0x0000000716e00000| Untracked +| 221|0x0000000716f00000, 0x0000000716f00000, 0x0000000717000000| 0%| F| |TAMS 0x0000000716f00000, 0x0000000716f00000| Untracked +| 222|0x0000000717000000, 0x0000000717000000, 0x0000000717100000| 0%| F| |TAMS 0x0000000717000000, 0x0000000717000000| Untracked +| 223|0x0000000717100000, 0x0000000717100000, 0x0000000717200000| 0%| F| |TAMS 0x0000000717100000, 0x0000000717100000| Untracked +| 224|0x0000000717200000, 0x0000000717200000, 0x0000000717300000| 0%| F| |TAMS 0x0000000717200000, 0x0000000717200000| Untracked +| 225|0x0000000717300000, 0x0000000717300000, 0x0000000717400000| 0%| F| |TAMS 0x0000000717300000, 0x0000000717300000| Untracked +| 226|0x0000000717400000, 0x0000000717500000, 0x0000000717500000|100%| E| |TAMS 0x0000000717400000, 0x0000000717400000| Complete +| 227|0x0000000717500000, 0x0000000717600000, 0x0000000717600000|100%| E|CS|TAMS 0x0000000717500000, 0x0000000717500000| Complete +| 228|0x0000000717600000, 0x0000000717700000, 0x0000000717700000|100%| E|CS|TAMS 0x0000000717600000, 0x0000000717600000| Complete +| 229|0x0000000717700000, 0x0000000717800000, 0x0000000717800000|100%| E|CS|TAMS 0x0000000717700000, 0x0000000717700000| Complete +| 230|0x0000000717800000, 0x0000000717900000, 0x0000000717900000|100%| E|CS|TAMS 0x0000000717800000, 0x0000000717800000| Complete +| 231|0x0000000717900000, 0x0000000717a00000, 0x0000000717a00000|100%| E|CS|TAMS 0x0000000717900000, 0x0000000717900000| Complete +| 232|0x0000000717a00000, 0x0000000717b00000, 0x0000000717b00000|100%| E|CS|TAMS 0x0000000717a00000, 0x0000000717a00000| Complete +| 233|0x0000000717b00000, 0x0000000717c00000, 0x0000000717c00000|100%| E|CS|TAMS 0x0000000717b00000, 0x0000000717b00000| Complete +| 234|0x0000000717c00000, 0x0000000717d00000, 0x0000000717d00000|100%| E|CS|TAMS 0x0000000717c00000, 0x0000000717c00000| Complete +| 235|0x0000000717d00000, 0x0000000717e00000, 0x0000000717e00000|100%| E|CS|TAMS 0x0000000717d00000, 0x0000000717d00000| Complete +| 236|0x0000000717e00000, 0x0000000717f00000, 0x0000000717f00000|100%| E|CS|TAMS 0x0000000717e00000, 0x0000000717e00000| Complete +| 237|0x0000000717f00000, 0x0000000718000000, 0x0000000718000000|100%| E|CS|TAMS 0x0000000717f00000, 0x0000000717f00000| Complete +| 238|0x0000000718000000, 0x0000000718100000, 0x0000000718100000|100%| E|CS|TAMS 0x0000000718000000, 0x0000000718000000| Complete +| 239|0x0000000718100000, 0x0000000718200000, 0x0000000718200000|100%| E|CS|TAMS 0x0000000718100000, 0x0000000718100000| Complete +| 240|0x0000000718200000, 0x0000000718300000, 0x0000000718300000|100%| E|CS|TAMS 0x0000000718200000, 0x0000000718200000| Complete +| 241|0x0000000718300000, 0x0000000718400000, 0x0000000718400000|100%| E|CS|TAMS 0x0000000718300000, 0x0000000718300000| Complete +| 242|0x0000000718400000, 0x0000000718500000, 0x0000000718500000|100%| E|CS|TAMS 0x0000000718400000, 0x0000000718400000| Complete +| 243|0x0000000718500000, 0x0000000718600000, 0x0000000718600000|100%| E|CS|TAMS 0x0000000718500000, 0x0000000718500000| Complete +| 244|0x0000000718600000, 0x0000000718700000, 0x0000000718700000|100%| E|CS|TAMS 0x0000000718600000, 0x0000000718600000| Complete +| 245|0x0000000718700000, 0x0000000718800000, 0x0000000718800000|100%| E| |TAMS 0x0000000718700000, 0x0000000718700000| Complete +| 246|0x0000000718800000, 0x0000000718900000, 0x0000000718900000|100%| E|CS|TAMS 0x0000000718800000, 0x0000000718800000| Complete +| 247|0x0000000718900000, 0x0000000718a00000, 0x0000000718a00000|100%| E|CS|TAMS 0x0000000718900000, 0x0000000718900000| Complete +|2924|0x00000007bfe00000, 0x00000007bfe48000, 0x00000007bff00000| 28%|OA| |TAMS 0x00000007bfe00000, 0x00000007bfe00000| Untracked +|2925|0x00000007bff00000, 0x00000007bff6c000, 0x00000007c0000000| 42%|CA| |TAMS 0x00000007bff00000, 0x00000007bff00000| Untracked + +Card table byte_map: [0x00007f426f092000,0x00007f426f849000] _byte_map_base: 0x00007f426b849000 + +Marking Bits (Prev, Next): (CMBitMap*) 0x00007f428c07d618, (CMBitMap*) 0x00007f428c07d650 + Prev Bits: [0x00007f426ab23000, 0x00007f426e8db000) + Next Bits: [0x00007f4266d6b000, 0x00007f426ab23000) + +Polling page: 0x00007f4291023000 + +Metaspace: + +Usage: + Non-class: 7.19 MB capacity, 5.88 MB ( 82%) used, 1.25 MB ( 17%) free+waste, 57.19 KB ( <1%) overhead. + Class: 1.14 MB capacity, 842.99 KB ( 72%) used, 292.76 KB ( 25%) free+waste, 31.25 KB ( 3%) overhead. + Both: 8.33 MB capacity, 6.71 MB ( 81%) used, 1.54 MB ( 18%) free+waste, 88.44 KB ( 1%) overhead. + +Virtual space: + Non-class space: 8.00 MB reserved, 7.25 MB ( 91%) committed + Class space: 1.00 GB reserved, 1.25 MB ( <1%) committed + Both: 1.01 GB reserved, 8.50 MB ( <1%) committed + +Chunk freelists: + Non-Class: 0 bytes + Class: 0 bytes + Both: 0 bytes + +MaxMetaspaceSize: unlimited +CompressedClassSpaceSize: 1.00 GB +Initial GC threshold: 20.80 MB +Current GC threshold: 20.80 MB +CDS: on + +CodeHeap 'non-profiled nmethods': size=119172Kb used=344Kb max_used=344Kb free=118827Kb + bounds [0x00007f427c36e000, 0x00007f427c5de000, 0x00007f42837cf000] +CodeHeap 'profiled nmethods': size=119168Kb used=2640Kb max_used=2640Kb free=116527Kb + bounds [0x00007f4274f0e000, 0x00007f42751ae000, 0x00007f427c36e000] +CodeHeap 'non-nmethods': size=7420Kb used=2847Kb max_used=2856Kb free=4572Kb + bounds [0x00007f42747cf000, 0x00007f4274a9f000, 0x00007f4274f0e000] + total_blobs=1683 nmethods=1267 adapters=326 + compilation: enabled + stopped_count=0, restarted_count=0 + full_count=0 + +Compilation events (20 events): +Event: 0.373 Thread 0x00007f428c262000 nmethod 1248 0x00007f427c3c2390 code [0x00007f427c3c2540, 0x00007f427c3c26f8] +Event: 0.374 Thread 0x00007f42300cd000 nmethod 1250 0x00007f427c3c2890 code [0x00007f427c3c2a20, 0x00007f427c3c2ab8] +Event: 0.375 Thread 0x00007f428c264000 1251 3 java.lang.String::hashCode (49 bytes) +Event: 0.376 Thread 0x00007f428c264000 nmethod 1251 0x00007f427519cc10 code [0x00007f427519ce00, 0x00007f427519d220] +Event: 0.378 Thread 0x00007f423409d800 1252 3 java.lang.invoke.LambdaForm::editor (5 bytes) +Event: 0.378 Thread 0x00007f423819d000 1253 3 java.lang.invoke.LambdaFormEditor::lambdaFormEditor (12 bytes) +Event: 0.378 Thread 0x00007f423819f000 1254 3 java.lang.invoke.LambdaFormEditor:: (10 bytes) +Event: 0.378 Thread 0x00007f428c264000 1255 3 java.lang.invoke.LambdaFormEditor$Transform::inRange (36 bytes) +Event: 0.378 Thread 0x00007f423409d800 nmethod 1252 0x00007f427519d390 code [0x00007f427519d560, 0x00007f427519d8a0] +Event: 0.378 Thread 0x00007f423409d800 1256 3 java.lang.invoke.LambdaFormEditor$Transform:: (28 bytes) +Event: 0.378 Thread 0x00007f423819d000 nmethod 1253 0x00007f427519da10 code [0x00007f427519dbe0, 0x00007f427519dea0] +Event: 0.379 Thread 0x00007f423819f000 nmethod 1254 0x00007f427519e010 code [0x00007f427519e1c0, 0x00007f427519e390] +Event: 0.379 Thread 0x00007f423819f000 1257 3 java.lang.invoke.LambdaFormEditor::getInCache (186 bytes) +Event: 0.379 Thread 0x00007f428c264000 nmethod 1255 0x00007f427519e490 code [0x00007f427519e640, 0x00007f427519e790] +Event: 0.379 Thread 0x00007f423409d800 nmethod 1256 0x00007f427519e810 code [0x00007f427519e9e0, 0x00007f427519ece0] +Event: 0.379 Thread 0x00007f423819f000 nmethod 1257 0x00007f427519ee90 code [0x00007f427519f120, 0x00007f42751a0180] +Event: 0.380 Thread 0x00007f428c264000 1266 3 java.lang.AbstractStringBuilder::checkRange (60 bytes) +Event: 0.381 Thread 0x00007f428c264000 nmethod 1266 0x00007f42751a0510 code [0x00007f42751a07e0, 0x00007f42751a1370] +Event: 0.384 Thread 0x00007f423819d000 1267 3 java.lang.CharacterData::of (120 bytes) +Event: 0.384 Thread 0x00007f423819d000 nmethod 1267 0x00007f42751a1790 code [0x00007f42751a19a0, 0x00007f42751a2030] + +GC Heap History (0 events): +No events + +Deoptimization events (20 events): +Event: 0.291 Thread 0x00007f428c016000 DEOPT PACKING pc=0x00007f427c3a7458 sp=0x00007f4291165ce0 +Event: 0.291 Thread 0x00007f428c016000 DEOPT UNPACKING pc=0x00007f4274818ea5 sp=0x00007f4291165c98 mode 2 +Event: 0.318 Thread 0x00007f428c016000 DEOPT PACKING pc=0x00007f4274f9c288 sp=0x00007f4291164760 +Event: 0.318 Thread 0x00007f428c016000 DEOPT UNPACKING pc=0x00007f427481964a sp=0x00007f4291163c98 mode 0 +Event: 0.347 Thread 0x00007f428c016000 Uncommon trap: trap_request=0xffffff4d fr.pc=0x00007f427c3a8844 relative=0x0000000000000284 +Event: 0.347 Thread 0x00007f428c016000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f427c3a8844 method=java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object; @ 86 c2 +Event: 0.347 Thread 0x00007f428c016000 DEOPT PACKING pc=0x00007f427c3a8844 sp=0x00007f4291165a50 +Event: 0.347 Thread 0x00007f428c016000 DEOPT UNPACKING pc=0x00007f4274818ea5 sp=0x00007f42911659e8 mode 2 +Event: 0.372 Thread 0x00007f428c016000 Uncommon trap: trap_request=0xffffff4d fr.pc=0x00007f427c382b64 relative=0x0000000000000044 +Event: 0.372 Thread 0x00007f428c016000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f427c382b64 method=java.lang.CharacterData.of(I)Ljava/lang/CharacterData; @ 4 c2 +Event: 0.372 Thread 0x00007f428c016000 DEOPT PACKING pc=0x00007f427c382b64 sp=0x00007f4291163f60 +Event: 0.372 Thread 0x00007f428c016000 DEOPT UNPACKING pc=0x00007f4274818ea5 sp=0x00007f4291163f18 mode 2 +Event: 0.373 Thread 0x00007f428c016000 Uncommon trap: trap_request=0xffffff4d fr.pc=0x00007f427c37ab88 relative=0x0000000000000068 +Event: 0.373 Thread 0x00007f428c016000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f427c37ab88 method=java.lang.String.isLatin1()Z @ 10 c2 +Event: 0.373 Thread 0x00007f428c016000 DEOPT PACKING pc=0x00007f427c37ab88 sp=0x00007f42911635e0 +Event: 0.373 Thread 0x00007f428c016000 DEOPT UNPACKING pc=0x00007f4274818ea5 sp=0x00007f4291163590 mode 2 +Event: 0.374 Thread 0x00007f428c016000 Uncommon trap: trap_request=0xffffff4d fr.pc=0x00007f427c37a234 relative=0x0000000000000194 +Event: 0.374 Thread 0x00007f428c016000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f427c37a234 method=java.lang.String.isLatin1()Z @ 10 c2 +Event: 0.374 Thread 0x00007f428c016000 DEOPT PACKING pc=0x00007f427c37a234 sp=0x00007f4291164800 +Event: 0.374 Thread 0x00007f428c016000 DEOPT UNPACKING pc=0x00007f4274818ea5 sp=0x00007f4291164748 mode 2 + +Classes redefined (0 events): +No events + +Internal exceptions (20 events): +Event: 0.291 Thread 0x00007f428c016000 Exception (0x0000000717a69c98) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 839] +Event: 0.291 Thread 0x00007f428c016000 Exception (0x0000000717a6c698) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 839] +Event: 0.306 Thread 0x00007f428c016000 Exception (0x000000071790e3a0) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.306 Thread 0x00007f428c016000 Exception (0x0000000717911160) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 839] +Event: 0.308 Thread 0x00007f428c016000 Exception (0x00000007179351f8) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.315 Thread 0x00007f428c016000 Exception (0x00000007179d63e0) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.319 Thread 0x00007f428c016000 Exception (0x0000000717822090) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.321 Thread 0x00007f428c016000 Exception (0x000000071783aed8) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.327 Thread 0x00007f428c016000 Exception (0x00000007178f6698) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.332 Thread 0x00007f428c016000 Exception (0x00000007177791e0) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.357 Thread 0x00007f428c016000 Exception (0x00000007176f6f90) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.360 Thread 0x00007f428c016000 Exception (0x0000000717505960) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.362 Thread 0x00007f428c016000 Exception (0x0000000717517950) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.362 Thread 0x00007f428c016000 Exception (0x000000071751b0a8) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 839] +Event: 0.378 Thread 0x00007f428c016000 Exception (0x00000007175fcd48) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.379 Thread 0x00007f428c016000 Exception (0x0000000717409868) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.380 Thread 0x00007f428c016000 Exception (0x00000007174108c0) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.380 Thread 0x00007f428c016000 Exception (0x0000000717414a88) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.380 Thread 0x00007f428c016000 Exception (0x0000000717418470) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.512 Thread 0x00007f428c016000 Exception (0x0000000717436098) thrown at [./src/hotspot/share/prims/jni.cpp, line 617] + +Events (20 events): +Event: 0.383 loading class java/util/concurrent/CompletableFuture$UniHandle done +Event: 0.383 loading class java/lang/ProcessBuilder$NullInputStream +Event: 0.383 loading class java/lang/ProcessBuilder$NullInputStream done +Event: 0.383 loading class java/io/FileOutputStream$1 +Event: 0.383 loading class java/io/FileOutputStream$1 done +Event: 0.383 loading class java/lang/ProcessBuilder$NullOutputStream +Event: 0.383 loading class java/lang/ProcessBuilder$NullOutputStream done +Event: 0.383 loading class jdk/internal/ref/CleanerImpl$InnocuousThreadFactory +Event: 0.383 loading class jdk/internal/ref/CleanerImpl$InnocuousThreadFactory done +Event: 0.384 Thread 0x00007f428c6b6000 Thread added: 0x00007f428c6b6000 +Event: 0.384 Protecting memory [0x00007f425e37a000,0x00007f425e37e000] with protection modes 0 +Event: 0.384 loading class com/nvidia/cuopt/linearprogramming/NativeCuOpt +Event: 0.384 loading class com/nvidia/cuopt/linearprogramming/NativeCuOpt done +Event: 0.384 Executing VM operation: RevokeBias +Event: 0.384 Executing VM operation: RevokeBias done +Event: 0.506 Loaded shared library /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so +Event: 0.512 loading class com/nvidia/cuopt/linearprogramming/DataModel$NativeHandle +Event: 0.512 loading class com/nvidia/cuopt/linearprogramming/DataModel$NativeHandle done +Event: 0.512 loading class com/nvidia/cuopt/linearprogramming/CuOptException +Event: 0.512 loading class com/nvidia/cuopt/linearprogramming/CuOptException done + + +Dynamic libraries: +709200000-718a00000 rw-p 00000000 00:00 0 +718a00000-7bfe00000 ---p 00000000 00:00 0 +7bfe00000-7bfe48000 rw-p 00b14000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa +7bfe48000-7bff00000 rw-p 00000000 00:00 0 +7bff00000-7bff6c000 rw-p 00aa8000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa +7bff6c000-7c0000000 rw-p 00000000 00:00 0 +7c0000000-800000000 ---p 00000000 00:00 0 +800000000-800002000 rwxp 00001000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa +800002000-8003ce000 rw-p 00003000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa +8003ce000-800aa6000 r--p 003cf000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa +800aa6000-800aa7000 rw-p 00aa7000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa +840000000-840140000 rw-p 00000000 00:00 0 +840140000-880000000 ---p 00000000 00:00 0 +5555bb482000-5555bb483000 r--p 00000000 08:20 294880 /usr/lib/jvm/java-11-openjdk-amd64/bin/java +5555bb483000-5555bb484000 r-xp 00001000 08:20 294880 /usr/lib/jvm/java-11-openjdk-amd64/bin/java +5555bb484000-5555bb485000 r--p 00002000 08:20 294880 /usr/lib/jvm/java-11-openjdk-amd64/bin/java +5555bb485000-5555bb486000 r--p 00002000 08:20 294880 /usr/lib/jvm/java-11-openjdk-amd64/bin/java +5555bb486000-5555bb487000 rw-p 00003000 08:20 294880 /usr/lib/jvm/java-11-openjdk-amd64/bin/java +5555bb894000-5555bb8b5000 rw-p 00000000 00:00 0 [heap] +7f41cb603000-7f41cbe00000 rw-p 00000000 00:00 0 +7f41cbe00000-7f41e327c000 r-xp 00000000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 +7f41e327c000-7f41e347c000 ---p 1747c000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 +7f41e347c000-7f41e3734000 r--p 1747c000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 +7f41e3734000-7f41e3dc8000 rw-p 17734000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 +7f41e3dc8000-7f41e97e0000 rw-p 00000000 00:00 0 +7f41e97e0000-7f41e99df000 ---p 1d9e0000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 +7f41e99df000-7f41ea4d5000 r--p 17ddf000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 +7f41ea4d5000-7f41ea6d4000 ---p 1e6d5000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 +7f41ea6d4000-7f41f02b7000 rw-p 188d4000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 +7f41f0400000-7f41f445e000 r-xp 00000000 08:20 101383 /home/cbrissette/cuopt/.cuopt_env/lib/libcudss.so.0.7.1 +7f41f445e000-7f41f465e000 ---p 0405e000 08:20 101383 /home/cbrissette/cuopt/.cuopt_env/lib/libcudss.so.0.7.1 +7f41f465e000-7f41f4668000 r--p 0405e000 08:20 101383 /home/cbrissette/cuopt/.cuopt_env/lib/libcudss.so.0.7.1 +7f41f4668000-7f41f466e000 rw-p 04068000 08:20 101383 /home/cbrissette/cuopt/.cuopt_env/lib/libcudss.so.0.7.1 +7f41f466e000-7f41f467e000 rw-p 00000000 00:00 0 +7f41f467e000-7f41f4680000 rw-p 042ac000 08:20 101383 /home/cbrissette/cuopt/.cuopt_env/lib/libcudss.so.0.7.1 +7f41f4800000-7f41fe76c000 r-xp 00000000 08:20 100411 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcusparse.so.12.7.10.1 +7f41fe76c000-7f41fe96c000 ---p 09f6c000 08:20 100411 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcusparse.so.12.7.10.1 +7f41fe96c000-7f41fe97b000 r--p 09f6c000 08:20 100411 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcusparse.so.12.7.10.1 +7f41fe97b000-7f41fe999000 rw-p 09f7b000 08:20 100411 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcusparse.so.12.7.10.1 +7f41fe999000-7f41fe9be000 rw-p 00000000 00:00 0 +7f41feac1000-7f41fed51000 r--p 00000000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so +7f41fed51000-7f41ff960000 r-xp 00290000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so +7f41ff960000-7f41ffc88000 r--p 00e9f000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so +7f41ffc88000-7f41ffca9000 r--p 011c7000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so +7f41ffca9000-7f41ffcb0000 rw-p 011e8000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so +7f41ffcb0000-7f4200e30000 rw-p 00000000 00:00 0 +7f4200e30000-7f4200e31000 ---p 0236f000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so +7f4200e31000-7f4204000000 rw-p 011ef000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so +7f4204000000-7f4204021000 rw-p 00000000 00:00 0 +7f4204021000-7f4208000000 ---p 00000000 00:00 0 +7f420873b000-7f4208a00000 rw-p 00000000 00:00 0 +7f4208a00000-7f420bd9d000 r-xp 00000000 08:20 101544 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublas.so.13.4.0.1 +7f420bd9d000-7f420bf9d000 ---p 0339d000 08:20 101544 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublas.so.13.4.0.1 +7f420bf9d000-7f420bfa9000 r--p 0339d000 08:20 101544 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublas.so.13.4.0.1 +7f420bfa9000-7f420bfb0000 rw-p 033a9000 08:20 101544 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublas.so.13.4.0.1 +7f420bfb0000-7f420bfd4000 rw-p 00000000 00:00 0 +7f420c000000-7f420c021000 rw-p 00000000 00:00 0 +7f420c021000-7f4210000000 ---p 00000000 00:00 0 +7f4210000000-7f4210021000 rw-p 00000000 00:00 0 +7f4210021000-7f4214000000 ---p 00000000 00:00 0 +7f4214000000-7f4214257000 rw-p 00000000 00:00 0 +7f4214257000-7f4218000000 ---p 00000000 00:00 0 +7f4218000000-7f4218021000 rw-p 00000000 00:00 0 +7f4218021000-7f421c000000 ---p 00000000 00:00 0 +7f421c000000-7f421c021000 rw-p 00000000 00:00 0 +7f421c021000-7f4220000000 ---p 00000000 00:00 0 +7f4220000000-7f4220021000 rw-p 00000000 00:00 0 +7f4220021000-7f4224000000 ---p 00000000 00:00 0 +7f4224000000-7f4224021000 rw-p 00000000 00:00 0 +7f4224021000-7f4228000000 ---p 00000000 00:00 0 +7f4228000000-7f4228021000 rw-p 00000000 00:00 0 +7f4228021000-7f422c000000 ---p 00000000 00:00 0 +7f422c000000-7f422c021000 rw-p 00000000 00:00 0 +7f422c021000-7f4230000000 ---p 00000000 00:00 0 +7f4230000000-7f423014e000 rw-p 00000000 00:00 0 +7f423014e000-7f4234000000 ---p 00000000 00:00 0 +7f4234000000-7f42343d1000 rw-p 00000000 00:00 0 +7f42343d1000-7f4238000000 ---p 00000000 00:00 0 +7f4238000000-7f423821f000 rw-p 00000000 00:00 0 +7f423821f000-7f423c000000 ---p 00000000 00:00 0 +7f423c000000-7f423c021000 rw-p 00000000 00:00 0 +7f423c021000-7f4240000000 ---p 00000000 00:00 0 +7f4240000000-7f4240021000 rw-p 00000000 00:00 0 +7f4240021000-7f4244000000 ---p 00000000 00:00 0 +7f4244000000-7f4244021000 rw-p 00000000 00:00 0 +7f4244021000-7f4248000000 ---p 00000000 00:00 0 +7f4248000000-7f4248021000 rw-p 00000000 00:00 0 +7f4248021000-7f424c000000 ---p 00000000 00:00 0 +7f424c000000-7f424c021000 rw-p 00000000 00:00 0 +7f424c021000-7f4250000000 ---p 00000000 00:00 0 +7f4250000000-7f4250021000 rw-p 00000000 00:00 0 +7f4250021000-7f4254000000 ---p 00000000 00:00 0 +7f4254000000-7f4254021000 rw-p 00000000 00:00 0 +7f4254021000-7f4258000000 ---p 00000000 00:00 0 +7f4258000000-7f4258021000 rw-p 00000000 00:00 0 +7f4258021000-7f425c000000 ---p 00000000 00:00 0 +7f425c000000-7f425c200000 rw-p 00000000 00:00 0 +7f425c200000-7f425c228000 r-xp 00000000 00:22 1688849861009770 /usr/lib/wsl/lib/libcuda.so.1 +7f425c228000-7f425c428000 ---p 00028000 00:22 1688849861009770 /usr/lib/wsl/lib/libcuda.so.1 +7f425c428000-7f425c429000 r--p 00028000 00:22 1688849861009770 /usr/lib/wsl/lib/libcuda.so.1 +7f425c429000-7f425c42b000 rw-p 00029000 00:22 1688849861009770 /usr/lib/wsl/lib/libcuda.so.1 +7f425c4d7000-7f425c527000 rw-p 00000000 00:00 0 +7f425c527000-7f425c52d000 r--p 00000000 08:20 194064 /home/cbrissette/cuopt/.cuopt_env/lib/libtbbmalloc.so.2.18 +7f425c52d000-7f425c544000 r-xp 00006000 08:20 194064 /home/cbrissette/cuopt/.cuopt_env/lib/libtbbmalloc.so.2.18 +7f425c544000-7f425c549000 r--p 0001d000 08:20 194064 /home/cbrissette/cuopt/.cuopt_env/lib/libtbbmalloc.so.2.18 +7f425c549000-7f425c54a000 r--p 00021000 08:20 194064 /home/cbrissette/cuopt/.cuopt_env/lib/libtbbmalloc.so.2.18 +7f425c54a000-7f425c54c000 rw-p 00022000 08:20 194064 /home/cbrissette/cuopt/.cuopt_env/lib/libtbbmalloc.so.2.18 +7f425c54c000-7f425c56d000 rw-p 00000000 00:00 0 +7f425c56d000-7f425c56e000 r--p 00000000 08:20 177053 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_utf8_for_code_point.so.2601.0.0 +7f425c56e000-7f425c56f000 r-xp 00001000 08:20 177053 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_utf8_for_code_point.so.2601.0.0 +7f425c56f000-7f425c570000 r--p 00002000 08:20 177053 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_utf8_for_code_point.so.2601.0.0 +7f425c570000-7f425c571000 r--p 00002000 08:20 177053 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_utf8_for_code_point.so.2601.0.0 +7f425c571000-7f425c572000 rw-p 00003000 08:20 177053 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_utf8_for_code_point.so.2601.0.0 +7f425c572000-7f425c573000 r--p 00000000 08:20 176909 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_decode_rust_punycode.so.2601.0.0 +7f425c573000-7f425c574000 r-xp 00001000 08:20 176909 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_decode_rust_punycode.so.2601.0.0 +7f425c574000-7f425c575000 r--p 00002000 08:20 176909 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_decode_rust_punycode.so.2601.0.0 +7f425c575000-7f425c576000 r--p 00002000 08:20 176909 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_decode_rust_punycode.so.2601.0.0 +7f425c576000-7f425c577000 rw-p 00003000 08:20 176909 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_decode_rust_punycode.so.2601.0.0 +7f425c577000-7f425c578000 r--p 00000000 08:20 176160 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_rust.so.2601.0.0 +7f425c578000-7f425c57c000 r-xp 00001000 08:20 176160 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_rust.so.2601.0.0 +7f425c57c000-7f425c57d000 r--p 00005000 08:20 176160 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_rust.so.2601.0.0 +7f425c57d000-7f425c57e000 r--p 00005000 08:20 176160 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_rust.so.2601.0.0 +7f425c57e000-7f425c57f000 rw-p 00006000 08:20 176160 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_rust.so.2601.0.0 +7f425c57f000-7f425c581000 r--p 00000000 08:20 175645 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_internal.so.2601.0.0 +7f425c581000-7f425c583000 r-xp 00002000 08:20 175645 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_internal.so.2601.0.0 +7f425c583000-7f425c584000 r--p 00004000 08:20 175645 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_internal.so.2601.0.0 +7f425c584000-7f425c585000 r--p 00004000 08:20 175645 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_internal.so.2601.0.0 +7f425c585000-7f425c586000 rw-p 00005000 08:20 175645 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_internal.so.2601.0.0 +7f425c586000-7f425c588000 r--p 00000000 08:20 176073 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_internal.so.2601.0.0 +7f425c588000-7f425c594000 r-xp 00002000 08:20 176073 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_internal.so.2601.0.0 +7f425c594000-7f425c596000 r--p 0000e000 08:20 176073 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_internal.so.2601.0.0 +7f425c596000-7f425c597000 r--p 00010000 08:20 176073 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_internal.so.2601.0.0 +7f425c597000-7f425c598000 rw-p 00011000 08:20 176073 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_internal.so.2601.0.0 +7f425c598000-7f425c599000 r--p 00000000 08:20 174727 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_program_name.so.2601.0.0 +7f425c599000-7f425c59a000 r-xp 00001000 08:20 174727 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_program_name.so.2601.0.0 +7f425c59a000-7f425c59b000 r--p 00002000 08:20 174727 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_program_name.so.2601.0.0 +7f425c59b000-7f425c59c000 r--p 00002000 08:20 174727 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_program_name.so.2601.0.0 +7f425c59c000-7f425c59d000 rw-p 00003000 08:20 174727 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_program_name.so.2601.0.0 +7f425c59d000-7f425c59f000 r--p 00000000 08:20 174492 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_debugging_internal.so.2601.0.0 +7f425c59f000-7f425c5a0000 r-xp 00002000 08:20 174492 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_debugging_internal.so.2601.0.0 +7f425c5a0000-7f425c5a1000 r--p 00003000 08:20 174492 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_debugging_internal.so.2601.0.0 +7f425c5a1000-7f425c5a2000 r--p 00003000 08:20 174492 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_debugging_internal.so.2601.0.0 +7f425c5a2000-7f425c5a3000 rw-p 00004000 08:20 174492 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_debugging_internal.so.2601.0.0 +7f425c5a3000-7f425c5a4000 r--p 00000000 08:20 172719 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_borrowed_fixup_buffer.so.2601.0.0 +7f425c5a4000-7f425c5a5000 r-xp 00001000 08:20 172719 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_borrowed_fixup_buffer.so.2601.0.0 +7f425c5a5000-7f425c5a6000 r--p 00002000 08:20 172719 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_borrowed_fixup_buffer.so.2601.0.0 +7f425c5a6000-7f425c5a7000 r--p 00002000 08:20 172719 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_borrowed_fixup_buffer.so.2601.0.0 +7f425c5a7000-7f425c5a8000 rw-p 00003000 08:20 172719 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_borrowed_fixup_buffer.so.2601.0.0 +7f425c5a8000-7f425c5c0000 rw-p 00000000 00:00 0 +7f425c5c0000-7f425c5c2000 r--p 00000000 08:20 177931 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc32c.so.2601.0.0 +7f425c5c2000-7f425c5c3000 r-xp 00002000 08:20 177931 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc32c.so.2601.0.0 +7f425c5c3000-7f425c5c4000 r--p 00003000 08:20 177931 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc32c.so.2601.0.0 +7f425c5c4000-7f425c5c5000 r--p 00003000 08:20 177931 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc32c.so.2601.0.0 +7f425c5c5000-7f425c5c6000 rw-p 00004000 08:20 177931 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc32c.so.2601.0.0 +7f425c5c6000-7f425c5c7000 r--p 00000000 08:20 177959 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_sink.so.2601.0.0 +7f425c5c7000-7f425c5c8000 r-xp 00001000 08:20 177959 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_sink.so.2601.0.0 +7f425c5c8000-7f425c5c9000 r--p 00002000 08:20 177959 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_sink.so.2601.0.0 +7f425c5c9000-7f425c5ca000 r--p 00002000 08:20 177959 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_sink.so.2601.0.0 +7f425c5ca000-7f425c5cb000 rw-p 00003000 08:20 177959 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_sink.so.2601.0.0 +7f425c5cb000-7f425c5cd000 r--p 00000000 08:20 175392 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_symbolize.so.2601.0.0 +7f425c5cd000-7f425c5d0000 r-xp 00002000 08:20 175392 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_symbolize.so.2601.0.0 +7f425c5d0000-7f425c5d1000 r--p 00005000 08:20 175392 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_symbolize.so.2601.0.0 +7f425c5d1000-7f425c5d2000 r--p 00006000 08:20 175392 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_symbolize.so.2601.0.0 +7f425c5d2000-7f425c5d3000 rw-p 00007000 08:20 175392 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_symbolize.so.2601.0.0 +7f425c5d3000-7f425c5d4000 r--p 00000000 08:20 176368 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_private_handle_accessor.so.2601.0.0 +7f425c5d4000-7f425c5d5000 r-xp 00001000 08:20 176368 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_private_handle_accessor.so.2601.0.0 +7f425c5d5000-7f425c5d6000 r--p 00002000 08:20 176368 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_private_handle_accessor.so.2601.0.0 +7f425c5d6000-7f425c5d7000 r--p 00002000 08:20 176368 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_private_handle_accessor.so.2601.0.0 +7f425c5d7000-7f425c5d8000 rw-p 00003000 08:20 176368 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_private_handle_accessor.so.2601.0.0 +7f425c5d8000-7f425c5da000 r--p 00000000 08:20 176315 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_config.so.2601.0.0 +7f425c5da000-7f425c5dc000 r-xp 00002000 08:20 176315 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_config.so.2601.0.0 +7f425c5dc000-7f425c5dd000 r--p 00004000 08:20 176315 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_config.so.2601.0.0 +7f425c5dd000-7f425c5de000 r--p 00004000 08:20 176315 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_config.so.2601.0.0 +7f425c5de000-7f425c5df000 rw-p 00005000 08:20 176315 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_config.so.2601.0.0 +7f425c5df000-7f425c5e0000 r--p 00000000 08:20 174103 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag_internal.so.2601.0.0 +7f425c5e0000-7f425c5e1000 r-xp 00001000 08:20 174103 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag_internal.so.2601.0.0 +7f425c5e1000-7f425c5e2000 r--p 00002000 08:20 174103 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag_internal.so.2601.0.0 +7f425c5e2000-7f425c5e3000 r--p 00002000 08:20 174103 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag_internal.so.2601.0.0 +7f425c5e3000-7f425c5e4000 rw-p 00003000 08:20 174103 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag_internal.so.2601.0.0 +7f425c5e4000-7f425c5e5000 r--p 00000000 08:20 175648 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag.so.2601.0.0 +7f425c5e5000-7f425c5e6000 r-xp 00001000 08:20 175648 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag.so.2601.0.0 +7f425c5e6000-7f425c5e7000 r--p 00002000 08:20 175648 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag.so.2601.0.0 +7f425c5e7000-7f425c5e8000 r--p 00002000 08:20 175648 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag.so.2601.0.0 +7f425c5e8000-7f425c5e9000 rw-p 00003000 08:20 175648 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag.so.2601.0.0 +7f425c5e9000-7f425c5ea000 r--p 00000000 08:20 172450 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_platform.so.2601.0.0 +7f425c5ea000-7f425c5eb000 r-xp 00001000 08:20 172450 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_platform.so.2601.0.0 +7f425c5eb000-7f425c5ed000 r--p 00002000 08:20 172450 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_platform.so.2601.0.0 +7f425c5ed000-7f425c5ee000 r--p 00003000 08:20 172450 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_platform.so.2601.0.0 +7f425c5ee000-7f425c5ef000 rw-p 00004000 08:20 172450 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_platform.so.2601.0.0 +7f425c5ef000-7f425c5f0000 r--p 00000000 08:20 178131 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes.so.2601.0.0 +7f425c5f0000-7f425c5f1000 r-xp 00001000 08:20 178131 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes.so.2601.0.0 +7f425c5f1000-7f425c5f2000 r--p 00002000 08:20 178131 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes.so.2601.0.0 +7f425c5f2000-7f425c5f3000 r--p 00002000 08:20 178131 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes.so.2601.0.0 +7f425c5f3000-7f425c5f4000 rw-p 00003000 08:20 178131 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes.so.2601.0.0 +7f425c5f4000-7f425c5f5000 r--p 00000000 08:20 176601 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_seed_gen_exception.so.2601.0.0 +7f425c5f5000-7f425c5f6000 r-xp 00001000 08:20 176601 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_seed_gen_exception.so.2601.0.0 +7f425c5f6000-7f425c5f7000 r--p 00002000 08:20 176601 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_seed_gen_exception.so.2601.0.0 +7f425c5f7000-7f425c5f8000 r--p 00002000 08:20 176601 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_seed_gen_exception.so.2601.0.0 +7f425c5f8000-7f425c5f9000 rw-p 00003000 08:20 176601 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_seed_gen_exception.so.2601.0.0 +7f425c5f9000-7f425c5fa000 r--p 00000000 08:20 178171 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_seed_material.so.2601.0.0 +7f425c5fa000-7f425c5fb000 r-xp 00001000 08:20 178171 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_seed_material.so.2601.0.0 +7f425c5fb000-7f425c5fc000 r--p 00002000 08:20 178171 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_seed_material.so.2601.0.0 +7f425c5fc000-7f425c5fd000 r--p 00002000 08:20 178171 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_seed_material.so.2601.0.0 +7f425c5fd000-7f425c5fe000 rw-p 00003000 08:20 178171 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_seed_material.so.2601.0.0 +7f425c5fe000-7f425c5ff000 r--p 00000000 08:20 175910 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_city.so.2601.0.0 +7f425c5ff000-7f425c600000 r-xp 00001000 08:20 175910 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_city.so.2601.0.0 +7f425c600000-7f425c601000 r--p 00002000 08:20 175910 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_city.so.2601.0.0 +7f425c601000-7f425c602000 r--p 00002000 08:20 175910 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_city.so.2601.0.0 +7f425c602000-7f425c603000 rw-p 00003000 08:20 175910 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_city.so.2601.0.0 +7f425c603000-7f425c605000 r--p 00000000 08:20 174503 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hashtablez_sampler.so.2601.0.0 +7f425c605000-7f425c606000 r-xp 00002000 08:20 174503 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hashtablez_sampler.so.2601.0.0 +7f425c606000-7f425c607000 r--p 00003000 08:20 174503 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hashtablez_sampler.so.2601.0.0 +7f425c607000-7f425c608000 r--p 00003000 08:20 174503 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hashtablez_sampler.so.2601.0.0 +7f425c608000-7f425c609000 rw-p 00004000 08:20 174503 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hashtablez_sampler.so.2601.0.0 +7f425c609000-7f425c60b000 r--p 00000000 08:20 176334 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_int128.so.2601.0.0 +7f425c60b000-7f425c60d000 r-xp 00002000 08:20 176334 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_int128.so.2601.0.0 +7f425c60d000-7f425c60e000 r--p 00004000 08:20 176334 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_int128.so.2601.0.0 +7f425c60e000-7f425c60f000 r--p 00004000 08:20 176334 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_int128.so.2601.0.0 +7f425c60f000-7f425c610000 rw-p 00005000 08:20 176334 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_int128.so.2601.0.0 +7f425c610000-7f425c611000 r--p 00000000 08:20 173674 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_fnmatch.so.2601.0.0 +7f425c611000-7f425c612000 r-xp 00001000 08:20 173674 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_fnmatch.so.2601.0.0 +7f425c612000-7f425c613000 r--p 00002000 08:20 173674 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_fnmatch.so.2601.0.0 +7f425c613000-7f425c614000 r--p 00002000 08:20 173674 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_fnmatch.so.2601.0.0 +7f425c614000-7f425c615000 rw-p 00003000 08:20 173674 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_fnmatch.so.2601.0.0 +7f425c615000-7f425c617000 r--p 00000000 08:20 176024 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_malloc_internal.so.2601.0.0 +7f425c617000-7f425c619000 r-xp 00002000 08:20 176024 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_malloc_internal.so.2601.0.0 +7f425c619000-7f425c61a000 r--p 00004000 08:20 176024 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_malloc_internal.so.2601.0.0 +7f425c61a000-7f425c61b000 r--p 00004000 08:20 176024 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_malloc_internal.so.2601.0.0 +7f425c61b000-7f425c61c000 rw-p 00005000 08:20 176024 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_malloc_internal.so.2601.0.0 +7f425c61c000-7f425c61d000 r--p 00000000 08:20 178559 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_tracing_internal.so.2601.0.0 +7f425c61d000-7f425c61e000 r-xp 00001000 08:20 178559 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_tracing_internal.so.2601.0.0 +7f425c61e000-7f425c61f000 r--p 00002000 08:20 178559 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_tracing_internal.so.2601.0.0 +7f425c61f000-7f425c620000 r--p 00002000 08:20 178559 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_tracing_internal.so.2601.0.0 +7f425c620000-7f425c621000 rw-p 00003000 08:20 178559 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_tracing_internal.so.2601.0.0 +7f425c621000-7f425c622000 r--p 00000000 08:20 173445 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_exponential_biased.so.2601.0.0 +7f425c622000-7f425c623000 r-xp 00001000 08:20 173445 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_exponential_biased.so.2601.0.0 +7f425c623000-7f425c624000 r--p 00002000 08:20 173445 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_exponential_biased.so.2601.0.0 +7f425c624000-7f425c625000 r--p 00002000 08:20 173445 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_exponential_biased.so.2601.0.0 +7f425c625000-7f425c626000 rw-p 00003000 08:20 173445 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_exponential_biased.so.2601.0.0 +7f425c626000-7f425c627000 r--p 00000000 08:20 173659 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_stacktrace.so.2601.0.0 +7f425c627000-7f425c629000 r-xp 00001000 08:20 173659 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_stacktrace.so.2601.0.0 +7f425c629000-7f425c62a000 r--p 00003000 08:20 173659 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_stacktrace.so.2601.0.0 +7f425c62a000-7f425c62b000 r--p 00003000 08:20 173659 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_stacktrace.so.2601.0.0 +7f425c62b000-7f425c62c000 rw-p 00004000 08:20 173659 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_stacktrace.so.2601.0.0 +7f425c62c000-7f425c62e000 r--p 00000000 08:20 177928 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_handle.so.2601.0.0 +7f425c62e000-7f425c62f000 r-xp 00002000 08:20 177928 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_handle.so.2601.0.0 +7f425c62f000-7f425c630000 r--p 00003000 08:20 177928 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_handle.so.2601.0.0 +7f425c630000-7f425c631000 r--p 00003000 08:20 177928 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_handle.so.2601.0.0 +7f425c631000-7f425c632000 rw-p 00004000 08:20 177928 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_handle.so.2601.0.0 +7f425c632000-7f425c634000 r--p 00000000 08:20 175778 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_cord_state.so.2601.0.0 +7f425c634000-7f425c638000 r-xp 00002000 08:20 175778 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_cord_state.so.2601.0.0 +7f425c638000-7f425c639000 r--p 00006000 08:20 175778 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_cord_state.so.2601.0.0 +7f425c639000-7f425c63a000 r--p 00006000 08:20 175778 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_cord_state.so.2601.0.0 +7f425c63a000-7f425c63b000 rw-p 00007000 08:20 175778 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_cord_state.so.2601.0.0 +7f425c63b000-7f425c63c000 r--p 00000000 08:20 177417 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_logging_internal.so.2601.0.0 +7f425c63c000-7f425c63d000 r-xp 00001000 08:20 177417 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_logging_internal.so.2601.0.0 +7f425c63d000-7f425c63e000 r--p 00002000 08:20 177417 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_logging_internal.so.2601.0.0 +7f425c63e000-7f425c63f000 r--p 00002000 08:20 177417 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_logging_internal.so.2601.0.0 +7f425c63f000-7f425c640000 rw-p 00003000 08:20 177417 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_logging_internal.so.2601.0.0 +7f425c640000-7f425c642000 r--p 00000000 08:20 173916 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_base.so.2601.0.0 +7f425c642000-7f425c643000 r-xp 00002000 08:20 173916 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_base.so.2601.0.0 +7f425c643000-7f425c644000 r--p 00003000 08:20 173916 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_base.so.2601.0.0 +7f425c644000-7f425c645000 r--p 00003000 08:20 173916 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_base.so.2601.0.0 +7f425c645000-7f425c646000 rw-p 00004000 08:20 173916 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_base.so.2601.0.0 +7f425c646000-7f425c648000 r--p 00000000 08:20 177853 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings_internal.so.2601.0.0 +7f425c648000-7f425c649000 r-xp 00002000 08:20 177853 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings_internal.so.2601.0.0 +7f425c649000-7f425c64a000 r--p 00003000 08:20 177853 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings_internal.so.2601.0.0 +7f425c64a000-7f425c64b000 r--p 00003000 08:20 177853 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings_internal.so.2601.0.0 +7f425c64b000-7f425c64c000 rw-p 00004000 08:20 177853 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings_internal.so.2601.0.0 +7f425c64c000-7f425c64d000 r--p 00000000 08:20 174472 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_proto.so.2601.0.0 +7f425c64d000-7f425c64e000 r-xp 00001000 08:20 174472 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_proto.so.2601.0.0 +7f425c64e000-7f425c64f000 r--p 00002000 08:20 174472 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_proto.so.2601.0.0 +7f425c64f000-7f425c650000 r--p 00002000 08:20 174472 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_proto.so.2601.0.0 +7f425c650000-7f425c651000 rw-p 00003000 08:20 174472 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_proto.so.2601.0.0 +7f425c651000-7f425c652000 r--p 00000000 08:20 177006 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_globals.so.2601.0.0 +7f425c652000-7f425c653000 r-xp 00001000 08:20 177006 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_globals.so.2601.0.0 +7f425c653000-7f425c654000 r--p 00002000 08:20 177006 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_globals.so.2601.0.0 +7f425c654000-7f425c655000 r--p 00002000 08:20 177006 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_globals.so.2601.0.0 +7f425c655000-7f425c656000 rw-p 00003000 08:20 177006 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_globals.so.2601.0.0 +7f425c656000-7f425c658000 r--p 00000000 08:20 172473 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_log_sink_set.so.2601.0.0 +7f425c658000-7f425c659000 r-xp 00002000 08:20 172473 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_log_sink_set.so.2601.0.0 +7f425c659000-7f425c65a000 r--p 00003000 08:20 172473 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_log_sink_set.so.2601.0.0 +7f425c65a000-7f425c65b000 r--p 00003000 08:20 172473 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_log_sink_set.so.2601.0.0 +7f425c65b000-7f425c65c000 rw-p 00004000 08:20 172473 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_log_sink_set.so.2601.0.0 +7f425c65c000-7f425c65d000 r--p 00000000 08:20 173223 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strerror.so.2601.0.0 +7f425c65d000-7f425c65e000 r-xp 00001000 08:20 173223 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strerror.so.2601.0.0 +7f425c65e000-7f425c65f000 r--p 00002000 08:20 173223 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strerror.so.2601.0.0 +7f425c65f000-7f425c660000 r--p 00002000 08:20 173223 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strerror.so.2601.0.0 +7f425c660000-7f425c661000 rw-p 00003000 08:20 173223 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strerror.so.2601.0.0 +7f425c661000-7f425c662000 r--p 00000000 08:20 175668 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_structured_proto.so.2601.0.0 +7f425c662000-7f425c663000 r-xp 00001000 08:20 175668 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_structured_proto.so.2601.0.0 +7f425c663000-7f425c664000 r--p 00002000 08:20 175668 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_structured_proto.so.2601.0.0 +7f425c664000-7f425c665000 r--p 00002000 08:20 175668 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_structured_proto.so.2601.0.0 +7f425c665000-7f425c666000 rw-p 00003000 08:20 175668 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_structured_proto.so.2601.0.0 +7f425c666000-7f425c668000 r--p 00000000 08:20 173934 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_format.so.2601.0.0 +7f425c668000-7f425c669000 r-xp 00002000 08:20 173934 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_format.so.2601.0.0 +7f425c669000-7f425c66a000 r--p 00003000 08:20 173934 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_format.so.2601.0.0 +7f425c66a000-7f425c66b000 r--p 00003000 08:20 173934 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_format.so.2601.0.0 +7f425c66b000-7f425c66c000 rw-p 00004000 08:20 173934 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_format.so.2601.0.0 +7f425c66c000-7f425c66d000 r--p 00000000 08:20 172814 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_examine_stack.so.2601.0.0 +7f425c66d000-7f425c66e000 r-xp 00001000 08:20 172814 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_examine_stack.so.2601.0.0 +7f425c66e000-7f425c66f000 r--p 00002000 08:20 172814 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_examine_stack.so.2601.0.0 +7f425c66f000-7f425c670000 r--p 00002000 08:20 172814 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_examine_stack.so.2601.0.0 +7f425c670000-7f425c671000 rw-p 00003000 08:20 172814 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_examine_stack.so.2601.0.0 +7f425c671000-7f425c672000 r--p 00000000 08:20 176086 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_leak_check.so.2601.0.0 +7f425c672000-7f425c673000 r-xp 00001000 08:20 176086 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_leak_check.so.2601.0.0 +7f425c673000-7f425c674000 r--p 00002000 08:20 176086 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_leak_check.so.2601.0.0 +7f425c674000-7f425c675000 r--p 00002000 08:20 176086 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_leak_check.so.2601.0.0 +7f425c675000-7f425c676000 rw-p 00003000 08:20 176086 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_leak_check.so.2601.0.0 +7f425c676000-7f425c679000 r--p 00000000 08:20 172840 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_reflection.so.2601.0.0 +7f425c679000-7f425c67f000 r-xp 00003000 08:20 172840 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_reflection.so.2601.0.0 +7f425c67f000-7f425c681000 r--p 00009000 08:20 172840 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_reflection.so.2601.0.0 +7f425c681000-7f425c682000 r--p 0000a000 08:20 172840 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_reflection.so.2601.0.0 +7f425c682000-7f425c683000 rw-p 0000b000 08:20 172840 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_reflection.so.2601.0.0 +7f425c683000-7f425c687000 r--p 00000000 08:20 173480 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_marshalling.so.2601.0.0 +7f425c687000-7f425c68c000 r-xp 00004000 08:20 173480 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_marshalling.so.2601.0.0 +7f425c68c000-7f425c68d000 r--p 00009000 08:20 173480 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_marshalling.so.2601.0.0 +7f425c68d000-7f425c68e000 r--p 0000a000 08:20 173480 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_marshalling.so.2601.0.0 +7f425c68e000-7f425c68f000 rw-p 0000b000 08:20 173480 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_marshalling.so.2601.0.0 +7f425c68f000-7f425c693000 r--p 00000000 08:20 176110 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_internal.so.2601.0.0 +7f425c693000-7f425c696000 r-xp 00004000 08:20 176110 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_internal.so.2601.0.0 +7f425c696000-7f425c698000 r--p 00007000 08:20 176110 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_internal.so.2601.0.0 +7f425c698000-7f425c699000 r--p 00008000 08:20 176110 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_internal.so.2601.0.0 +7f425c699000-7f425c69a000 rw-p 00009000 08:20 176110 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_internal.so.2601.0.0 +7f425c69a000-7f425c69b000 r--p 00000000 08:20 176919 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_slow.so.2601.0.0 +7f425c69b000-7f425c69c000 r-xp 00001000 08:20 176919 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_slow.so.2601.0.0 +7f425c69c000-7f425c69e000 r--p 00002000 08:20 176919 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_slow.so.2601.0.0 +7f425c69e000-7f425c69f000 r--p 00003000 08:20 176919 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_slow.so.2601.0.0 +7f425c69f000-7f425c6a0000 rw-p 00004000 08:20 176919 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_slow.so.2601.0.0 +7f425c6a0000-7f425c6a1000 r--p 00000000 08:20 172885 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes_impl.so.2601.0.0 +7f425c6a1000-7f425c6a2000 r-xp 00001000 08:20 172885 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes_impl.so.2601.0.0 +7f425c6a2000-7f425c6a3000 r--p 00002000 08:20 172885 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes_impl.so.2601.0.0 +7f425c6a3000-7f425c6a4000 r--p 00002000 08:20 172885 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes_impl.so.2601.0.0 +7f425c6a4000-7f425c6a5000 rw-p 00003000 08:20 172885 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes_impl.so.2601.0.0 +7f425c6a5000-7f425c6a6000 r--p 00000000 08:20 173464 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen.so.2601.0.0 +7f425c6a6000-7f425c6a7000 r-xp 00001000 08:20 173464 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen.so.2601.0.0 +7f425c6a7000-7f425c6a8000 r--p 00002000 08:20 173464 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen.so.2601.0.0 +7f425c6a8000-7f425c6a9000 r--p 00002000 08:20 173464 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen.so.2601.0.0 +7f425c6a9000-7f425c6aa000 rw-p 00003000 08:20 173464 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen.so.2601.0.0 +7f425c6aa000-7f425c6ac000 r--p 00000000 08:20 178082 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_kernel_timeout_internal.so.2601.0.0 +7f425c6ac000-7f425c6ad000 r-xp 00002000 08:20 178082 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_kernel_timeout_internal.so.2601.0.0 +7f425c6ad000-7f425c6ae000 r--p 00003000 08:20 178082 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_kernel_timeout_internal.so.2601.0.0 +7f425c6ae000-7f425c6af000 r--p 00003000 08:20 178082 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_kernel_timeout_internal.so.2601.0.0 +7f425c6af000-7f425c6b0000 rw-p 00004000 08:20 178082 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_kernel_timeout_internal.so.2601.0.0 +7f425c6b0000-7f425c6b2000 r--p 00000000 08:20 175359 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_entropy_pool.so.2601.0.0 +7f425c6b2000-7f425c6b3000 r-xp 00002000 08:20 175359 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_entropy_pool.so.2601.0.0 +7f425c6b3000-7f425c6b4000 r--p 00003000 08:20 175359 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_entropy_pool.so.2601.0.0 +7f425c6b4000-7f425c6b5000 r--p 00003000 08:20 175359 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_entropy_pool.so.2601.0.0 +7f425c6b5000-7f425c6b6000 rw-p 00004000 08:20 175359 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_entropy_pool.so.2601.0.0 +7f425c6b6000-7f425c6b8000 r--p 00000000 08:20 178507 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_globals.so.2601.0.0 +7f425c6b8000-7f425c6b9000 r-xp 00002000 08:20 178507 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_globals.so.2601.0.0 +7f425c6b9000-7f425c6ba000 r--p 00003000 08:20 178507 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_globals.so.2601.0.0 +7f425c6ba000-7f425c6bb000 r--p 00003000 08:20 178507 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_globals.so.2601.0.0 +7f425c6bb000-7f425c6bc000 rw-p 00004000 08:20 178507 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_globals.so.2601.0.0 +7f425c6bc000-7f425c7ab000 r--p 00000000 08:20 320733 /home/cbrissette/cuopt/.cuopt_env/lib/libcrypto.so.3 +7f425c7ab000-7f425cb0f000 r-xp 000ef000 08:20 320733 /home/cbrissette/cuopt/.cuopt_env/lib/libcrypto.so.3 +7f425cb0f000-7f425cc46000 r--p 00453000 08:20 320733 /home/cbrissette/cuopt/.cuopt_env/lib/libcrypto.so.3 +7f425cc46000-7f425ccc8000 r--p 00589000 08:20 320733 /home/cbrissette/cuopt/.cuopt_env/lib/libcrypto.so.3 +7f425ccc8000-7f425cccb000 rw-p 0060b000 08:20 320733 /home/cbrissette/cuopt/.cuopt_env/lib/libcrypto.so.3 +7f425cccb000-7f425ccce000 rw-p 00000000 00:00 0 +7f425ccce000-7f425ccf2000 r--p 00000000 08:20 167892 /home/cbrissette/cuopt/.cuopt_env/lib/libssl.so.3 +7f425ccf2000-7f425cd8d000 r-xp 00024000 08:20 167892 /home/cbrissette/cuopt/.cuopt_env/lib/libssl.so.3 +7f425cd8d000-7f425cdbd000 r--p 000bf000 08:20 167892 /home/cbrissette/cuopt/.cuopt_env/lib/libssl.so.3 +7f425cdbd000-7f425cdc7000 r--p 000ef000 08:20 167892 /home/cbrissette/cuopt/.cuopt_env/lib/libssl.so.3 +7f425cdc7000-7f425cdcb000 rw-p 000f9000 08:20 167892 /home/cbrissette/cuopt/.cuopt_env/lib/libssl.so.3 +7f425cdcb000-7f425cde3000 r--p 00000000 08:20 192153 /home/cbrissette/cuopt/.cuopt_env/lib/libre2.so.11 +7f425cde3000-7f425ce29000 r-xp 00018000 08:20 192153 /home/cbrissette/cuopt/.cuopt_env/lib/libre2.so.11 +7f425ce29000-7f425ce42000 r--p 0005e000 08:20 192153 /home/cbrissette/cuopt/.cuopt_env/lib/libre2.so.11 +7f425ce42000-7f425ce47000 r--p 00076000 08:20 192153 /home/cbrissette/cuopt/.cuopt_env/lib/libre2.so.11 +7f425ce47000-7f425ce48000 rw-p 0007b000 08:20 192153 /home/cbrissette/cuopt/.cuopt_env/lib/libre2.so.11 +7f425ce48000-7f425ce56000 r--p 00000000 08:20 84539 /home/cbrissette/cuopt/.cuopt_env/lib/libcares.so.2.19.5 +7f425ce56000-7f425ce81000 r-xp 0000e000 08:20 84539 /home/cbrissette/cuopt/.cuopt_env/lib/libcares.so.2.19.5 +7f425ce81000-7f425ce8c000 r--p 00039000 08:20 84539 /home/cbrissette/cuopt/.cuopt_env/lib/libcares.so.2.19.5 +7f425ce8c000-7f425ce8e000 r--p 00043000 08:20 84539 /home/cbrissette/cuopt/.cuopt_env/lib/libcares.so.2.19.5 +7f425ce8e000-7f425ce8f000 rw-p 00045000 08:20 84539 /home/cbrissette/cuopt/.cuopt_env/lib/libcares.so.2.19.5 +7f425ce8f000-7f425ce90000 r--p 00000000 08:20 139113 /home/cbrissette/cuopt/.cuopt_env/lib/libaddress_sorting.so.52.0.0 +7f425ce90000-7f425ce91000 r-xp 00001000 08:20 139113 /home/cbrissette/cuopt/.cuopt_env/lib/libaddress_sorting.so.52.0.0 +7f425ce91000-7f425ce92000 r--p 00002000 08:20 139113 /home/cbrissette/cuopt/.cuopt_env/lib/libaddress_sorting.so.52.0.0 +7f425ce92000-7f425ce93000 r--p 00002000 08:20 139113 /home/cbrissette/cuopt/.cuopt_env/lib/libaddress_sorting.so.52.0.0 +7f425ce93000-7f425ce94000 rw-p 00003000 08:20 139113 /home/cbrissette/cuopt/.cuopt_env/lib/libaddress_sorting.so.52.0.0 +7f425ce94000-7f425ce97000 r--p 00000000 08:20 175772 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_throw_delegate.so.2601.0.0 +7f425ce97000-7f425ce98000 r-xp 00003000 08:20 175772 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_throw_delegate.so.2601.0.0 +7f425ce98000-7f425ce99000 r--p 00004000 08:20 175772 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_throw_delegate.so.2601.0.0 +7f425ce99000-7f425ce9a000 r--p 00004000 08:20 175772 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_throw_delegate.so.2601.0.0 +7f425ce9a000-7f425ce9b000 rw-p 00005000 08:20 175772 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_throw_delegate.so.2601.0.0 +7f425ce9b000-7f425ce9c000 r--p 00000000 08:20 174707 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_spinlock_wait.so.2601.0.0 +7f425ce9c000-7f425ce9d000 r-xp 00001000 08:20 174707 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_spinlock_wait.so.2601.0.0 +7f425ce9d000-7f425ce9e000 r--p 00002000 08:20 174707 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_spinlock_wait.so.2601.0.0 +7f425ce9e000-7f425ce9f000 r--p 00002000 08:20 174707 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_spinlock_wait.so.2601.0.0 +7f425ce9f000-7f425cea0000 rw-p 00003000 08:20 174707 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_spinlock_wait.so.2601.0.0 +7f425cea0000-7f425cea1000 r--p 00000000 08:20 172795 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hash.so.2601.0.0 +7f425cea1000-7f425cea2000 r-xp 00001000 08:20 172795 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hash.so.2601.0.0 +7f425cea2000-7f425cea3000 r--p 00002000 08:20 172795 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hash.so.2601.0.0 +7f425cea3000-7f425cea4000 r--p 00002000 08:20 172795 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hash.so.2601.0.0 +7f425cea4000-7f425cea5000 rw-p 00003000 08:20 172795 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hash.so.2601.0.0 +7f425cea5000-7f425ceac000 r--p 00000000 08:20 172948 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time_zone.so.2601.0.0 +7f425ceac000-7f425cec0000 r-xp 00007000 08:20 172948 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time_zone.so.2601.0.0 +7f425cec0000-7f425cec3000 r--p 0001b000 08:20 172948 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time_zone.so.2601.0.0 +7f425cec3000-7f425cec4000 r--p 0001e000 08:20 172948 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time_zone.so.2601.0.0 +7f425cec4000-7f425cec5000 rw-p 0001f000 08:20 172948 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time_zone.so.2601.0.0 +7f425cec5000-7f425cecb000 r--p 00000000 08:20 173780 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time.so.2601.0.0 +7f425cecb000-7f425ced8000 r-xp 00006000 08:20 173780 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time.so.2601.0.0 +7f425ced8000-7f425ceda000 r--p 00013000 08:20 173780 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time.so.2601.0.0 +7f425ceda000-7f425cedb000 r--p 00015000 08:20 173780 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time.so.2601.0.0 +7f425cedb000-7f425cedc000 rw-p 00016000 08:20 173780 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time.so.2601.0.0 +7f425cedc000-7f425cedf000 r--p 00000000 08:20 174438 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord_internal.so.2601.0.0 +7f425cedf000-7f425ceed000 r-xp 00003000 08:20 174438 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord_internal.so.2601.0.0 +7f425ceed000-7f425ceef000 r--p 00011000 08:20 174438 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord_internal.so.2601.0.0 +7f425ceef000-7f425cef0000 r--p 00012000 08:20 174438 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord_internal.so.2601.0.0 +7f425cef0000-7f425cef1000 rw-p 00013000 08:20 174438 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord_internal.so.2601.0.0 +7f425cef1000-7f425cef3000 r--p 00000000 08:20 173725 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_hash_set.so.2601.0.0 +7f425cef3000-7f425cef7000 r-xp 00002000 08:20 173725 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_hash_set.so.2601.0.0 +7f425cef7000-7f425cef8000 r--p 00006000 08:20 173725 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_hash_set.so.2601.0.0 +7f425cef8000-7f425cef9000 r--p 00007000 08:20 173725 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_hash_set.so.2601.0.0 +7f425cef9000-7f425cefa000 rw-p 00008000 08:20 173725 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_hash_set.so.2601.0.0 +7f425cefa000-7f425cefb000 r--p 00000000 08:20 174927 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_conditions.so.2601.0.0 +7f425cefb000-7f425cefc000 r-xp 00001000 08:20 174927 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_conditions.so.2601.0.0 +7f425cefc000-7f425cefd000 r--p 00002000 08:20 174927 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_conditions.so.2601.0.0 +7f425cefd000-7f425cefe000 r--p 00002000 08:20 174927 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_conditions.so.2601.0.0 +7f425cefe000-7f425ceff000 rw-p 00003000 08:20 174927 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_conditions.so.2601.0.0 +7f425ceff000-7f425cf00000 r--p 00000000 08:20 144730 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_validity.so.33.5.0 +7f425cf00000-7f425cf01000 r-xp 00001000 08:20 144730 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_validity.so.33.5.0 +7f425cf01000-7f425cf02000 r--p 00002000 08:20 144730 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_validity.so.33.5.0 +7f425cf02000-7f425cf03000 r--p 00002000 08:20 144730 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_validity.so.33.5.0 +7f425cf03000-7f425cf04000 rw-p 00003000 08:20 144730 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_validity.so.33.5.0 +7f425cf04000-7f425cf05000 r--p 00000000 08:20 173312 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_die_if_null.so.2601.0.0 +7f425cf05000-7f425cf06000 r-xp 00001000 08:20 173312 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_die_if_null.so.2601.0.0 +7f425cf06000-7f425cf07000 r--p 00002000 08:20 173312 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_die_if_null.so.2601.0.0 +7f425cf07000-7f425cf08000 r--p 00002000 08:20 173312 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_die_if_null.so.2601.0.0 +7f425cf08000-7f425cf09000 rw-p 00003000 08:20 173312 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_die_if_null.so.2601.0.0 +7f425cf09000-7f425cf0f000 r--p 00000000 08:20 178474 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_str_format_internal.so.2601.0.0 +7f425cf0f000-7f425cf25000 r-xp 00006000 08:20 178474 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_str_format_internal.so.2601.0.0 +7f425cf25000-7f425cf28000 r--p 0001c000 08:20 178474 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_str_format_internal.so.2601.0.0 +7f425cf28000-7f425cf29000 r--p 0001f000 08:20 178474 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_str_format_internal.so.2601.0.0 +7f425cf29000-7f425cf2a000 rw-p 00020000 08:20 178474 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_str_format_internal.so.2601.0.0 +7f425cf2a000-7f425cf2e000 r--p 00000000 08:20 178182 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_status.so.2601.0.0 +7f425cf2e000-7f425cf32000 r-xp 00004000 08:20 178182 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_status.so.2601.0.0 +7f425cf32000-7f425cf34000 r--p 00008000 08:20 178182 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_status.so.2601.0.0 +7f425cf34000-7f425cf35000 r--p 00009000 08:20 178182 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_status.so.2601.0.0 +7f425cf35000-7f425cf36000 rw-p 0000a000 08:20 178182 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_status.so.2601.0.0 +7f425cf36000-7f425cf38000 r--p 00000000 08:20 175942 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_statusor.so.2601.0.0 +7f425cf38000-7f425cf39000 r-xp 00002000 08:20 175942 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_statusor.so.2601.0.0 +7f425cf39000-7f425cf3a000 r--p 00003000 08:20 175942 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_statusor.so.2601.0.0 +7f425cf3a000-7f425cf3b000 r--p 00003000 08:20 175942 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_statusor.so.2601.0.0 +7f425cf3b000-7f425cf3c000 rw-p 00004000 08:20 175942 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_statusor.so.2601.0.0 +7f425cf3c000-7f425cf3e000 r--p 00000000 08:20 174394 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_vlog_config_internal.so.2601.0.0 +7f425cf3e000-7f425cf42000 r-xp 00002000 08:20 174394 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_vlog_config_internal.so.2601.0.0 +7f425cf42000-7f425cf43000 r--p 00006000 08:20 174394 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_vlog_config_internal.so.2601.0.0 +7f425cf43000-7f425cf44000 r--p 00006000 08:20 174394 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_vlog_config_internal.so.2601.0.0 +7f425cf44000-7f425cf45000 rw-p 00007000 08:20 174394 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_vlog_config_internal.so.2601.0.0 +7f425cf45000-7f425cf46000 r--p 00000000 08:20 144825 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_range.so.33.5.0 +7f425cf46000-7f425cf47000 r-xp 00001000 08:20 144825 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_range.so.33.5.0 +7f425cf47000-7f425cf48000 r--p 00002000 08:20 144825 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_range.so.33.5.0 +7f425cf48000-7f425cf49000 r--p 00002000 08:20 144825 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_range.so.33.5.0 +7f425cf49000-7f425cf4a000 rw-p 00003000 08:20 144825 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_range.so.33.5.0 +7f425cf4a000-7f425cf51000 r--p 00000000 08:20 173525 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings.so.2601.0.0 +7f425cf51000-7f425cf68000 r-xp 00007000 08:20 173525 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings.so.2601.0.0 +7f425cf68000-7f425cf71000 r--p 0001e000 08:20 173525 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings.so.2601.0.0 +7f425cf71000-7f425cf72000 r--p 00026000 08:20 173525 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings.so.2601.0.0 +7f425cf72000-7f425cf73000 rw-p 00027000 08:20 173525 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings.so.2601.0.0 +7f425cf73000-7f425cf79000 r--p 00000000 08:20 176237 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_synchronization.so.2601.0.0 +7f425cf79000-7f425cf7e000 r-xp 00006000 08:20 176237 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_synchronization.so.2601.0.0 +7f425cf7e000-7f425cf81000 r--p 0000b000 08:20 176237 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_synchronization.so.2601.0.0 +7f425cf81000-7f425cf82000 r--p 0000d000 08:20 176237 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_synchronization.so.2601.0.0 +7f425cf82000-7f425cf83000 rw-p 0000e000 08:20 176237 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_synchronization.so.2601.0.0 +7f425cf83000-7f425cf85000 rw-p 00000000 00:00 0 +7f425cf85000-7f425cf86000 r--p 00000000 08:20 178365 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_functions.so.2601.0.0 +7f425cf86000-7f425cf87000 r-xp 00001000 08:20 178365 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_functions.so.2601.0.0 +7f425cf87000-7f425cf88000 r--p 00002000 08:20 178365 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_functions.so.2601.0.0 +7f425cf88000-7f425cf89000 r--p 00002000 08:20 178365 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_functions.so.2601.0.0 +7f425cf89000-7f425cf8a000 rw-p 00003000 08:20 178365 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_functions.so.2601.0.0 +7f425cf8a000-7f425cf8c000 r--p 00000000 08:20 175257 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_info.so.2601.0.0 +7f425cf8c000-7f425cf8e000 r-xp 00002000 08:20 175257 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_info.so.2601.0.0 +7f425cf8e000-7f425cf8f000 r--p 00004000 08:20 175257 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_info.so.2601.0.0 +7f425cf8f000-7f425cf90000 r--p 00004000 08:20 175257 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_info.so.2601.0.0 +7f425cf90000-7f425cf91000 rw-p 00005000 08:20 175257 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_info.so.2601.0.0 +7f425cf91000-7f425cf97000 r--p 00000000 08:20 177056 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord.so.2601.0.0 +7f425cf97000-7f425cfb0000 r-xp 00006000 08:20 177056 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord.so.2601.0.0 +7f425cfb0000-7f425cfb3000 r--p 0001f000 08:20 177056 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord.so.2601.0.0 +7f425cfb3000-7f425cfb4000 r--p 00021000 08:20 177056 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord.so.2601.0.0 +7f425cfb4000-7f425cfb5000 rw-p 00022000 08:20 177056 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord.so.2601.0.0 +7f425cfb5000-7f425cfc1000 r--p 00000000 08:20 140730 /home/cbrissette/cuopt/.cuopt_env/lib/libgpr.so.52.0.0 +7f425cfc1000-7f425cfce000 r-xp 0000c000 08:20 140730 /home/cbrissette/cuopt/.cuopt_env/lib/libgpr.so.52.0.0 +7f425cfce000-7f425cfd4000 r--p 00019000 08:20 140730 /home/cbrissette/cuopt/.cuopt_env/lib/libgpr.so.52.0.0 +7f425cfd4000-7f425cfd5000 r--p 0001f000 08:20 140730 /home/cbrissette/cuopt/.cuopt_env/lib/libgpr.so.52.0.0 +7f425cfd5000-7f425cfd6000 rw-p 00020000 08:20 140730 /home/cbrissette/cuopt/.cuopt_env/lib/libgpr.so.52.0.0 +7f425cfd6000-7f425d200000 r--p 00000000 08:20 139302 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc.so.52.0.0 +7f425d200000-7f425da4a000 r-xp 0022a000 08:20 139302 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc.so.52.0.0 +7f425da4a000-7f425dcfb000 r--p 00a74000 08:20 139302 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc.so.52.0.0 +7f425dcfb000-7f425dd35000 r--p 00d25000 08:20 139302 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc.so.52.0.0 +7f425dd35000-7f425dd42000 rw-p 00d5f000 08:20 139302 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc.so.52.0.0 +7f425dd42000-7f425dd47000 rw-p 00000000 00:00 0 +7f425dd47000-7f425dddc000 r--p 00000000 08:20 144643 /home/cbrissette/cuopt/.cuopt_env/lib/libprotobuf.so.33.5.0 +7f425dddc000-7f425dfff000 r-xp 00095000 08:20 144643 /home/cbrissette/cuopt/.cuopt_env/lib/libprotobuf.so.33.5.0 +7f425dfff000-7f425e06b000 r--p 002b8000 08:20 144643 /home/cbrissette/cuopt/.cuopt_env/lib/libprotobuf.so.33.5.0 +7f425e06b000-7f425e076000 r--p 00324000 08:20 144643 /home/cbrissette/cuopt/.cuopt_env/lib/libprotobuf.so.33.5.0 +7f425e076000-7f425e07d000 rw-p 0032f000 08:20 144643 /home/cbrissette/cuopt/.cuopt_env/lib/libprotobuf.so.33.5.0 +7f425e07d000-7f425e07e000 rw-p 00000000 00:00 0 +7f425e07e000-7f425e08b000 r--p 00000000 08:20 83455 /home/cbrissette/cuopt/.cuopt_env/lib/libgomp.so.1.0.0 +7f425e08b000-7f425e0c4000 r-xp 0000d000 08:20 83455 /home/cbrissette/cuopt/.cuopt_env/lib/libgomp.so.1.0.0 +7f425e0c4000-7f425e0d2000 r--p 00046000 08:20 83455 /home/cbrissette/cuopt/.cuopt_env/lib/libgomp.so.1.0.0 +7f425e0d2000-7f425e0d3000 r--p 00054000 08:20 83455 /home/cbrissette/cuopt/.cuopt_env/lib/libgomp.so.1.0.0 +7f425e0d3000-7f425e0d4000 rw-p 00055000 08:20 83455 /home/cbrissette/cuopt/.cuopt_env/lib/libgomp.so.1.0.0 +7f425e0d4000-7f425e0de000 r--p 00000000 08:20 198476 /home/cbrissette/cuopt/.cuopt_env/lib/librapids_logger.so +7f425e0de000-7f425e10f000 r-xp 0000a000 08:20 198476 /home/cbrissette/cuopt/.cuopt_env/lib/librapids_logger.so +7f425e10f000-7f425e11c000 r--p 0003b000 08:20 198476 /home/cbrissette/cuopt/.cuopt_env/lib/librapids_logger.so +7f425e11c000-7f425e11f000 r--p 00048000 08:20 198476 /home/cbrissette/cuopt/.cuopt_env/lib/librapids_logger.so +7f425e11f000-7f425e120000 rw-p 0004b000 08:20 198476 /home/cbrissette/cuopt/.cuopt_env/lib/librapids_logger.so +7f425e120000-7f425e13c000 r--p 00000000 08:20 182877 /home/cbrissette/cuopt/.cuopt_env/lib/librmm.so +7f425e13c000-7f425e1fc000 r-xp 0001c000 08:20 182877 /home/cbrissette/cuopt/.cuopt_env/lib/librmm.so +7f425e1fc000-7f425e22c000 r--p 000dc000 08:20 182877 /home/cbrissette/cuopt/.cuopt_env/lib/librmm.so +7f425e22c000-7f425e233000 r--p 0010c000 08:20 182877 /home/cbrissette/cuopt/.cuopt_env/lib/librmm.so +7f425e233000-7f425e234000 rw-p 00113000 08:20 182877 /home/cbrissette/cuopt/.cuopt_env/lib/librmm.so +7f425e234000-7f425e236000 rw-p 00000000 00:00 0 +7f425e236000-7f425e263000 r--p 00000000 08:20 140888 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc++.so.1.78.1 +7f425e263000-7f425e2bc000 r-xp 0002d000 08:20 140888 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc++.so.1.78.1 +7f425e2bc000-7f425e2d8000 r--p 00086000 08:20 140888 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc++.so.1.78.1 +7f425e2d8000-7f425e2dd000 r--p 000a2000 08:20 140888 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc++.so.1.78.1 +7f425e2dd000-7f425e2de000 rw-p 000a7000 08:20 140888 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc++.so.1.78.1 +7f425e2de000-7f425e2ec000 r--p 00000000 08:20 194104 /home/cbrissette/cuopt/.cuopt_env/lib/libtbb.so.12.18 +7f425e2ec000-7f425e319000 r-xp 0000e000 08:20 194104 /home/cbrissette/cuopt/.cuopt_env/lib/libtbb.so.12.18 +7f425e319000-7f425e325000 r--p 0003b000 08:20 194104 /home/cbrissette/cuopt/.cuopt_env/lib/libtbb.so.12.18 +7f425e325000-7f425e327000 r--p 00046000 08:20 194104 /home/cbrissette/cuopt/.cuopt_env/lib/libtbb.so.12.18 +7f425e327000-7f425e32a000 rw-p 00048000 08:20 194104 /home/cbrissette/cuopt/.cuopt_env/lib/libtbb.so.12.18 +7f425e32a000-7f425e340000 rw-p 00000000 00:00 0 +7f425e340000-7f425e352000 r--p 00000000 08:20 78513 /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so +7f425e352000-7f425e36e000 r-xp 00012000 08:20 78513 /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so +7f425e36e000-7f425e377000 r--p 0002e000 08:20 78513 /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so +7f425e377000-7f425e378000 r--p 00037000 08:20 78513 /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so +7f425e378000-7f425e379000 rw-p 00038000 08:20 78513 /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so +7f425e379000-7f425e37a000 rw-p 00000000 00:00 0 +7f425e37a000-7f425e37e000 ---p 00000000 00:00 0 +7f425e37e000-7f425e47a000 rw-p 00000000 00:00 0 +7f425e47a000-7f425e47e000 ---p 00000000 00:00 0 +7f425e47e000-7f425e57a000 rw-p 00000000 00:00 0 +7f425e57a000-7f425e57e000 ---p 00000000 00:00 0 +7f425e57e000-7f425e67a000 rw-p 00000000 00:00 0 +7f425e67a000-7f425e67e000 ---p 00000000 00:00 0 +7f425e67e000-7f425e77a000 rw-p 00000000 00:00 0 +7f425e77a000-7f425e77e000 ---p 00000000 00:00 0 +7f425e77e000-7f425e87a000 rw-p 00000000 00:00 0 +7f425e87a000-7f425e87e000 ---p 00000000 00:00 0 +7f425e87e000-7f425e97a000 rw-p 00000000 00:00 0 +7f425e97a000-7f425e97e000 ---p 00000000 00:00 0 +7f425e97e000-7f425ea7a000 rw-p 00000000 00:00 0 +7f425ea7a000-7f425ea7b000 ---p 00000000 00:00 0 +7f425ea7b000-7f425eb7b000 rw-p 00000000 00:00 0 +7f425eb7b000-7f425eb7f000 ---p 00000000 00:00 0 +7f425eb7f000-7f425ec7b000 rw-p 00000000 00:00 0 +7f425ec7b000-7f425ec7f000 ---p 00000000 00:00 0 +7f425ec7f000-7f425ed7b000 rw-p 00000000 00:00 0 +7f425ed7b000-7f425ed7f000 ---p 00000000 00:00 0 +7f425ed7f000-7f425ee7b000 rw-p 00000000 00:00 0 +7f425ee7b000-7f425ee7f000 ---p 00000000 00:00 0 +7f425ee7f000-7f425ef7b000 rw-p 00000000 00:00 0 +7f425ef7b000-7f425ef7f000 ---p 00000000 00:00 0 +7f425ef7f000-7f425f07b000 rw-p 00000000 00:00 0 +7f425f07b000-7f425f07f000 ---p 00000000 00:00 0 +7f425f07f000-7f425f17b000 rw-p 00000000 00:00 0 +7f425f17b000-7f425f17f000 ---p 00000000 00:00 0 +7f425f17f000-7f425f27b000 rw-p 00000000 00:00 0 +7f425f27b000-7f425f27f000 ---p 00000000 00:00 0 +7f425f27f000-7f425f37b000 rw-p 00000000 00:00 0 +7f425f37b000-7f425f37c000 ---p 00000000 00:00 0 +7f425f37c000-7f425fc3d000 rw-p 00000000 00:00 0 +7f425fc3d000-7f425fcfd000 ---p 00000000 00:00 0 +7f425fcfd000-7f425fcfe000 ---p 00000000 00:00 0 +7f425fcfe000-7f425fdfe000 rw-p 00000000 00:00 0 +7f425fdfe000-7f425fdff000 ---p 00000000 00:00 0 +7f425fdff000-7f4260000000 rw-p 00000000 00:00 0 +7f4260000000-7f4260021000 rw-p 00000000 00:00 0 +7f4260021000-7f4264000000 ---p 00000000 00:00 0 +7f4264003000-7f4264004000 r--p 00000000 08:20 172516 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_nullguard.so.2601.0.0 +7f4264004000-7f4264005000 r-xp 00001000 08:20 172516 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_nullguard.so.2601.0.0 +7f4264005000-7f4264006000 r--p 00002000 08:20 172516 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_nullguard.so.2601.0.0 +7f4264006000-7f4264007000 r--p 00002000 08:20 172516 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_nullguard.so.2601.0.0 +7f4264007000-7f4264008000 rw-p 00003000 08:20 172516 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_nullguard.so.2601.0.0 +7f4264008000-7f426400e000 r--p 00000000 08:20 173104 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_message.so.2601.0.0 +7f426400e000-7f4264012000 r-xp 00006000 08:20 173104 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_message.so.2601.0.0 +7f4264012000-7f4264014000 r--p 0000a000 08:20 173104 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_message.so.2601.0.0 +7f4264014000-7f4264015000 r--p 0000b000 08:20 173104 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_message.so.2601.0.0 +7f4264015000-7f4264016000 rw-p 0000c000 08:20 173104 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_message.so.2601.0.0 +7f4264016000-7f4264019000 r--p 00000000 08:20 175246 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_check_op.so.2601.0.0 +7f4264019000-7f426401c000 r-xp 00003000 08:20 175246 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_check_op.so.2601.0.0 +7f426401c000-7f426401d000 r--p 00006000 08:20 175246 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_check_op.so.2601.0.0 +7f426401d000-7f426401e000 r--p 00006000 08:20 175246 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_check_op.so.2601.0.0 +7f426401e000-7f426401f000 rw-p 00007000 08:20 175246 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_check_op.so.2601.0.0 +7f426401f000-7f4264020000 r--p 00000000 08:20 218634 /usr/lib/x86_64-linux-gnu/libpthread.so.0 +7f4264020000-7f4264021000 r-xp 00001000 08:20 218634 /usr/lib/x86_64-linux-gnu/libpthread.so.0 +7f4264021000-7f4264022000 r--p 00002000 08:20 218634 /usr/lib/x86_64-linux-gnu/libpthread.so.0 +7f4264022000-7f4264023000 r--p 00002000 08:20 218634 /usr/lib/x86_64-linux-gnu/libpthread.so.0 +7f4264023000-7f4264024000 rw-p 00003000 08:20 218634 /usr/lib/x86_64-linux-gnu/libpthread.so.0 +7f4264024000-7f4264028000 ---p 00000000 00:00 0 +7f4264028000-7f4264046000 rw-p 00000000 00:00 0 +7f4264046000-7f426404a000 r--p 00000000 08:20 294964 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnet.so +7f426404a000-7f4264058000 r-xp 00004000 08:20 294964 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnet.so +7f4264058000-7f426405c000 r--p 00012000 08:20 294964 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnet.so +7f426405c000-7f426405d000 r--p 00015000 08:20 294964 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnet.so +7f426405d000-7f426405e000 rw-p 00016000 08:20 294964 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnet.so +7f426405e000-7f426714b000 rw-p 00000000 00:00 0 +7f426714b000-7f4269b1b000 ---p 00000000 00:00 0 +7f4269b1b000-7f4269b23000 rw-p 00000000 00:00 0 +7f4269b23000-7f426ab23000 ---p 00000000 00:00 0 +7f426ab23000-7f426af03000 rw-p 00000000 00:00 0 +7f426af03000-7f426d8d3000 ---p 00000000 00:00 0 +7f426d8d3000-7f426d8db000 rw-p 00000000 00:00 0 +7f426d8db000-7f426e8db000 ---p 00000000 00:00 0 +7f426e8db000-7f426e957000 rw-p 00000000 00:00 0 +7f426e957000-7f426ee91000 ---p 00000000 00:00 0 +7f426ee91000-7f426ee92000 rw-p 00000000 00:00 0 +7f426ee92000-7f426f092000 ---p 00000000 00:00 0 +7f426f092000-7f426f10e000 rw-p 00000000 00:00 0 +7f426f10e000-7f426f648000 ---p 00000000 00:00 0 +7f426f648000-7f426f649000 rw-p 00000000 00:00 0 +7f426f649000-7f426f849000 ---p 00000000 00:00 0 +7f426f849000-7f426f8c5000 rw-p 00000000 00:00 0 +7f426f8c5000-7f426fdff000 ---p 00000000 00:00 0 +7f426fdff000-7f426fe00000 rw-p 00000000 00:00 0 +7f426fe00000-7f4270000000 ---p 00000000 00:00 0 +7f4270000000-7f4270021000 rw-p 00000000 00:00 0 +7f4270021000-7f4274000000 ---p 00000000 00:00 0 +7f427400e000-7f4274015000 r--p 00000000 08:20 294965 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnio.so +7f4274015000-7f427401d000 r-xp 00007000 08:20 294965 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnio.so +7f427401d000-7f4274020000 r--p 0000f000 08:20 294965 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnio.so +7f4274020000-7f4274021000 r--p 00011000 08:20 294965 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnio.so +7f4274021000-7f4274022000 rw-p 00012000 08:20 294965 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnio.so +7f4274022000-7f4274079000 r--p 00000000 08:20 217873 /usr/lib/locale/C.utf8/LC_CTYPE +7f4274079000-7f42741d5000 rw-p 00000000 00:00 0 +7f42741d5000-7f42741d6000 ---p 00000000 00:00 0 +7f42741d6000-7f42742d6000 rw-p 00000000 00:00 0 +7f42742d6000-7f42742d7000 ---p 00000000 00:00 0 +7f42742d7000-7f42747cf000 rw-p 00000000 00:00 0 +7f42747cf000-7f4274a9f000 rwxp 00000000 00:00 0 +7f4274a9f000-7f4274f0e000 ---p 00000000 00:00 0 +7f4274f0e000-7f42751ae000 rwxp 00000000 00:00 0 +7f42751ae000-7f427c36e000 ---p 00000000 00:00 0 +7f427c36e000-7f427c5de000 rwxp 00000000 00:00 0 +7f427c5de000-7f42837cf000 ---p 00000000 00:00 0 +7f42837cf000-7f428c000000 r--s 00000000 08:20 294975 /usr/lib/jvm/java-11-openjdk-amd64/lib/modules +7f428c000000-7f428d088000 rw-p 00000000 00:00 0 +7f428d088000-7f4290000000 ---p 00000000 00:00 0 +7f4290000000-7f4290001000 r--p 00000000 00:00 0 +7f4290001000-7f4290003000 r--p 00000000 08:20 294962 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement_ext.so +7f4290003000-7f4290006000 r-xp 00002000 08:20 294962 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement_ext.so +7f4290006000-7f4290008000 r--p 00005000 08:20 294962 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement_ext.so +7f4290008000-7f4290009000 r--p 00006000 08:20 294962 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement_ext.so +7f4290009000-7f429000a000 rw-p 00007000 08:20 294962 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement_ext.so +7f429000a000-7f429000d000 r--p 00000000 08:20 294960 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement.so +7f429000d000-7f429000e000 r-xp 00003000 08:20 294960 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement.so +7f429000e000-7f429000f000 r--p 00004000 08:20 294960 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement.so +7f429000f000-7f4290010000 r--p 00004000 08:20 294960 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement.so +7f4290010000-7f4290011000 rw-p 00005000 08:20 294960 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement.so +7f4290011000-7f4290012000 r--p 00000000 08:20 217879 /usr/lib/locale/C.utf8/LC_NUMERIC +7f4290012000-7f4290013000 r--p 00000000 08:20 217882 /usr/lib/locale/C.utf8/LC_TIME +7f4290013000-7f4290014000 r--p 00000000 08:20 217872 /usr/lib/locale/C.utf8/LC_COLLATE +7f4290014000-7f4290015000 r--p 00000000 08:20 217877 /usr/lib/locale/C.utf8/LC_MONETARY +7f4290015000-7f4290016000 r--p 00000000 08:20 217876 /usr/lib/locale/C.utf8/LC_MESSAGES/SYS_LC_MESSAGES +7f4290016000-7f4290017000 r--p 00000000 08:20 217880 /usr/lib/locale/C.utf8/LC_PAPER +7f4290017000-7f4290018000 r--p 00000000 08:20 217878 /usr/lib/locale/C.utf8/LC_NAME +7f4290018000-7f4290019000 r--p 00000000 08:20 217871 /usr/lib/locale/C.utf8/LC_ADDRESS +7f4290019000-7f429001a000 r--p 00000000 08:20 217881 /usr/lib/locale/C.utf8/LC_TELEPHONE +7f429001a000-7f4290021000 r--s 00000000 08:20 218904 /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache +7f4290021000-7f4290d2e000 rw-p 00000000 00:00 0 +7f4290d2e000-7f4290d2f000 ---p 00000000 00:00 0 +7f4290d2f000-7f4290e34000 rw-p 00000000 00:00 0 +7f4290e34000-7f4290f18000 ---p 00000000 00:00 0 +7f4290f18000-7f4290f1e000 rw-p 00000000 00:00 0 +7f4290f1e000-7f4291001000 ---p 00000000 00:00 0 +7f4291001000-7f4291007000 rw-p 00000000 00:00 0 +7f4291007000-7f4291010000 ---p 00000000 00:00 0 +7f4291010000-7f4291012000 r--p 00000000 08:20 294974 /usr/lib/jvm/java-11-openjdk-amd64/lib/libzip.so +7f4291012000-7f4291017000 r-xp 00002000 08:20 294974 /usr/lib/jvm/java-11-openjdk-amd64/lib/libzip.so +7f4291017000-7f4291019000 r--p 00007000 08:20 294974 /usr/lib/jvm/java-11-openjdk-amd64/lib/libzip.so +7f4291019000-7f429101a000 r--p 00008000 08:20 294974 /usr/lib/jvm/java-11-openjdk-amd64/lib/libzip.so +7f429101a000-7f429101b000 rw-p 00009000 08:20 294974 /usr/lib/jvm/java-11-openjdk-amd64/lib/libzip.so +7f429101b000-7f4291023000 rw-s 00000000 08:20 78573 /tmp/hsperfdata_cbrissette/101 +7f4291023000-7f4291024000 ---p 00000000 00:00 0 +7f4291024000-7f4291025000 r--p 00000000 00:00 0 +7f4291025000-7f4291033000 r--p 00000000 08:20 294953 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjava.so +7f4291033000-7f4291049000 r-xp 0000e000 08:20 294953 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjava.so +7f4291049000-7f4291050000 r--p 00024000 08:20 294953 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjava.so +7f4291050000-7f4291051000 r--p 0002a000 08:20 294953 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjava.so +7f4291051000-7f4291052000 rw-p 0002b000 08:20 294953 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjava.so +7f4291052000-7f4291053000 rw-p 00000000 00:00 0 +7f4291053000-7f4291058000 r--p 00000000 08:20 294973 /usr/lib/jvm/java-11-openjdk-amd64/lib/libverify.so +7f4291058000-7f429105f000 r-xp 00005000 08:20 294973 /usr/lib/jvm/java-11-openjdk-amd64/lib/libverify.so +7f429105f000-7f4291061000 r--p 0000c000 08:20 294973 /usr/lib/jvm/java-11-openjdk-amd64/lib/libverify.so +7f4291061000-7f4291063000 r--p 0000d000 08:20 294973 /usr/lib/jvm/java-11-openjdk-amd64/lib/libverify.so +7f4291063000-7f4291064000 rw-p 0000f000 08:20 294973 /usr/lib/jvm/java-11-openjdk-amd64/lib/libverify.so +7f4291064000-7f4291065000 r--p 00000000 08:20 218636 /usr/lib/x86_64-linux-gnu/librt.so.1 +7f4291065000-7f4291066000 r-xp 00001000 08:20 218636 /usr/lib/x86_64-linux-gnu/librt.so.1 +7f4291066000-7f4291067000 r--p 00002000 08:20 218636 /usr/lib/x86_64-linux-gnu/librt.so.1 +7f4291067000-7f4291068000 r--p 00002000 08:20 218636 /usr/lib/x86_64-linux-gnu/librt.so.1 +7f4291068000-7f4291069000 rw-p 00003000 08:20 218636 /usr/lib/x86_64-linux-gnu/librt.so.1 +7f4291069000-7f429106d000 ---p 00000000 00:00 0 +7f429106d000-7f4291169000 rw-p 00000000 00:00 0 +7f4291169000-7f429116a000 r--p 00000000 08:20 218624 /usr/lib/x86_64-linux-gnu/libdl.so.2 +7f429116a000-7f429116b000 r-xp 00001000 08:20 218624 /usr/lib/x86_64-linux-gnu/libdl.so.2 +7f429116b000-7f429116c000 r--p 00002000 08:20 218624 /usr/lib/x86_64-linux-gnu/libdl.so.2 +7f429116c000-7f429116d000 r--p 00002000 08:20 218624 /usr/lib/x86_64-linux-gnu/libdl.so.2 +7f429116d000-7f429116e000 rw-p 00003000 08:20 218624 /usr/lib/x86_64-linux-gnu/libdl.so.2 +7f429116e000-7f4291172000 r--p 00000000 08:20 84327 /home/cbrissette/cuopt/.cuopt_env/lib/libgcc_s.so.1 +7f4291172000-7f4291195000 r-xp 00004000 08:20 84327 /home/cbrissette/cuopt/.cuopt_env/lib/libgcc_s.so.1 +7f4291195000-7f4291199000 r--p 00027000 08:20 84327 /home/cbrissette/cuopt/.cuopt_env/lib/libgcc_s.so.1 +7f4291199000-7f429119a000 r--p 0002a000 08:20 84327 /home/cbrissette/cuopt/.cuopt_env/lib/libgcc_s.so.1 +7f429119a000-7f429119b000 rw-p 0002b000 08:20 84327 /home/cbrissette/cuopt/.cuopt_env/lib/libgcc_s.so.1 +7f429119b000-7f42911a9000 r--p 00000000 08:20 218625 /usr/lib/x86_64-linux-gnu/libm.so.6 +7f42911a9000-7f4291225000 r-xp 0000e000 08:20 218625 /usr/lib/x86_64-linux-gnu/libm.so.6 +7f4291225000-7f4291280000 r--p 0008a000 08:20 218625 /usr/lib/x86_64-linux-gnu/libm.so.6 +7f4291280000-7f4291281000 r--p 000e4000 08:20 218625 /usr/lib/x86_64-linux-gnu/libm.so.6 +7f4291281000-7f4291282000 rw-p 000e5000 08:20 218625 /usr/lib/x86_64-linux-gnu/libm.so.6 +7f4291282000-7f429132c000 r--p 00000000 08:20 84948 /home/cbrissette/cuopt/.cuopt_env/lib/libstdc++.so.6.0.34 +7f429132c000-7f429145d000 r-xp 000aa000 08:20 84948 /home/cbrissette/cuopt/.cuopt_env/lib/libstdc++.so.6.0.34 +7f429145d000-7f42914eb000 r--p 001db000 08:20 84948 /home/cbrissette/cuopt/.cuopt_env/lib/libstdc++.so.6.0.34 +7f42914eb000-7f42914fa000 r--p 00268000 08:20 84948 /home/cbrissette/cuopt/.cuopt_env/lib/libstdc++.so.6.0.34 +7f42914fa000-7f42914fd000 rw-p 00277000 08:20 84948 /home/cbrissette/cuopt/.cuopt_env/lib/libstdc++.so.6.0.34 +7f42914fd000-7f4291501000 rw-p 00000000 00:00 0 +7f4291501000-7f4291784000 r--p 00000000 08:20 294978 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so +7f4291784000-7f4292422000 r-xp 00283000 08:20 294978 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so +7f4292422000-7f429267e000 r--p 00f21000 08:20 294978 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so +7f429267e000-7f4292742000 r--p 0117c000 08:20 294978 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so +7f4292742000-7f429277d000 rw-p 01240000 08:20 294978 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so +7f429277d000-7f42927d6000 rw-p 00000000 00:00 0 +7f42927d6000-7f42927fe000 r--p 00000000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 +7f42927fe000-7f4292993000 r-xp 00028000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 +7f4292993000-7f42929eb000 r--p 001bd000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 +7f42929eb000-7f42929ec000 ---p 00215000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 +7f42929ec000-7f42929f0000 r--p 00215000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 +7f42929f0000-7f42929f2000 rw-p 00219000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 +7f42929f2000-7f42929ff000 rw-p 00000000 00:00 0 +7f42929ff000-7f4292a00000 r--p 00000000 08:20 217875 /usr/lib/locale/C.utf8/LC_MEASUREMENT +7f4292a00000-7f4292a02000 r--p 00000000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so +7f4292a02000-7f4292a05000 r-xp 00002000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so +7f4292a05000-7f4292a06000 r--p 00005000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so +7f4292a06000-7f4292a07000 ---p 00006000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so +7f4292a07000-7f4292a08000 r--p 00006000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so +7f4292a08000-7f4292a09000 rw-p 00007000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so +7f4292a09000-7f4292a0c000 r--p 00000000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so +7f4292a0c000-7f4292a16000 r-xp 00003000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so +7f4292a16000-7f4292a19000 r--p 0000d000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so +7f4292a19000-7f4292a1a000 ---p 00010000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so +7f4292a1a000-7f4292a1b000 r--p 00010000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so +7f4292a1b000-7f4292a1c000 rw-p 00011000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so +7f4292a1c000-7f4292a1f000 r--p 00000000 08:20 83514 /home/cbrissette/cuopt/.cuopt_env/lib/libz.so.1.3.2 +7f4292a1f000-7f4292a2f000 r-xp 00003000 08:20 83514 /home/cbrissette/cuopt/.cuopt_env/lib/libz.so.1.3.2 +7f4292a2f000-7f4292a35000 r--p 00013000 08:20 83514 /home/cbrissette/cuopt/.cuopt_env/lib/libz.so.1.3.2 +7f4292a35000-7f4292a36000 r--p 00019000 08:20 83514 /home/cbrissette/cuopt/.cuopt_env/lib/libz.so.1.3.2 +7f4292a36000-7f4292a37000 rw-p 0001a000 08:20 83514 /home/cbrissette/cuopt/.cuopt_env/lib/libz.so.1.3.2 +7f4292a37000-7f4292a39000 rw-p 00000000 00:00 0 +7f4292a39000-7f4292a3b000 r--p 00000000 08:20 218618 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 +7f4292a3b000-7f4292a65000 r-xp 00002000 08:20 218618 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 +7f4292a65000-7f4292a70000 r--p 0002c000 08:20 218618 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 +7f4292a70000-7f4292a71000 r--p 00000000 08:20 217874 /usr/lib/locale/C.utf8/LC_IDENTIFICATION +7f4292a71000-7f4292a73000 r--p 00037000 08:20 218618 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 +7f4292a73000-7f4292a75000 rw-p 00039000 08:20 218618 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 +7ffd47680000-7ffd476a1000 rw-p 00000000 00:00 0 [stack] +7ffd47724000-7ffd47728000 r--p 00000000 00:00 0 [vvar] +7ffd47728000-7ffd4772a000 r-xp 00000000 00:00 0 [vdso] + + +VM Arguments: +java_command: /home/cbrissette/cuopt/java/cuopt/target/surefire/surefirebooter-20260707090606534_3.jar /home/cbrissette/cuopt/java/cuopt/target/surefire 2026-07-07T09-06-06_415-jvmRun1 surefire-20260707090606534_1tmp surefire_0-20260707090606534_2tmp +java_class_path (initial): /home/cbrissette/cuopt/java/cuopt/target/surefire/surefirebooter-20260707090606534_3.jar +Launcher Type: SUN_STANDARD + +[Global flags] + intx CICompilerCount = 12 {product} {ergonomic} + uint ConcGCThreads = 4 {product} {ergonomic} + uint G1ConcRefinementThreads = 15 {product} {ergonomic} + size_t G1HeapRegionSize = 1048576 {product} {ergonomic} + uintx GCDrainStackTargetSize = 64 {product} {ergonomic} + size_t InitialHeapSize = 260046848 {product} {ergonomic} + size_t MarkStackSize = 4194304 {product} {ergonomic} + size_t MaxHeapSize = 4141875200 {product} {ergonomic} + size_t MaxNewSize = 2485125120 {product} {ergonomic} + size_t MinHeapDeltaBytes = 1048576 {product} {ergonomic} + uintx NonNMethodCodeHeapSize = 7594288 {pd product} {ergonomic} + uintx NonProfiledCodeHeapSize = 122031976 {pd product} {ergonomic} + uintx ProfiledCodeHeapSize = 122031976 {pd product} {ergonomic} + uintx ReservedCodeCacheSize = 251658240 {pd product} {ergonomic} + bool SegmentedCodeCache = true {product} {ergonomic} + bool UseCompressedClassPointers = true {lp64_product} {ergonomic} + bool UseCompressedOops = true {lp64_product} {ergonomic} + bool UseG1GC = true {product} {ergonomic} + +Logging: +Log output configuration: + #0: stdout all=warning uptime,level,tags + #1: stderr all=off uptime,level,tags + +Environment Variables: +JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 +PATH=/tmp/cuopt-fake-bin:/home/cbrissette/.codex/tmp/arg0/codex-arg0pFic5k:/home/cbrissette/.vscode-server/bin/034f571df509819cc10b0c8129f66ef77a542f0e/bin/remote-cli:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/wsl/lib:/mnt/c/Program Files/Microsoft VS Code:/mnt/c/Windows/system32:/mnt/c/Windows:/mnt/c/Windows/System32/Wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0/:/mnt/c/Windows/System32/OpenSSH/:/mnt/c/Program Files/dotnet/:/mnt/c/Program Files/Microsoft VS Code/bin:/mnt/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/mnt/c/Program Files/NVIDIA Corporation/Nsight Compute 2025.1.0/:/mnt/c/Program Files/Teleport:/mnt/c/PROGRA~1/cinc/bin/:/mnt/c/Program Files/NVInfo/bin:/mnt/c/Program Files/ai-pim-utils:/mnt/c/WINDOWS/system32:/mnt/c/WINDOWS:/mnt/c/WINDOWS/System32/Wbem:/mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0/:/mnt/c/WINDOWS/System32/OpenSSH/:/mnt/c/Program Files/Teleport Connect/resources/bin:/mnt/c/Users/cbrissette/.local/bin:/mnt/c/Users/cbrissette/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/cbrissette/AppData/Local/Programs/cursor/resources/app/bin:/mnt/c/Users/cbrissette/AppData/Local/Microsoft/WinGet/Packages/astral-sh.uv_Microsoft.Winget.Source_8wekyb3d8bbwe:/mnt/c/Users/cbrissette/AppData/Local/Microsoft/WindowsApps:/snap/bin:/home/cbrissette/ngc-cli:/home/cbrissette/.vscode-server/extensions/openai.chatgpt-26.623.101652-linux-x64/bin/linux-x86_64:/home/cbrissette/ngc-cli +LD_LIBRARY_PATH=/home/cbrissette/cuopt/.cuopt_env/lib:/home/cbrissette/cuopt/java/cuopt/build/native +SHELL=/bin/bash +DISPLAY=:0 +HOSTTYPE=x86_64 +LANG=C.UTF-8 +TERM=xterm-256color + +Signal Handlers: +SIGSEGV: [libjvm.so+0xeaead0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGBUS: [libjvm.so+0xeaead0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGFPE: [libjvm.so+0xeaead0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGPIPE: [libjvm.so+0xbf1430], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGXFSZ: [libjvm.so+0xbf1430], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGILL: [libjvm.so+0xeaead0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGUSR2: [libjvm.so+0xbf12d0], sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO +SIGHUP: [libjvm.so+0xbf1a90], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGINT: [libjvm.so+0xbf1a90], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGTERM: [libjvm.so+0xbf1a90], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGQUIT: [libjvm.so+0xbf1a90], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO + + +--------------- S Y S T E M --------------- + +OS:DISTRIB_ID=Ubuntu +DISTRIB_RELEASE=22.04 +DISTRIB_CODENAME=jammy +DISTRIB_DESCRIPTION="Ubuntu 22.04.5 LTS" +uname:Linux 5.15.153.1-microsoft-standard-WSL2 #1 SMP Fri Mar 29 23:14:13 UTC 2024 x86_64 +OS uptime: 2 days 16:10 hours +libc:glibc 2.35 NPTL 2.35 +rlimit (soft/hard): STACK 8192k/infinity , CORE 0k/infinity , NPROC 63166/63166 , NOFILE 1048576/1048576 , AS infinity/infinity , CPU infinity/infinity , DATA infinity/infinity , FSIZE infinity/infinity , MEMLOCK 65536k/65536k +load average:2.12 3.30 1.64 + +/proc/meminfo: +MemTotal: 16177528 kB +MemFree: 10277360 kB +MemAvailable: 12096500 kB +Buffers: 13244 kB +Cached: 1752444 kB +SwapCached: 57796 kB +Active: 634420 kB +Inactive: 4384876 kB +Active(anon): 14364 kB +Inactive(anon): 3242904 kB +Active(file): 620056 kB +Inactive(file): 1141972 kB +Unevictable: 0 kB +Mlocked: 0 kB +SwapTotal: 4194304 kB +SwapFree: 3716576 kB +Dirty: 3284 kB +Writeback: 0 kB +AnonPages: 3133892 kB +Mapped: 441584 kB +Shmem: 3704 kB +KReclaimable: 389212 kB +Slab: 511028 kB +SReclaimable: 389212 kB +SUnreclaim: 121816 kB +KernelStack: 14784 kB +PageTables: 48828 kB +NFS_Unstable: 0 kB +Bounce: 0 kB +WritebackTmp: 0 kB +CommitLimit: 12283068 kB +Committed_AS: 6477068 kB +VmallocTotal: 34359738367 kB +VmallocUsed: 37536 kB +VmallocChunk: 0 kB +Percpu: 13248 kB +AnonHugePages: 1173504 kB +ShmemHugePages: 0 kB +ShmemPmdMapped: 0 kB +FileHugePages: 0 kB +FilePmdMapped: 0 kB +HugePages_Total: 0 +HugePages_Free: 0 +HugePages_Rsvd: 0 +HugePages_Surp: 0 +Hugepagesize: 2048 kB +Hugetlb: 0 kB +DirectMap4k: 404480 kB +DirectMap2M: 13023232 kB +DirectMap1G: 11534336 kB + +/sys/kernel/mm/transparent_hugepage/enabled: +[always] madvise never +/sys/kernel/mm/transparent_hugepage/defrag (defrag/compaction efforts parameter): +always defer defer+madvise [madvise] never + +Process Memory: +Virtual Size: 8357336K (peak: 15570012K) +Resident Set Size: 303592K (peak: 303592K) (anon: 195140K, file: 108452K, shmem: 0K) +Swapped out: 0K +C-Heap outstanding allocations: 67310K, retained: 3357K +glibc malloc tunables: (default) + +/proc/sys/kernel/threads-max (system-wide limit on the number of threads): +126333 +/proc/sys/vm/max_map_count (maximum number of memory map areas a process may have): +65530 +/proc/sys/kernel/pid_max (system-wide limit on number of process identifiers): +4194304 + +container (cgroup) information: +container_type: cgroupv1 +cpu_cpuset_cpus: 0-19 +cpu_memory_nodes: 0 +active_processor_count: 20 +cpu_quota: no quota +cpu_period: 100000 +cpu_shares: no shares +memory_limit_in_bytes: unlimited +memory_and_swap_limit_in_bytes: unlimited +memory_soft_limit_in_bytes: unlimited +memory_usage_in_bytes: 4899316 k +memory_max_usage_in_bytes: 2211664 k +kernel_memory_usage_in_bytes: 38380 k +kernel_memory_max_usage_in_bytes: unlimited +kernel_memory_limit_in_bytes: 70264 k +maximum number of tasks: not supported +current number of tasks: not supported + +Hyper-V virtualization detected +Steal ticks since vm start: 0 +Steal ticks percentage since vm start: 0.000 + +CPU:total 20 (initial active 20) (16 cores per cpu, 2 threads per core) family 6 model 186 stepping 2 microcode 0xffffffff, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, clmul, erms, 3dnowpref, lzcnt, ht, tsc, tscinvbit, bmi1, bmi2, adx, sha, fma +CPU Model and flags from /proc/cpuinfo: +model name : 13th Gen Intel(R) Core(TM) i7-13800H +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq vmx ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves avx_vnni umip waitpkg gfni vaes vpclmulqdq rdpid movdiri movdir64b fsrm md_clear serialize flush_l1d arch_capabilities +Online cpus: +0-19 +Offline cpus: + +BIOS frequency limitation: + +Frequency switch latency (ns): + +Available cpu frequencies: + +Current governor: + +Core performance/turbo boost: + + +Memory: 4k page, physical 16177528k(10277360k free), swap 4194304k(3716576k free) + +vm_info: OpenJDK 64-Bit Server VM (11.0.24+8-post-Ubuntu-1ubuntu322.04) for linux-amd64 JRE (11.0.24+8-post-Ubuntu-1ubuntu322.04), built on Jul 21 2024 21:19:53 by "unknown" with gcc 11.4.0 + +END. diff --git a/java/cuopt/hs_err_pid1440122.log b/java/cuopt/hs_err_pid1440122.log new file mode 100644 index 0000000000..4887a1081c --- /dev/null +++ b/java/cuopt/hs_err_pid1440122.log @@ -0,0 +1,1711 @@ +# +# A fatal error has been detected by the Java Runtime Environment: +# +# SIGSEGV (0xb) at pc=0x00007f0ec4b533fe, pid=1440122, tid=1440123 +# +# JRE version: OpenJDK Runtime Environment (11.0.24+8) (build 11.0.24+8-post-Ubuntu-1ubuntu322.04) +# Java VM: OpenJDK 64-Bit Server VM (11.0.24+8-post-Ubuntu-1ubuntu322.04, mixed mode, sharing, tiered, compressed oops, g1 gc, linux-amd64) +# Problematic frame: +# C [libc.so.6+0xa53fe] free+0x1e +# +# Core dump will be written. Default location: Core dumps may be processed with "/wsl-capture-crash %t %E %p %s" (or dumping to /home/cbrissette/cuopt/java/cuopt/core.1440122) +# +# If you would like to submit a bug report, please visit: +# https://bugs.launchpad.net/ubuntu/+source/openjdk-lts +# The crash happened outside the Java Virtual Machine in native code. +# See problematic frame for where to report the bug. +# + +--------------- S U M M A R Y ------------ + +Command Line: /home/cbrissette/cuopt/java/cuopt/target/surefire/surefirebooter-20260707090259251_3.jar /home/cbrissette/cuopt/java/cuopt/target/surefire 2026-07-07T09-02-59_150-jvmRun1 surefire-20260707090259251_1tmp surefire_0-20260707090259251_2tmp + +Host: 13th Gen Intel(R) Core(TM) i7-13800H, 20 cores, 15G, Ubuntu 22.04.5 LTS +Time: Tue Jul 7 09:03:03 2026 EDT elapsed time: 3.753493 seconds (0d 0h 0m 3s) + +--------------- T H R E A D --------------- + +Current thread (0x00007f0ebc016000): JavaThread "main" [_thread_in_native, id=1440123, stack(0x00007f0ec3341000,0x00007f0ec3441000)] + +Stack: [0x00007f0ec3341000,0x00007f0ec3441000], sp=0x00007f0ec343c8e0, free space=1006k +Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code) +C [libc.so.6+0xa53fe] free+0x1e + +Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) +j com.nvidia.cuopt.linearprogramming.NativeCuOpt.destroyProblem(J)V+0 +j com.nvidia.cuopt.linearprogramming.DataModel$NativeHandle.run()V+13 +J 716 c1 jdk.internal.ref.CleanerImpl$PhantomCleanableRef.performCleanup()V java.base@11.0.24 (10 bytes) @ 0x00007f0ea5062e74 [0x00007f0ea5062d40+0x0000000000000134] +J 715 c1 jdk.internal.ref.PhantomCleanable.clean()V java.base@11.0.24 (16 bytes) @ 0x00007f0ea50633bc [0x00007f0ea50631e0+0x00000000000001dc] +j com.nvidia.cuopt.linearprogramming.DataModel.close()V+4 +j com.nvidia.cuopt.linearprogramming.NativeIntegrationTest.mutableDataModelExposesPythonMetadataAndQuadraticFields()V+576 +v ~StubRoutines::call_stub +j jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+0 java.base@11.0.24 +j jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+100 java.base@11.0.24 +j jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+6 java.base@11.0.24 +j java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+59 java.base@11.0.24 +j org.junit.platform.commons.util.ReflectionUtils.invokeMethod(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+42 +j org.junit.jupiter.engine.execution.MethodInvocation.proceed()Ljava/lang/Object;+16 +j org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed()Ljava/lang/Object;+8 +j org.junit.jupiter.engine.extension.TimeoutExtension.intercept(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/TimeoutDuration;Lorg/junit/jupiter/engine/extension/TimeoutExtension$TimeoutProvider;)Ljava/lang/Object;+28 +j org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/TimeoutExtension$TimeoutProvider;)Ljava/lang/Object;+31 +j org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)V+9 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda$189.apply(Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)V+5 +j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(Lorg/junit/jupiter/engine/execution/InterceptingExecutableInvoker$ReflectiveInterceptorCall$VoidMethodInterceptorCall;Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)Ljava/lang/Void;+6 +j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall$$Lambda$190.apply(Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)Ljava/lang/Object;+9 +j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(Lorg/junit/jupiter/engine/execution/InterceptingExecutableInvoker$ReflectiveInterceptorCall;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;)Ljava/lang/Object;+6 +j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$$Lambda$378.apply(Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;)Ljava/lang/Object;+14 +j org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed()Ljava/lang/Object;+12 +j org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;)Ljava/lang/Object;+1 +j org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/engine/execution/InvocationInterceptorChain$InterceptorCall;Ljava/util/List;)Ljava/lang/Object;+24 +j org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/engine/execution/InvocationInterceptorChain$InterceptorCall;)Ljava/lang/Object;+31 +j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/engine/execution/InterceptingExecutableInvoker$ReflectiveInterceptorCall;)Ljava/lang/Object;+15 +j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(Ljava/lang/reflect/Method;Ljava/lang/Object;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/engine/execution/InterceptingExecutableInvoker$ReflectiveInterceptorCall;)Ljava/lang/Object;+55 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$8(Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)V+28 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda$399.execute()V+12 +j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)V+21 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;+44 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;+6 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6()V+79 +j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$297.execute()V+4 +j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+15 +j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$296.invoke(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+5 +j org.junit.platform.engine.support.hierarchical.Node.around(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$Invocation;)V+2 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9()V+14 +j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$295.execute()V+4 +j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively()V+31 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.execute()V+55 +j org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService$$Lambda$301.accept(Ljava/lang/Object;)V+4 +j java.util.ArrayList.forEach(Ljava/util/function/Consumer;)V+46 java.base@11.0.24 +j org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(Ljava/util/List;)V+6 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6()V+116 +j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$297.execute()V+4 +j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+15 +j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$296.invoke(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+5 +j org.junit.platform.engine.support.hierarchical.Node.around(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$Invocation;)V+2 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9()V+14 +j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$295.execute()V+4 +j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively()V+31 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.execute()V+55 +j org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService$$Lambda$301.accept(Ljava/lang/Object;)V+4 +j java.util.ArrayList.forEach(Ljava/util/function/Consumer;)V+46 java.base@11.0.24 +j org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(Ljava/util/List;)V+6 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6()V+116 +j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$297.execute()V+4 +j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+15 +j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$296.invoke(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+5 +j org.junit.platform.engine.support.hierarchical.Node.around(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$Invocation;)V+2 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9()V+14 +j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$295.execute()V+4 +j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively()V+31 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.execute()V+55 +j org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(Lorg/junit/platform/engine/support/hierarchical/HierarchicalTestExecutorService$TestTask;)Ljava/util/concurrent/Future;+1 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute()Ljava/util/concurrent/Future;+74 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(Lorg/junit/platform/engine/ExecutionRequest;)V+31 +j org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(Lorg/junit/platform/engine/TestDescriptor;Lorg/junit/platform/engine/EngineExecutionListener;Lorg/junit/platform/engine/ConfigurationParameters;Lorg/junit/platform/engine/TestEngine;)V+24 +j org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(Lorg/junit/platform/launcher/core/LauncherDiscoveryResult;Lorg/junit/platform/engine/EngineExecutionListener;)V+115 +j org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(Lorg/junit/platform/launcher/core/InternalTestPlan;Lorg/junit/platform/engine/EngineExecutionListener;Lorg/junit/platform/launcher/TestExecutionListener;)V+55 +j org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(Lorg/junit/platform/launcher/core/InternalTestPlan;Lorg/junit/platform/launcher/TestExecutionListener;)V+6 +j org.junit.platform.launcher.core.EngineExecutionOrchestrator$$Lambda$243.accept(Ljava/lang/Object;)V+12 +j org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(Lorg/junit/platform/engine/ConfigurationParameters;Lorg/junit/platform/launcher/core/ListenerRegistry;Ljava/util/function/Consumer;)V+51 +j org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(Lorg/junit/platform/launcher/core/InternalTestPlan;[Lorg/junit/platform/launcher/TestExecutionListener;)V+23 +j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/launcher/core/InternalTestPlan;[Lorg/junit/platform/launcher/TestExecutionListener;)V+6 +j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;[Lorg/junit/platform/launcher/TestExecutionListener;)V+34 +j org.junit.platform.launcher.core.DelegatingLauncher.execute(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;[Lorg/junit/platform/launcher/TestExecutionListener;)V+6 +j org.apache.maven.surefire.junitplatform.LazyLauncher.execute(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;[Lorg/junit/platform/launcher/TestExecutionListener;)V+6 +j org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.execute(Lorg/apache/maven/surefire/api/util/TestsToRun;Lorg/apache/maven/surefire/junitplatform/RunListenerAdapter;)V+70 +j org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(Lorg/apache/maven/surefire/api/util/TestsToRun;Lorg/apache/maven/surefire/junitplatform/RunListenerAdapter;)V+3 +j org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(Ljava/lang/Object;)Lorg/apache/maven/surefire/api/suite/RunResult;+95 +j org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess()V+8 +j org.apache.maven.surefire.booter.ForkedBooter.execute()V+1 +j org.apache.maven.surefire.booter.ForkedBooter.run(Lorg/apache/maven/surefire/booter/ForkedBooter;[Ljava/lang/String;)V+27 +j org.apache.maven.surefire.booter.ForkedBooter.main([Ljava/lang/String;)V+10 +v ~StubRoutines::call_stub + +siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr: 0x0000000068005621 + +Register to memory mapping: + +RAX=0x0 is NULL +RBX=0xffffffffffffff80 is an unknown value +RCX=0x0000000000000060 is an unknown value +RDX=0x00007f0ebc000090 points into unknown readable memory: 0x00007f0ebfcca2a0 | a0 a2 cc bf 0e 7f 00 00 +RSP=0x00007f0ec343c8e0 is pointing into the stack for thread: 0x00007f0ebc016000 +RBP=0x0 is NULL +RSI=0x0000000068005619 is an unknown value +RDI=0x0000000068005629 is an unknown value +R8 =0x00007f0ebd02a890 points into unknown readable memory: 0x0000000000000001 | 01 00 00 00 00 00 00 00 +R9 =0x0 is NULL +R10=0x00007f0ebd0599b8 points into unknown readable memory: 0x00007f0e0940bd70 | 70 bd 40 09 0e 7f 00 00 +R11=0x1479aa9a5a30859c is an unknown value +R12=0x00007f0ec4b446d0: __pthread_key_create+0x0000000000000000 in /lib/x86_64-linux-gnu/libc.so.6 at 0x00007f0ec4aae000 +R13=0x0000000000000003 is an unknown value +R14=0x00007f0ec343ca18 is pointing into the stack for thread: 0x00007f0ebc016000 +R15=0x00007f0ebc016000 is a thread + + +Registers: +RAX=0x0000000000000000, RBX=0xffffffffffffff80, RCX=0x0000000000000060, RDX=0x00007f0ebc000090 +RSP=0x00007f0ec343c8e0, RBP=0x0000000000000000, RSI=0x0000000068005619, RDI=0x0000000068005629 +R8 =0x00007f0ebd02a890, R9 =0x0000000000000000, R10=0x00007f0ebd0599b8, R11=0x1479aa9a5a30859c +R12=0x00007f0ec4b446d0, R13=0x0000000000000003, R14=0x00007f0ec343ca18, R15=0x00007f0ebc016000 +RIP=0x00007f0ec4b533fe, EFLAGS=0x0000000000010202, CSGSFS=0x002b000000000033, ERR=0x0000000000000004 + TRAPNO=0x000000000000000e + +Top of Stack: (sp=0x00007f0ec343c8e0) +0x00007f0ec343c8e0: 00007f0ebc016000 00007f0e42e140b2 +0x00007f0ec343c8f0: 00007f0ebdfd3cc0 00007f0ebdfd3cc0 +0x00007f0ec343c900: 0000000000000000 00007f0e43060c5b +0x00007f0ec343c910: 00007f0ebc016000 00007f0ec343c958 + +Instructions: (pc=0x00007f0ec4b533fe) +0x00007f0ec4b532fe: 00 00 48 83 c4 10 31 c0 5b 5d 41 5c c3 0f 1f 44 +0x00007f0ec4b5330e: 00 00 e8 7b bd ff ff 49 89 c4 48 85 c0 0f 85 0d +0x00007f0ec4b5331e: fe ff ff 31 f6 48 89 ef e8 b5 cb ff ff 48 89 ee +0x00007f0ec4b5332e: 48 89 c7 49 89 c4 e8 77 e6 ff ff 48 85 c0 75 2c +0x00007f0ec4b5333e: 4d 85 e4 0f 84 0a fe ff ff 66 0f 1f 84 00 00 00 +0x00007f0ec4b5334e: 00 00 90 4c 89 e7 48 89 ee e8 64 d0 ff ff 48 89 +0x00007f0ec4b5335e: ee 48 89 c7 49 89 c4 e8 46 e6 ff ff 4d 85 e4 0f +0x00007f0ec4b5336e: 84 de fd ff ff e9 ca fd ff ff 48 8d 0d b9 9e 13 +0x00007f0ec4b5337e: 00 ba 10 0d 00 00 48 8d 35 01 43 13 00 48 8d 3d +0x00007f0ec4b5338e: 26 9b 13 00 e8 d9 ba ff ff 66 0f 1f 84 00 00 00 +0x00007f0ec4b5339e: 00 00 4c 89 e7 48 89 44 24 08 e8 53 bf fe ff 48 +0x00007f0ec4b533ae: 8b 44 24 08 e9 9a fd ff ff 66 0f 1f 84 00 00 00 +0x00007f0ec4b533be: 00 00 4c 89 e7 e8 68 be fe ff e9 61 fd ff ff 0f +0x00007f0ec4b533ce: 1f 00 48 8d 3d 49 99 13 00 e8 04 b9 ff ff 0f 1f +0x00007f0ec4b533de: 40 00 f3 0f 1e fa 48 85 ff 0f 84 bb 00 00 00 55 +0x00007f0ec4b533ee: 48 8d 77 f0 53 48 83 ec 18 48 8b 1d 12 4a 17 00 +0x00007f0ec4b533fe: 48 8b 47 f8 64 8b 2b a8 02 75 57 48 8b 15 98 49 +0x00007f0ec4b5340e: 17 00 64 48 83 3a 00 0f 84 95 00 00 00 48 8d 3d +0x00007f0ec4b5341e: 5e 58 17 00 a8 04 74 26 48 8b 15 63 4f 17 00 48 +0x00007f0ec4b5342e: 8d 04 95 00 00 00 00 48 f7 d8 48 85 d2 48 c7 c2 +0x00007f0ec4b5343e: 00 00 00 fc 48 0f 44 c2 48 21 f0 48 8b 38 31 d2 +0x00007f0ec4b5344e: e8 4d d2 ff ff 64 89 2b 48 83 c4 18 5b 5d c3 0f +0x00007f0ec4b5345e: 1f 00 8b 15 42 4f 17 00 85 d2 75 28 48 3b 05 ff +0x00007f0ec4b5346e: 4e 17 00 76 1f 48 3d 00 00 00 02 77 17 48 83 e0 +0x00007f0ec4b5347e: f8 48 8d 14 00 48 89 05 e6 4e 17 00 48 89 15 cf +0x00007f0ec4b5348e: 4e 17 00 90 48 89 f7 e8 c6 ba ff ff 64 89 2b 48 +0x00007f0ec4b5349e: 83 c4 18 5b 5d c3 0f 1f 40 00 c3 0f 1f 80 00 00 +0x00007f0ec4b534ae: 00 00 48 8b 15 f9 48 17 00 48 89 3c 24 64 80 3a +0x00007f0ec4b534be: 00 0f 85 56 ff ff ff 48 89 74 24 08 e8 c1 f4 ff +0x00007f0ec4b534ce: ff 48 8b 3c 24 48 8b 74 24 08 48 8b 47 f8 e9 3a +0x00007f0ec4b534de: ff ff ff 66 66 2e 0f 1f 84 00 00 00 00 00 0f 1f +0x00007f0ec4b534ee: 40 00 f3 0f 1e fa 41 57 41 56 41 55 41 54 55 53 + + +Stack slot to memory mapping: +stack at sp + 0 slots: 0x00007f0ebc016000 is a thread +stack at sp + 1 slots: 0x00007f0e42e140b2: in /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so at 0x00007f0e42ac1000 +stack at sp + 2 slots: 0x00007f0ebdfd3cc0 points into unknown readable memory: 0x00007f0900000000 | 00 00 00 00 09 7f 00 00 +stack at sp + 3 slots: 0x00007f0ebdfd3cc0 points into unknown readable memory: 0x00007f0900000000 | 00 00 00 00 09 7f 00 00 +stack at sp + 4 slots: 0x0 is NULL +stack at sp + 5 slots: 0x00007f0e43060c5b: in /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so at 0x00007f0e42ac1000 +stack at sp + 6 slots: 0x00007f0ebc016000 is a thread +stack at sp + 7 slots: 0x00007f0ec343c958 is pointing into the stack for thread: 0x00007f0ebc016000 + + +--------------- P R O C E S S --------------- + +Threads class SMR info: +_java_thread_list=0x00007f0ebf67c2f0, length=15, elements={ +0x00007f0ebc016000, 0x00007f0ebc253800, 0x00007f0ebc255800, 0x00007f0ebc25d800, +0x00007f0ebc25f800, 0x00007f0ebc262000, 0x00007f0ebc264000, 0x00007f0ebc266000, +0x00007f0ebc299000, 0x00007f0ebc3ed000, 0x00007f0ebc402000, 0x00007f0ebc694800, +0x00007f0ebd095800, 0x00007f0ebdfd1800, 0x00007f0ebe1f1800 +} + +Java Threads: ( => current thread ) +=>0x00007f0ebc016000 JavaThread "main" [_thread_in_native, id=1440123, stack(0x00007f0ec3341000,0x00007f0ec3441000)] + 0x00007f0ebc253800 JavaThread "Reference Handler" daemon [_thread_blocked, id=1440133, stack(0x00007f0e914fe000,0x00007f0e915fe000)] + 0x00007f0ebc255800 JavaThread "Finalizer" daemon [_thread_blocked, id=1440134, stack(0x00007f0e913fe000,0x00007f0e914fe000)] + 0x00007f0ebc25d800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=1440135, stack(0x00007f0e912fe000,0x00007f0e913fe000)] + 0x00007f0ebc25f800 JavaThread "Service Thread" daemon [_thread_blocked, id=1440136, stack(0x00007f0e911fe000,0x00007f0e912fe000)] + 0x00007f0ebc262000 JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=1440137, stack(0x00007f0e910fe000,0x00007f0e911fe000)] + 0x00007f0ebc264000 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=1440138, stack(0x00007f0e90ffe000,0x00007f0e910fe000)] + 0x00007f0ebc266000 JavaThread "Sweeper thread" daemon [_thread_blocked, id=1440139, stack(0x00007f0e90efe000,0x00007f0e90ffe000)] + 0x00007f0ebc299000 JavaThread "Common-Cleaner" daemon [_thread_blocked, id=1440142, stack(0x00007f0e90bfd000,0x00007f0e90cfd000)] + 0x00007f0ebc3ed000 JavaThread "surefire-forkedjvm-stream-flusher" daemon [_thread_blocked, id=1440143, stack(0x00007f0e90afd000,0x00007f0e90bfd000)] + 0x00007f0ebc402000 JavaThread "surefire-forkedjvm-command-thread" daemon [_thread_in_native, id=1440144, stack(0x00007f0e909fd000,0x00007f0e90afd000)] + 0x00007f0ebc694800 JavaThread "Cleaner-0" daemon [_thread_blocked, id=1440146, stack(0x00007f0e907fd000,0x00007f0e908fd000)] + 0x00007f0ebd095800 JavaThread "process reaper" daemon [_thread_blocked, id=1440185, stack(0x00007f0e3509b000,0x00007f0e350bd000)] + 0x00007f0ebdfd1800 JavaThread "Cleaner-1" daemon [_thread_blocked, id=1440195, stack(0x00007f0e908fd000,0x00007f0e909fd000)] + 0x00007f0ebe1f1800 JavaThread "Cleaner-2" daemon [_thread_blocked, id=1440207, stack(0x00007f0e90dfe000,0x00007f0e90efe000)] + +Other Threads: + 0x00007f0ebc250800 VMThread "VM Thread" [stack: 0x00007f0e915ff000,0x00007f0e916ff000] [id=1440131] + 0x00007f0ebc296800 WatcherThread [stack: 0x00007f0e90cfe000,0x00007f0e90dfe000] [id=1440141] + 0x00007f0ebc030000 GCTaskThread "GC Thread#0" [stack: 0x00007f0ec3007000,0x00007f0ec3107000] [id=1440124] + 0x00007f0e84009000 GCTaskThread "GC Thread#1" [stack: 0x00007f0e08063000,0x00007f0e08163000] [id=1440196] + 0x00007f0e8400a800 GCTaskThread "GC Thread#2" [stack: 0x00007f0df5500000,0x00007f0df5600000] [id=1440197] + 0x00007f0e8400c000 GCTaskThread "GC Thread#3" [stack: 0x00007f0df53ff000,0x00007f0df54ff000] [id=1440198] + 0x00007f0e8400d800 GCTaskThread "GC Thread#4" [stack: 0x00007f0df52fe000,0x00007f0df53fe000] [id=1440199] + 0x00007f0e8400f000 GCTaskThread "GC Thread#5" [stack: 0x00007f0df51fd000,0x00007f0df52fd000] [id=1440200] + 0x00007f0ebc08e000 ConcurrentGCThread "G1 Main Marker" [stack: 0x00007f0ec06dc000,0x00007f0ec07dc000] [id=1440125] + 0x00007f0ebc08f800 ConcurrentGCThread "G1 Conc#0" [stack: 0x00007f0ec05db000,0x00007f0ec06db000] [id=1440126] + 0x00007f0ebc1ab000 ConcurrentGCThread "G1 Refine#0" [stack: 0x00007f0e9808d000,0x00007f0e9818d000] [id=1440129] + 0x00007f0ebc1ac800 ConcurrentGCThread "G1 Young RemSet Sampling" [stack: 0x00007f0e91f00000,0x00007f0e92000000] [id=1440130] + +Threads with active compile tasks: +C2 CompilerThread0 3756 1441 ! 4 jdk.internal.loader.URLClassPath$JarLoader::getResource (65 bytes) + +VM state:not at safepoint (normal execution) + +VM Mutex/Monitor currently owned by a thread: None + +Heap address: 0x0000000709200000, size: 3950 MB, Compressed Oops mode: Zero based, Oop shift amount: 3 +Narrow klass base: 0x0000000800000000, Narrow klass shift: 3 +Compressed class space size: 1073741824 Address: 0x0000000840000000 + +Heap: + garbage-first heap total 256000K, used 4347K [0x0000000709200000, 0x0000000800000000) + region size 1024K, 5 young (5120K), 3 survivors (3072K) + Metaspace used 7509K, capacity 9131K, committed 9472K, reserved 1056768K + class space used 905K, capacity 1238K, committed 1280K, reserved 1048576K +Heap Regions: E=young(eden), S=young(survivor), O=old, HS=humongous(starts), HC=humongous(continues), CS=collection set, F=free, A=archive, TAMS=top-at-mark-start (previous, next) +| 0|0x0000000709200000, 0x0000000709200000, 0x0000000709300000| 0%| F| |TAMS 0x0000000709200000, 0x0000000709200000| Untracked +| 1|0x0000000709300000, 0x0000000709300000, 0x0000000709400000| 0%| F| |TAMS 0x0000000709300000, 0x0000000709300000| Untracked +| 2|0x0000000709400000, 0x0000000709400000, 0x0000000709500000| 0%| F| |TAMS 0x0000000709400000, 0x0000000709400000| Untracked +| 3|0x0000000709500000, 0x0000000709500000, 0x0000000709600000| 0%| F| |TAMS 0x0000000709500000, 0x0000000709500000| Untracked +| 4|0x0000000709600000, 0x0000000709600000, 0x0000000709700000| 0%| F| |TAMS 0x0000000709600000, 0x0000000709600000| Untracked +| 5|0x0000000709700000, 0x0000000709700000, 0x0000000709800000| 0%| F| |TAMS 0x0000000709700000, 0x0000000709700000| Untracked +| 6|0x0000000709800000, 0x0000000709800000, 0x0000000709900000| 0%| F| |TAMS 0x0000000709800000, 0x0000000709800000| Untracked +| 7|0x0000000709900000, 0x0000000709900000, 0x0000000709a00000| 0%| F| |TAMS 0x0000000709900000, 0x0000000709900000| Untracked +| 8|0x0000000709a00000, 0x0000000709a00000, 0x0000000709b00000| 0%| F| |TAMS 0x0000000709a00000, 0x0000000709a00000| Untracked +| 9|0x0000000709b00000, 0x0000000709b00000, 0x0000000709c00000| 0%| F| |TAMS 0x0000000709b00000, 0x0000000709b00000| Untracked +| 10|0x0000000709c00000, 0x0000000709c00000, 0x0000000709d00000| 0%| F| |TAMS 0x0000000709c00000, 0x0000000709c00000| Untracked +| 11|0x0000000709d00000, 0x0000000709d00000, 0x0000000709e00000| 0%| F| |TAMS 0x0000000709d00000, 0x0000000709d00000| Untracked +| 12|0x0000000709e00000, 0x0000000709e00000, 0x0000000709f00000| 0%| F| |TAMS 0x0000000709e00000, 0x0000000709e00000| Untracked +| 13|0x0000000709f00000, 0x0000000709f00000, 0x000000070a000000| 0%| F| |TAMS 0x0000000709f00000, 0x0000000709f00000| Untracked +| 14|0x000000070a000000, 0x000000070a000000, 0x000000070a100000| 0%| F| |TAMS 0x000000070a000000, 0x000000070a000000| Untracked +| 15|0x000000070a100000, 0x000000070a100000, 0x000000070a200000| 0%| F| |TAMS 0x000000070a100000, 0x000000070a100000| Untracked +| 16|0x000000070a200000, 0x000000070a200000, 0x000000070a300000| 0%| F| |TAMS 0x000000070a200000, 0x000000070a200000| Untracked +| 17|0x000000070a300000, 0x000000070a300000, 0x000000070a400000| 0%| F| |TAMS 0x000000070a300000, 0x000000070a300000| Untracked +| 18|0x000000070a400000, 0x000000070a400000, 0x000000070a500000| 0%| F| |TAMS 0x000000070a400000, 0x000000070a400000| Untracked +| 19|0x000000070a500000, 0x000000070a500000, 0x000000070a600000| 0%| F| |TAMS 0x000000070a500000, 0x000000070a500000| Untracked +| 20|0x000000070a600000, 0x000000070a600000, 0x000000070a700000| 0%| F| |TAMS 0x000000070a600000, 0x000000070a600000| Untracked +| 21|0x000000070a700000, 0x000000070a700000, 0x000000070a800000| 0%| F| |TAMS 0x000000070a700000, 0x000000070a700000| Untracked +| 22|0x000000070a800000, 0x000000070a800000, 0x000000070a900000| 0%| F| |TAMS 0x000000070a800000, 0x000000070a800000| Untracked +| 23|0x000000070a900000, 0x000000070a900000, 0x000000070aa00000| 0%| F| |TAMS 0x000000070a900000, 0x000000070a900000| Untracked +| 24|0x000000070aa00000, 0x000000070aa00000, 0x000000070ab00000| 0%| F| |TAMS 0x000000070aa00000, 0x000000070aa00000| Untracked +| 25|0x000000070ab00000, 0x000000070ab00000, 0x000000070ac00000| 0%| F| |TAMS 0x000000070ab00000, 0x000000070ab00000| Untracked +| 26|0x000000070ac00000, 0x000000070ac00000, 0x000000070ad00000| 0%| F| |TAMS 0x000000070ac00000, 0x000000070ac00000| Untracked +| 27|0x000000070ad00000, 0x000000070ad00000, 0x000000070ae00000| 0%| F| |TAMS 0x000000070ad00000, 0x000000070ad00000| Untracked +| 28|0x000000070ae00000, 0x000000070ae00000, 0x000000070af00000| 0%| F| |TAMS 0x000000070ae00000, 0x000000070ae00000| Untracked +| 29|0x000000070af00000, 0x000000070af00000, 0x000000070b000000| 0%| F| |TAMS 0x000000070af00000, 0x000000070af00000| Untracked +| 30|0x000000070b000000, 0x000000070b000000, 0x000000070b100000| 0%| F| |TAMS 0x000000070b000000, 0x000000070b000000| Untracked +| 31|0x000000070b100000, 0x000000070b100000, 0x000000070b200000| 0%| F| |TAMS 0x000000070b100000, 0x000000070b100000| Untracked +| 32|0x000000070b200000, 0x000000070b200000, 0x000000070b300000| 0%| F| |TAMS 0x000000070b200000, 0x000000070b200000| Untracked +| 33|0x000000070b300000, 0x000000070b300000, 0x000000070b400000| 0%| F| |TAMS 0x000000070b300000, 0x000000070b300000| Untracked +| 34|0x000000070b400000, 0x000000070b400000, 0x000000070b500000| 0%| F| |TAMS 0x000000070b400000, 0x000000070b400000| Untracked +| 35|0x000000070b500000, 0x000000070b500000, 0x000000070b600000| 0%| F| |TAMS 0x000000070b500000, 0x000000070b500000| Untracked +| 36|0x000000070b600000, 0x000000070b600000, 0x000000070b700000| 0%| F| |TAMS 0x000000070b600000, 0x000000070b600000| Untracked +| 37|0x000000070b700000, 0x000000070b700000, 0x000000070b800000| 0%| F| |TAMS 0x000000070b700000, 0x000000070b700000| Untracked +| 38|0x000000070b800000, 0x000000070b800000, 0x000000070b900000| 0%| F| |TAMS 0x000000070b800000, 0x000000070b800000| Untracked +| 39|0x000000070b900000, 0x000000070b900000, 0x000000070ba00000| 0%| F| |TAMS 0x000000070b900000, 0x000000070b900000| Untracked +| 40|0x000000070ba00000, 0x000000070ba00000, 0x000000070bb00000| 0%| F| |TAMS 0x000000070ba00000, 0x000000070ba00000| Untracked +| 41|0x000000070bb00000, 0x000000070bb00000, 0x000000070bc00000| 0%| F| |TAMS 0x000000070bb00000, 0x000000070bb00000| Untracked +| 42|0x000000070bc00000, 0x000000070bc00000, 0x000000070bd00000| 0%| F| |TAMS 0x000000070bc00000, 0x000000070bc00000| Untracked +| 43|0x000000070bd00000, 0x000000070bd00000, 0x000000070be00000| 0%| F| |TAMS 0x000000070bd00000, 0x000000070bd00000| Untracked +| 44|0x000000070be00000, 0x000000070be00000, 0x000000070bf00000| 0%| F| |TAMS 0x000000070be00000, 0x000000070be00000| Untracked +| 45|0x000000070bf00000, 0x000000070bf00000, 0x000000070c000000| 0%| F| |TAMS 0x000000070bf00000, 0x000000070bf00000| Untracked +| 46|0x000000070c000000, 0x000000070c000000, 0x000000070c100000| 0%| F| |TAMS 0x000000070c000000, 0x000000070c000000| Untracked +| 47|0x000000070c100000, 0x000000070c100000, 0x000000070c200000| 0%| F| |TAMS 0x000000070c100000, 0x000000070c100000| Untracked +| 48|0x000000070c200000, 0x000000070c200000, 0x000000070c300000| 0%| F| |TAMS 0x000000070c200000, 0x000000070c200000| Untracked +| 49|0x000000070c300000, 0x000000070c300000, 0x000000070c400000| 0%| F| |TAMS 0x000000070c300000, 0x000000070c300000| Untracked +| 50|0x000000070c400000, 0x000000070c400000, 0x000000070c500000| 0%| F| |TAMS 0x000000070c400000, 0x000000070c400000| Untracked +| 51|0x000000070c500000, 0x000000070c500000, 0x000000070c600000| 0%| F| |TAMS 0x000000070c500000, 0x000000070c500000| Untracked +| 52|0x000000070c600000, 0x000000070c600000, 0x000000070c700000| 0%| F| |TAMS 0x000000070c600000, 0x000000070c600000| Untracked +| 53|0x000000070c700000, 0x000000070c700000, 0x000000070c800000| 0%| F| |TAMS 0x000000070c700000, 0x000000070c700000| Untracked +| 54|0x000000070c800000, 0x000000070c800000, 0x000000070c900000| 0%| F| |TAMS 0x000000070c800000, 0x000000070c800000| Untracked +| 55|0x000000070c900000, 0x000000070c900000, 0x000000070ca00000| 0%| F| |TAMS 0x000000070c900000, 0x000000070c900000| Untracked +| 56|0x000000070ca00000, 0x000000070ca00000, 0x000000070cb00000| 0%| F| |TAMS 0x000000070ca00000, 0x000000070ca00000| Untracked +| 57|0x000000070cb00000, 0x000000070cb00000, 0x000000070cc00000| 0%| F| |TAMS 0x000000070cb00000, 0x000000070cb00000| Untracked +| 58|0x000000070cc00000, 0x000000070cc00000, 0x000000070cd00000| 0%| F| |TAMS 0x000000070cc00000, 0x000000070cc00000| Untracked +| 59|0x000000070cd00000, 0x000000070cd00000, 0x000000070ce00000| 0%| F| |TAMS 0x000000070cd00000, 0x000000070cd00000| Untracked +| 60|0x000000070ce00000, 0x000000070ce00000, 0x000000070cf00000| 0%| F| |TAMS 0x000000070ce00000, 0x000000070ce00000| Untracked +| 61|0x000000070cf00000, 0x000000070cf00000, 0x000000070d000000| 0%| F| |TAMS 0x000000070cf00000, 0x000000070cf00000| Untracked +| 62|0x000000070d000000, 0x000000070d000000, 0x000000070d100000| 0%| F| |TAMS 0x000000070d000000, 0x000000070d000000| Untracked +| 63|0x000000070d100000, 0x000000070d100000, 0x000000070d200000| 0%| F| |TAMS 0x000000070d100000, 0x000000070d100000| Untracked +| 64|0x000000070d200000, 0x000000070d200000, 0x000000070d300000| 0%| F| |TAMS 0x000000070d200000, 0x000000070d200000| Untracked +| 65|0x000000070d300000, 0x000000070d300000, 0x000000070d400000| 0%| F| |TAMS 0x000000070d300000, 0x000000070d300000| Untracked +| 66|0x000000070d400000, 0x000000070d400000, 0x000000070d500000| 0%| F| |TAMS 0x000000070d400000, 0x000000070d400000| Untracked +| 67|0x000000070d500000, 0x000000070d500000, 0x000000070d600000| 0%| F| |TAMS 0x000000070d500000, 0x000000070d500000| Untracked +| 68|0x000000070d600000, 0x000000070d600000, 0x000000070d700000| 0%| F| |TAMS 0x000000070d600000, 0x000000070d600000| Untracked +| 69|0x000000070d700000, 0x000000070d700000, 0x000000070d800000| 0%| F| |TAMS 0x000000070d700000, 0x000000070d700000| Untracked +| 70|0x000000070d800000, 0x000000070d800000, 0x000000070d900000| 0%| F| |TAMS 0x000000070d800000, 0x000000070d800000| Untracked +| 71|0x000000070d900000, 0x000000070d900000, 0x000000070da00000| 0%| F| |TAMS 0x000000070d900000, 0x000000070d900000| Untracked +| 72|0x000000070da00000, 0x000000070da00000, 0x000000070db00000| 0%| F| |TAMS 0x000000070da00000, 0x000000070da00000| Untracked +| 73|0x000000070db00000, 0x000000070db00000, 0x000000070dc00000| 0%| F| |TAMS 0x000000070db00000, 0x000000070db00000| Untracked +| 74|0x000000070dc00000, 0x000000070dc00000, 0x000000070dd00000| 0%| F| |TAMS 0x000000070dc00000, 0x000000070dc00000| Untracked +| 75|0x000000070dd00000, 0x000000070dd00000, 0x000000070de00000| 0%| F| |TAMS 0x000000070dd00000, 0x000000070dd00000| Untracked +| 76|0x000000070de00000, 0x000000070de00000, 0x000000070df00000| 0%| F| |TAMS 0x000000070de00000, 0x000000070de00000| Untracked +| 77|0x000000070df00000, 0x000000070df00000, 0x000000070e000000| 0%| F| |TAMS 0x000000070df00000, 0x000000070df00000| Untracked +| 78|0x000000070e000000, 0x000000070e000000, 0x000000070e100000| 0%| F| |TAMS 0x000000070e000000, 0x000000070e000000| Untracked +| 79|0x000000070e100000, 0x000000070e100000, 0x000000070e200000| 0%| F| |TAMS 0x000000070e100000, 0x000000070e100000| Untracked +| 80|0x000000070e200000, 0x000000070e200000, 0x000000070e300000| 0%| F| |TAMS 0x000000070e200000, 0x000000070e200000| Untracked +| 81|0x000000070e300000, 0x000000070e300000, 0x000000070e400000| 0%| F| |TAMS 0x000000070e300000, 0x000000070e300000| Untracked +| 82|0x000000070e400000, 0x000000070e400000, 0x000000070e500000| 0%| F| |TAMS 0x000000070e400000, 0x000000070e400000| Untracked +| 83|0x000000070e500000, 0x000000070e500000, 0x000000070e600000| 0%| F| |TAMS 0x000000070e500000, 0x000000070e500000| Untracked +| 84|0x000000070e600000, 0x000000070e600000, 0x000000070e700000| 0%| F| |TAMS 0x000000070e600000, 0x000000070e600000| Untracked +| 85|0x000000070e700000, 0x000000070e700000, 0x000000070e800000| 0%| F| |TAMS 0x000000070e700000, 0x000000070e700000| Untracked +| 86|0x000000070e800000, 0x000000070e800000, 0x000000070e900000| 0%| F| |TAMS 0x000000070e800000, 0x000000070e800000| Untracked +| 87|0x000000070e900000, 0x000000070e900000, 0x000000070ea00000| 0%| F| |TAMS 0x000000070e900000, 0x000000070e900000| Untracked +| 88|0x000000070ea00000, 0x000000070ea00000, 0x000000070eb00000| 0%| F| |TAMS 0x000000070ea00000, 0x000000070ea00000| Untracked +| 89|0x000000070eb00000, 0x000000070eb00000, 0x000000070ec00000| 0%| F| |TAMS 0x000000070eb00000, 0x000000070eb00000| Untracked +| 90|0x000000070ec00000, 0x000000070ec00000, 0x000000070ed00000| 0%| F| |TAMS 0x000000070ec00000, 0x000000070ec00000| Untracked +| 91|0x000000070ed00000, 0x000000070ed00000, 0x000000070ee00000| 0%| F| |TAMS 0x000000070ed00000, 0x000000070ed00000| Untracked +| 92|0x000000070ee00000, 0x000000070ee00000, 0x000000070ef00000| 0%| F| |TAMS 0x000000070ee00000, 0x000000070ee00000| Untracked +| 93|0x000000070ef00000, 0x000000070ef00000, 0x000000070f000000| 0%| F| |TAMS 0x000000070ef00000, 0x000000070ef00000| Untracked +| 94|0x000000070f000000, 0x000000070f000000, 0x000000070f100000| 0%| F| |TAMS 0x000000070f000000, 0x000000070f000000| Untracked +| 95|0x000000070f100000, 0x000000070f100000, 0x000000070f200000| 0%| F| |TAMS 0x000000070f100000, 0x000000070f100000| Untracked +| 96|0x000000070f200000, 0x000000070f200000, 0x000000070f300000| 0%| F| |TAMS 0x000000070f200000, 0x000000070f200000| Untracked +| 97|0x000000070f300000, 0x000000070f300000, 0x000000070f400000| 0%| F| |TAMS 0x000000070f300000, 0x000000070f300000| Untracked +| 98|0x000000070f400000, 0x000000070f400000, 0x000000070f500000| 0%| F| |TAMS 0x000000070f400000, 0x000000070f400000| Untracked +| 99|0x000000070f500000, 0x000000070f500000, 0x000000070f600000| 0%| F| |TAMS 0x000000070f500000, 0x000000070f500000| Untracked +| 100|0x000000070f600000, 0x000000070f600000, 0x000000070f700000| 0%| F| |TAMS 0x000000070f600000, 0x000000070f600000| Untracked +| 101|0x000000070f700000, 0x000000070f700000, 0x000000070f800000| 0%| F| |TAMS 0x000000070f700000, 0x000000070f700000| Untracked +| 102|0x000000070f800000, 0x000000070f800000, 0x000000070f900000| 0%| F| |TAMS 0x000000070f800000, 0x000000070f800000| Untracked +| 103|0x000000070f900000, 0x000000070f900000, 0x000000070fa00000| 0%| F| |TAMS 0x000000070f900000, 0x000000070f900000| Untracked +| 104|0x000000070fa00000, 0x000000070fa00000, 0x000000070fb00000| 0%| F| |TAMS 0x000000070fa00000, 0x000000070fa00000| Untracked +| 105|0x000000070fb00000, 0x000000070fb00000, 0x000000070fc00000| 0%| F| |TAMS 0x000000070fb00000, 0x000000070fb00000| Untracked +| 106|0x000000070fc00000, 0x000000070fc00000, 0x000000070fd00000| 0%| F| |TAMS 0x000000070fc00000, 0x000000070fc00000| Untracked +| 107|0x000000070fd00000, 0x000000070fd00000, 0x000000070fe00000| 0%| F| |TAMS 0x000000070fd00000, 0x000000070fd00000| Untracked +| 108|0x000000070fe00000, 0x000000070fe00000, 0x000000070ff00000| 0%| F| |TAMS 0x000000070fe00000, 0x000000070fe00000| Untracked +| 109|0x000000070ff00000, 0x000000070ff00000, 0x0000000710000000| 0%| F| |TAMS 0x000000070ff00000, 0x000000070ff00000| Untracked +| 110|0x0000000710000000, 0x0000000710000000, 0x0000000710100000| 0%| F| |TAMS 0x0000000710000000, 0x0000000710000000| Untracked +| 111|0x0000000710100000, 0x0000000710100000, 0x0000000710200000| 0%| F| |TAMS 0x0000000710100000, 0x0000000710100000| Untracked +| 112|0x0000000710200000, 0x0000000710200000, 0x0000000710300000| 0%| F| |TAMS 0x0000000710200000, 0x0000000710200000| Untracked +| 113|0x0000000710300000, 0x0000000710300000, 0x0000000710400000| 0%| F| |TAMS 0x0000000710300000, 0x0000000710300000| Untracked +| 114|0x0000000710400000, 0x0000000710400000, 0x0000000710500000| 0%| F| |TAMS 0x0000000710400000, 0x0000000710400000| Untracked +| 115|0x0000000710500000, 0x0000000710500000, 0x0000000710600000| 0%| F| |TAMS 0x0000000710500000, 0x0000000710500000| Untracked +| 116|0x0000000710600000, 0x0000000710600000, 0x0000000710700000| 0%| F| |TAMS 0x0000000710600000, 0x0000000710600000| Untracked +| 117|0x0000000710700000, 0x0000000710700000, 0x0000000710800000| 0%| F| |TAMS 0x0000000710700000, 0x0000000710700000| Untracked +| 118|0x0000000710800000, 0x0000000710800000, 0x0000000710900000| 0%| F| |TAMS 0x0000000710800000, 0x0000000710800000| Untracked +| 119|0x0000000710900000, 0x0000000710900000, 0x0000000710a00000| 0%| F| |TAMS 0x0000000710900000, 0x0000000710900000| Untracked +| 120|0x0000000710a00000, 0x0000000710a00000, 0x0000000710b00000| 0%| F| |TAMS 0x0000000710a00000, 0x0000000710a00000| Untracked +| 121|0x0000000710b00000, 0x0000000710b00000, 0x0000000710c00000| 0%| F| |TAMS 0x0000000710b00000, 0x0000000710b00000| Untracked +| 122|0x0000000710c00000, 0x0000000710c00000, 0x0000000710d00000| 0%| F| |TAMS 0x0000000710c00000, 0x0000000710c00000| Untracked +| 123|0x0000000710d00000, 0x0000000710d00000, 0x0000000710e00000| 0%| F| |TAMS 0x0000000710d00000, 0x0000000710d00000| Untracked +| 124|0x0000000710e00000, 0x0000000710e00000, 0x0000000710f00000| 0%| F| |TAMS 0x0000000710e00000, 0x0000000710e00000| Untracked +| 125|0x0000000710f00000, 0x0000000710f00000, 0x0000000711000000| 0%| F| |TAMS 0x0000000710f00000, 0x0000000710f00000| Untracked +| 126|0x0000000711000000, 0x0000000711000000, 0x0000000711100000| 0%| F| |TAMS 0x0000000711000000, 0x0000000711000000| Untracked +| 127|0x0000000711100000, 0x0000000711100000, 0x0000000711200000| 0%| F| |TAMS 0x0000000711100000, 0x0000000711100000| Untracked +| 128|0x0000000711200000, 0x0000000711200000, 0x0000000711300000| 0%| F| |TAMS 0x0000000711200000, 0x0000000711200000| Untracked +| 129|0x0000000711300000, 0x0000000711300000, 0x0000000711400000| 0%| F| |TAMS 0x0000000711300000, 0x0000000711300000| Untracked +| 130|0x0000000711400000, 0x0000000711400000, 0x0000000711500000| 0%| F| |TAMS 0x0000000711400000, 0x0000000711400000| Untracked +| 131|0x0000000711500000, 0x0000000711500000, 0x0000000711600000| 0%| F| |TAMS 0x0000000711500000, 0x0000000711500000| Untracked +| 132|0x0000000711600000, 0x0000000711600000, 0x0000000711700000| 0%| F| |TAMS 0x0000000711600000, 0x0000000711600000| Untracked +| 133|0x0000000711700000, 0x0000000711700000, 0x0000000711800000| 0%| F| |TAMS 0x0000000711700000, 0x0000000711700000| Untracked +| 134|0x0000000711800000, 0x0000000711800000, 0x0000000711900000| 0%| F| |TAMS 0x0000000711800000, 0x0000000711800000| Untracked +| 135|0x0000000711900000, 0x0000000711900000, 0x0000000711a00000| 0%| F| |TAMS 0x0000000711900000, 0x0000000711900000| Untracked +| 136|0x0000000711a00000, 0x0000000711a00000, 0x0000000711b00000| 0%| F| |TAMS 0x0000000711a00000, 0x0000000711a00000| Untracked +| 137|0x0000000711b00000, 0x0000000711b00000, 0x0000000711c00000| 0%| F| |TAMS 0x0000000711b00000, 0x0000000711b00000| Untracked +| 138|0x0000000711c00000, 0x0000000711c00000, 0x0000000711d00000| 0%| F| |TAMS 0x0000000711c00000, 0x0000000711c00000| Untracked +| 139|0x0000000711d00000, 0x0000000711d00000, 0x0000000711e00000| 0%| F| |TAMS 0x0000000711d00000, 0x0000000711d00000| Untracked +| 140|0x0000000711e00000, 0x0000000711e00000, 0x0000000711f00000| 0%| F| |TAMS 0x0000000711e00000, 0x0000000711e00000| Untracked +| 141|0x0000000711f00000, 0x0000000711f00000, 0x0000000712000000| 0%| F| |TAMS 0x0000000711f00000, 0x0000000711f00000| Untracked +| 142|0x0000000712000000, 0x0000000712000000, 0x0000000712100000| 0%| F| |TAMS 0x0000000712000000, 0x0000000712000000| Untracked +| 143|0x0000000712100000, 0x0000000712100000, 0x0000000712200000| 0%| F| |TAMS 0x0000000712100000, 0x0000000712100000| Untracked +| 144|0x0000000712200000, 0x0000000712200000, 0x0000000712300000| 0%| F| |TAMS 0x0000000712200000, 0x0000000712200000| Untracked +| 145|0x0000000712300000, 0x0000000712300000, 0x0000000712400000| 0%| F| |TAMS 0x0000000712300000, 0x0000000712300000| Untracked +| 146|0x0000000712400000, 0x0000000712400000, 0x0000000712500000| 0%| F| |TAMS 0x0000000712400000, 0x0000000712400000| Untracked +| 147|0x0000000712500000, 0x0000000712500000, 0x0000000712600000| 0%| F| |TAMS 0x0000000712500000, 0x0000000712500000| Untracked +| 148|0x0000000712600000, 0x0000000712600000, 0x0000000712700000| 0%| F| |TAMS 0x0000000712600000, 0x0000000712600000| Untracked +| 149|0x0000000712700000, 0x0000000712700000, 0x0000000712800000| 0%| F| |TAMS 0x0000000712700000, 0x0000000712700000| Untracked +| 150|0x0000000712800000, 0x0000000712800000, 0x0000000712900000| 0%| F| |TAMS 0x0000000712800000, 0x0000000712800000| Untracked +| 151|0x0000000712900000, 0x0000000712900000, 0x0000000712a00000| 0%| F| |TAMS 0x0000000712900000, 0x0000000712900000| Untracked +| 152|0x0000000712a00000, 0x0000000712a00000, 0x0000000712b00000| 0%| F| |TAMS 0x0000000712a00000, 0x0000000712a00000| Untracked +| 153|0x0000000712b00000, 0x0000000712b00000, 0x0000000712c00000| 0%| F| |TAMS 0x0000000712b00000, 0x0000000712b00000| Untracked +| 154|0x0000000712c00000, 0x0000000712c00000, 0x0000000712d00000| 0%| F| |TAMS 0x0000000712c00000, 0x0000000712c00000| Untracked +| 155|0x0000000712d00000, 0x0000000712d00000, 0x0000000712e00000| 0%| F| |TAMS 0x0000000712d00000, 0x0000000712d00000| Untracked +| 156|0x0000000712e00000, 0x0000000712e00000, 0x0000000712f00000| 0%| F| |TAMS 0x0000000712e00000, 0x0000000712e00000| Untracked +| 157|0x0000000712f00000, 0x0000000712f00000, 0x0000000713000000| 0%| F| |TAMS 0x0000000712f00000, 0x0000000712f00000| Untracked +| 158|0x0000000713000000, 0x0000000713000000, 0x0000000713100000| 0%| F| |TAMS 0x0000000713000000, 0x0000000713000000| Untracked +| 159|0x0000000713100000, 0x0000000713100000, 0x0000000713200000| 0%| F| |TAMS 0x0000000713100000, 0x0000000713100000| Untracked +| 160|0x0000000713200000, 0x0000000713200000, 0x0000000713300000| 0%| F| |TAMS 0x0000000713200000, 0x0000000713200000| Untracked +| 161|0x0000000713300000, 0x0000000713300000, 0x0000000713400000| 0%| F| |TAMS 0x0000000713300000, 0x0000000713300000| Untracked +| 162|0x0000000713400000, 0x0000000713400000, 0x0000000713500000| 0%| F| |TAMS 0x0000000713400000, 0x0000000713400000| Untracked +| 163|0x0000000713500000, 0x0000000713500000, 0x0000000713600000| 0%| F| |TAMS 0x0000000713500000, 0x0000000713500000| Untracked +| 164|0x0000000713600000, 0x0000000713600000, 0x0000000713700000| 0%| F| |TAMS 0x0000000713600000, 0x0000000713600000| Untracked +| 165|0x0000000713700000, 0x0000000713700000, 0x0000000713800000| 0%| F| |TAMS 0x0000000713700000, 0x0000000713700000| Untracked +| 166|0x0000000713800000, 0x0000000713800000, 0x0000000713900000| 0%| F| |TAMS 0x0000000713800000, 0x0000000713800000| Untracked +| 167|0x0000000713900000, 0x0000000713900000, 0x0000000713a00000| 0%| F| |TAMS 0x0000000713900000, 0x0000000713900000| Untracked +| 168|0x0000000713a00000, 0x0000000713a00000, 0x0000000713b00000| 0%| F| |TAMS 0x0000000713a00000, 0x0000000713a00000| Untracked +| 169|0x0000000713b00000, 0x0000000713b00000, 0x0000000713c00000| 0%| F| |TAMS 0x0000000713b00000, 0x0000000713b00000| Untracked +| 170|0x0000000713c00000, 0x0000000713c00000, 0x0000000713d00000| 0%| F| |TAMS 0x0000000713c00000, 0x0000000713c00000| Untracked +| 171|0x0000000713d00000, 0x0000000713d00000, 0x0000000713e00000| 0%| F| |TAMS 0x0000000713d00000, 0x0000000713d00000| Untracked +| 172|0x0000000713e00000, 0x0000000713e00000, 0x0000000713f00000| 0%| F| |TAMS 0x0000000713e00000, 0x0000000713e00000| Untracked +| 173|0x0000000713f00000, 0x0000000713f00000, 0x0000000714000000| 0%| F| |TAMS 0x0000000713f00000, 0x0000000713f00000| Untracked +| 174|0x0000000714000000, 0x0000000714000000, 0x0000000714100000| 0%| F| |TAMS 0x0000000714000000, 0x0000000714000000| Untracked +| 175|0x0000000714100000, 0x0000000714100000, 0x0000000714200000| 0%| F| |TAMS 0x0000000714100000, 0x0000000714100000| Untracked +| 176|0x0000000714200000, 0x0000000714200000, 0x0000000714300000| 0%| F| |TAMS 0x0000000714200000, 0x0000000714200000| Untracked +| 177|0x0000000714300000, 0x0000000714300000, 0x0000000714400000| 0%| F| |TAMS 0x0000000714300000, 0x0000000714300000| Untracked +| 178|0x0000000714400000, 0x0000000714400000, 0x0000000714500000| 0%| F| |TAMS 0x0000000714400000, 0x0000000714400000| Untracked +| 179|0x0000000714500000, 0x0000000714500000, 0x0000000714600000| 0%| F| |TAMS 0x0000000714500000, 0x0000000714500000| Untracked +| 180|0x0000000714600000, 0x0000000714600000, 0x0000000714700000| 0%| F| |TAMS 0x0000000714600000, 0x0000000714600000| Untracked +| 181|0x0000000714700000, 0x0000000714700000, 0x0000000714800000| 0%| F| |TAMS 0x0000000714700000, 0x0000000714700000| Untracked +| 182|0x0000000714800000, 0x0000000714800000, 0x0000000714900000| 0%| F| |TAMS 0x0000000714800000, 0x0000000714800000| Untracked +| 183|0x0000000714900000, 0x0000000714900000, 0x0000000714a00000| 0%| F| |TAMS 0x0000000714900000, 0x0000000714900000| Untracked +| 184|0x0000000714a00000, 0x0000000714a00000, 0x0000000714b00000| 0%| F| |TAMS 0x0000000714a00000, 0x0000000714a00000| Untracked +| 185|0x0000000714b00000, 0x0000000714b00000, 0x0000000714c00000| 0%| F| |TAMS 0x0000000714b00000, 0x0000000714b00000| Untracked +| 186|0x0000000714c00000, 0x0000000714c00000, 0x0000000714d00000| 0%| F| |TAMS 0x0000000714c00000, 0x0000000714c00000| Untracked +| 187|0x0000000714d00000, 0x0000000714d00000, 0x0000000714e00000| 0%| F| |TAMS 0x0000000714d00000, 0x0000000714d00000| Untracked +| 188|0x0000000714e00000, 0x0000000714e00000, 0x0000000714f00000| 0%| F| |TAMS 0x0000000714e00000, 0x0000000714e00000| Untracked +| 189|0x0000000714f00000, 0x0000000714f00000, 0x0000000715000000| 0%| F| |TAMS 0x0000000714f00000, 0x0000000714f00000| Untracked +| 190|0x0000000715000000, 0x0000000715000000, 0x0000000715100000| 0%| F| |TAMS 0x0000000715000000, 0x0000000715000000| Untracked +| 191|0x0000000715100000, 0x0000000715100000, 0x0000000715200000| 0%| F| |TAMS 0x0000000715100000, 0x0000000715100000| Untracked +| 192|0x0000000715200000, 0x0000000715200000, 0x0000000715300000| 0%| F| |TAMS 0x0000000715200000, 0x0000000715200000| Untracked +| 193|0x0000000715300000, 0x0000000715300000, 0x0000000715400000| 0%| F| |TAMS 0x0000000715300000, 0x0000000715300000| Untracked +| 194|0x0000000715400000, 0x0000000715400000, 0x0000000715500000| 0%| F| |TAMS 0x0000000715400000, 0x0000000715400000| Untracked +| 195|0x0000000715500000, 0x0000000715500000, 0x0000000715600000| 0%| F| |TAMS 0x0000000715500000, 0x0000000715500000| Untracked +| 196|0x0000000715600000, 0x0000000715600000, 0x0000000715700000| 0%| F| |TAMS 0x0000000715600000, 0x0000000715600000| Untracked +| 197|0x0000000715700000, 0x0000000715700000, 0x0000000715800000| 0%| F| |TAMS 0x0000000715700000, 0x0000000715700000| Untracked +| 198|0x0000000715800000, 0x0000000715800000, 0x0000000715900000| 0%| F| |TAMS 0x0000000715800000, 0x0000000715800000| Untracked +| 199|0x0000000715900000, 0x0000000715900000, 0x0000000715a00000| 0%| F| |TAMS 0x0000000715900000, 0x0000000715900000| Untracked +| 200|0x0000000715a00000, 0x0000000715a00000, 0x0000000715b00000| 0%| F| |TAMS 0x0000000715a00000, 0x0000000715a00000| Untracked +| 201|0x0000000715b00000, 0x0000000715b00000, 0x0000000715c00000| 0%| F| |TAMS 0x0000000715b00000, 0x0000000715b00000| Untracked +| 202|0x0000000715c00000, 0x0000000715c00000, 0x0000000715d00000| 0%| F| |TAMS 0x0000000715c00000, 0x0000000715c00000| Untracked +| 203|0x0000000715d00000, 0x0000000715d00000, 0x0000000715e00000| 0%| F| |TAMS 0x0000000715d00000, 0x0000000715d00000| Untracked +| 204|0x0000000715e00000, 0x0000000715e00000, 0x0000000715f00000| 0%| F| |TAMS 0x0000000715e00000, 0x0000000715e00000| Untracked +| 205|0x0000000715f00000, 0x0000000715f00000, 0x0000000716000000| 0%| F| |TAMS 0x0000000715f00000, 0x0000000715f00000| Untracked +| 206|0x0000000716000000, 0x0000000716000000, 0x0000000716100000| 0%| F| |TAMS 0x0000000716000000, 0x0000000716000000| Untracked +| 207|0x0000000716100000, 0x0000000716100000, 0x0000000716200000| 0%| F| |TAMS 0x0000000716100000, 0x0000000716100000| Untracked +| 208|0x0000000716200000, 0x0000000716200000, 0x0000000716300000| 0%| F| |TAMS 0x0000000716200000, 0x0000000716200000| Untracked +| 209|0x0000000716300000, 0x0000000716300000, 0x0000000716400000| 0%| F| |TAMS 0x0000000716300000, 0x0000000716300000| Untracked +| 210|0x0000000716400000, 0x0000000716400000, 0x0000000716500000| 0%| F| |TAMS 0x0000000716400000, 0x0000000716400000| Untracked +| 211|0x0000000716500000, 0x0000000716500000, 0x0000000716600000| 0%| F| |TAMS 0x0000000716500000, 0x0000000716500000| Untracked +| 212|0x0000000716600000, 0x0000000716600000, 0x0000000716700000| 0%| F| |TAMS 0x0000000716600000, 0x0000000716600000| Untracked +| 213|0x0000000716700000, 0x0000000716700000, 0x0000000716800000| 0%| F| |TAMS 0x0000000716700000, 0x0000000716700000| Untracked +| 214|0x0000000716800000, 0x0000000716800000, 0x0000000716900000| 0%| F| |TAMS 0x0000000716800000, 0x0000000716800000| Untracked +| 215|0x0000000716900000, 0x0000000716900000, 0x0000000716a00000| 0%| F| |TAMS 0x0000000716900000, 0x0000000716900000| Untracked +| 216|0x0000000716a00000, 0x0000000716a00000, 0x0000000716b00000| 0%| F| |TAMS 0x0000000716a00000, 0x0000000716a00000| Untracked +| 217|0x0000000716b00000, 0x0000000716b00000, 0x0000000716c00000| 0%| F| |TAMS 0x0000000716b00000, 0x0000000716b00000| Untracked +| 218|0x0000000716c00000, 0x0000000716c00000, 0x0000000716d00000| 0%| F| |TAMS 0x0000000716c00000, 0x0000000716c00000| Untracked +| 219|0x0000000716d00000, 0x0000000716d00000, 0x0000000716e00000| 0%| F| |TAMS 0x0000000716d00000, 0x0000000716d00000| Untracked +| 220|0x0000000716e00000, 0x0000000716e00000, 0x0000000716f00000| 0%| F| |TAMS 0x0000000716e00000, 0x0000000716e00000| Untracked +| 221|0x0000000716f00000, 0x0000000716f8afa8, 0x0000000717000000| 54%| S|CS|TAMS 0x0000000716f00000, 0x0000000716f00000| Complete +| 222|0x0000000717000000, 0x0000000717100000, 0x0000000717100000|100%| S|CS|TAMS 0x0000000717000000, 0x0000000717000000| Complete +| 223|0x0000000717100000, 0x0000000717200000, 0x0000000717200000|100%| S|CS|TAMS 0x0000000717100000, 0x0000000717100000| Complete +| 224|0x0000000717200000, 0x0000000717200000, 0x0000000717300000| 0%| F| |TAMS 0x0000000717200000, 0x0000000717200000| Untracked +| 225|0x0000000717300000, 0x0000000717300000, 0x0000000717400000| 0%| F| |TAMS 0x0000000717300000, 0x0000000717300000| Untracked +| 226|0x0000000717400000, 0x0000000717400000, 0x0000000717500000| 0%| F| |TAMS 0x0000000717400000, 0x0000000717400000| Untracked +| 227|0x0000000717500000, 0x0000000717500000, 0x0000000717600000| 0%| F| |TAMS 0x0000000717500000, 0x0000000717500000| Untracked +| 228|0x0000000717600000, 0x0000000717600000, 0x0000000717700000| 0%| F| |TAMS 0x0000000717600000, 0x0000000717600000| Untracked +| 229|0x0000000717700000, 0x0000000717700000, 0x0000000717800000| 0%| F| |TAMS 0x0000000717700000, 0x0000000717700000| Untracked +| 230|0x0000000717800000, 0x0000000717800000, 0x0000000717900000| 0%| F| |TAMS 0x0000000717800000, 0x0000000717800000| Untracked +| 231|0x0000000717900000, 0x0000000717900000, 0x0000000717a00000| 0%| F| |TAMS 0x0000000717900000, 0x0000000717900000| Untracked +| 232|0x0000000717a00000, 0x0000000717a00000, 0x0000000717b00000| 0%| F| |TAMS 0x0000000717a00000, 0x0000000717a00000| Untracked +| 233|0x0000000717b00000, 0x0000000717b00000, 0x0000000717c00000| 0%| F| |TAMS 0x0000000717b00000, 0x0000000717b00000| Untracked +| 234|0x0000000717c00000, 0x0000000717c00000, 0x0000000717d00000| 0%| F| |TAMS 0x0000000717c00000, 0x0000000717c00000| Untracked +| 235|0x0000000717d00000, 0x0000000717d00000, 0x0000000717e00000| 0%| F| |TAMS 0x0000000717d00000, 0x0000000717d00000| Untracked +| 236|0x0000000717e00000, 0x0000000717e00000, 0x0000000717f00000| 0%| F| |TAMS 0x0000000717e00000, 0x0000000717e00000| Untracked +| 237|0x0000000717f00000, 0x0000000717f00000, 0x0000000718000000| 0%| F| |TAMS 0x0000000717f00000, 0x0000000717f00000| Untracked +| 238|0x0000000718000000, 0x0000000718000000, 0x0000000718100000| 0%| F| |TAMS 0x0000000718000000, 0x0000000718000000| Untracked +| 239|0x0000000718100000, 0x0000000718100000, 0x0000000718200000| 0%| F| |TAMS 0x0000000718100000, 0x0000000718100000| Untracked +| 240|0x0000000718200000, 0x0000000718200000, 0x0000000718300000| 0%| F| |TAMS 0x0000000718200000, 0x0000000718200000| Untracked +| 241|0x0000000718300000, 0x0000000718300000, 0x0000000718400000| 0%| F| |TAMS 0x0000000718300000, 0x0000000718300000| Untracked +| 242|0x0000000718400000, 0x0000000718400000, 0x0000000718500000| 0%| F| |TAMS 0x0000000718400000, 0x0000000718400000| Untracked +| 243|0x0000000718500000, 0x0000000718500000, 0x0000000718600000| 0%| F| |TAMS 0x0000000718500000, 0x0000000718500000| Untracked +| 244|0x0000000718600000, 0x0000000718600000, 0x0000000718700000| 0%| F| |TAMS 0x0000000718600000, 0x0000000718600000| Untracked +| 245|0x0000000718700000, 0x0000000718700000, 0x0000000718800000| 0%| F| |TAMS 0x0000000718700000, 0x0000000718700000| Untracked +| 246|0x0000000718800000, 0x0000000718880800, 0x0000000718900000| 50%| E| |TAMS 0x0000000718800000, 0x0000000718800000| Complete +| 247|0x0000000718900000, 0x0000000718a00000, 0x0000000718a00000|100%| E|CS|TAMS 0x0000000718900000, 0x0000000718900000| Complete +|2924|0x00000007bfe00000, 0x00000007bfe48000, 0x00000007bff00000| 28%|OA| |TAMS 0x00000007bfe00000, 0x00000007bfe00000| Untracked +|2925|0x00000007bff00000, 0x00000007bff6c000, 0x00000007c0000000| 42%|CA| |TAMS 0x00000007bff00000, 0x00000007bff00000| Untracked + +Card table byte_map: [0x00007f0ec1189000,0x00007f0ec1940000] _byte_map_base: 0x00007f0ebd940000 + +Marking Bits (Prev, Next): (CMBitMap*) 0x00007f0ebc07d798, (CMBitMap*) 0x00007f0ebc07d7d0 + Prev Bits: [0x00007f0e9c248000, 0x00007f0ea0000000) + Next Bits: [0x00007f0e98490000, 0x00007f0e9c248000) + +Polling page: 0x00007f0ec32fb000 + +Metaspace: + +Usage: + Non-class: 7.71 MB capacity, 6.45 MB ( 84%) used, 1.20 MB ( 16%) free+waste, 62.62 KB ( <1%) overhead. + Class: 1.21 MB capacity, 905.91 KB ( 73%) used, 298.34 KB ( 24%) free+waste, 33.75 KB ( 3%) overhead. + Both: 8.92 MB capacity, 7.33 MB ( 82%) used, 1.49 MB ( 17%) free+waste, 96.38 KB ( 1%) overhead. + +Virtual space: + Non-class space: 8.00 MB reserved, 8.00 MB (100%) committed + Class space: 1.00 GB reserved, 1.25 MB ( <1%) committed + Both: 1.01 GB reserved, 9.25 MB ( <1%) committed + +Chunk freelists: + Non-Class: 47.00 KB + Class: 0 bytes + Both: 47.00 KB + +MaxMetaspaceSize: unlimited +CompressedClassSpaceSize: 1.00 GB +Initial GC threshold: 20.80 MB +Current GC threshold: 20.80 MB +CDS: on + +CodeHeap 'non-profiled nmethods': size=119172Kb used=389Kb max_used=389Kb free=118782Kb + bounds [0x00007f0eac36e000, 0x00007f0eac5de000, 0x00007f0eb37cf000] +CodeHeap 'profiled nmethods': size=119168Kb used=2955Kb max_used=2955Kb free=116212Kb + bounds [0x00007f0ea4f0e000, 0x00007f0ea51fe000, 0x00007f0eac36e000] +CodeHeap 'non-nmethods': size=7420Kb used=1170Kb max_used=2308Kb free=6249Kb + bounds [0x00007f0ea47cf000, 0x00007f0ea4a3f000, 0x00007f0ea4f0e000] + total_blobs=1866 nmethods=1441 adapters=337 + compilation: enabled + stopped_count=0, restarted_count=0 + full_count=0 + +Compilation events (20 events): +Event: 3.565 Thread 0x00007f0ebc264000 nmethod 1430 0x00007f0ea51ea410 code [0x00007f0ea51ea5c0, 0x00007f0ea51ea7d0] +Event: 3.580 Thread 0x00007f0ebc262000 nmethod 1423 0x00007f0eac3ccc10 code [0x00007f0eac3ccee0, 0x00007f0eac3ce118] +Event: 3.693 Thread 0x00007f0ebc262000 1433 4 java.util.concurrent.ConcurrentHashMap::setTabAt (20 bytes) +Event: 3.693 Thread 0x00007f0ebc264000 1434 ! 3 java.util.concurrent.ConcurrentHashMap::replaceNode (437 bytes) +Event: 3.694 Thread 0x00007f0ebc262000 nmethod 1433 0x00007f0eac3ce910 code [0x00007f0eac3ceaa0, 0x00007f0eac3cebb8] +Event: 3.694 Thread 0x00007f0ebc264000 nmethod 1434 0x00007f0ea51ea890 code [0x00007f0ea51eac40, 0x00007f0ea51eced0] +Event: 3.695 Thread 0x00007f0ebc264000 1435 ! 3 java.nio.charset.CharsetEncoder::encode (285 bytes) +Event: 3.696 Thread 0x00007f0ebc262000 1438 4 java.nio.StringCharBuffer::get (19 bytes) +Event: 3.696 Thread 0x00007f0ebc264000 nmethod 1435 0x00007f0ea51edd10 code [0x00007f0ea51ee040, 0x00007f0ea51ef3b0] +Event: 3.696 Thread 0x00007f0ebc264000 1436 3 sun.nio.cs.UTF_8$Encoder::encodeLoop (28 bytes) +Event: 3.696 Thread 0x00007f0ebc264000 nmethod 1436 0x00007f0ea51ef990 code [0x00007f0ea51efb80, 0x00007f0ea51eff90] +Event: 3.696 Thread 0x00007f0ebc264000 1437 3 java.util.regex.Pattern::next (33 bytes) +Event: 3.696 Thread 0x00007f0ebc264000 nmethod 1437 0x00007f0ea51f0110 code [0x00007f0ea51f02e0, 0x00007f0ea51f0560] +Event: 3.696 Thread 0x00007f0ebc264000 1439 3 jdk.internal.misc.Unsafe::convEndian (16 bytes) +Event: 3.696 Thread 0x00007f0ebc264000 nmethod 1439 0x00007f0ea51f0690 code [0x00007f0ea51f0840, 0x00007f0ea51f09f0] +Event: 3.696 Thread 0x00007f0ebc264000 1440 3 java.lang.Integer::reverseBytes (26 bytes) +Event: 3.696 Thread 0x00007f0ebc264000 nmethod 1440 0x00007f0ea51f0a90 code [0x00007f0ea51f0c40, 0x00007f0ea51f0d50] +Event: 3.697 Thread 0x00007f0ebc262000 nmethod 1438 0x00007f0eac3cec10 code [0x00007f0eac3cedc0, 0x00007f0eac3cef08] +Event: 3.750 Thread 0x00007f0ebc262000 1442 4 java.io.UnixFileSystem::normalize (75 bytes) +Event: 3.751 Thread 0x00007f0ebc262000 nmethod 1442 0x00007f0eac3cf090 code [0x00007f0eac3cf240, 0x00007f0eac3cf428] + +GC Heap History (2 events): +Event: 3.554 GC heap before +{Heap before GC invocations=0 (full 0): + garbage-first heap total 256000K, used 24272K [0x0000000709200000, 0x0000000800000000) + region size 1024K, 24 young (24576K), 0 survivors (0K) + Metaspace used 7435K, capacity 9061K, committed 9216K, reserved 1056768K + class space used 899K, capacity 1236K, committed 1280K, reserved 1048576K +} +Event: 3.560 GC heap after +{Heap after GC invocations=1 (full 0): + garbage-first heap total 256000K, used 3323K [0x0000000709200000, 0x0000000800000000) + region size 1024K, 3 young (3072K), 3 survivors (3072K) + Metaspace used 7435K, capacity 9061K, committed 9216K, reserved 1056768K + class space used 899K, capacity 1236K, committed 1280K, reserved 1048576K +} + +Deoptimization events (20 events): +Event: 0.395 Thread 0x00007f0ebc016000 DEOPT PACKING pc=0x00007f0eac3a6b44 sp=0x00007f0ec343da50 +Event: 0.395 Thread 0x00007f0ebc016000 DEOPT UNPACKING pc=0x00007f0ea4818ea5 sp=0x00007f0ec343d9e8 mode 2 +Event: 0.415 Thread 0x00007f0ebc016000 Uncommon trap: trap_request=0xffffff4d fr.pc=0x00007f0eac3827e4 relative=0x0000000000000044 +Event: 0.415 Thread 0x00007f0ebc016000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f0eac3827e4 method=java.lang.CharacterData.of(I)Ljava/lang/CharacterData; @ 4 c2 +Event: 0.415 Thread 0x00007f0ebc016000 DEOPT PACKING pc=0x00007f0eac3827e4 sp=0x00007f0ec343bf60 +Event: 0.415 Thread 0x00007f0ebc016000 DEOPT UNPACKING pc=0x00007f0ea4818ea5 sp=0x00007f0ec343bf18 mode 2 +Event: 0.416 Thread 0x00007f0ebc016000 Uncommon trap: trap_request=0xffffff4d fr.pc=0x00007f0eac387b88 relative=0x0000000000000068 +Event: 0.416 Thread 0x00007f0ebc016000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f0eac387b88 method=java.lang.String.isLatin1()Z @ 10 c2 +Event: 0.416 Thread 0x00007f0ebc016000 DEOPT PACKING pc=0x00007f0eac387b88 sp=0x00007f0ec343b5e0 +Event: 0.416 Thread 0x00007f0ebc016000 DEOPT UNPACKING pc=0x00007f0ea4818ea5 sp=0x00007f0ec343b590 mode 2 +Event: 0.417 Thread 0x00007f0ebc016000 Uncommon trap: trap_request=0xffffff4d fr.pc=0x00007f0eac37a134 relative=0x0000000000000194 +Event: 0.417 Thread 0x00007f0ebc016000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f0eac37a134 method=java.lang.String.isLatin1()Z @ 10 c2 +Event: 0.417 Thread 0x00007f0ebc016000 DEOPT PACKING pc=0x00007f0eac37a134 sp=0x00007f0ec343c7b0 +Event: 0.417 Thread 0x00007f0ebc016000 DEOPT UNPACKING pc=0x00007f0ea4818ea5 sp=0x00007f0ec343c6f8 mode 2 +Event: 0.422 Thread 0x00007f0ebc016000 Uncommon trap: trap_request=0xffffff4d fr.pc=0x00007f0eac3a4544 relative=0x00000000000004a4 +Event: 0.422 Thread 0x00007f0ebc016000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f0eac3a4544 method=jdk.internal.org.objectweb.asm.Type.getArgumentsAndReturnSizes(Ljava/lang/String;)I @ 130 c2 +Event: 0.422 Thread 0x00007f0ebc016000 DEOPT PACKING pc=0x00007f0eac3a4544 sp=0x00007f0ec343b810 +Event: 0.422 Thread 0x00007f0ebc016000 DEOPT UNPACKING pc=0x00007f0ea4818ea5 sp=0x00007f0ec343b7c8 mode 2 +Event: 3.750 Thread 0x00007f0ebc016000 DEOPT PACKING pc=0x00007f0ea4fa6920 sp=0x00007f0ec343bb50 +Event: 3.750 Thread 0x00007f0ebc016000 DEOPT UNPACKING pc=0x00007f0ea481964a sp=0x00007f0ec343b088 mode 0 + +Classes redefined (0 events): +No events + +Internal exceptions (20 events): +Event: 0.297 Thread 0x00007f0ebc016000 Exception (0x0000000717bc0278) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.327 Thread 0x00007f0ebc016000 Exception (0x0000000717907c70) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.327 Thread 0x00007f0ebc016000 Exception (0x000000071790b3c8) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 839] +Event: 0.341 Thread 0x00007f0ebc016000 Exception (0x00000007179a9810) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.341 Thread 0x00007f0ebc016000 Exception (0x00000007179ac5d0) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 839] +Event: 0.343 Thread 0x00007f0ebc016000 Exception (0x00000007179d0668) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.354 Thread 0x00007f0ebc016000 Exception (0x000000071786ebe8) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.361 Thread 0x00007f0ebc016000 Exception (0x00000007178c36e0) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.364 Thread 0x00007f0ebc016000 Exception (0x00000007178df5e8) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.373 Thread 0x00007f0ebc016000 Exception (0x000000071779b3c8) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.380 Thread 0x00007f0ebc016000 Exception (0x000000071762c860) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.404 Thread 0x00007f0ebc016000 Exception (0x000000071759d928) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.404 Thread 0x00007f0ebc016000 Exception (0x00000007175abd70) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.405 Thread 0x00007f0ebc016000 Exception (0x00000007175bd858) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 839] +Event: 3.024 Thread 0x00007f0ebc016000 Exception (0x0000000717229790) thrown at [./src/hotspot/share/prims/jni.cpp, line 617] +Event: 3.032 Thread 0x00007f0ebc016000 Exception (0x000000071724bd90) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 3.033 Thread 0x00007f0ebc016000 Exception (0x0000000717258400) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 3.033 Thread 0x00007f0ebc016000 Exception (0x000000071725f458) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 3.034 Thread 0x00007f0ebc016000 Exception (0x0000000717263620) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 3.034 Thread 0x00007f0ebc016000 Exception (0x0000000717267008) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] + +Events (20 events): +Event: 3.692 loading class com/nvidia/cuopt/linearprogramming/BatchSolveResult +Event: 3.692 loading class com/nvidia/cuopt/linearprogramming/BatchSolveResult done +Event: 3.693 Executing VM operation: RevokeBias +Event: 3.693 Executing VM operation: RevokeBias done +Event: 3.693 loading class com/nvidia/cuopt/linearprogramming/Solution +Event: 3.693 loading class com/nvidia/cuopt/linearprogramming/Solution done +Event: 3.748 Executing VM operation: RevokeBias +Event: 3.748 Executing VM operation: RevokeBias done +Event: 3.748 Executing VM operation: RevokeBias +Event: 3.748 Executing VM operation: RevokeBias done +Event: 3.749 Executing VM operation: RevokeBias +Event: 3.749 Executing VM operation: RevokeBias done +Event: 3.750 loading class org/junit/jupiter/api/AssertionFailureBuilder +Event: 3.750 loading class org/junit/jupiter/api/AssertionFailureBuilder done +Event: 3.750 loading class java/util/ArrayDeque$DeqSpliterator +Event: 3.750 loading class java/util/ArrayDeque$DeqSpliterator done +Event: 3.751 loading class org/opentest4j/AssertionFailedError$1 +Event: 3.751 loading class org/opentest4j/AssertionFailedError$1 done +Event: 3.751 loading class org/opentest4j/ValueWrapper +Event: 3.751 loading class org/opentest4j/ValueWrapper done + + +Dynamic libraries: +200000000-200600000 rw-s 00000000 00:01 16549 /dev/zero (deleted) +200600000-203000000 ---p 00000000 00:00 0 +203000000-203200000 rw-s 00000000 00:01 16557 /dev/zero (deleted) +203200000-203400000 rw-s 00000000 00:01 16590 /dev/zero (deleted) +203400000-203600000 ---p 00000000 00:00 0 +203600000-203800000 rw-s 00000000 00:01 16592 /dev/zero (deleted) +203800000-203a00000 rw-s 00000000 00:01 16593 /dev/zero (deleted) +203a00000-203e00000 ---p 00000000 00:00 0 +203e00000-204000000 rw-s 00000000 00:01 16595 /dev/zero (deleted) +204000000-204200000 rw-s 00000000 00:01 16596 /dev/zero (deleted) +204200000-700000000 ---p 00000000 00:00 0 +709200000-718a00000 rw-p 00000000 00:00 0 +718a00000-7bfe00000 ---p 00000000 00:00 0 +7bfe00000-7bfe48000 rw-p 00b14000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa +7bfe48000-7bff00000 rw-p 00000000 00:00 0 +7bff00000-7bff6c000 rw-p 00aa8000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa +7bff6c000-7c0000000 rw-p 00000000 00:00 0 +7c0000000-800000000 ---p 00000000 00:00 0 +800000000-800002000 rwxp 00001000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa +800002000-8003ce000 rw-p 00003000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa +8003ce000-800aa6000 r--p 003cf000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa +800aa6000-800aa7000 rw-p 00aa7000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa +840000000-840140000 rw-p 00000000 00:00 0 +840140000-880000000 ---p 00000000 00:00 0 +900000000-c00000000 ---p 00000000 00:00 0 +55c5acbfd000-55c5acbfe000 r--p 00000000 08:20 294880 /usr/lib/jvm/java-11-openjdk-amd64/bin/java +55c5acbfe000-55c5acbff000 r-xp 00001000 08:20 294880 /usr/lib/jvm/java-11-openjdk-amd64/bin/java +55c5acbff000-55c5acc00000 r--p 00002000 08:20 294880 /usr/lib/jvm/java-11-openjdk-amd64/bin/java +55c5acc00000-55c5acc01000 r--p 00002000 08:20 294880 /usr/lib/jvm/java-11-openjdk-amd64/bin/java +55c5acc01000-55c5acc02000 rw-p 00003000 08:20 294880 /usr/lib/jvm/java-11-openjdk-amd64/bin/java +55c5ae9c3000-55c5ae9e4000 rw-p 00000000 00:00 0 [heap] +7f0dd0000000-7f0dd0021000 rw-p 00000000 00:00 0 +7f0dd0021000-7f0dd4000000 ---p 00000000 00:00 0 +7f0dd8000000-7f0dd8021000 rw-p 00000000 00:00 0 +7f0dd8021000-7f0ddc000000 ---p 00000000 00:00 0 +7f0ddc037000-7f0ddc038000 ---p 00000000 00:00 0 +7f0ddc038000-7f0de0000000 rw-p 00000000 00:00 0 +7f0de0000000-7f0de0021000 rw-p 00000000 00:00 0 +7f0de0021000-7f0de4000000 ---p 00000000 00:00 0 +7f0de4000000-7f0de4021000 rw-p 00000000 00:00 0 +7f0de4021000-7f0de8000000 ---p 00000000 00:00 0 +7f0de8000000-7f0de8021000 rw-p 00000000 00:00 0 +7f0de8021000-7f0dec000000 ---p 00000000 00:00 0 +7f0dec000000-7f0dec021000 rw-p 00000000 00:00 0 +7f0dec021000-7f0df0000000 ---p 00000000 00:00 0 +7f0df0000000-7f0df0021000 rw-p 00000000 00:00 0 +7f0df0021000-7f0df4000000 ---p 00000000 00:00 0 +7f0df4206000-7f0df51fc000 rw-p 00000000 00:00 0 +7f0df51fc000-7f0df51fd000 ---p 00000000 00:00 0 +7f0df51fd000-7f0df52fd000 rw-p 00000000 00:00 0 +7f0df52fd000-7f0df52fe000 ---p 00000000 00:00 0 +7f0df52fe000-7f0df53fe000 rw-p 00000000 00:00 0 +7f0df53fe000-7f0df53ff000 ---p 00000000 00:00 0 +7f0df53ff000-7f0df54ff000 rw-p 00000000 00:00 0 +7f0df54ff000-7f0df5500000 ---p 00000000 00:00 0 +7f0df5500000-7f0df5600000 rw-p 00000000 00:00 0 +7f0df5600000-7f0df8000000 rw-s 00000000 00:01 16556 /dev/zero (deleted) +7f0df8000000-7f0df8021000 rw-p 00000000 00:00 0 +7f0df8021000-7f0dfc000000 ---p 00000000 00:00 0 +7f0dfc07d000-7f0dfc76b000 rw-p 00000000 00:00 0 +7f0dfc76b000-7f0dfc96b000 rw-s 00000000 00:01 16594 /dev/zero (deleted) +7f0dfc96b000-7f0dfcb6b000 rw-s 00000000 00:01 16591 /dev/zero (deleted) +7f0dfcb6b000-7f0dfcd6b000 rw-s 00000000 00:01 16555 /dev/zero (deleted) +7f0dfcd6b000-7f0dfcd6c000 ---p 00000000 00:00 0 +7f0dfcd6c000-7f0dfd7ff000 rw-p 00000000 00:00 0 +7f0dfd7ff000-7f0e03800000 ---p 00000000 00:00 0 +7f0e03800000-7f0e04000000 rw-p 00000000 00:00 0 +7f0e04000000-7f0e04021000 rw-p 00000000 00:00 0 +7f0e04021000-7f0e08000000 ---p 00000000 00:00 0 +7f0e08062000-7f0e08063000 ---p 00000000 00:00 0 +7f0e08063000-7f0e08400000 rw-p 00000000 00:00 0 +7f0e08400000-7f0e0840d000 r-xp 00000000 00:21 1688849861009784 /usr/lib/wsl/drivers/nvdm.inf_amd64_86ce1e7b61a7cb15/libnvdxgdmal.so.1 +7f0e0840d000-7f0e0860d000 ---p 0000d000 00:21 1688849861009784 /usr/lib/wsl/drivers/nvdm.inf_amd64_86ce1e7b61a7cb15/libnvdxgdmal.so.1 +7f0e0860d000-7f0e0860f000 r--p 0000d000 00:21 1688849861009784 /usr/lib/wsl/drivers/nvdm.inf_amd64_86ce1e7b61a7cb15/libnvdxgdmal.so.1 +7f0e0860f000-7f0e08610000 rw-p 0000f000 00:21 1688849861009784 /usr/lib/wsl/drivers/nvdm.inf_amd64_86ce1e7b61a7cb15/libnvdxgdmal.so.1 +7f0e086a2000-7f0e087ff000 rw-p 00000000 00:00 0 +7f0e087ff000-7f0e08800000 ---p 00000000 00:00 0 +7f0e08800000-7f0e09000000 rw-p 00000000 00:00 0 +7f0e09000000-7f0e0a66e000 r-xp 00000000 00:21 1688849861009763 /usr/lib/wsl/drivers/nvdm.inf_amd64_86ce1e7b61a7cb15/libcuda.so.1.1 +7f0e0a66e000-7f0e0a86d000 ---p 0166e000 00:21 1688849861009763 /usr/lib/wsl/drivers/nvdm.inf_amd64_86ce1e7b61a7cb15/libcuda.so.1.1 +7f0e0a86d000-7f0e0abad000 r--p 0166d000 00:21 1688849861009763 /usr/lib/wsl/drivers/nvdm.inf_amd64_86ce1e7b61a7cb15/libcuda.so.1.1 +7f0e0abad000-7f0e0abb4000 rw-p 019ad000 00:21 1688849861009763 /usr/lib/wsl/drivers/nvdm.inf_amd64_86ce1e7b61a7cb15/libcuda.so.1.1 +7f0e0abb4000-7f0e0ac21000 rw-p 00000000 00:00 0 +7f0e0ac6f000-7f0e0b000000 rw-p 00000000 00:00 0 +7f0e0b000000-7f0e0b028000 r-xp 00000000 00:22 1688849861009770 /usr/lib/wsl/lib/libcuda.so.1 +7f0e0b028000-7f0e0b228000 ---p 00028000 00:22 1688849861009770 /usr/lib/wsl/lib/libcuda.so.1 +7f0e0b228000-7f0e0b229000 r--p 00028000 00:22 1688849861009770 /usr/lib/wsl/lib/libcuda.so.1 +7f0e0b229000-7f0e0b22b000 rw-p 00029000 00:22 1688849861009770 /usr/lib/wsl/lib/libcuda.so.1 +7f0e0b22b000-7f0e0b3ee000 rw-p 00000000 00:00 0 +7f0e0b3ee000-7f0e0b4dd000 r--p 00000000 08:20 320733 /home/cbrissette/cuopt/.cuopt_env/lib/libcrypto.so.3 +7f0e0b4dd000-7f0e0b841000 r-xp 000ef000 08:20 320733 /home/cbrissette/cuopt/.cuopt_env/lib/libcrypto.so.3 +7f0e0b841000-7f0e0b978000 r--p 00453000 08:20 320733 /home/cbrissette/cuopt/.cuopt_env/lib/libcrypto.so.3 +7f0e0b978000-7f0e0b9fa000 r--p 00589000 08:20 320733 /home/cbrissette/cuopt/.cuopt_env/lib/libcrypto.so.3 +7f0e0b9fa000-7f0e0b9fd000 rw-p 0060b000 08:20 320733 /home/cbrissette/cuopt/.cuopt_env/lib/libcrypto.so.3 +7f0e0b9fd000-7f0e0ba00000 rw-p 00000000 00:00 0 +7f0e0ba00000-7f0e22e7c000 r-xp 00000000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 +7f0e22e7c000-7f0e2307c000 ---p 1747c000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 +7f0e2307c000-7f0e23334000 r--p 1747c000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 +7f0e23334000-7f0e239c8000 rw-p 17734000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 +7f0e239c8000-7f0e293e0000 rw-p 00000000 00:00 0 +7f0e293e0000-7f0e295df000 ---p 1d9e0000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 +7f0e295df000-7f0e2a0d5000 r--p 17ddf000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 +7f0e2a0d5000-7f0e2a2d4000 ---p 1e6d5000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 +7f0e2a2d4000-7f0e2feb7000 rw-p 188d4000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 +7f0e2fed1000-7f0e2ff52000 rw-p 00000000 00:00 0 +7f0e2ff52000-7f0e2ffb5000 r--p 00000000 00:23 9288674231615732 /usr/lib/wsl/lib/libdxcore.so +7f0e2ffb5000-7f0e30032000 r-xp 00062000 00:23 9288674231615732 /usr/lib/wsl/lib/libdxcore.so +7f0e30032000-7f0e3003a000 r--p 000de000 00:23 9288674231615732 /usr/lib/wsl/lib/libdxcore.so +7f0e3003a000-7f0e3003b000 rw-p 000e5000 00:23 9288674231615732 /usr/lib/wsl/lib/libdxcore.so +7f0e3003b000-7f0e3008f000 rw-p 00000000 00:00 0 +7f0e3008f000-7f0e302b9000 r--p 00000000 08:20 139302 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc.so.52.0.0 +7f0e302b9000-7f0e30b03000 r-xp 0022a000 08:20 139302 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc.so.52.0.0 +7f0e30b03000-7f0e30db4000 r--p 00a74000 08:20 139302 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc.so.52.0.0 +7f0e30db4000-7f0e30dee000 r--p 00d25000 08:20 139302 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc.so.52.0.0 +7f0e30dee000-7f0e30dfb000 rw-p 00d5f000 08:20 139302 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc.so.52.0.0 +7f0e30dfb000-7f0e30e00000 rw-p 00000000 00:00 0 +7f0e30e00000-7f0e34e5e000 r-xp 00000000 08:20 101383 /home/cbrissette/cuopt/.cuopt_env/lib/libcudss.so.0.7.1 +7f0e34e5e000-7f0e3505e000 ---p 0405e000 08:20 101383 /home/cbrissette/cuopt/.cuopt_env/lib/libcudss.so.0.7.1 +7f0e3505e000-7f0e35068000 r--p 0405e000 08:20 101383 /home/cbrissette/cuopt/.cuopt_env/lib/libcudss.so.0.7.1 +7f0e35068000-7f0e3506e000 rw-p 04068000 08:20 101383 /home/cbrissette/cuopt/.cuopt_env/lib/libcudss.so.0.7.1 +7f0e3506e000-7f0e3507e000 rw-p 00000000 00:00 0 +7f0e3507e000-7f0e35080000 rw-p 042ac000 08:20 101383 /home/cbrissette/cuopt/.cuopt_env/lib/libcudss.so.0.7.1 +7f0e3509b000-7f0e3509f000 ---p 00000000 00:00 0 +7f0e3509f000-7f0e350bd000 rw-p 00000000 00:00 0 +7f0e350bd000-7f0e350c3000 r--p 00000000 08:20 194064 /home/cbrissette/cuopt/.cuopt_env/lib/libtbbmalloc.so.2.18 +7f0e350c3000-7f0e350da000 r-xp 00006000 08:20 194064 /home/cbrissette/cuopt/.cuopt_env/lib/libtbbmalloc.so.2.18 +7f0e350da000-7f0e350df000 r--p 0001d000 08:20 194064 /home/cbrissette/cuopt/.cuopt_env/lib/libtbbmalloc.so.2.18 +7f0e350df000-7f0e350e0000 r--p 00021000 08:20 194064 /home/cbrissette/cuopt/.cuopt_env/lib/libtbbmalloc.so.2.18 +7f0e350e0000-7f0e350e2000 rw-p 00022000 08:20 194064 /home/cbrissette/cuopt/.cuopt_env/lib/libtbbmalloc.so.2.18 +7f0e350e2000-7f0e35103000 rw-p 00000000 00:00 0 +7f0e35103000-7f0e35127000 r--p 00000000 08:20 167892 /home/cbrissette/cuopt/.cuopt_env/lib/libssl.so.3 +7f0e35127000-7f0e351c2000 r-xp 00024000 08:20 167892 /home/cbrissette/cuopt/.cuopt_env/lib/libssl.so.3 +7f0e351c2000-7f0e351f2000 r--p 000bf000 08:20 167892 /home/cbrissette/cuopt/.cuopt_env/lib/libssl.so.3 +7f0e351f2000-7f0e351fc000 r--p 000ef000 08:20 167892 /home/cbrissette/cuopt/.cuopt_env/lib/libssl.so.3 +7f0e351fc000-7f0e35200000 rw-p 000f9000 08:20 167892 /home/cbrissette/cuopt/.cuopt_env/lib/libssl.so.3 +7f0e35200000-7f0e3f16c000 r-xp 00000000 08:20 100411 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcusparse.so.12.7.10.1 +7f0e3f16c000-7f0e3f36c000 ---p 09f6c000 08:20 100411 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcusparse.so.12.7.10.1 +7f0e3f36c000-7f0e3f37b000 r--p 09f6c000 08:20 100411 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcusparse.so.12.7.10.1 +7f0e3f37b000-7f0e3f399000 rw-p 09f7b000 08:20 100411 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcusparse.so.12.7.10.1 +7f0e3f399000-7f0e3f3be000 rw-p 00000000 00:00 0 +7f0e3f3be000-7f0e3f3bf000 rw-s a01e41000 00:01 16589 /dev/zero (deleted) +7f0e3f3bf000-7f0e3f3c0000 rw-s a01e40000 00:01 16588 /dev/zero (deleted) +7f0e3f3c0000-7f0e3f3c1000 rw-s a01e3f000 00:01 16587 /dev/zero (deleted) +7f0e3f3c1000-7f0e3f3c2000 rw-s a01e3e000 00:01 16586 /dev/zero (deleted) +7f0e3f3c2000-7f0e3f3c3000 rw-s a01e3d000 00:01 16585 /dev/zero (deleted) +7f0e3f3c3000-7f0e3f3c4000 rw-s a01e3c000 00:01 16584 /dev/zero (deleted) +7f0e3f3c4000-7f0e3f3c5000 rw-s a01e3b000 00:01 16583 /dev/zero (deleted) +7f0e3f3c5000-7f0e3f3c6000 rw-s a01e3a000 00:01 16582 /dev/zero (deleted) +7f0e3f3c6000-7f0e3f3c7000 rw-s a01e39000 00:01 16581 /dev/zero (deleted) +7f0e3f3c7000-7f0e3f3c8000 rw-s a01e38000 00:01 16580 /dev/zero (deleted) +7f0e3f3c8000-7f0e3f3c9000 rw-s a01e37000 00:01 16579 /dev/zero (deleted) +7f0e3f3c9000-7f0e3f3ca000 rw-s a01e36000 00:01 16578 /dev/zero (deleted) +7f0e3f3ca000-7f0e3f3cb000 rw-s a01e35000 00:01 16577 /dev/zero (deleted) +7f0e3f3cb000-7f0e3f3cc000 rw-s a01e34000 00:01 16576 /dev/zero (deleted) +7f0e3f3cc000-7f0e3f3cd000 rw-s a01e33000 00:01 16575 /dev/zero (deleted) +7f0e3f3cd000-7f0e3f3ce000 rw-s a01e32000 00:01 16574 /dev/zero (deleted) +7f0e3f3ce000-7f0e3f3cf000 rw-s a01e31000 00:01 16573 /dev/zero (deleted) +7f0e3f3cf000-7f0e3f3d0000 rw-s a01e30000 00:01 16572 /dev/zero (deleted) +7f0e3f3d0000-7f0e3f3d1000 rw-s a01e2f000 00:01 16571 /dev/zero (deleted) +7f0e3f3d1000-7f0e3f3d2000 rw-s a01e2e000 00:01 16570 /dev/zero (deleted) +7f0e3f3d2000-7f0e3f3d3000 rw-s a01e2d000 00:01 16569 /dev/zero (deleted) +7f0e3f3d3000-7f0e3f3d4000 rw-s a01e2c000 00:01 16568 /dev/zero (deleted) +7f0e3f3d4000-7f0e3f3d5000 rw-s a01e2b000 00:01 16567 /dev/zero (deleted) +7f0e3f3d5000-7f0e3f3d6000 r--p 00000000 08:20 177053 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_utf8_for_code_point.so.2601.0.0 +7f0e3f3d6000-7f0e3f3d7000 r-xp 00001000 08:20 177053 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_utf8_for_code_point.so.2601.0.0 +7f0e3f3d7000-7f0e3f3d8000 r--p 00002000 08:20 177053 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_utf8_for_code_point.so.2601.0.0 +7f0e3f3d8000-7f0e3f3d9000 r--p 00002000 08:20 177053 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_utf8_for_code_point.so.2601.0.0 +7f0e3f3d9000-7f0e3f3da000 rw-p 00003000 08:20 177053 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_utf8_for_code_point.so.2601.0.0 +7f0e3f3da000-7f0e3f3db000 r--p 00000000 08:20 176909 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_decode_rust_punycode.so.2601.0.0 +7f0e3f3db000-7f0e3f3dc000 r-xp 00001000 08:20 176909 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_decode_rust_punycode.so.2601.0.0 +7f0e3f3dc000-7f0e3f3dd000 r--p 00002000 08:20 176909 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_decode_rust_punycode.so.2601.0.0 +7f0e3f3dd000-7f0e3f3de000 r--p 00002000 08:20 176909 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_decode_rust_punycode.so.2601.0.0 +7f0e3f3de000-7f0e3f3df000 rw-p 00003000 08:20 176909 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_decode_rust_punycode.so.2601.0.0 +7f0e3f3df000-7f0e3f3e0000 r--p 00000000 08:20 176160 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_rust.so.2601.0.0 +7f0e3f3e0000-7f0e3f3e4000 r-xp 00001000 08:20 176160 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_rust.so.2601.0.0 +7f0e3f3e4000-7f0e3f3e5000 r--p 00005000 08:20 176160 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_rust.so.2601.0.0 +7f0e3f3e5000-7f0e3f3e6000 r--p 00005000 08:20 176160 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_rust.so.2601.0.0 +7f0e3f3e6000-7f0e3f3e7000 rw-p 00006000 08:20 176160 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_rust.so.2601.0.0 +7f0e3f3e7000-7f0e3f3e9000 r--p 00000000 08:20 175645 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_internal.so.2601.0.0 +7f0e3f3e9000-7f0e3f3eb000 r-xp 00002000 08:20 175645 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_internal.so.2601.0.0 +7f0e3f3eb000-7f0e3f3ec000 r--p 00004000 08:20 175645 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_internal.so.2601.0.0 +7f0e3f3ec000-7f0e3f3ed000 r--p 00004000 08:20 175645 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_internal.so.2601.0.0 +7f0e3f3ed000-7f0e3f3ee000 rw-p 00005000 08:20 175645 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_internal.so.2601.0.0 +7f0e3f3ee000-7f0e3f3f0000 r--p 00000000 08:20 176073 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_internal.so.2601.0.0 +7f0e3f3f0000-7f0e3f3fc000 r-xp 00002000 08:20 176073 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_internal.so.2601.0.0 +7f0e3f3fc000-7f0e3f3fe000 r--p 0000e000 08:20 176073 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_internal.so.2601.0.0 +7f0e3f3fe000-7f0e3f3ff000 r--p 00010000 08:20 176073 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_internal.so.2601.0.0 +7f0e3f3ff000-7f0e3f400000 rw-p 00011000 08:20 176073 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_internal.so.2601.0.0 +7f0e3f400000-7f0e4279d000 r-xp 00000000 08:20 101544 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublas.so.13.4.0.1 +7f0e4279d000-7f0e4299d000 ---p 0339d000 08:20 101544 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublas.so.13.4.0.1 +7f0e4299d000-7f0e429a9000 r--p 0339d000 08:20 101544 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublas.so.13.4.0.1 +7f0e429a9000-7f0e429b0000 rw-p 033a9000 08:20 101544 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublas.so.13.4.0.1 +7f0e429b0000-7f0e429d4000 rw-p 00000000 00:00 0 +7f0e429d4000-7f0e429d5000 r--p 00000000 08:20 174727 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_program_name.so.2601.0.0 +7f0e429d5000-7f0e429d6000 r-xp 00001000 08:20 174727 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_program_name.so.2601.0.0 +7f0e429d6000-7f0e429d7000 r--p 00002000 08:20 174727 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_program_name.so.2601.0.0 +7f0e429d7000-7f0e429d8000 r--p 00002000 08:20 174727 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_program_name.so.2601.0.0 +7f0e429d8000-7f0e429d9000 rw-p 00003000 08:20 174727 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_program_name.so.2601.0.0 +7f0e429d9000-7f0e429db000 r--p 00000000 08:20 174492 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_debugging_internal.so.2601.0.0 +7f0e429db000-7f0e429dc000 r-xp 00002000 08:20 174492 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_debugging_internal.so.2601.0.0 +7f0e429dc000-7f0e429dd000 r--p 00003000 08:20 174492 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_debugging_internal.so.2601.0.0 +7f0e429dd000-7f0e429de000 r--p 00003000 08:20 174492 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_debugging_internal.so.2601.0.0 +7f0e429de000-7f0e429df000 rw-p 00004000 08:20 174492 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_debugging_internal.so.2601.0.0 +7f0e429df000-7f0e429e0000 r--p 00000000 08:20 172719 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_borrowed_fixup_buffer.so.2601.0.0 +7f0e429e0000-7f0e429e1000 r-xp 00001000 08:20 172719 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_borrowed_fixup_buffer.so.2601.0.0 +7f0e429e1000-7f0e429e2000 r--p 00002000 08:20 172719 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_borrowed_fixup_buffer.so.2601.0.0 +7f0e429e2000-7f0e429e3000 r--p 00002000 08:20 172719 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_borrowed_fixup_buffer.so.2601.0.0 +7f0e429e3000-7f0e429e4000 rw-p 00003000 08:20 172719 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_borrowed_fixup_buffer.so.2601.0.0 +7f0e429e4000-7f0e429fc000 rw-p 00000000 00:00 0 +7f0e429fc000-7f0e429fe000 r--p 00000000 08:20 177931 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc32c.so.2601.0.0 +7f0e429fe000-7f0e429ff000 r-xp 00002000 08:20 177931 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc32c.so.2601.0.0 +7f0e429ff000-7f0e42a00000 r--p 00003000 08:20 177931 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc32c.so.2601.0.0 +7f0e42a00000-7f0e42a01000 r--p 00003000 08:20 177931 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc32c.so.2601.0.0 +7f0e42a01000-7f0e42a02000 rw-p 00004000 08:20 177931 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc32c.so.2601.0.0 +7f0e42a02000-7f0e42a03000 r--p 00000000 08:20 177959 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_sink.so.2601.0.0 +7f0e42a03000-7f0e42a04000 r-xp 00001000 08:20 177959 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_sink.so.2601.0.0 +7f0e42a04000-7f0e42a05000 r--p 00002000 08:20 177959 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_sink.so.2601.0.0 +7f0e42a05000-7f0e42a06000 r--p 00002000 08:20 177959 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_sink.so.2601.0.0 +7f0e42a06000-7f0e42a07000 rw-p 00003000 08:20 177959 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_sink.so.2601.0.0 +7f0e42a07000-7f0e42a09000 r--p 00000000 08:20 175392 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_symbolize.so.2601.0.0 +7f0e42a09000-7f0e42a0c000 r-xp 00002000 08:20 175392 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_symbolize.so.2601.0.0 +7f0e42a0c000-7f0e42a0d000 r--p 00005000 08:20 175392 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_symbolize.so.2601.0.0 +7f0e42a0d000-7f0e42a0e000 r--p 00006000 08:20 175392 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_symbolize.so.2601.0.0 +7f0e42a0e000-7f0e42a0f000 rw-p 00007000 08:20 175392 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_symbolize.so.2601.0.0 +7f0e42a0f000-7f0e42a10000 r--p 00000000 08:20 176368 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_private_handle_accessor.so.2601.0.0 +7f0e42a10000-7f0e42a11000 r-xp 00001000 08:20 176368 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_private_handle_accessor.so.2601.0.0 +7f0e42a11000-7f0e42a12000 r--p 00002000 08:20 176368 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_private_handle_accessor.so.2601.0.0 +7f0e42a12000-7f0e42a13000 r--p 00002000 08:20 176368 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_private_handle_accessor.so.2601.0.0 +7f0e42a13000-7f0e42a14000 rw-p 00003000 08:20 176368 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_private_handle_accessor.so.2601.0.0 +7f0e42a14000-7f0e42a16000 r--p 00000000 08:20 176315 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_config.so.2601.0.0 +7f0e42a16000-7f0e42a18000 r-xp 00002000 08:20 176315 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_config.so.2601.0.0 +7f0e42a18000-7f0e42a19000 r--p 00004000 08:20 176315 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_config.so.2601.0.0 +7f0e42a19000-7f0e42a1a000 r--p 00004000 08:20 176315 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_config.so.2601.0.0 +7f0e42a1a000-7f0e42a1b000 rw-p 00005000 08:20 176315 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_config.so.2601.0.0 +7f0e42a1b000-7f0e42a1c000 r--p 00000000 08:20 174103 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag_internal.so.2601.0.0 +7f0e42a1c000-7f0e42a1d000 r-xp 00001000 08:20 174103 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag_internal.so.2601.0.0 +7f0e42a1d000-7f0e42a1e000 r--p 00002000 08:20 174103 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag_internal.so.2601.0.0 +7f0e42a1e000-7f0e42a1f000 r--p 00002000 08:20 174103 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag_internal.so.2601.0.0 +7f0e42a1f000-7f0e42a20000 rw-p 00003000 08:20 174103 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag_internal.so.2601.0.0 +7f0e42a20000-7f0e42a21000 r--p 00000000 08:20 175648 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag.so.2601.0.0 +7f0e42a21000-7f0e42a22000 r-xp 00001000 08:20 175648 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag.so.2601.0.0 +7f0e42a22000-7f0e42a23000 r--p 00002000 08:20 175648 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag.so.2601.0.0 +7f0e42a23000-7f0e42a24000 r--p 00002000 08:20 175648 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag.so.2601.0.0 +7f0e42a24000-7f0e42a25000 rw-p 00003000 08:20 175648 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag.so.2601.0.0 +7f0e42a25000-7f0e42a26000 r--p 00000000 08:20 172450 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_platform.so.2601.0.0 +7f0e42a26000-7f0e42a27000 r-xp 00001000 08:20 172450 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_platform.so.2601.0.0 +7f0e42a27000-7f0e42a29000 r--p 00002000 08:20 172450 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_platform.so.2601.0.0 +7f0e42a29000-7f0e42a2a000 r--p 00003000 08:20 172450 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_platform.so.2601.0.0 +7f0e42a2a000-7f0e42a2b000 rw-p 00004000 08:20 172450 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_platform.so.2601.0.0 +7f0e42a2b000-7f0e42a2c000 r--p 00000000 08:20 178131 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes.so.2601.0.0 +7f0e42a2c000-7f0e42a2d000 r-xp 00001000 08:20 178131 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes.so.2601.0.0 +7f0e42a2d000-7f0e42a2e000 r--p 00002000 08:20 178131 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes.so.2601.0.0 +7f0e42a2e000-7f0e42a2f000 r--p 00002000 08:20 178131 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes.so.2601.0.0 +7f0e42a2f000-7f0e42a30000 rw-p 00003000 08:20 178131 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes.so.2601.0.0 +7f0e42a30000-7f0e42a31000 r--p 00000000 08:20 176601 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_seed_gen_exception.so.2601.0.0 +7f0e42a31000-7f0e42a32000 r-xp 00001000 08:20 176601 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_seed_gen_exception.so.2601.0.0 +7f0e42a32000-7f0e42a33000 r--p 00002000 08:20 176601 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_seed_gen_exception.so.2601.0.0 +7f0e42a33000-7f0e42a34000 r--p 00002000 08:20 176601 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_seed_gen_exception.so.2601.0.0 +7f0e42a34000-7f0e42a35000 rw-p 00003000 08:20 176601 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_seed_gen_exception.so.2601.0.0 +7f0e42a35000-7f0e42a36000 r--p 00000000 08:20 178171 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_seed_material.so.2601.0.0 +7f0e42a36000-7f0e42a37000 r-xp 00001000 08:20 178171 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_seed_material.so.2601.0.0 +7f0e42a37000-7f0e42a38000 r--p 00002000 08:20 178171 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_seed_material.so.2601.0.0 +7f0e42a38000-7f0e42a39000 r--p 00002000 08:20 178171 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_seed_material.so.2601.0.0 +7f0e42a39000-7f0e42a3a000 rw-p 00003000 08:20 178171 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_seed_material.so.2601.0.0 +7f0e42a3a000-7f0e42a3b000 r--p 00000000 08:20 175910 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_city.so.2601.0.0 +7f0e42a3b000-7f0e42a3c000 r-xp 00001000 08:20 175910 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_city.so.2601.0.0 +7f0e42a3c000-7f0e42a3d000 r--p 00002000 08:20 175910 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_city.so.2601.0.0 +7f0e42a3d000-7f0e42a3e000 r--p 00002000 08:20 175910 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_city.so.2601.0.0 +7f0e42a3e000-7f0e42a3f000 rw-p 00003000 08:20 175910 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_city.so.2601.0.0 +7f0e42a3f000-7f0e42a41000 r--p 00000000 08:20 174503 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hashtablez_sampler.so.2601.0.0 +7f0e42a41000-7f0e42a42000 r-xp 00002000 08:20 174503 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hashtablez_sampler.so.2601.0.0 +7f0e42a42000-7f0e42a43000 r--p 00003000 08:20 174503 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hashtablez_sampler.so.2601.0.0 +7f0e42a43000-7f0e42a44000 r--p 00003000 08:20 174503 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hashtablez_sampler.so.2601.0.0 +7f0e42a44000-7f0e42a45000 rw-p 00004000 08:20 174503 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hashtablez_sampler.so.2601.0.0 +7f0e42a45000-7f0e42a47000 r--p 00000000 08:20 176334 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_int128.so.2601.0.0 +7f0e42a47000-7f0e42a49000 r-xp 00002000 08:20 176334 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_int128.so.2601.0.0 +7f0e42a49000-7f0e42a4a000 r--p 00004000 08:20 176334 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_int128.so.2601.0.0 +7f0e42a4a000-7f0e42a4b000 r--p 00004000 08:20 176334 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_int128.so.2601.0.0 +7f0e42a4b000-7f0e42a4c000 rw-p 00005000 08:20 176334 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_int128.so.2601.0.0 +7f0e42a4c000-7f0e42a4d000 r--p 00000000 08:20 173674 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_fnmatch.so.2601.0.0 +7f0e42a4d000-7f0e42a4e000 r-xp 00001000 08:20 173674 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_fnmatch.so.2601.0.0 +7f0e42a4e000-7f0e42a4f000 r--p 00002000 08:20 173674 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_fnmatch.so.2601.0.0 +7f0e42a4f000-7f0e42a50000 r--p 00002000 08:20 173674 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_fnmatch.so.2601.0.0 +7f0e42a50000-7f0e42a51000 rw-p 00003000 08:20 173674 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_fnmatch.so.2601.0.0 +7f0e42a51000-7f0e42a53000 r--p 00000000 08:20 176024 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_malloc_internal.so.2601.0.0 +7f0e42a53000-7f0e42a55000 r-xp 00002000 08:20 176024 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_malloc_internal.so.2601.0.0 +7f0e42a55000-7f0e42a56000 r--p 00004000 08:20 176024 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_malloc_internal.so.2601.0.0 +7f0e42a56000-7f0e42a57000 r--p 00004000 08:20 176024 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_malloc_internal.so.2601.0.0 +7f0e42a57000-7f0e42a58000 rw-p 00005000 08:20 176024 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_malloc_internal.so.2601.0.0 +7f0e42a58000-7f0e42a59000 r--p 00000000 08:20 178559 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_tracing_internal.so.2601.0.0 +7f0e42a59000-7f0e42a5a000 r-xp 00001000 08:20 178559 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_tracing_internal.so.2601.0.0 +7f0e42a5a000-7f0e42a5b000 r--p 00002000 08:20 178559 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_tracing_internal.so.2601.0.0 +7f0e42a5b000-7f0e42a5c000 r--p 00002000 08:20 178559 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_tracing_internal.so.2601.0.0 +7f0e42a5c000-7f0e42a5d000 rw-p 00003000 08:20 178559 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_tracing_internal.so.2601.0.0 +7f0e42a5d000-7f0e42a5e000 r--p 00000000 08:20 173445 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_exponential_biased.so.2601.0.0 +7f0e42a5e000-7f0e42a5f000 r-xp 00001000 08:20 173445 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_exponential_biased.so.2601.0.0 +7f0e42a5f000-7f0e42a60000 r--p 00002000 08:20 173445 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_exponential_biased.so.2601.0.0 +7f0e42a60000-7f0e42a61000 r--p 00002000 08:20 173445 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_exponential_biased.so.2601.0.0 +7f0e42a61000-7f0e42a62000 rw-p 00003000 08:20 173445 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_exponential_biased.so.2601.0.0 +7f0e42a62000-7f0e42a63000 r--p 00000000 08:20 173659 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_stacktrace.so.2601.0.0 +7f0e42a63000-7f0e42a65000 r-xp 00001000 08:20 173659 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_stacktrace.so.2601.0.0 +7f0e42a65000-7f0e42a66000 r--p 00003000 08:20 173659 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_stacktrace.so.2601.0.0 +7f0e42a66000-7f0e42a67000 r--p 00003000 08:20 173659 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_stacktrace.so.2601.0.0 +7f0e42a67000-7f0e42a68000 rw-p 00004000 08:20 173659 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_stacktrace.so.2601.0.0 +7f0e42a68000-7f0e42a6a000 r--p 00000000 08:20 177928 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_handle.so.2601.0.0 +7f0e42a6a000-7f0e42a6b000 r-xp 00002000 08:20 177928 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_handle.so.2601.0.0 +7f0e42a6b000-7f0e42a6c000 r--p 00003000 08:20 177928 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_handle.so.2601.0.0 +7f0e42a6c000-7f0e42a6d000 r--p 00003000 08:20 177928 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_handle.so.2601.0.0 +7f0e42a6d000-7f0e42a6e000 rw-p 00004000 08:20 177928 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_handle.so.2601.0.0 +7f0e42a6e000-7f0e42a70000 r--p 00000000 08:20 175778 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_cord_state.so.2601.0.0 +7f0e42a70000-7f0e42a74000 r-xp 00002000 08:20 175778 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_cord_state.so.2601.0.0 +7f0e42a74000-7f0e42a75000 r--p 00006000 08:20 175778 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_cord_state.so.2601.0.0 +7f0e42a75000-7f0e42a76000 r--p 00006000 08:20 175778 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_cord_state.so.2601.0.0 +7f0e42a76000-7f0e42a77000 rw-p 00007000 08:20 175778 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_cord_state.so.2601.0.0 +7f0e42a77000-7f0e42a78000 r--p 00000000 08:20 177417 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_logging_internal.so.2601.0.0 +7f0e42a78000-7f0e42a79000 r-xp 00001000 08:20 177417 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_logging_internal.so.2601.0.0 +7f0e42a79000-7f0e42a7a000 r--p 00002000 08:20 177417 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_logging_internal.so.2601.0.0 +7f0e42a7a000-7f0e42a7b000 r--p 00002000 08:20 177417 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_logging_internal.so.2601.0.0 +7f0e42a7b000-7f0e42a7c000 rw-p 00003000 08:20 177417 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_logging_internal.so.2601.0.0 +7f0e42a7c000-7f0e42a7e000 r--p 00000000 08:20 173916 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_base.so.2601.0.0 +7f0e42a7e000-7f0e42a7f000 r-xp 00002000 08:20 173916 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_base.so.2601.0.0 +7f0e42a7f000-7f0e42a80000 r--p 00003000 08:20 173916 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_base.so.2601.0.0 +7f0e42a80000-7f0e42a81000 r--p 00003000 08:20 173916 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_base.so.2601.0.0 +7f0e42a81000-7f0e42a82000 rw-p 00004000 08:20 173916 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_base.so.2601.0.0 +7f0e42a82000-7f0e42a84000 r--p 00000000 08:20 177853 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings_internal.so.2601.0.0 +7f0e42a84000-7f0e42a85000 r-xp 00002000 08:20 177853 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings_internal.so.2601.0.0 +7f0e42a85000-7f0e42a86000 r--p 00003000 08:20 177853 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings_internal.so.2601.0.0 +7f0e42a86000-7f0e42a87000 r--p 00003000 08:20 177853 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings_internal.so.2601.0.0 +7f0e42a87000-7f0e42a88000 rw-p 00004000 08:20 177853 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings_internal.so.2601.0.0 +7f0e42a88000-7f0e42a89000 r--p 00000000 08:20 174472 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_proto.so.2601.0.0 +7f0e42a89000-7f0e42a8a000 r-xp 00001000 08:20 174472 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_proto.so.2601.0.0 +7f0e42a8a000-7f0e42a8b000 r--p 00002000 08:20 174472 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_proto.so.2601.0.0 +7f0e42a8b000-7f0e42a8c000 r--p 00002000 08:20 174472 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_proto.so.2601.0.0 +7f0e42a8c000-7f0e42a8d000 rw-p 00003000 08:20 174472 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_proto.so.2601.0.0 +7f0e42a8d000-7f0e42a8e000 r--p 00000000 08:20 177006 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_globals.so.2601.0.0 +7f0e42a8e000-7f0e42a8f000 r-xp 00001000 08:20 177006 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_globals.so.2601.0.0 +7f0e42a8f000-7f0e42a90000 r--p 00002000 08:20 177006 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_globals.so.2601.0.0 +7f0e42a90000-7f0e42a91000 r--p 00002000 08:20 177006 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_globals.so.2601.0.0 +7f0e42a91000-7f0e42a92000 rw-p 00003000 08:20 177006 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_globals.so.2601.0.0 +7f0e42a92000-7f0e42a94000 r--p 00000000 08:20 172473 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_log_sink_set.so.2601.0.0 +7f0e42a94000-7f0e42a95000 r-xp 00002000 08:20 172473 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_log_sink_set.so.2601.0.0 +7f0e42a95000-7f0e42a96000 r--p 00003000 08:20 172473 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_log_sink_set.so.2601.0.0 +7f0e42a96000-7f0e42a97000 r--p 00003000 08:20 172473 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_log_sink_set.so.2601.0.0 +7f0e42a97000-7f0e42a98000 rw-p 00004000 08:20 172473 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_log_sink_set.so.2601.0.0 +7f0e42a98000-7f0e42a99000 r--p 00000000 08:20 173223 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strerror.so.2601.0.0 +7f0e42a99000-7f0e42a9a000 r-xp 00001000 08:20 173223 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strerror.so.2601.0.0 +7f0e42a9a000-7f0e42a9b000 r--p 00002000 08:20 173223 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strerror.so.2601.0.0 +7f0e42a9b000-7f0e42a9c000 r--p 00002000 08:20 173223 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strerror.so.2601.0.0 +7f0e42a9c000-7f0e42a9d000 rw-p 00003000 08:20 173223 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strerror.so.2601.0.0 +7f0e42a9d000-7f0e42a9e000 r--p 00000000 08:20 175668 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_structured_proto.so.2601.0.0 +7f0e42a9e000-7f0e42a9f000 r-xp 00001000 08:20 175668 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_structured_proto.so.2601.0.0 +7f0e42a9f000-7f0e42aa0000 r--p 00002000 08:20 175668 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_structured_proto.so.2601.0.0 +7f0e42aa0000-7f0e42aa1000 r--p 00002000 08:20 175668 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_structured_proto.so.2601.0.0 +7f0e42aa1000-7f0e42aa2000 rw-p 00003000 08:20 175668 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_structured_proto.so.2601.0.0 +7f0e42aa2000-7f0e42aa4000 r--p 00000000 08:20 173934 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_format.so.2601.0.0 +7f0e42aa4000-7f0e42aa5000 r-xp 00002000 08:20 173934 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_format.so.2601.0.0 +7f0e42aa5000-7f0e42aa6000 r--p 00003000 08:20 173934 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_format.so.2601.0.0 +7f0e42aa6000-7f0e42aa7000 r--p 00003000 08:20 173934 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_format.so.2601.0.0 +7f0e42aa7000-7f0e42aa8000 rw-p 00004000 08:20 173934 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_format.so.2601.0.0 +7f0e42aa8000-7f0e42aab000 r--p 00000000 08:20 172840 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_reflection.so.2601.0.0 +7f0e42aab000-7f0e42ab1000 r-xp 00003000 08:20 172840 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_reflection.so.2601.0.0 +7f0e42ab1000-7f0e42ab3000 r--p 00009000 08:20 172840 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_reflection.so.2601.0.0 +7f0e42ab3000-7f0e42ab4000 r--p 0000a000 08:20 172840 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_reflection.so.2601.0.0 +7f0e42ab4000-7f0e42ab5000 rw-p 0000b000 08:20 172840 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_reflection.so.2601.0.0 +7f0e42ab5000-7f0e42ab9000 r--p 00000000 08:20 173480 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_marshalling.so.2601.0.0 +7f0e42ab9000-7f0e42abe000 r-xp 00004000 08:20 173480 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_marshalling.so.2601.0.0 +7f0e42abe000-7f0e42abf000 r--p 00009000 08:20 173480 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_marshalling.so.2601.0.0 +7f0e42abf000-7f0e42ac0000 r--p 0000a000 08:20 173480 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_marshalling.so.2601.0.0 +7f0e42ac0000-7f0e42ac1000 rw-p 0000b000 08:20 173480 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_marshalling.so.2601.0.0 +7f0e42ac1000-7f0e42d51000 r--p 00000000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so +7f0e42d51000-7f0e43960000 r-xp 00290000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so +7f0e43960000-7f0e43c88000 r--p 00e9f000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so +7f0e43c88000-7f0e43ca9000 r--p 011c7000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so +7f0e43ca9000-7f0e43cb0000 rw-p 011e8000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so +7f0e43cb0000-7f0e44e30000 rw-p 00000000 00:00 0 +7f0e44e30000-7f0e44e31000 ---p 0236f000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so +7f0e44e31000-7f0e48000000 rw-p 011ef000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so +7f0e48000000-7f0e48043000 rw-p 00000000 00:00 0 +7f0e48043000-7f0e4c000000 ---p 00000000 00:00 0 +7f0e4c000000-7f0e4c021000 rw-p 00000000 00:00 0 +7f0e4c021000-7f0e50000000 ---p 00000000 00:00 0 +7f0e50000000-7f0e50021000 rw-p 00000000 00:00 0 +7f0e50021000-7f0e54000000 ---p 00000000 00:00 0 +7f0e54000000-7f0e54021000 rw-p 00000000 00:00 0 +7f0e54021000-7f0e58000000 ---p 00000000 00:00 0 +7f0e58000000-7f0e58021000 rw-p 00000000 00:00 0 +7f0e58021000-7f0e5c000000 ---p 00000000 00:00 0 +7f0e5c000000-7f0e5c021000 rw-p 00000000 00:00 0 +7f0e5c021000-7f0e60000000 ---p 00000000 00:00 0 +7f0e60000000-7f0e60021000 rw-p 00000000 00:00 0 +7f0e60021000-7f0e64000000 ---p 00000000 00:00 0 +7f0e64000000-7f0e6418b000 rw-p 00000000 00:00 0 +7f0e6418b000-7f0e68000000 ---p 00000000 00:00 0 +7f0e68000000-7f0e684ab000 rw-p 00000000 00:00 0 +7f0e684ab000-7f0e6c000000 ---p 00000000 00:00 0 +7f0e6c000000-7f0e6c1fc000 rw-p 00000000 00:00 0 +7f0e6c1fc000-7f0e70000000 ---p 00000000 00:00 0 +7f0e70000000-7f0e70021000 rw-p 00000000 00:00 0 +7f0e70021000-7f0e74000000 ---p 00000000 00:00 0 +7f0e74000000-7f0e74021000 rw-p 00000000 00:00 0 +7f0e74021000-7f0e78000000 ---p 00000000 00:00 0 +7f0e78000000-7f0e78021000 rw-p 00000000 00:00 0 +7f0e78021000-7f0e7c000000 ---p 00000000 00:00 0 +7f0e7c000000-7f0e7c021000 rw-p 00000000 00:00 0 +7f0e7c021000-7f0e80000000 ---p 00000000 00:00 0 +7f0e80000000-7f0e80021000 rw-p 00000000 00:00 0 +7f0e80021000-7f0e84000000 ---p 00000000 00:00 0 +7f0e84000000-7f0e84021000 rw-p 00000000 00:00 0 +7f0e84021000-7f0e88000000 ---p 00000000 00:00 0 +7f0e88000000-7f0e88021000 rw-p 00000000 00:00 0 +7f0e88021000-7f0e8c000000 ---p 00000000 00:00 0 +7f0e8c000000-7f0e8c021000 rw-p 00000000 00:00 0 +7f0e8c021000-7f0e90000000 ---p 00000000 00:00 0 +7f0e90000000-7f0e90001000 r--p 00000000 08:20 172814 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_examine_stack.so.2601.0.0 +7f0e90001000-7f0e90002000 r-xp 00001000 08:20 172814 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_examine_stack.so.2601.0.0 +7f0e90002000-7f0e90003000 r--p 00002000 08:20 172814 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_examine_stack.so.2601.0.0 +7f0e90003000-7f0e90004000 r--p 00002000 08:20 172814 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_examine_stack.so.2601.0.0 +7f0e90004000-7f0e90005000 rw-p 00003000 08:20 172814 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_examine_stack.so.2601.0.0 +7f0e90005000-7f0e90006000 r--p 00000000 08:20 176086 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_leak_check.so.2601.0.0 +7f0e90006000-7f0e90007000 r-xp 00001000 08:20 176086 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_leak_check.so.2601.0.0 +7f0e90007000-7f0e90008000 r--p 00002000 08:20 176086 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_leak_check.so.2601.0.0 +7f0e90008000-7f0e90009000 r--p 00002000 08:20 176086 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_leak_check.so.2601.0.0 +7f0e90009000-7f0e9000a000 rw-p 00003000 08:20 176086 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_leak_check.so.2601.0.0 +7f0e9000a000-7f0e9000e000 r--p 00000000 08:20 176110 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_internal.so.2601.0.0 +7f0e9000e000-7f0e90011000 r-xp 00004000 08:20 176110 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_internal.so.2601.0.0 +7f0e90011000-7f0e90013000 r--p 00007000 08:20 176110 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_internal.so.2601.0.0 +7f0e90013000-7f0e90014000 r--p 00008000 08:20 176110 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_internal.so.2601.0.0 +7f0e90014000-7f0e90015000 rw-p 00009000 08:20 176110 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_internal.so.2601.0.0 +7f0e90015000-7f0e90016000 r--p 00000000 08:20 176919 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_slow.so.2601.0.0 +7f0e90016000-7f0e90017000 r-xp 00001000 08:20 176919 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_slow.so.2601.0.0 +7f0e90017000-7f0e90019000 r--p 00002000 08:20 176919 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_slow.so.2601.0.0 +7f0e90019000-7f0e9001a000 r--p 00003000 08:20 176919 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_slow.so.2601.0.0 +7f0e9001a000-7f0e9001b000 rw-p 00004000 08:20 176919 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_slow.so.2601.0.0 +7f0e9001b000-7f0e9001c000 r--p 00000000 08:20 172885 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes_impl.so.2601.0.0 +7f0e9001c000-7f0e9001d000 r-xp 00001000 08:20 172885 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes_impl.so.2601.0.0 +7f0e9001d000-7f0e9001e000 r--p 00002000 08:20 172885 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes_impl.so.2601.0.0 +7f0e9001e000-7f0e9001f000 r--p 00002000 08:20 172885 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes_impl.so.2601.0.0 +7f0e9001f000-7f0e90020000 rw-p 00003000 08:20 172885 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes_impl.so.2601.0.0 +7f0e90020000-7f0e90021000 r--p 00000000 08:20 173464 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen.so.2601.0.0 +7f0e90021000-7f0e90022000 r-xp 00001000 08:20 173464 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen.so.2601.0.0 +7f0e90022000-7f0e90023000 r--p 00002000 08:20 173464 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen.so.2601.0.0 +7f0e90023000-7f0e90024000 r--p 00002000 08:20 173464 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen.so.2601.0.0 +7f0e90024000-7f0e90025000 rw-p 00003000 08:20 173464 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen.so.2601.0.0 +7f0e90025000-7f0e90027000 r--p 00000000 08:20 178082 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_kernel_timeout_internal.so.2601.0.0 +7f0e90027000-7f0e90028000 r-xp 00002000 08:20 178082 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_kernel_timeout_internal.so.2601.0.0 +7f0e90028000-7f0e90029000 r--p 00003000 08:20 178082 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_kernel_timeout_internal.so.2601.0.0 +7f0e90029000-7f0e9002a000 r--p 00003000 08:20 178082 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_kernel_timeout_internal.so.2601.0.0 +7f0e9002a000-7f0e9002b000 rw-p 00004000 08:20 178082 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_kernel_timeout_internal.so.2601.0.0 +7f0e9002b000-7f0e9002d000 r--p 00000000 08:20 175359 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_entropy_pool.so.2601.0.0 +7f0e9002d000-7f0e9002e000 r-xp 00002000 08:20 175359 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_entropy_pool.so.2601.0.0 +7f0e9002e000-7f0e9002f000 r--p 00003000 08:20 175359 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_entropy_pool.so.2601.0.0 +7f0e9002f000-7f0e90030000 r--p 00003000 08:20 175359 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_entropy_pool.so.2601.0.0 +7f0e90030000-7f0e90031000 rw-p 00004000 08:20 175359 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_entropy_pool.so.2601.0.0 +7f0e90031000-7f0e90033000 r--p 00000000 08:20 178507 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_globals.so.2601.0.0 +7f0e90033000-7f0e90034000 r-xp 00002000 08:20 178507 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_globals.so.2601.0.0 +7f0e90034000-7f0e90035000 r--p 00003000 08:20 178507 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_globals.so.2601.0.0 +7f0e90035000-7f0e90036000 r--p 00003000 08:20 178507 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_globals.so.2601.0.0 +7f0e90036000-7f0e90037000 rw-p 00004000 08:20 178507 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_globals.so.2601.0.0 +7f0e90037000-7f0e9004f000 r--p 00000000 08:20 192153 /home/cbrissette/cuopt/.cuopt_env/lib/libre2.so.11 +7f0e9004f000-7f0e90095000 r-xp 00018000 08:20 192153 /home/cbrissette/cuopt/.cuopt_env/lib/libre2.so.11 +7f0e90095000-7f0e900ae000 r--p 0005e000 08:20 192153 /home/cbrissette/cuopt/.cuopt_env/lib/libre2.so.11 +7f0e900ae000-7f0e900b3000 r--p 00076000 08:20 192153 /home/cbrissette/cuopt/.cuopt_env/lib/libre2.so.11 +7f0e900b3000-7f0e900b4000 rw-p 0007b000 08:20 192153 /home/cbrissette/cuopt/.cuopt_env/lib/libre2.so.11 +7f0e900b4000-7f0e900c2000 r--p 00000000 08:20 84539 /home/cbrissette/cuopt/.cuopt_env/lib/libcares.so.2.19.5 +7f0e900c2000-7f0e900ed000 r-xp 0000e000 08:20 84539 /home/cbrissette/cuopt/.cuopt_env/lib/libcares.so.2.19.5 +7f0e900ed000-7f0e900f8000 r--p 00039000 08:20 84539 /home/cbrissette/cuopt/.cuopt_env/lib/libcares.so.2.19.5 +7f0e900f8000-7f0e900fa000 r--p 00043000 08:20 84539 /home/cbrissette/cuopt/.cuopt_env/lib/libcares.so.2.19.5 +7f0e900fa000-7f0e900fb000 rw-p 00045000 08:20 84539 /home/cbrissette/cuopt/.cuopt_env/lib/libcares.so.2.19.5 +7f0e900fb000-7f0e900fc000 r--p 00000000 08:20 139113 /home/cbrissette/cuopt/.cuopt_env/lib/libaddress_sorting.so.52.0.0 +7f0e900fc000-7f0e900fd000 r-xp 00001000 08:20 139113 /home/cbrissette/cuopt/.cuopt_env/lib/libaddress_sorting.so.52.0.0 +7f0e900fd000-7f0e900fe000 r--p 00002000 08:20 139113 /home/cbrissette/cuopt/.cuopt_env/lib/libaddress_sorting.so.52.0.0 +7f0e900fe000-7f0e900ff000 r--p 00002000 08:20 139113 /home/cbrissette/cuopt/.cuopt_env/lib/libaddress_sorting.so.52.0.0 +7f0e900ff000-7f0e90100000 rw-p 00003000 08:20 139113 /home/cbrissette/cuopt/.cuopt_env/lib/libaddress_sorting.so.52.0.0 +7f0e90100000-7f0e90103000 r--p 00000000 08:20 175772 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_throw_delegate.so.2601.0.0 +7f0e90103000-7f0e90104000 r-xp 00003000 08:20 175772 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_throw_delegate.so.2601.0.0 +7f0e90104000-7f0e90105000 r--p 00004000 08:20 175772 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_throw_delegate.so.2601.0.0 +7f0e90105000-7f0e90106000 r--p 00004000 08:20 175772 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_throw_delegate.so.2601.0.0 +7f0e90106000-7f0e90107000 rw-p 00005000 08:20 175772 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_throw_delegate.so.2601.0.0 +7f0e90107000-7f0e90108000 r--p 00000000 08:20 174707 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_spinlock_wait.so.2601.0.0 +7f0e90108000-7f0e90109000 r-xp 00001000 08:20 174707 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_spinlock_wait.so.2601.0.0 +7f0e90109000-7f0e9010a000 r--p 00002000 08:20 174707 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_spinlock_wait.so.2601.0.0 +7f0e9010a000-7f0e9010b000 r--p 00002000 08:20 174707 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_spinlock_wait.so.2601.0.0 +7f0e9010b000-7f0e9010c000 rw-p 00003000 08:20 174707 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_spinlock_wait.so.2601.0.0 +7f0e9010c000-7f0e9010d000 r--p 00000000 08:20 172795 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hash.so.2601.0.0 +7f0e9010d000-7f0e9010e000 r-xp 00001000 08:20 172795 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hash.so.2601.0.0 +7f0e9010e000-7f0e9010f000 r--p 00002000 08:20 172795 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hash.so.2601.0.0 +7f0e9010f000-7f0e90110000 r--p 00002000 08:20 172795 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hash.so.2601.0.0 +7f0e90110000-7f0e90111000 rw-p 00003000 08:20 172795 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hash.so.2601.0.0 +7f0e90111000-7f0e90118000 r--p 00000000 08:20 172948 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time_zone.so.2601.0.0 +7f0e90118000-7f0e9012c000 r-xp 00007000 08:20 172948 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time_zone.so.2601.0.0 +7f0e9012c000-7f0e9012f000 r--p 0001b000 08:20 172948 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time_zone.so.2601.0.0 +7f0e9012f000-7f0e90130000 r--p 0001e000 08:20 172948 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time_zone.so.2601.0.0 +7f0e90130000-7f0e90131000 rw-p 0001f000 08:20 172948 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time_zone.so.2601.0.0 +7f0e90131000-7f0e90137000 r--p 00000000 08:20 173780 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time.so.2601.0.0 +7f0e90137000-7f0e90144000 r-xp 00006000 08:20 173780 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time.so.2601.0.0 +7f0e90144000-7f0e90146000 r--p 00013000 08:20 173780 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time.so.2601.0.0 +7f0e90146000-7f0e90147000 r--p 00015000 08:20 173780 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time.so.2601.0.0 +7f0e90147000-7f0e90148000 rw-p 00016000 08:20 173780 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time.so.2601.0.0 +7f0e90148000-7f0e9014b000 r--p 00000000 08:20 174438 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord_internal.so.2601.0.0 +7f0e9014b000-7f0e90159000 r-xp 00003000 08:20 174438 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord_internal.so.2601.0.0 +7f0e90159000-7f0e9015b000 r--p 00011000 08:20 174438 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord_internal.so.2601.0.0 +7f0e9015b000-7f0e9015c000 r--p 00012000 08:20 174438 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord_internal.so.2601.0.0 +7f0e9015c000-7f0e9015d000 rw-p 00013000 08:20 174438 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord_internal.so.2601.0.0 +7f0e9015d000-7f0e9015f000 r--p 00000000 08:20 173725 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_hash_set.so.2601.0.0 +7f0e9015f000-7f0e90163000 r-xp 00002000 08:20 173725 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_hash_set.so.2601.0.0 +7f0e90163000-7f0e90164000 r--p 00006000 08:20 173725 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_hash_set.so.2601.0.0 +7f0e90164000-7f0e90165000 r--p 00007000 08:20 173725 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_hash_set.so.2601.0.0 +7f0e90165000-7f0e90166000 rw-p 00008000 08:20 173725 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_hash_set.so.2601.0.0 +7f0e90166000-7f0e90167000 r--p 00000000 08:20 174927 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_conditions.so.2601.0.0 +7f0e90167000-7f0e90168000 r-xp 00001000 08:20 174927 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_conditions.so.2601.0.0 +7f0e90168000-7f0e90169000 r--p 00002000 08:20 174927 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_conditions.so.2601.0.0 +7f0e90169000-7f0e9016a000 r--p 00002000 08:20 174927 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_conditions.so.2601.0.0 +7f0e9016a000-7f0e9016b000 rw-p 00003000 08:20 174927 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_conditions.so.2601.0.0 +7f0e9016b000-7f0e9016c000 r--p 00000000 08:20 144730 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_validity.so.33.5.0 +7f0e9016c000-7f0e9016d000 r-xp 00001000 08:20 144730 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_validity.so.33.5.0 +7f0e9016d000-7f0e9016e000 r--p 00002000 08:20 144730 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_validity.so.33.5.0 +7f0e9016e000-7f0e9016f000 r--p 00002000 08:20 144730 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_validity.so.33.5.0 +7f0e9016f000-7f0e90170000 rw-p 00003000 08:20 144730 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_validity.so.33.5.0 +7f0e90170000-7f0e90171000 r--p 00000000 08:20 173312 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_die_if_null.so.2601.0.0 +7f0e90171000-7f0e90172000 r-xp 00001000 08:20 173312 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_die_if_null.so.2601.0.0 +7f0e90172000-7f0e90173000 r--p 00002000 08:20 173312 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_die_if_null.so.2601.0.0 +7f0e90173000-7f0e90174000 r--p 00002000 08:20 173312 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_die_if_null.so.2601.0.0 +7f0e90174000-7f0e90175000 rw-p 00003000 08:20 173312 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_die_if_null.so.2601.0.0 +7f0e90175000-7f0e9017b000 r--p 00000000 08:20 178474 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_str_format_internal.so.2601.0.0 +7f0e9017b000-7f0e90191000 r-xp 00006000 08:20 178474 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_str_format_internal.so.2601.0.0 +7f0e90191000-7f0e90194000 r--p 0001c000 08:20 178474 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_str_format_internal.so.2601.0.0 +7f0e90194000-7f0e90195000 r--p 0001f000 08:20 178474 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_str_format_internal.so.2601.0.0 +7f0e90195000-7f0e90196000 rw-p 00020000 08:20 178474 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_str_format_internal.so.2601.0.0 +7f0e90196000-7f0e9019a000 r--p 00000000 08:20 178182 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_status.so.2601.0.0 +7f0e9019a000-7f0e9019e000 r-xp 00004000 08:20 178182 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_status.so.2601.0.0 +7f0e9019e000-7f0e901a0000 r--p 00008000 08:20 178182 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_status.so.2601.0.0 +7f0e901a0000-7f0e901a1000 r--p 00009000 08:20 178182 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_status.so.2601.0.0 +7f0e901a1000-7f0e901a2000 rw-p 0000a000 08:20 178182 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_status.so.2601.0.0 +7f0e901a2000-7f0e901a4000 r--p 00000000 08:20 175942 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_statusor.so.2601.0.0 +7f0e901a4000-7f0e901a5000 r-xp 00002000 08:20 175942 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_statusor.so.2601.0.0 +7f0e901a5000-7f0e901a6000 r--p 00003000 08:20 175942 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_statusor.so.2601.0.0 +7f0e901a6000-7f0e901a7000 r--p 00003000 08:20 175942 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_statusor.so.2601.0.0 +7f0e901a7000-7f0e901a8000 rw-p 00004000 08:20 175942 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_statusor.so.2601.0.0 +7f0e901a8000-7f0e901aa000 r--p 00000000 08:20 174394 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_vlog_config_internal.so.2601.0.0 +7f0e901aa000-7f0e901ae000 r-xp 00002000 08:20 174394 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_vlog_config_internal.so.2601.0.0 +7f0e901ae000-7f0e901af000 r--p 00006000 08:20 174394 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_vlog_config_internal.so.2601.0.0 +7f0e901af000-7f0e901b0000 r--p 00006000 08:20 174394 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_vlog_config_internal.so.2601.0.0 +7f0e901b0000-7f0e901b1000 rw-p 00007000 08:20 174394 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_vlog_config_internal.so.2601.0.0 +7f0e901b1000-7f0e901b2000 r--p 00000000 08:20 144825 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_range.so.33.5.0 +7f0e901b2000-7f0e901b3000 r-xp 00001000 08:20 144825 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_range.so.33.5.0 +7f0e901b3000-7f0e901b4000 r--p 00002000 08:20 144825 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_range.so.33.5.0 +7f0e901b4000-7f0e901b5000 r--p 00002000 08:20 144825 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_range.so.33.5.0 +7f0e901b5000-7f0e901b6000 rw-p 00003000 08:20 144825 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_range.so.33.5.0 +7f0e901b6000-7f0e901bd000 r--p 00000000 08:20 173525 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings.so.2601.0.0 +7f0e901bd000-7f0e901d4000 r-xp 00007000 08:20 173525 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings.so.2601.0.0 +7f0e901d4000-7f0e901dd000 r--p 0001e000 08:20 173525 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings.so.2601.0.0 +7f0e901dd000-7f0e901de000 r--p 00026000 08:20 173525 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings.so.2601.0.0 +7f0e901de000-7f0e901df000 rw-p 00027000 08:20 173525 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings.so.2601.0.0 +7f0e901df000-7f0e901e5000 r--p 00000000 08:20 176237 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_synchronization.so.2601.0.0 +7f0e901e5000-7f0e901ea000 r-xp 00006000 08:20 176237 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_synchronization.so.2601.0.0 +7f0e901ea000-7f0e901ed000 r--p 0000b000 08:20 176237 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_synchronization.so.2601.0.0 +7f0e901ed000-7f0e901ee000 r--p 0000d000 08:20 176237 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_synchronization.so.2601.0.0 +7f0e901ee000-7f0e901ef000 rw-p 0000e000 08:20 176237 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_synchronization.so.2601.0.0 +7f0e901ef000-7f0e901f1000 rw-p 00000000 00:00 0 +7f0e901f1000-7f0e901f2000 r--p 00000000 08:20 178365 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_functions.so.2601.0.0 +7f0e901f2000-7f0e901f3000 r-xp 00001000 08:20 178365 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_functions.so.2601.0.0 +7f0e901f3000-7f0e901f4000 r--p 00002000 08:20 178365 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_functions.so.2601.0.0 +7f0e901f4000-7f0e901f5000 r--p 00002000 08:20 178365 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_functions.so.2601.0.0 +7f0e901f5000-7f0e901f6000 rw-p 00003000 08:20 178365 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_functions.so.2601.0.0 +7f0e901f6000-7f0e901f8000 r--p 00000000 08:20 175257 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_info.so.2601.0.0 +7f0e901f8000-7f0e901fa000 r-xp 00002000 08:20 175257 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_info.so.2601.0.0 +7f0e901fa000-7f0e901fb000 r--p 00004000 08:20 175257 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_info.so.2601.0.0 +7f0e901fb000-7f0e901fc000 r--p 00004000 08:20 175257 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_info.so.2601.0.0 +7f0e901fc000-7f0e901fd000 rw-p 00005000 08:20 175257 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_info.so.2601.0.0 +7f0e901fd000-7f0e90203000 r--p 00000000 08:20 177056 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord.so.2601.0.0 +7f0e90203000-7f0e9021c000 r-xp 00006000 08:20 177056 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord.so.2601.0.0 +7f0e9021c000-7f0e9021f000 r--p 0001f000 08:20 177056 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord.so.2601.0.0 +7f0e9021f000-7f0e90220000 r--p 00021000 08:20 177056 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord.so.2601.0.0 +7f0e90220000-7f0e90221000 rw-p 00022000 08:20 177056 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord.so.2601.0.0 +7f0e90221000-7f0e90227000 r--p 00000000 08:20 173104 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_message.so.2601.0.0 +7f0e90227000-7f0e9022b000 r-xp 00006000 08:20 173104 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_message.so.2601.0.0 +7f0e9022b000-7f0e9022d000 r--p 0000a000 08:20 173104 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_message.so.2601.0.0 +7f0e9022d000-7f0e9022e000 r--p 0000b000 08:20 173104 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_message.so.2601.0.0 +7f0e9022e000-7f0e9022f000 rw-p 0000c000 08:20 173104 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_message.so.2601.0.0 +7f0e9022f000-7f0e9023b000 r--p 00000000 08:20 140730 /home/cbrissette/cuopt/.cuopt_env/lib/libgpr.so.52.0.0 +7f0e9023b000-7f0e90248000 r-xp 0000c000 08:20 140730 /home/cbrissette/cuopt/.cuopt_env/lib/libgpr.so.52.0.0 +7f0e90248000-7f0e9024e000 r--p 00019000 08:20 140730 /home/cbrissette/cuopt/.cuopt_env/lib/libgpr.so.52.0.0 +7f0e9024e000-7f0e9024f000 r--p 0001f000 08:20 140730 /home/cbrissette/cuopt/.cuopt_env/lib/libgpr.so.52.0.0 +7f0e9024f000-7f0e90250000 rw-p 00020000 08:20 140730 /home/cbrissette/cuopt/.cuopt_env/lib/libgpr.so.52.0.0 +7f0e90250000-7f0e902e5000 r--p 00000000 08:20 144643 /home/cbrissette/cuopt/.cuopt_env/lib/libprotobuf.so.33.5.0 +7f0e902e5000-7f0e90508000 r-xp 00095000 08:20 144643 /home/cbrissette/cuopt/.cuopt_env/lib/libprotobuf.so.33.5.0 +7f0e90508000-7f0e90574000 r--p 002b8000 08:20 144643 /home/cbrissette/cuopt/.cuopt_env/lib/libprotobuf.so.33.5.0 +7f0e90574000-7f0e9057f000 r--p 00324000 08:20 144643 /home/cbrissette/cuopt/.cuopt_env/lib/libprotobuf.so.33.5.0 +7f0e9057f000-7f0e90586000 rw-p 0032f000 08:20 144643 /home/cbrissette/cuopt/.cuopt_env/lib/libprotobuf.so.33.5.0 +7f0e90586000-7f0e90587000 rw-p 00000000 00:00 0 +7f0e90587000-7f0e90594000 r--p 00000000 08:20 83455 /home/cbrissette/cuopt/.cuopt_env/lib/libgomp.so.1.0.0 +7f0e90594000-7f0e905cd000 r-xp 0000d000 08:20 83455 /home/cbrissette/cuopt/.cuopt_env/lib/libgomp.so.1.0.0 +7f0e905cd000-7f0e905db000 r--p 00046000 08:20 83455 /home/cbrissette/cuopt/.cuopt_env/lib/libgomp.so.1.0.0 +7f0e905db000-7f0e905dc000 r--p 00054000 08:20 83455 /home/cbrissette/cuopt/.cuopt_env/lib/libgomp.so.1.0.0 +7f0e905dc000-7f0e905dd000 rw-p 00055000 08:20 83455 /home/cbrissette/cuopt/.cuopt_env/lib/libgomp.so.1.0.0 +7f0e905dd000-7f0e905f9000 r--p 00000000 08:20 182877 /home/cbrissette/cuopt/.cuopt_env/lib/librmm.so +7f0e905f9000-7f0e906b9000 r-xp 0001c000 08:20 182877 /home/cbrissette/cuopt/.cuopt_env/lib/librmm.so +7f0e906b9000-7f0e906e9000 r--p 000dc000 08:20 182877 /home/cbrissette/cuopt/.cuopt_env/lib/librmm.so +7f0e906e9000-7f0e906f0000 r--p 0010c000 08:20 182877 /home/cbrissette/cuopt/.cuopt_env/lib/librmm.so +7f0e906f0000-7f0e906f1000 rw-p 00113000 08:20 182877 /home/cbrissette/cuopt/.cuopt_env/lib/librmm.so +7f0e906f1000-7f0e906f3000 rw-p 00000000 00:00 0 +7f0e906f3000-7f0e90720000 r--p 00000000 08:20 140888 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc++.so.1.78.1 +7f0e90720000-7f0e90779000 r-xp 0002d000 08:20 140888 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc++.so.1.78.1 +7f0e90779000-7f0e90795000 r--p 00086000 08:20 140888 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc++.so.1.78.1 +7f0e90795000-7f0e9079a000 r--p 000a2000 08:20 140888 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc++.so.1.78.1 +7f0e9079a000-7f0e9079b000 rw-p 000a7000 08:20 140888 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc++.so.1.78.1 +7f0e9079b000-7f0e907a9000 r--p 00000000 08:20 194104 /home/cbrissette/cuopt/.cuopt_env/lib/libtbb.so.12.18 +7f0e907a9000-7f0e907d6000 r-xp 0000e000 08:20 194104 /home/cbrissette/cuopt/.cuopt_env/lib/libtbb.so.12.18 +7f0e907d6000-7f0e907e2000 r--p 0003b000 08:20 194104 /home/cbrissette/cuopt/.cuopt_env/lib/libtbb.so.12.18 +7f0e907e2000-7f0e907e4000 r--p 00046000 08:20 194104 /home/cbrissette/cuopt/.cuopt_env/lib/libtbb.so.12.18 +7f0e907e4000-7f0e907e7000 rw-p 00048000 08:20 194104 /home/cbrissette/cuopt/.cuopt_env/lib/libtbb.so.12.18 +7f0e907e7000-7f0e907fd000 rw-p 00000000 00:00 0 +7f0e907fd000-7f0e90801000 ---p 00000000 00:00 0 +7f0e90801000-7f0e908fd000 rw-p 00000000 00:00 0 +7f0e908fd000-7f0e90901000 ---p 00000000 00:00 0 +7f0e90901000-7f0e909fd000 rw-p 00000000 00:00 0 +7f0e909fd000-7f0e90a01000 ---p 00000000 00:00 0 +7f0e90a01000-7f0e90afd000 rw-p 00000000 00:00 0 +7f0e90afd000-7f0e90b01000 ---p 00000000 00:00 0 +7f0e90b01000-7f0e90bfd000 rw-p 00000000 00:00 0 +7f0e90bfd000-7f0e90c01000 ---p 00000000 00:00 0 +7f0e90c01000-7f0e90cfd000 rw-p 00000000 00:00 0 +7f0e90cfd000-7f0e90cfe000 ---p 00000000 00:00 0 +7f0e90cfe000-7f0e90dfe000 rw-p 00000000 00:00 0 +7f0e90dfe000-7f0e90e02000 ---p 00000000 00:00 0 +7f0e90e02000-7f0e90efe000 rw-p 00000000 00:00 0 +7f0e90efe000-7f0e90f02000 ---p 00000000 00:00 0 +7f0e90f02000-7f0e90ffe000 rw-p 00000000 00:00 0 +7f0e90ffe000-7f0e91002000 ---p 00000000 00:00 0 +7f0e91002000-7f0e910fe000 rw-p 00000000 00:00 0 +7f0e910fe000-7f0e91102000 ---p 00000000 00:00 0 +7f0e91102000-7f0e911fe000 rw-p 00000000 00:00 0 +7f0e911fe000-7f0e91202000 ---p 00000000 00:00 0 +7f0e91202000-7f0e912fe000 rw-p 00000000 00:00 0 +7f0e912fe000-7f0e91302000 ---p 00000000 00:00 0 +7f0e91302000-7f0e913fe000 rw-p 00000000 00:00 0 +7f0e913fe000-7f0e91402000 ---p 00000000 00:00 0 +7f0e91402000-7f0e914fe000 rw-p 00000000 00:00 0 +7f0e914fe000-7f0e91502000 ---p 00000000 00:00 0 +7f0e91502000-7f0e915fe000 rw-p 00000000 00:00 0 +7f0e915fe000-7f0e915ff000 ---p 00000000 00:00 0 +7f0e915ff000-7f0e91eff000 rw-p 00000000 00:00 0 +7f0e91eff000-7f0e91f00000 ---p 00000000 00:00 0 +7f0e91f00000-7f0e94000000 rw-p 00000000 00:00 0 +7f0e94000000-7f0e94021000 rw-p 00000000 00:00 0 +7f0e94021000-7f0e98000000 ---p 00000000 00:00 0 +7f0e98000000-7f0e98001000 rw-s a01e2a000 00:01 16566 /dev/zero (deleted) +7f0e98001000-7f0e98002000 r--p 00000000 08:20 172516 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_nullguard.so.2601.0.0 +7f0e98002000-7f0e98003000 r-xp 00001000 08:20 172516 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_nullguard.so.2601.0.0 +7f0e98003000-7f0e98004000 r--p 00002000 08:20 172516 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_nullguard.so.2601.0.0 +7f0e98004000-7f0e98005000 r--p 00002000 08:20 172516 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_nullguard.so.2601.0.0 +7f0e98005000-7f0e98006000 rw-p 00003000 08:20 172516 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_nullguard.so.2601.0.0 +7f0e98006000-7f0e98010000 r--p 00000000 08:20 198476 /home/cbrissette/cuopt/.cuopt_env/lib/librapids_logger.so +7f0e98010000-7f0e98041000 r-xp 0000a000 08:20 198476 /home/cbrissette/cuopt/.cuopt_env/lib/librapids_logger.so +7f0e98041000-7f0e9804e000 r--p 0003b000 08:20 198476 /home/cbrissette/cuopt/.cuopt_env/lib/librapids_logger.so +7f0e9804e000-7f0e98051000 r--p 00048000 08:20 198476 /home/cbrissette/cuopt/.cuopt_env/lib/librapids_logger.so +7f0e98051000-7f0e98052000 rw-p 0004b000 08:20 198476 /home/cbrissette/cuopt/.cuopt_env/lib/librapids_logger.so +7f0e98052000-7f0e98064000 r--p 00000000 08:20 78513 /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so +7f0e98064000-7f0e98080000 r-xp 00012000 08:20 78513 /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so +7f0e98080000-7f0e98089000 r--p 0002e000 08:20 78513 /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so +7f0e98089000-7f0e9808a000 r--p 00037000 08:20 78513 /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so +7f0e9808a000-7f0e9808b000 rw-p 00038000 08:20 78513 /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so +7f0e9808b000-7f0e9808c000 rw-p 00000000 00:00 0 +7f0e9808c000-7f0e9808d000 ---p 00000000 00:00 0 +7f0e9808d000-7f0e98870000 rw-p 00000000 00:00 0 +7f0e98870000-7f0e9b240000 ---p 00000000 00:00 0 +7f0e9b240000-7f0e9b248000 rw-p 00000000 00:00 0 +7f0e9b248000-7f0e9c248000 ---p 00000000 00:00 0 +7f0e9c248000-7f0e9c628000 rw-p 00000000 00:00 0 +7f0e9c628000-7f0e9eff8000 ---p 00000000 00:00 0 +7f0e9eff8000-7f0e9f000000 rw-p 00000000 00:00 0 +7f0e9f000000-7f0ea0000000 ---p 00000000 00:00 0 +7f0ea0000000-7f0ea0021000 rw-p 00000000 00:00 0 +7f0ea0021000-7f0ea4000000 ---p 00000000 00:00 0 +7f0ea4000000-7f0ea4001000 rw-s a01e29000 00:01 16565 /dev/zero (deleted) +7f0ea4001000-7f0ea4002000 rw-s a01e28000 00:01 16564 /dev/zero (deleted) +7f0ea4002000-7f0ea4003000 rw-s a01e27000 00:01 16563 /dev/zero (deleted) +7f0ea4003000-7f0ea4006000 r--p 00000000 08:20 175246 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_check_op.so.2601.0.0 +7f0ea4006000-7f0ea4009000 r-xp 00003000 08:20 175246 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_check_op.so.2601.0.0 +7f0ea4009000-7f0ea400a000 r--p 00006000 08:20 175246 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_check_op.so.2601.0.0 +7f0ea400a000-7f0ea400b000 r--p 00006000 08:20 175246 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_check_op.so.2601.0.0 +7f0ea400b000-7f0ea400c000 rw-p 00007000 08:20 175246 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_check_op.so.2601.0.0 +7f0ea400c000-7f0ea400d000 r--p 00000000 08:20 218634 /usr/lib/x86_64-linux-gnu/libpthread.so.0 +7f0ea400d000-7f0ea400e000 r-xp 00001000 08:20 218634 /usr/lib/x86_64-linux-gnu/libpthread.so.0 +7f0ea400e000-7f0ea400f000 r--p 00002000 08:20 218634 /usr/lib/x86_64-linux-gnu/libpthread.so.0 +7f0ea400f000-7f0ea4010000 r--p 00002000 08:20 218634 /usr/lib/x86_64-linux-gnu/libpthread.so.0 +7f0ea4010000-7f0ea4011000 rw-p 00003000 08:20 218634 /usr/lib/x86_64-linux-gnu/libpthread.so.0 +7f0ea4011000-7f0ea4012000 rw-s a01e26000 00:01 16562 /dev/zero (deleted) +7f0ea4012000-7f0ea4013000 rw-s a01e25000 00:01 16561 /dev/zero (deleted) +7f0ea4013000-7f0ea4014000 rw-s a01e24000 00:01 16560 /dev/zero (deleted) +7f0ea4014000-7f0ea4015000 rw-s a01e23000 00:01 16559 /dev/zero (deleted) +7f0ea4015000-7f0ea4016000 rw-s a01e22000 00:01 16558 /dev/zero (deleted) +7f0ea4016000-7f0ea4017000 rw-s a01e21000 00:01 16554 /dev/zero (deleted) +7f0ea4017000-7f0ea4018000 rw-s a01e20000 00:01 16553 /dev/zero (deleted) +7f0ea4018000-7f0ea4019000 rw-s a01e1f000 00:01 16552 /dev/zero (deleted) +7f0ea4019000-7f0ea401a000 rw-s a01e1e000 00:01 16551 /dev/zero (deleted) +7f0ea401a000-7f0ea401b000 rw-s a01e1d000 00:01 16550 /dev/zero (deleted) +7f0ea401b000-7f0ea401f000 r--p 00000000 08:20 294964 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnet.so +7f0ea401f000-7f0ea402d000 r-xp 00004000 08:20 294964 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnet.so +7f0ea402d000-7f0ea4031000 r--p 00012000 08:20 294964 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnet.so +7f0ea4031000-7f0ea4032000 r--p 00015000 08:20 294964 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnet.so +7f0ea4032000-7f0ea4033000 rw-p 00016000 08:20 294964 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnet.so +7f0ea4033000-7f0ea403a000 r--p 00000000 08:20 294965 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnio.so +7f0ea403a000-7f0ea4042000 r-xp 00007000 08:20 294965 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnio.so +7f0ea4042000-7f0ea4045000 r--p 0000f000 08:20 294965 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnio.so +7f0ea4045000-7f0ea4046000 r--p 00011000 08:20 294965 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnio.so +7f0ea4046000-7f0ea4047000 rw-p 00012000 08:20 294965 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnio.so +7f0ea4047000-7f0ea47cf000 rw-p 00000000 00:00 0 +7f0ea47cf000-7f0ea4a3f000 rwxp 00000000 00:00 0 +7f0ea4a3f000-7f0ea4f0e000 ---p 00000000 00:00 0 +7f0ea4f0e000-7f0ea51fe000 rwxp 00000000 00:00 0 +7f0ea51fe000-7f0eac36e000 ---p 00000000 00:00 0 +7f0eac36e000-7f0eac5de000 rwxp 00000000 00:00 0 +7f0eac5de000-7f0eb37cf000 ---p 00000000 00:00 0 +7f0eb37cf000-7f0ebc000000 r--s 00000000 08:20 294975 /usr/lib/jvm/java-11-openjdk-amd64/lib/modules +7f0ebc000000-7f0ebfccb000 rw-p 00000000 00:00 0 +7f0ebfccb000-7f0ec0000000 ---p 00000000 00:00 0 +7f0ec0000000-7f0ec0001000 r--p 00000000 00:00 0 +7f0ec0001000-7f0ec0002000 rw-s a01e1c000 00:01 16548 /dev/zero (deleted) +7f0ec0002000-7f0ec0003000 rw-s a01e1b000 00:01 16547 /dev/zero (deleted) +7f0ec0003000-7f0ec0005000 r--p 00000000 08:20 294962 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement_ext.so +7f0ec0005000-7f0ec0008000 r-xp 00002000 08:20 294962 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement_ext.so +7f0ec0008000-7f0ec000a000 r--p 00005000 08:20 294962 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement_ext.so +7f0ec000a000-7f0ec000b000 r--p 00006000 08:20 294962 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement_ext.so +7f0ec000b000-7f0ec000c000 rw-p 00007000 08:20 294962 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement_ext.so +7f0ec000c000-7f0ec000f000 r--p 00000000 08:20 294960 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement.so +7f0ec000f000-7f0ec0010000 r-xp 00003000 08:20 294960 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement.so +7f0ec0010000-7f0ec0011000 r--p 00004000 08:20 294960 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement.so +7f0ec0011000-7f0ec0012000 r--p 00004000 08:20 294960 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement.so +7f0ec0012000-7f0ec0013000 rw-p 00005000 08:20 294960 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement.so +7f0ec0013000-7f0ec006a000 r--p 00000000 08:20 217873 /usr/lib/locale/C.utf8/LC_CTYPE +7f0ec006a000-7f0ec006b000 r--p 00000000 08:20 217879 /usr/lib/locale/C.utf8/LC_NUMERIC +7f0ec006b000-7f0ec006c000 r--p 00000000 08:20 217882 /usr/lib/locale/C.utf8/LC_TIME +7f0ec006c000-7f0ec006d000 r--p 00000000 08:20 217872 /usr/lib/locale/C.utf8/LC_COLLATE +7f0ec006d000-7f0ec006e000 r--p 00000000 08:20 217877 /usr/lib/locale/C.utf8/LC_MONETARY +7f0ec006e000-7f0ec006f000 r--p 00000000 08:20 217876 /usr/lib/locale/C.utf8/LC_MESSAGES/SYS_LC_MESSAGES +7f0ec006f000-7f0ec0070000 r--p 00000000 08:20 217880 /usr/lib/locale/C.utf8/LC_PAPER +7f0ec0070000-7f0ec0071000 r--p 00000000 08:20 217878 /usr/lib/locale/C.utf8/LC_NAME +7f0ec0071000-7f0ec0072000 r--p 00000000 08:20 217871 /usr/lib/locale/C.utf8/LC_ADDRESS +7f0ec0072000-7f0ec0073000 r--p 00000000 08:20 217881 /usr/lib/locale/C.utf8/LC_TELEPHONE +7f0ec0073000-7f0ec007a000 r--s 00000000 08:20 218904 /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache +7f0ec007a000-7f0ec05da000 rw-p 00000000 00:00 0 +7f0ec05da000-7f0ec05db000 ---p 00000000 00:00 0 +7f0ec05db000-7f0ec06db000 rw-p 00000000 00:00 0 +7f0ec06db000-7f0ec06dc000 ---p 00000000 00:00 0 +7f0ec06dc000-7f0ec0a4e000 rw-p 00000000 00:00 0 +7f0ec0a4e000-7f0ec0f88000 ---p 00000000 00:00 0 +7f0ec0f88000-7f0ec0f89000 rw-p 00000000 00:00 0 +7f0ec0f89000-7f0ec1189000 ---p 00000000 00:00 0 +7f0ec1189000-7f0ec1205000 rw-p 00000000 00:00 0 +7f0ec1205000-7f0ec173f000 ---p 00000000 00:00 0 +7f0ec173f000-7f0ec1740000 rw-p 00000000 00:00 0 +7f0ec1740000-7f0ec1940000 ---p 00000000 00:00 0 +7f0ec1940000-7f0ec19bc000 rw-p 00000000 00:00 0 +7f0ec19bc000-7f0ec1ef6000 ---p 00000000 00:00 0 +7f0ec1ef6000-7f0ec1ef7000 rw-p 00000000 00:00 0 +7f0ec1ef7000-7f0ec20f7000 ---p 00000000 00:00 0 +7f0ec20f7000-7f0ec3006000 rw-p 00000000 00:00 0 +7f0ec3006000-7f0ec3007000 ---p 00000000 00:00 0 +7f0ec3007000-7f0ec310c000 rw-p 00000000 00:00 0 +7f0ec310c000-7f0ec31f0000 ---p 00000000 00:00 0 +7f0ec31f0000-7f0ec31f6000 rw-p 00000000 00:00 0 +7f0ec31f6000-7f0ec32d9000 ---p 00000000 00:00 0 +7f0ec32d9000-7f0ec32de000 rw-p 00000000 00:00 0 +7f0ec32de000-7f0ec32e8000 ---p 00000000 00:00 0 +7f0ec32e8000-7f0ec32ea000 r--p 00000000 08:20 294974 /usr/lib/jvm/java-11-openjdk-amd64/lib/libzip.so +7f0ec32ea000-7f0ec32ef000 r-xp 00002000 08:20 294974 /usr/lib/jvm/java-11-openjdk-amd64/lib/libzip.so +7f0ec32ef000-7f0ec32f1000 r--p 00007000 08:20 294974 /usr/lib/jvm/java-11-openjdk-amd64/lib/libzip.so +7f0ec32f1000-7f0ec32f2000 r--p 00008000 08:20 294974 /usr/lib/jvm/java-11-openjdk-amd64/lib/libzip.so +7f0ec32f2000-7f0ec32f3000 rw-p 00009000 08:20 294974 /usr/lib/jvm/java-11-openjdk-amd64/lib/libzip.so +7f0ec32f3000-7f0ec32fb000 rw-s 00000000 08:20 78560 /tmp/hsperfdata_cbrissette/1440122 +7f0ec32fb000-7f0ec32fc000 ---p 00000000 00:00 0 +7f0ec32fc000-7f0ec32fd000 r--p 00000000 00:00 0 +7f0ec32fd000-7f0ec330b000 r--p 00000000 08:20 294953 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjava.so +7f0ec330b000-7f0ec3321000 r-xp 0000e000 08:20 294953 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjava.so +7f0ec3321000-7f0ec3328000 r--p 00024000 08:20 294953 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjava.so +7f0ec3328000-7f0ec3329000 r--p 0002a000 08:20 294953 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjava.so +7f0ec3329000-7f0ec332a000 rw-p 0002b000 08:20 294953 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjava.so +7f0ec332a000-7f0ec332b000 rw-p 00000000 00:00 0 +7f0ec332b000-7f0ec3330000 r--p 00000000 08:20 294973 /usr/lib/jvm/java-11-openjdk-amd64/lib/libverify.so +7f0ec3330000-7f0ec3337000 r-xp 00005000 08:20 294973 /usr/lib/jvm/java-11-openjdk-amd64/lib/libverify.so +7f0ec3337000-7f0ec3339000 r--p 0000c000 08:20 294973 /usr/lib/jvm/java-11-openjdk-amd64/lib/libverify.so +7f0ec3339000-7f0ec333b000 r--p 0000d000 08:20 294973 /usr/lib/jvm/java-11-openjdk-amd64/lib/libverify.so +7f0ec333b000-7f0ec333c000 rw-p 0000f000 08:20 294973 /usr/lib/jvm/java-11-openjdk-amd64/lib/libverify.so +7f0ec333c000-7f0ec333d000 r--p 00000000 08:20 218636 /usr/lib/x86_64-linux-gnu/librt.so.1 +7f0ec333d000-7f0ec333e000 r-xp 00001000 08:20 218636 /usr/lib/x86_64-linux-gnu/librt.so.1 +7f0ec333e000-7f0ec333f000 r--p 00002000 08:20 218636 /usr/lib/x86_64-linux-gnu/librt.so.1 +7f0ec333f000-7f0ec3340000 r--p 00002000 08:20 218636 /usr/lib/x86_64-linux-gnu/librt.so.1 +7f0ec3340000-7f0ec3341000 rw-p 00003000 08:20 218636 /usr/lib/x86_64-linux-gnu/librt.so.1 +7f0ec3341000-7f0ec3345000 ---p 00000000 00:00 0 +7f0ec3345000-7f0ec3441000 rw-p 00000000 00:00 0 +7f0ec3441000-7f0ec3442000 r--p 00000000 08:20 218624 /usr/lib/x86_64-linux-gnu/libdl.so.2 +7f0ec3442000-7f0ec3443000 r-xp 00001000 08:20 218624 /usr/lib/x86_64-linux-gnu/libdl.so.2 +7f0ec3443000-7f0ec3444000 r--p 00002000 08:20 218624 /usr/lib/x86_64-linux-gnu/libdl.so.2 +7f0ec3444000-7f0ec3445000 r--p 00002000 08:20 218624 /usr/lib/x86_64-linux-gnu/libdl.so.2 +7f0ec3445000-7f0ec3446000 rw-p 00003000 08:20 218624 /usr/lib/x86_64-linux-gnu/libdl.so.2 +7f0ec3446000-7f0ec344a000 r--p 00000000 08:20 84327 /home/cbrissette/cuopt/.cuopt_env/lib/libgcc_s.so.1 +7f0ec344a000-7f0ec346d000 r-xp 00004000 08:20 84327 /home/cbrissette/cuopt/.cuopt_env/lib/libgcc_s.so.1 +7f0ec346d000-7f0ec3471000 r--p 00027000 08:20 84327 /home/cbrissette/cuopt/.cuopt_env/lib/libgcc_s.so.1 +7f0ec3471000-7f0ec3472000 r--p 0002a000 08:20 84327 /home/cbrissette/cuopt/.cuopt_env/lib/libgcc_s.so.1 +7f0ec3472000-7f0ec3473000 rw-p 0002b000 08:20 84327 /home/cbrissette/cuopt/.cuopt_env/lib/libgcc_s.so.1 +7f0ec3473000-7f0ec3481000 r--p 00000000 08:20 218625 /usr/lib/x86_64-linux-gnu/libm.so.6 +7f0ec3481000-7f0ec34fd000 r-xp 0000e000 08:20 218625 /usr/lib/x86_64-linux-gnu/libm.so.6 +7f0ec34fd000-7f0ec3558000 r--p 0008a000 08:20 218625 /usr/lib/x86_64-linux-gnu/libm.so.6 +7f0ec3558000-7f0ec3559000 r--p 000e4000 08:20 218625 /usr/lib/x86_64-linux-gnu/libm.so.6 +7f0ec3559000-7f0ec355a000 rw-p 000e5000 08:20 218625 /usr/lib/x86_64-linux-gnu/libm.so.6 +7f0ec355a000-7f0ec3604000 r--p 00000000 08:20 84948 /home/cbrissette/cuopt/.cuopt_env/lib/libstdc++.so.6.0.34 +7f0ec3604000-7f0ec3735000 r-xp 000aa000 08:20 84948 /home/cbrissette/cuopt/.cuopt_env/lib/libstdc++.so.6.0.34 +7f0ec3735000-7f0ec37c3000 r--p 001db000 08:20 84948 /home/cbrissette/cuopt/.cuopt_env/lib/libstdc++.so.6.0.34 +7f0ec37c3000-7f0ec37d2000 r--p 00268000 08:20 84948 /home/cbrissette/cuopt/.cuopt_env/lib/libstdc++.so.6.0.34 +7f0ec37d2000-7f0ec37d5000 rw-p 00277000 08:20 84948 /home/cbrissette/cuopt/.cuopt_env/lib/libstdc++.so.6.0.34 +7f0ec37d5000-7f0ec37d9000 rw-p 00000000 00:00 0 +7f0ec37d9000-7f0ec3a5c000 r--p 00000000 08:20 294978 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so +7f0ec3a5c000-7f0ec46fa000 r-xp 00283000 08:20 294978 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so +7f0ec46fa000-7f0ec4956000 r--p 00f21000 08:20 294978 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so +7f0ec4956000-7f0ec4a1a000 r--p 0117c000 08:20 294978 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so +7f0ec4a1a000-7f0ec4a55000 rw-p 01240000 08:20 294978 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so +7f0ec4a55000-7f0ec4aae000 rw-p 00000000 00:00 0 +7f0ec4aae000-7f0ec4ad6000 r--p 00000000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 +7f0ec4ad6000-7f0ec4c6b000 r-xp 00028000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 +7f0ec4c6b000-7f0ec4cc3000 r--p 001bd000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 +7f0ec4cc3000-7f0ec4cc4000 ---p 00215000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 +7f0ec4cc4000-7f0ec4cc8000 r--p 00215000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 +7f0ec4cc8000-7f0ec4cca000 rw-p 00219000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 +7f0ec4cca000-7f0ec4cd7000 rw-p 00000000 00:00 0 +7f0ec4cd7000-7f0ec4cd8000 r--p 00000000 08:20 217875 /usr/lib/locale/C.utf8/LC_MEASUREMENT +7f0ec4cd8000-7f0ec4cda000 r--p 00000000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so +7f0ec4cda000-7f0ec4cdd000 r-xp 00002000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so +7f0ec4cdd000-7f0ec4cde000 r--p 00005000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so +7f0ec4cde000-7f0ec4cdf000 ---p 00006000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so +7f0ec4cdf000-7f0ec4ce0000 r--p 00006000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so +7f0ec4ce0000-7f0ec4ce1000 rw-p 00007000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so +7f0ec4ce1000-7f0ec4ce4000 r--p 00000000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so +7f0ec4ce4000-7f0ec4cee000 r-xp 00003000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so +7f0ec4cee000-7f0ec4cf1000 r--p 0000d000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so +7f0ec4cf1000-7f0ec4cf2000 ---p 00010000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so +7f0ec4cf2000-7f0ec4cf3000 r--p 00010000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so +7f0ec4cf3000-7f0ec4cf4000 rw-p 00011000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so +7f0ec4cf4000-7f0ec4cf7000 r--p 00000000 08:20 83514 /home/cbrissette/cuopt/.cuopt_env/lib/libz.so.1.3.2 +7f0ec4cf7000-7f0ec4d07000 r-xp 00003000 08:20 83514 /home/cbrissette/cuopt/.cuopt_env/lib/libz.so.1.3.2 +7f0ec4d07000-7f0ec4d0d000 r--p 00013000 08:20 83514 /home/cbrissette/cuopt/.cuopt_env/lib/libz.so.1.3.2 +7f0ec4d0d000-7f0ec4d0e000 r--p 00019000 08:20 83514 /home/cbrissette/cuopt/.cuopt_env/lib/libz.so.1.3.2 +7f0ec4d0e000-7f0ec4d0f000 rw-p 0001a000 08:20 83514 /home/cbrissette/cuopt/.cuopt_env/lib/libz.so.1.3.2 +7f0ec4d0f000-7f0ec4d11000 rw-p 00000000 00:00 0 +7f0ec4d11000-7f0ec4d13000 r--p 00000000 08:20 218618 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 +7f0ec4d13000-7f0ec4d3d000 r-xp 00002000 08:20 218618 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 +7f0ec4d3d000-7f0ec4d48000 r--p 0002c000 08:20 218618 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 +7f0ec4d48000-7f0ec4d49000 r--p 00000000 08:20 217874 /usr/lib/locale/C.utf8/LC_IDENTIFICATION +7f0ec4d49000-7f0ec4d4b000 r--p 00037000 08:20 218618 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 +7f0ec4d4b000-7f0ec4d4d000 rw-p 00039000 08:20 218618 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 +7ffd2ab9a000-7ffd2abbd000 rw-p 00000000 00:00 0 [stack] +7ffd2abee000-7ffd2abf2000 r--p 00000000 00:00 0 [vvar] +7ffd2abf2000-7ffd2abf4000 r-xp 00000000 00:00 0 [vdso] + + +VM Arguments: +java_command: /home/cbrissette/cuopt/java/cuopt/target/surefire/surefirebooter-20260707090259251_3.jar /home/cbrissette/cuopt/java/cuopt/target/surefire 2026-07-07T09-02-59_150-jvmRun1 surefire-20260707090259251_1tmp surefire_0-20260707090259251_2tmp +java_class_path (initial): /home/cbrissette/cuopt/java/cuopt/target/surefire/surefirebooter-20260707090259251_3.jar +Launcher Type: SUN_STANDARD + +[Global flags] + intx CICompilerCount = 12 {product} {ergonomic} + uint ConcGCThreads = 4 {product} {ergonomic} + uint G1ConcRefinementThreads = 15 {product} {ergonomic} + size_t G1HeapRegionSize = 1048576 {product} {ergonomic} + uintx GCDrainStackTargetSize = 64 {product} {ergonomic} + size_t InitialHeapSize = 260046848 {product} {ergonomic} + size_t MarkStackSize = 4194304 {product} {ergonomic} + size_t MaxHeapSize = 4141875200 {product} {ergonomic} + size_t MaxNewSize = 2485125120 {product} {ergonomic} + size_t MinHeapDeltaBytes = 1048576 {product} {ergonomic} + uintx NonNMethodCodeHeapSize = 7594288 {pd product} {ergonomic} + uintx NonProfiledCodeHeapSize = 122031976 {pd product} {ergonomic} + uintx ProfiledCodeHeapSize = 122031976 {pd product} {ergonomic} + uintx ReservedCodeCacheSize = 251658240 {pd product} {ergonomic} + bool SegmentedCodeCache = true {product} {ergonomic} + bool UseCompressedClassPointers = true {lp64_product} {ergonomic} + bool UseCompressedOops = true {lp64_product} {ergonomic} + bool UseG1GC = true {product} {ergonomic} + +Logging: +Log output configuration: + #0: stdout all=warning uptime,level,tags + #1: stderr all=off uptime,level,tags + +Environment Variables: +JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 +PATH=/usr/lib/jvm/java-11-openjdk-amd64/bin:/home/cbrissette/cuopt/.cuopt_env/bin:/usr/lib/jvm/java-11-openjdk-amd64/bin:/path/to/jdk-11/bin:/home/cbrissette/cuopt/.cuopt_env/bin:/home/cbrissette/miniforge3/condabin:/usr/local/cuda-12/bin:/usr/lib:/lib:/home/cbrissette/.npm-packages/bin:/home/cbrissette/.local/node/bin:/home/cbrissette/.vscode-server/bin/034f571df509819cc10b0c8129f66ef77a542f0e/bin/remote-cli:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/wsl/lib:/mnt/c/Program Files/Microsoft VS Code:/mnt/c/Windows/system32:/mnt/c/Windows:/mnt/c/Windows/System32/Wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0:/mnt/c/Windows/System32/OpenSSH:/mnt/c/Program Files/dotnet:/mnt/c/Program Files/Microsoft VS Code/bin:/mnt/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/mnt/c/Program Files/NVIDIA Corporation/Nsight Compute 2025.1.0:/mnt/c/Program Files/Teleport:/mnt/c/PROGRA~1/cinc/bin:/mnt/c/Program Files/NVInfo/bin:/mnt/c/Program Files/ai-pim-utils:/mnt/c/WINDOWS/system32:/mnt/c/WINDOWS:/mnt/c/WINDOWS/System32/Wbem:/mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0:/mnt/c/WINDOWS/System32/OpenSSH:/mnt/c/Program Files/Teleport Connect/resources/bin:/mnt/c/Users/cbrissette/.local/bin:/mnt/c/Users/cbrissette/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/cbrissette/AppData/Local/Programs/cursor/resources/app/bin:/mnt/c/Users/cbrissette/AppData/Local/Microsoft/WinGet/Packages/astral-sh.uv_Microsoft.Winget.Source_8wekyb3d8bbwe:/mnt/c/Users/cbrissette/AppData/Local/Microsoft/WindowsApps:/snap/bin:/home/cbrissette/ngc-cli:/home/cbrissette/.local/bin:/usr/local/go/bin +LD_LIBRARY_PATH=/home/cbrissette/cuopt/.cuopt_env/lib:/home/cbrissette/cuopt/java/cuopt/build/native:/home/cbrissette/cuopt/.cuopt_env/lib:/home/cbrissette/cuopt/cpp/build +SHELL=/bin/bash +DISPLAY=:0 +HOSTTYPE=x86_64 +LANG=C.UTF-8 +TERM=xterm-256color + +Signal Handlers: +SIGSEGV: [libjvm.so+0xeaead0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGBUS: [libjvm.so+0xeaead0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGFPE: [libjvm.so+0xeaead0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGPIPE: [libjvm.so+0xbf1430], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGXFSZ: [libjvm.so+0xbf1430], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGILL: [libjvm.so+0xeaead0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGUSR2: [libjvm.so+0xbf12d0], sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO +SIGHUP: [libjvm.so+0xbf1a90], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGINT: [libjvm.so+0xbf1a90], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGTERM: [libjvm.so+0xbf1a90], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGQUIT: [libjvm.so+0xbf1a90], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO + + +--------------- S Y S T E M --------------- + +OS:DISTRIB_ID=Ubuntu +DISTRIB_RELEASE=22.04 +DISTRIB_CODENAME=jammy +DISTRIB_DESCRIPTION="Ubuntu 22.04.5 LTS" +uname:Linux 5.15.153.1-microsoft-standard-WSL2 #1 SMP Fri Mar 29 23:14:13 UTC 2024 x86_64 +OS uptime: 2 days 16:07 hours +libc:glibc 2.35 NPTL 2.35 +rlimit (soft/hard): STACK 8192k/infinity , CORE 0k/infinity , NPROC 63166/63166 , NOFILE 1048576/1048576 , AS infinity/infinity , CPU infinity/infinity , DATA infinity/infinity , FSIZE infinity/infinity , MEMLOCK 65536k/65536k +load average:0.92 0.38 0.22 + +/proc/meminfo: +MemTotal: 16177528 kB +MemFree: 10978740 kB +MemAvailable: 11940716 kB +Buffers: 10640 kB +Cached: 963344 kB +SwapCached: 57796 kB +Active: 476540 kB +Inactive: 3837872 kB +Active(anon): 14360 kB +Inactive(anon): 3395324 kB +Active(file): 462180 kB +Inactive(file): 442548 kB +Unevictable: 0 kB +Mlocked: 0 kB +SwapTotal: 4194304 kB +SwapFree: 3716576 kB +Dirty: 4540 kB +Writeback: 0 kB +AnonPages: 3228376 kB +Mapped: 523268 kB +Shmem: 69292 kB +KReclaimable: 389348 kB +Slab: 511468 kB +SReclaimable: 389348 kB +SUnreclaim: 122120 kB +KernelStack: 14752 kB +PageTables: 50184 kB +NFS_Unstable: 0 kB +Bounce: 0 kB +WritebackTmp: 0 kB +CommitLimit: 12283068 kB +Committed_AS: 6693168 kB +VmallocTotal: 34359738367 kB +VmallocUsed: 37832 kB +VmallocChunk: 0 kB +Percpu: 13248 kB +AnonHugePages: 1234944 kB +ShmemHugePages: 0 kB +ShmemPmdMapped: 0 kB +FileHugePages: 0 kB +FilePmdMapped: 0 kB +HugePages_Total: 0 +HugePages_Free: 0 +HugePages_Rsvd: 0 +HugePages_Surp: 0 +Hugepagesize: 2048 kB +Hugetlb: 0 kB +DirectMap4k: 402432 kB +DirectMap2M: 13025280 kB +DirectMap1G: 11534336 kB + +/sys/kernel/mm/transparent_hugepage/enabled: +[always] madvise never +/sys/kernel/mm/transparent_hugepage/defrag (defrag/compaction efforts parameter): +always defer defer+madvise [madvise] never + +Process Memory: +Virtual Size: 42600520K (peak: 42666056K) +Resident Set Size: 489132K (peak: 489132K) (anon: 298392K, file: 125152K, shmem: 65588K) +Swapped out: 0K +C-Heap outstanding allocations: 191829K, retained: 4606K +glibc malloc tunables: (default) + +/proc/sys/kernel/threads-max (system-wide limit on the number of threads): +126333 +/proc/sys/vm/max_map_count (maximum number of memory map areas a process may have): +65530 +/proc/sys/kernel/pid_max (system-wide limit on number of process identifiers): +4194304 + +container (cgroup) information: +container_type: cgroupv1 +cpu_cpuset_cpus: 0-19 +cpu_memory_nodes: 0 +active_processor_count: 20 +cpu_quota: no quota +cpu_period: 100000 +cpu_shares: no shares +memory_limit_in_bytes: unlimited +memory_and_swap_limit_in_bytes: unlimited +memory_soft_limit_in_bytes: unlimited +memory_usage_in_bytes: 4201780 k +memory_max_usage_in_bytes: 2211664 k +kernel_memory_usage_in_bytes: 38364 k +kernel_memory_max_usage_in_bytes: unlimited +kernel_memory_limit_in_bytes: 70264 k +maximum number of tasks: not supported +current number of tasks: not supported + +Hyper-V virtualization detected +Steal ticks since vm start: 0 +Steal ticks percentage since vm start: 0.000 + +CPU:total 20 (initial active 20) (16 cores per cpu, 2 threads per core) family 6 model 186 stepping 2 microcode 0xffffffff, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, clmul, erms, 3dnowpref, lzcnt, ht, tsc, tscinvbit, bmi1, bmi2, adx, sha, fma +CPU Model and flags from /proc/cpuinfo: +model name : 13th Gen Intel(R) Core(TM) i7-13800H +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq vmx ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves avx_vnni umip waitpkg gfni vaes vpclmulqdq rdpid movdiri movdir64b fsrm md_clear serialize flush_l1d arch_capabilities +Online cpus: +0-19 +Offline cpus: + +BIOS frequency limitation: + +Frequency switch latency (ns): + +Available cpu frequencies: + +Current governor: + +Core performance/turbo boost: + + +Memory: 4k page, physical 16177528k(10978740k free), swap 4194304k(3716576k free) + +vm_info: OpenJDK 64-Bit Server VM (11.0.24+8-post-Ubuntu-1ubuntu322.04) for linux-amd64 JRE (11.0.24+8-post-Ubuntu-1ubuntu322.04), built on Jul 21 2024 21:19:53 by "unknown" with gcc 11.4.0 + +END. diff --git a/java/cuopt/hs_err_pid1449708.log b/java/cuopt/hs_err_pid1449708.log new file mode 100644 index 0000000000..dac52a22c9 --- /dev/null +++ b/java/cuopt/hs_err_pid1449708.log @@ -0,0 +1,1716 @@ +# +# A fatal error has been detected by the Java Runtime Environment: +# +# SIGBUS (0x7) at pc=0x00007f7c3f060c00, pid=1449708, tid=1449709 +# +# JRE version: OpenJDK Runtime Environment (11.0.24+8) (build 11.0.24+8-post-Ubuntu-1ubuntu322.04) +# Java VM: OpenJDK 64-Bit Server VM (11.0.24+8-post-Ubuntu-1ubuntu322.04, mixed mode, sharing, tiered, compressed oops, g1 gc, linux-amd64) +# Problematic frame: +# C [libcuopt.so+0x59fc00] cuopt::linear_programming::problem_and_stream_view_t::~problem_and_stream_view_t()+0x30 +# +# Core dump will be written. Default location: Core dumps may be processed with "/wsl-capture-crash %t %E %p %s" (or dumping to /home/cbrissette/cuopt/java/cuopt/core.1449708) +# +# If you would like to submit a bug report, please visit: +# https://bugs.launchpad.net/ubuntu/+source/openjdk-lts +# The crash happened outside the Java Virtual Machine in native code. +# See problematic frame for where to report the bug. +# + +--------------- S U M M A R Y ------------ + +Command Line: /home/cbrissette/cuopt/java/cuopt/target/surefire/surefirebooter-20260707091921778_3.jar /home/cbrissette/cuopt/java/cuopt/target/surefire 2026-07-07T09-19-21_604-jvmRun1 surefire-20260707091921778_1tmp surefire_0-20260707091921778_2tmp + +Host: 13th Gen Intel(R) Core(TM) i7-13800H, 20 cores, 15G, Ubuntu 22.04.5 LTS +Time: Tue Jul 7 09:19:24 2026 EDT elapsed time: 3.161848 seconds (0d 0h 0m 3s) + +--------------- T H R E A D --------------- + +Current thread (0x00007f7cd0016000): JavaThread "main" [_thread_in_native, id=1449709, stack(0x00007f7cd785d000,0x00007f7cd795d000)] + +Stack: [0x00007f7cd785d000,0x00007f7cd795d000], sp=0x00007f7cd7958910, free space=1006k +Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code) +C [libcuopt.so+0x59fc00] cuopt::linear_programming::problem_and_stream_view_t::~problem_and_stream_view_t()+0x30 + +Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) +j com.nvidia.cuopt.linearprogramming.NativeCuOpt.destroyProblem(J)V+0 +j com.nvidia.cuopt.linearprogramming.DataModel$NativeHandle.run()V+13 +J 724 c1 jdk.internal.ref.CleanerImpl$PhantomCleanableRef.performCleanup()V java.base@11.0.24 (10 bytes) @ 0x00007f7cb90637f4 [0x00007f7cb90636c0+0x0000000000000134] +J 723 c1 jdk.internal.ref.PhantomCleanable.clean()V java.base@11.0.24 (16 bytes) @ 0x00007f7cb9063d3c [0x00007f7cb9063b60+0x00000000000001dc] +j com.nvidia.cuopt.linearprogramming.DataModel.close()V+4 +j com.nvidia.cuopt.linearprogramming.NativeIntegrationTest.mutableDataModelExposesPythonMetadataAndQuadraticFields()V+576 +v ~StubRoutines::call_stub +j jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+0 java.base@11.0.24 +j jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+100 java.base@11.0.24 +j jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+6 java.base@11.0.24 +j java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+59 java.base@11.0.24 +j org.junit.platform.commons.util.ReflectionUtils.invokeMethod(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+42 +j org.junit.jupiter.engine.execution.MethodInvocation.proceed()Ljava/lang/Object;+16 +j org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed()Ljava/lang/Object;+8 +j org.junit.jupiter.engine.extension.TimeoutExtension.intercept(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/TimeoutDuration;Lorg/junit/jupiter/engine/extension/TimeoutExtension$TimeoutProvider;)Ljava/lang/Object;+28 +j org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/TimeoutExtension$TimeoutProvider;)Ljava/lang/Object;+31 +j org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)V+9 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda$189.apply(Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)V+5 +j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(Lorg/junit/jupiter/engine/execution/InterceptingExecutableInvoker$ReflectiveInterceptorCall$VoidMethodInterceptorCall;Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)Ljava/lang/Void;+6 +j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall$$Lambda$190.apply(Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)Ljava/lang/Object;+9 +j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(Lorg/junit/jupiter/engine/execution/InterceptingExecutableInvoker$ReflectiveInterceptorCall;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;)Ljava/lang/Object;+6 +j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$$Lambda$378.apply(Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;)Ljava/lang/Object;+14 +j org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed()Ljava/lang/Object;+12 +j org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;)Ljava/lang/Object;+1 +j org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/engine/execution/InvocationInterceptorChain$InterceptorCall;Ljava/util/List;)Ljava/lang/Object;+24 +j org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/engine/execution/InvocationInterceptorChain$InterceptorCall;)Ljava/lang/Object;+31 +j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/engine/execution/InterceptingExecutableInvoker$ReflectiveInterceptorCall;)Ljava/lang/Object;+15 +j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(Ljava/lang/reflect/Method;Ljava/lang/Object;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/engine/execution/InterceptingExecutableInvoker$ReflectiveInterceptorCall;)Ljava/lang/Object;+55 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$8(Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)V+28 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda$399.execute()V+12 +j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)V+21 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;+44 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;+6 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6()V+79 +j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$297.execute()V+4 +j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+15 +j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$296.invoke(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+5 +j org.junit.platform.engine.support.hierarchical.Node.around(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$Invocation;)V+2 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9()V+14 +j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$295.execute()V+4 +j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively()V+31 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.execute()V+55 +j org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService$$Lambda$301.accept(Ljava/lang/Object;)V+4 +j java.util.ArrayList.forEach(Ljava/util/function/Consumer;)V+46 java.base@11.0.24 +j org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(Ljava/util/List;)V+6 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6()V+116 +j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$297.execute()V+4 +j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+15 +j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$296.invoke(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+5 +j org.junit.platform.engine.support.hierarchical.Node.around(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$Invocation;)V+2 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9()V+14 +j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$295.execute()V+4 +j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively()V+31 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.execute()V+55 +j org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService$$Lambda$301.accept(Ljava/lang/Object;)V+4 +j java.util.ArrayList.forEach(Ljava/util/function/Consumer;)V+46 java.base@11.0.24 +j org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(Ljava/util/List;)V+6 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6()V+116 +j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$297.execute()V+4 +j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+15 +j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$296.invoke(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+5 +j org.junit.platform.engine.support.hierarchical.Node.around(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$Invocation;)V+2 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9()V+14 +j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$295.execute()V+4 +j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively()V+31 +j org.junit.platform.engine.support.hierarchical.NodeTestTask.execute()V+55 +j org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(Lorg/junit/platform/engine/support/hierarchical/HierarchicalTestExecutorService$TestTask;)Ljava/util/concurrent/Future;+1 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute()Ljava/util/concurrent/Future;+74 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(Lorg/junit/platform/engine/ExecutionRequest;)V+31 +j org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(Lorg/junit/platform/engine/TestDescriptor;Lorg/junit/platform/engine/EngineExecutionListener;Lorg/junit/platform/engine/ConfigurationParameters;Lorg/junit/platform/engine/TestEngine;)V+24 +j org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(Lorg/junit/platform/launcher/core/LauncherDiscoveryResult;Lorg/junit/platform/engine/EngineExecutionListener;)V+115 +j org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(Lorg/junit/platform/launcher/core/InternalTestPlan;Lorg/junit/platform/engine/EngineExecutionListener;Lorg/junit/platform/launcher/TestExecutionListener;)V+55 +j org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(Lorg/junit/platform/launcher/core/InternalTestPlan;Lorg/junit/platform/launcher/TestExecutionListener;)V+6 +j org.junit.platform.launcher.core.EngineExecutionOrchestrator$$Lambda$243.accept(Ljava/lang/Object;)V+12 +j org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(Lorg/junit/platform/engine/ConfigurationParameters;Lorg/junit/platform/launcher/core/ListenerRegistry;Ljava/util/function/Consumer;)V+51 +j org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(Lorg/junit/platform/launcher/core/InternalTestPlan;[Lorg/junit/platform/launcher/TestExecutionListener;)V+23 +j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/launcher/core/InternalTestPlan;[Lorg/junit/platform/launcher/TestExecutionListener;)V+6 +j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;[Lorg/junit/platform/launcher/TestExecutionListener;)V+34 +j org.junit.platform.launcher.core.DelegatingLauncher.execute(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;[Lorg/junit/platform/launcher/TestExecutionListener;)V+6 +j org.apache.maven.surefire.junitplatform.LazyLauncher.execute(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;[Lorg/junit/platform/launcher/TestExecutionListener;)V+6 +j org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.execute(Lorg/apache/maven/surefire/api/util/TestsToRun;Lorg/apache/maven/surefire/junitplatform/RunListenerAdapter;)V+70 +j org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(Lorg/apache/maven/surefire/api/util/TestsToRun;Lorg/apache/maven/surefire/junitplatform/RunListenerAdapter;)V+3 +j org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(Ljava/lang/Object;)Lorg/apache/maven/surefire/api/suite/RunResult;+95 +j org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess()V+8 +j org.apache.maven.surefire.booter.ForkedBooter.execute()V+1 +j org.apache.maven.surefire.booter.ForkedBooter.run(Lorg/apache/maven/surefire/booter/ForkedBooter;[Ljava/lang/String;)V+27 +j org.apache.maven.surefire.booter.ForkedBooter.main([Ljava/lang/String;)V+10 +v ~StubRoutines::call_stub + +siginfo: si_signo: 7 (SIGBUS), si_code: 128 (SI_KERNEL), si_addr: 0x0000000000000000 + +Register to memory mapping: + +RAX=0x0 is NULL +RBX=0x00007f7cd1fe4c80 points into unknown readable memory: 0x00007f7b00000000 | 00 00 00 00 7b 7f 00 00 +RCX=0x0000000000000060 is an unknown value +RDX=0x00007f7cd0000090 points into unknown readable memory: 0x00007f7cd3fe30c0 | c0 30 fe d3 7c 7f 00 00 +RSP=0x00007f7cd7958910 is pointing into the stack for thread: 0x00007f7cd0016000 +RBP=0x2f676e616c2f6176 is an unknown value +RSI=0x0 is NULL +RDI=0x0 is NULL +R8 =0x00007f7cd1039da0 points into unknown readable memory: 0x0000000000000001 | 01 00 00 00 00 00 00 00 +R9 =0x0 is NULL +R10=0x00007f7cd1068e98 points into unknown readable memory: 0x00007f7c0540bd70 | 70 bd 40 05 7c 7f 00 00 +R11=0xcc81f13a041e411a is an unknown value +R12=0x00007f7cd90606d0: __pthread_key_create+0x0000000000000000 in /lib/x86_64-linux-gnu/libc.so.6 at 0x00007f7cd8fca000 +R13=0x0000000000000004 is an unknown value +R14=0x00007f7cd7958a18 is pointing into the stack for thread: 0x00007f7cd0016000 +R15=0x00007f7cd0016000 is a thread + + +Registers: +RAX=0x0000000000000000, RBX=0x00007f7cd1fe4c80, RCX=0x0000000000000060, RDX=0x00007f7cd0000090 +RSP=0x00007f7cd7958910, RBP=0x2f676e616c2f6176, RSI=0x0000000000000000, RDI=0x0000000000000000 +R8 =0x00007f7cd1039da0, R9 =0x0000000000000000, R10=0x00007f7cd1068e98, R11=0xcc81f13a041e411a +R12=0x00007f7cd90606d0, R13=0x0000000000000004, R14=0x00007f7cd7958a18, R15=0x00007f7cd0016000 +RIP=0x00007f7c3f060c00, EFLAGS=0x0000000000010202, CSGSFS=0x002b000000000033, ERR=0x0000000000000000 + TRAPNO=0x000000000000000c + +Top of Stack: (sp=0x00007f7cd7958910) +0x00007f7cd7958910: 00007f7cd0016000 00007f7cd7958958 +0x00007f7cd7958920: 00007f7cd1fe4c80 00007f7c3f060cce +0x00007f7cd7958930: 00007f7ca5f50040 00007f7cd1fe4c80 +0x00007f7cd7958940: 00007f7cd2b1feb0 00007f7cac076ff8 + +Instructions: (pc=0x00007f7c3f060c00) +0x00007f7c3f060b00: 00 eb d6 0f 1f 44 00 00 48 8b 07 ff 90 38 01 00 +0x00007f7c3f060b10: 00 eb c6 0f 1f 44 00 00 48 8b 07 ff 90 30 01 00 +0x00007f7c3f060b20: 00 eb b6 0f 1f 44 00 00 b8 01 00 00 00 5b c3 48 +0x00007f7c3f060b30: 89 c7 48 89 d0 e9 33 3a d0 ff 66 0f 1f 44 00 00 +0x00007f7c3f060b40: 48 85 d2 74 3b 48 85 ff 74 36 80 3f 00 75 31 48 +0x00007f7c3f060b50: 8b 7f 10 48 85 ff 74 28 53 48 89 d3 83 fe 0c 74 +0x00007f7c3f060b60: 4f 83 fe 10 74 3a 83 fe 0b 75 25 48 8b 07 ff 90 +0x00007f7c3f060b70: 40 01 00 00 89 03 31 c0 5b c3 66 0f 1f 44 00 00 +0x00007f7c3f060b80: b8 01 00 00 00 c3 66 2e 0f 1f 84 00 00 00 00 00 +0x00007f7c3f060b90: b8 01 00 00 00 5b c3 66 0f 1f 84 00 00 00 00 00 +0x00007f7c3f060ba0: 48 8b 07 ff 90 68 01 00 00 eb c9 0f 1f 44 00 00 +0x00007f7c3f060bb0: 48 8b 07 ff 90 48 01 00 00 eb b9 48 89 c7 48 89 +0x00007f7c3f060bc0: d0 e9 c8 39 d0 ff 66 2e 0f 1f 84 00 00 00 00 00 +0x00007f7c3f060bd0: 55 53 48 89 fb 48 83 ec 08 48 8b 7f 08 48 85 ff +0x00007f7c3f060be0: 74 06 48 8b 07 ff 50 08 48 8b 7b 10 48 85 ff 74 +0x00007f7c3f060bf0: 06 48 8b 07 ff 50 08 48 8b 6b 50 48 85 ed 74 47 +0x00007f7c3f060c00: 48 8b 45 00 48 8d 15 a5 da e1 ff 48 8b 40 08 48 +0x00007f7c3f060c10: 39 d0 0f 85 88 00 00 00 48 8b 05 99 70 c4 00 48 +0x00007f7c3f060c20: 8d 7d 48 48 83 c0 10 48 89 45 00 e8 d0 e0 e1 ff +0x00007f7c3f060c30: 48 8d 7d 30 e8 e7 df e1 ff be 60 00 00 00 48 89 +0x00007f7c3f060c40: ef ff 15 21 e1 c3 00 48 8b 7b 48 48 85 ff 74 0b +0x00007f7c3f060c50: be 08 00 00 00 ff 15 0d e1 c3 00 48 8b 7b 30 48 +0x00007f7c3f060c60: 85 ff 74 0d 48 8b 73 40 48 29 fe ff 15 f7 e0 c3 +0x00007f7c3f060c70: 00 48 8b 7b 18 48 85 ff 74 16 48 8b 73 28 48 83 +0x00007f7c3f060c80: c4 08 5b 5d 48 29 fe ff 25 db e0 c3 00 0f 1f 00 +0x00007f7c3f060c90: 48 83 c4 08 5b 5d c3 66 0f 1f 84 00 00 00 00 00 +0x00007f7c3f060ca0: 48 89 ef ff d0 eb a0 66 0f 1f 84 00 00 00 00 00 +0x00007f7c3f060cb0: 48 85 ff 74 3b 55 53 48 89 fb 48 83 ec 08 48 8b +0x00007f7c3f060cc0: 2f 48 85 ed 74 1d 48 89 ef e8 02 ff ff ff be 58 +0x00007f7c3f060cd0: 00 00 00 48 89 ef ff 15 8c e0 c3 00 48 c7 03 00 +0x00007f7c3f060ce0: 00 00 00 48 83 c4 08 5b 5d c3 66 0f 1f 44 00 00 +0x00007f7c3f060cf0: c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 + + +Stack slot to memory mapping: +stack at sp + 0 slots: 0x00007f7cd0016000 is a thread +stack at sp + 1 slots: 0x00007f7cd7958958 is pointing into the stack for thread: 0x00007f7cd0016000 +stack at sp + 2 slots: 0x00007f7cd1fe4c80 points into unknown readable memory: 0x00007f7b00000000 | 00 00 00 00 7b 7f 00 00 +stack at sp + 3 slots: 0x00007f7c3f060cce: cuOptDestroyProblem+0x000000000000001e in /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so at 0x00007f7c3eac1000 +stack at sp + 4 slots: 0x00007f7ca5f50040 is pointing into metadata +stack at sp + 5 slots: 0x00007f7cd1fe4c80 points into unknown readable memory: 0x00007f7b00000000 | 00 00 00 00 7b 7f 00 00 +stack at sp + 6 slots: 0x00007f7cd2b1feb0 points into unknown readable memory: 0x00007f7b257ceebf | bf ee 7c 25 7b 7f 00 00 +stack at sp + 7 slots: 0x00007f7cac076ff8: Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_destroyProblem+0x0000000000000098 in /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so at 0x00007f7cac055000 + + +--------------- P R O C E S S --------------- + +Threads class SMR info: +_java_thread_list=0x00007f7cd368b2f0, length=16, elements={ +0x00007f7cd0016000, 0x00007f7cd0253800, 0x00007f7cd0255800, 0x00007f7cd025d800, +0x00007f7cd025f800, 0x00007f7cd0262000, 0x00007f7cd0264000, 0x00007f7cd0266000, +0x00007f7c8008c800, 0x00007f7cd0298800, 0x00007f7cd03ed000, 0x00007f7cd03fa000, +0x00007f7cd06a4000, 0x00007f7cd10a5000, 0x00007f7cd1fe1000, 0x00007f7cd2201000 +} + +Java Threads: ( => current thread ) +=>0x00007f7cd0016000 JavaThread "main" [_thread_in_native, id=1449709, stack(0x00007f7cd785d000,0x00007f7cd795d000)] + 0x00007f7cd0253800 JavaThread "Reference Handler" daemon [_thread_blocked, id=1449719, stack(0x00007f7cac28f000,0x00007f7cac38f000)] + 0x00007f7cd0255800 JavaThread "Finalizer" daemon [_thread_blocked, id=1449720, stack(0x00007f7cac18f000,0x00007f7cac28f000)] + 0x00007f7cd025d800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=1449721, stack(0x00007f7cac08f000,0x00007f7cac18f000)] + 0x00007f7cd025f800 JavaThread "Service Thread" daemon [_thread_blocked, id=1449722, stack(0x00007f7ca5700000,0x00007f7ca5800000)] + 0x00007f7cd0262000 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=1449723, stack(0x00007f7ca5600000,0x00007f7ca5700000)] + 0x00007f7cd0264000 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=1449724, stack(0x00007f7ca5500000,0x00007f7ca5600000)] + 0x00007f7cd0266000 JavaThread "Sweeper thread" daemon [_thread_blocked, id=1449725, stack(0x00007f7ca5400000,0x00007f7ca5500000)] + 0x00007f7c8008c800 JavaThread "C1 CompilerThread1" daemon [_thread_blocked, id=1449726, stack(0x00007f7ca5300000,0x00007f7ca5400000)] + 0x00007f7cd0298800 JavaThread "Common-Cleaner" daemon [_thread_blocked, id=1449728, stack(0x00007f7ca50ff000,0x00007f7ca51ff000)] + 0x00007f7cd03ed000 JavaThread "surefire-forkedjvm-stream-flusher" daemon [_thread_blocked, id=1449732, stack(0x00007f7ca4fff000,0x00007f7ca50ff000)] + 0x00007f7cd03fa000 JavaThread "surefire-forkedjvm-command-thread" daemon [_thread_in_native, id=1449733, stack(0x00007f7ca4eff000,0x00007f7ca4fff000)] + 0x00007f7cd06a4000 JavaThread "Cleaner-0" daemon [_thread_blocked, id=1449747, stack(0x00007f7ca46fa000,0x00007f7ca47fa000)] + 0x00007f7cd10a5000 JavaThread "process reaper" daemon [_thread_blocked, id=1449842, stack(0x00007f7c0730b000,0x00007f7c0732d000)] + 0x00007f7cd1fe1000 JavaThread "Cleaner-1" daemon [_thread_blocked, id=1449847, stack(0x00007f7ca4dff000,0x00007f7ca4eff000)] + 0x00007f7cd2201000 JavaThread "Cleaner-2" daemon [_thread_blocked, id=1449852, stack(0x00007f7ca4cff000,0x00007f7ca4dff000)] + +Other Threads: + 0x00007f7cd0250800 VMThread "VM Thread" [stack: 0x00007f7cac390000,0x00007f7cac490000] [id=1449718] + 0x00007f7cd0296800 WatcherThread [stack: 0x00007f7ca5200000,0x00007f7ca5300000] [id=1449727] + 0x00007f7cd0030000 GCTaskThread "GC Thread#0" [stack: 0x00007f7cd7523000,0x00007f7cd7623000] [id=1449710] + 0x00007f7c98019000 GCTaskThread "GC Thread#1" [stack: 0x00007f7ca4bff000,0x00007f7ca4cff000] [id=1449739] + 0x00007f7c9801a800 GCTaskThread "GC Thread#2" [stack: 0x00007f7ca4afe000,0x00007f7ca4bfe000] [id=1449740] + 0x00007f7c9801c000 GCTaskThread "GC Thread#3" [stack: 0x00007f7ca49fd000,0x00007f7ca4afd000] [id=1449741] + 0x00007f7c9801e000 GCTaskThread "GC Thread#4" [stack: 0x00007f7ca48fc000,0x00007f7ca49fc000] [id=1449742] + 0x00007f7c9801f800 GCTaskThread "GC Thread#5" [stack: 0x00007f7ca47fb000,0x00007f7ca48fb000] [id=1449743] + 0x00007f7cd008e000 ConcurrentGCThread "G1 Main Marker" [stack: 0x00007f7cd4bf8000,0x00007f7cd4cf8000] [id=1449711] + 0x00007f7cd008f800 ConcurrentGCThread "G1 Conc#0" [stack: 0x00007f7cd4af7000,0x00007f7cd4bf7000] [id=1449712] + 0x00007f7cd01ab000 ConcurrentGCThread "G1 Refine#0" [stack: 0x00007f7cb81ca000,0x00007f7cb82ca000] [id=1449715] + 0x00007f7cd01ac800 ConcurrentGCThread "G1 Young RemSet Sampling" [stack: 0x00007f7cb80c9000,0x00007f7cb81c9000] [id=1449716] + +Threads with active compile tasks: + +VM state:not at safepoint (normal execution) + +VM Mutex/Monitor currently owned by a thread: None + +Heap address: 0x0000000709200000, size: 3950 MB, Compressed Oops mode: Zero based, Oop shift amount: 3 +Narrow klass base: 0x0000000800000000, Narrow klass shift: 3 +Compressed class space size: 1073741824 Address: 0x0000000840000000 + +Heap: + garbage-first heap total 256000K, used 4239K [0x0000000709200000, 0x0000000800000000) + region size 1024K, 5 young (5120K), 3 survivors (3072K) + Metaspace used 7500K, capacity 9132K, committed 9216K, reserved 1056768K + class space used 905K, capacity 1238K, committed 1280K, reserved 1048576K +Heap Regions: E=young(eden), S=young(survivor), O=old, HS=humongous(starts), HC=humongous(continues), CS=collection set, F=free, A=archive, TAMS=top-at-mark-start (previous, next) +| 0|0x0000000709200000, 0x0000000709200000, 0x0000000709300000| 0%| F| |TAMS 0x0000000709200000, 0x0000000709200000| Untracked +| 1|0x0000000709300000, 0x0000000709300000, 0x0000000709400000| 0%| F| |TAMS 0x0000000709300000, 0x0000000709300000| Untracked +| 2|0x0000000709400000, 0x0000000709400000, 0x0000000709500000| 0%| F| |TAMS 0x0000000709400000, 0x0000000709400000| Untracked +| 3|0x0000000709500000, 0x0000000709500000, 0x0000000709600000| 0%| F| |TAMS 0x0000000709500000, 0x0000000709500000| Untracked +| 4|0x0000000709600000, 0x0000000709600000, 0x0000000709700000| 0%| F| |TAMS 0x0000000709600000, 0x0000000709600000| Untracked +| 5|0x0000000709700000, 0x0000000709700000, 0x0000000709800000| 0%| F| |TAMS 0x0000000709700000, 0x0000000709700000| Untracked +| 6|0x0000000709800000, 0x0000000709800000, 0x0000000709900000| 0%| F| |TAMS 0x0000000709800000, 0x0000000709800000| Untracked +| 7|0x0000000709900000, 0x0000000709900000, 0x0000000709a00000| 0%| F| |TAMS 0x0000000709900000, 0x0000000709900000| Untracked +| 8|0x0000000709a00000, 0x0000000709a00000, 0x0000000709b00000| 0%| F| |TAMS 0x0000000709a00000, 0x0000000709a00000| Untracked +| 9|0x0000000709b00000, 0x0000000709b00000, 0x0000000709c00000| 0%| F| |TAMS 0x0000000709b00000, 0x0000000709b00000| Untracked +| 10|0x0000000709c00000, 0x0000000709c00000, 0x0000000709d00000| 0%| F| |TAMS 0x0000000709c00000, 0x0000000709c00000| Untracked +| 11|0x0000000709d00000, 0x0000000709d00000, 0x0000000709e00000| 0%| F| |TAMS 0x0000000709d00000, 0x0000000709d00000| Untracked +| 12|0x0000000709e00000, 0x0000000709e00000, 0x0000000709f00000| 0%| F| |TAMS 0x0000000709e00000, 0x0000000709e00000| Untracked +| 13|0x0000000709f00000, 0x0000000709f00000, 0x000000070a000000| 0%| F| |TAMS 0x0000000709f00000, 0x0000000709f00000| Untracked +| 14|0x000000070a000000, 0x000000070a000000, 0x000000070a100000| 0%| F| |TAMS 0x000000070a000000, 0x000000070a000000| Untracked +| 15|0x000000070a100000, 0x000000070a100000, 0x000000070a200000| 0%| F| |TAMS 0x000000070a100000, 0x000000070a100000| Untracked +| 16|0x000000070a200000, 0x000000070a200000, 0x000000070a300000| 0%| F| |TAMS 0x000000070a200000, 0x000000070a200000| Untracked +| 17|0x000000070a300000, 0x000000070a300000, 0x000000070a400000| 0%| F| |TAMS 0x000000070a300000, 0x000000070a300000| Untracked +| 18|0x000000070a400000, 0x000000070a400000, 0x000000070a500000| 0%| F| |TAMS 0x000000070a400000, 0x000000070a400000| Untracked +| 19|0x000000070a500000, 0x000000070a500000, 0x000000070a600000| 0%| F| |TAMS 0x000000070a500000, 0x000000070a500000| Untracked +| 20|0x000000070a600000, 0x000000070a600000, 0x000000070a700000| 0%| F| |TAMS 0x000000070a600000, 0x000000070a600000| Untracked +| 21|0x000000070a700000, 0x000000070a700000, 0x000000070a800000| 0%| F| |TAMS 0x000000070a700000, 0x000000070a700000| Untracked +| 22|0x000000070a800000, 0x000000070a800000, 0x000000070a900000| 0%| F| |TAMS 0x000000070a800000, 0x000000070a800000| Untracked +| 23|0x000000070a900000, 0x000000070a900000, 0x000000070aa00000| 0%| F| |TAMS 0x000000070a900000, 0x000000070a900000| Untracked +| 24|0x000000070aa00000, 0x000000070aa00000, 0x000000070ab00000| 0%| F| |TAMS 0x000000070aa00000, 0x000000070aa00000| Untracked +| 25|0x000000070ab00000, 0x000000070ab00000, 0x000000070ac00000| 0%| F| |TAMS 0x000000070ab00000, 0x000000070ab00000| Untracked +| 26|0x000000070ac00000, 0x000000070ac00000, 0x000000070ad00000| 0%| F| |TAMS 0x000000070ac00000, 0x000000070ac00000| Untracked +| 27|0x000000070ad00000, 0x000000070ad00000, 0x000000070ae00000| 0%| F| |TAMS 0x000000070ad00000, 0x000000070ad00000| Untracked +| 28|0x000000070ae00000, 0x000000070ae00000, 0x000000070af00000| 0%| F| |TAMS 0x000000070ae00000, 0x000000070ae00000| Untracked +| 29|0x000000070af00000, 0x000000070af00000, 0x000000070b000000| 0%| F| |TAMS 0x000000070af00000, 0x000000070af00000| Untracked +| 30|0x000000070b000000, 0x000000070b000000, 0x000000070b100000| 0%| F| |TAMS 0x000000070b000000, 0x000000070b000000| Untracked +| 31|0x000000070b100000, 0x000000070b100000, 0x000000070b200000| 0%| F| |TAMS 0x000000070b100000, 0x000000070b100000| Untracked +| 32|0x000000070b200000, 0x000000070b200000, 0x000000070b300000| 0%| F| |TAMS 0x000000070b200000, 0x000000070b200000| Untracked +| 33|0x000000070b300000, 0x000000070b300000, 0x000000070b400000| 0%| F| |TAMS 0x000000070b300000, 0x000000070b300000| Untracked +| 34|0x000000070b400000, 0x000000070b400000, 0x000000070b500000| 0%| F| |TAMS 0x000000070b400000, 0x000000070b400000| Untracked +| 35|0x000000070b500000, 0x000000070b500000, 0x000000070b600000| 0%| F| |TAMS 0x000000070b500000, 0x000000070b500000| Untracked +| 36|0x000000070b600000, 0x000000070b600000, 0x000000070b700000| 0%| F| |TAMS 0x000000070b600000, 0x000000070b600000| Untracked +| 37|0x000000070b700000, 0x000000070b700000, 0x000000070b800000| 0%| F| |TAMS 0x000000070b700000, 0x000000070b700000| Untracked +| 38|0x000000070b800000, 0x000000070b800000, 0x000000070b900000| 0%| F| |TAMS 0x000000070b800000, 0x000000070b800000| Untracked +| 39|0x000000070b900000, 0x000000070b900000, 0x000000070ba00000| 0%| F| |TAMS 0x000000070b900000, 0x000000070b900000| Untracked +| 40|0x000000070ba00000, 0x000000070ba00000, 0x000000070bb00000| 0%| F| |TAMS 0x000000070ba00000, 0x000000070ba00000| Untracked +| 41|0x000000070bb00000, 0x000000070bb00000, 0x000000070bc00000| 0%| F| |TAMS 0x000000070bb00000, 0x000000070bb00000| Untracked +| 42|0x000000070bc00000, 0x000000070bc00000, 0x000000070bd00000| 0%| F| |TAMS 0x000000070bc00000, 0x000000070bc00000| Untracked +| 43|0x000000070bd00000, 0x000000070bd00000, 0x000000070be00000| 0%| F| |TAMS 0x000000070bd00000, 0x000000070bd00000| Untracked +| 44|0x000000070be00000, 0x000000070be00000, 0x000000070bf00000| 0%| F| |TAMS 0x000000070be00000, 0x000000070be00000| Untracked +| 45|0x000000070bf00000, 0x000000070bf00000, 0x000000070c000000| 0%| F| |TAMS 0x000000070bf00000, 0x000000070bf00000| Untracked +| 46|0x000000070c000000, 0x000000070c000000, 0x000000070c100000| 0%| F| |TAMS 0x000000070c000000, 0x000000070c000000| Untracked +| 47|0x000000070c100000, 0x000000070c100000, 0x000000070c200000| 0%| F| |TAMS 0x000000070c100000, 0x000000070c100000| Untracked +| 48|0x000000070c200000, 0x000000070c200000, 0x000000070c300000| 0%| F| |TAMS 0x000000070c200000, 0x000000070c200000| Untracked +| 49|0x000000070c300000, 0x000000070c300000, 0x000000070c400000| 0%| F| |TAMS 0x000000070c300000, 0x000000070c300000| Untracked +| 50|0x000000070c400000, 0x000000070c400000, 0x000000070c500000| 0%| F| |TAMS 0x000000070c400000, 0x000000070c400000| Untracked +| 51|0x000000070c500000, 0x000000070c500000, 0x000000070c600000| 0%| F| |TAMS 0x000000070c500000, 0x000000070c500000| Untracked +| 52|0x000000070c600000, 0x000000070c600000, 0x000000070c700000| 0%| F| |TAMS 0x000000070c600000, 0x000000070c600000| Untracked +| 53|0x000000070c700000, 0x000000070c700000, 0x000000070c800000| 0%| F| |TAMS 0x000000070c700000, 0x000000070c700000| Untracked +| 54|0x000000070c800000, 0x000000070c800000, 0x000000070c900000| 0%| F| |TAMS 0x000000070c800000, 0x000000070c800000| Untracked +| 55|0x000000070c900000, 0x000000070c900000, 0x000000070ca00000| 0%| F| |TAMS 0x000000070c900000, 0x000000070c900000| Untracked +| 56|0x000000070ca00000, 0x000000070ca00000, 0x000000070cb00000| 0%| F| |TAMS 0x000000070ca00000, 0x000000070ca00000| Untracked +| 57|0x000000070cb00000, 0x000000070cb00000, 0x000000070cc00000| 0%| F| |TAMS 0x000000070cb00000, 0x000000070cb00000| Untracked +| 58|0x000000070cc00000, 0x000000070cc00000, 0x000000070cd00000| 0%| F| |TAMS 0x000000070cc00000, 0x000000070cc00000| Untracked +| 59|0x000000070cd00000, 0x000000070cd00000, 0x000000070ce00000| 0%| F| |TAMS 0x000000070cd00000, 0x000000070cd00000| Untracked +| 60|0x000000070ce00000, 0x000000070ce00000, 0x000000070cf00000| 0%| F| |TAMS 0x000000070ce00000, 0x000000070ce00000| Untracked +| 61|0x000000070cf00000, 0x000000070cf00000, 0x000000070d000000| 0%| F| |TAMS 0x000000070cf00000, 0x000000070cf00000| Untracked +| 62|0x000000070d000000, 0x000000070d000000, 0x000000070d100000| 0%| F| |TAMS 0x000000070d000000, 0x000000070d000000| Untracked +| 63|0x000000070d100000, 0x000000070d100000, 0x000000070d200000| 0%| F| |TAMS 0x000000070d100000, 0x000000070d100000| Untracked +| 64|0x000000070d200000, 0x000000070d200000, 0x000000070d300000| 0%| F| |TAMS 0x000000070d200000, 0x000000070d200000| Untracked +| 65|0x000000070d300000, 0x000000070d300000, 0x000000070d400000| 0%| F| |TAMS 0x000000070d300000, 0x000000070d300000| Untracked +| 66|0x000000070d400000, 0x000000070d400000, 0x000000070d500000| 0%| F| |TAMS 0x000000070d400000, 0x000000070d400000| Untracked +| 67|0x000000070d500000, 0x000000070d500000, 0x000000070d600000| 0%| F| |TAMS 0x000000070d500000, 0x000000070d500000| Untracked +| 68|0x000000070d600000, 0x000000070d600000, 0x000000070d700000| 0%| F| |TAMS 0x000000070d600000, 0x000000070d600000| Untracked +| 69|0x000000070d700000, 0x000000070d700000, 0x000000070d800000| 0%| F| |TAMS 0x000000070d700000, 0x000000070d700000| Untracked +| 70|0x000000070d800000, 0x000000070d800000, 0x000000070d900000| 0%| F| |TAMS 0x000000070d800000, 0x000000070d800000| Untracked +| 71|0x000000070d900000, 0x000000070d900000, 0x000000070da00000| 0%| F| |TAMS 0x000000070d900000, 0x000000070d900000| Untracked +| 72|0x000000070da00000, 0x000000070da00000, 0x000000070db00000| 0%| F| |TAMS 0x000000070da00000, 0x000000070da00000| Untracked +| 73|0x000000070db00000, 0x000000070db00000, 0x000000070dc00000| 0%| F| |TAMS 0x000000070db00000, 0x000000070db00000| Untracked +| 74|0x000000070dc00000, 0x000000070dc00000, 0x000000070dd00000| 0%| F| |TAMS 0x000000070dc00000, 0x000000070dc00000| Untracked +| 75|0x000000070dd00000, 0x000000070dd00000, 0x000000070de00000| 0%| F| |TAMS 0x000000070dd00000, 0x000000070dd00000| Untracked +| 76|0x000000070de00000, 0x000000070de00000, 0x000000070df00000| 0%| F| |TAMS 0x000000070de00000, 0x000000070de00000| Untracked +| 77|0x000000070df00000, 0x000000070df00000, 0x000000070e000000| 0%| F| |TAMS 0x000000070df00000, 0x000000070df00000| Untracked +| 78|0x000000070e000000, 0x000000070e000000, 0x000000070e100000| 0%| F| |TAMS 0x000000070e000000, 0x000000070e000000| Untracked +| 79|0x000000070e100000, 0x000000070e100000, 0x000000070e200000| 0%| F| |TAMS 0x000000070e100000, 0x000000070e100000| Untracked +| 80|0x000000070e200000, 0x000000070e200000, 0x000000070e300000| 0%| F| |TAMS 0x000000070e200000, 0x000000070e200000| Untracked +| 81|0x000000070e300000, 0x000000070e300000, 0x000000070e400000| 0%| F| |TAMS 0x000000070e300000, 0x000000070e300000| Untracked +| 82|0x000000070e400000, 0x000000070e400000, 0x000000070e500000| 0%| F| |TAMS 0x000000070e400000, 0x000000070e400000| Untracked +| 83|0x000000070e500000, 0x000000070e500000, 0x000000070e600000| 0%| F| |TAMS 0x000000070e500000, 0x000000070e500000| Untracked +| 84|0x000000070e600000, 0x000000070e600000, 0x000000070e700000| 0%| F| |TAMS 0x000000070e600000, 0x000000070e600000| Untracked +| 85|0x000000070e700000, 0x000000070e700000, 0x000000070e800000| 0%| F| |TAMS 0x000000070e700000, 0x000000070e700000| Untracked +| 86|0x000000070e800000, 0x000000070e800000, 0x000000070e900000| 0%| F| |TAMS 0x000000070e800000, 0x000000070e800000| Untracked +| 87|0x000000070e900000, 0x000000070e900000, 0x000000070ea00000| 0%| F| |TAMS 0x000000070e900000, 0x000000070e900000| Untracked +| 88|0x000000070ea00000, 0x000000070ea00000, 0x000000070eb00000| 0%| F| |TAMS 0x000000070ea00000, 0x000000070ea00000| Untracked +| 89|0x000000070eb00000, 0x000000070eb00000, 0x000000070ec00000| 0%| F| |TAMS 0x000000070eb00000, 0x000000070eb00000| Untracked +| 90|0x000000070ec00000, 0x000000070ec00000, 0x000000070ed00000| 0%| F| |TAMS 0x000000070ec00000, 0x000000070ec00000| Untracked +| 91|0x000000070ed00000, 0x000000070ed00000, 0x000000070ee00000| 0%| F| |TAMS 0x000000070ed00000, 0x000000070ed00000| Untracked +| 92|0x000000070ee00000, 0x000000070ee00000, 0x000000070ef00000| 0%| F| |TAMS 0x000000070ee00000, 0x000000070ee00000| Untracked +| 93|0x000000070ef00000, 0x000000070ef00000, 0x000000070f000000| 0%| F| |TAMS 0x000000070ef00000, 0x000000070ef00000| Untracked +| 94|0x000000070f000000, 0x000000070f000000, 0x000000070f100000| 0%| F| |TAMS 0x000000070f000000, 0x000000070f000000| Untracked +| 95|0x000000070f100000, 0x000000070f100000, 0x000000070f200000| 0%| F| |TAMS 0x000000070f100000, 0x000000070f100000| Untracked +| 96|0x000000070f200000, 0x000000070f200000, 0x000000070f300000| 0%| F| |TAMS 0x000000070f200000, 0x000000070f200000| Untracked +| 97|0x000000070f300000, 0x000000070f300000, 0x000000070f400000| 0%| F| |TAMS 0x000000070f300000, 0x000000070f300000| Untracked +| 98|0x000000070f400000, 0x000000070f400000, 0x000000070f500000| 0%| F| |TAMS 0x000000070f400000, 0x000000070f400000| Untracked +| 99|0x000000070f500000, 0x000000070f500000, 0x000000070f600000| 0%| F| |TAMS 0x000000070f500000, 0x000000070f500000| Untracked +| 100|0x000000070f600000, 0x000000070f600000, 0x000000070f700000| 0%| F| |TAMS 0x000000070f600000, 0x000000070f600000| Untracked +| 101|0x000000070f700000, 0x000000070f700000, 0x000000070f800000| 0%| F| |TAMS 0x000000070f700000, 0x000000070f700000| Untracked +| 102|0x000000070f800000, 0x000000070f800000, 0x000000070f900000| 0%| F| |TAMS 0x000000070f800000, 0x000000070f800000| Untracked +| 103|0x000000070f900000, 0x000000070f900000, 0x000000070fa00000| 0%| F| |TAMS 0x000000070f900000, 0x000000070f900000| Untracked +| 104|0x000000070fa00000, 0x000000070fa00000, 0x000000070fb00000| 0%| F| |TAMS 0x000000070fa00000, 0x000000070fa00000| Untracked +| 105|0x000000070fb00000, 0x000000070fb00000, 0x000000070fc00000| 0%| F| |TAMS 0x000000070fb00000, 0x000000070fb00000| Untracked +| 106|0x000000070fc00000, 0x000000070fc00000, 0x000000070fd00000| 0%| F| |TAMS 0x000000070fc00000, 0x000000070fc00000| Untracked +| 107|0x000000070fd00000, 0x000000070fd00000, 0x000000070fe00000| 0%| F| |TAMS 0x000000070fd00000, 0x000000070fd00000| Untracked +| 108|0x000000070fe00000, 0x000000070fe00000, 0x000000070ff00000| 0%| F| |TAMS 0x000000070fe00000, 0x000000070fe00000| Untracked +| 109|0x000000070ff00000, 0x000000070ff00000, 0x0000000710000000| 0%| F| |TAMS 0x000000070ff00000, 0x000000070ff00000| Untracked +| 110|0x0000000710000000, 0x0000000710000000, 0x0000000710100000| 0%| F| |TAMS 0x0000000710000000, 0x0000000710000000| Untracked +| 111|0x0000000710100000, 0x0000000710100000, 0x0000000710200000| 0%| F| |TAMS 0x0000000710100000, 0x0000000710100000| Untracked +| 112|0x0000000710200000, 0x0000000710200000, 0x0000000710300000| 0%| F| |TAMS 0x0000000710200000, 0x0000000710200000| Untracked +| 113|0x0000000710300000, 0x0000000710300000, 0x0000000710400000| 0%| F| |TAMS 0x0000000710300000, 0x0000000710300000| Untracked +| 114|0x0000000710400000, 0x0000000710400000, 0x0000000710500000| 0%| F| |TAMS 0x0000000710400000, 0x0000000710400000| Untracked +| 115|0x0000000710500000, 0x0000000710500000, 0x0000000710600000| 0%| F| |TAMS 0x0000000710500000, 0x0000000710500000| Untracked +| 116|0x0000000710600000, 0x0000000710600000, 0x0000000710700000| 0%| F| |TAMS 0x0000000710600000, 0x0000000710600000| Untracked +| 117|0x0000000710700000, 0x0000000710700000, 0x0000000710800000| 0%| F| |TAMS 0x0000000710700000, 0x0000000710700000| Untracked +| 118|0x0000000710800000, 0x0000000710800000, 0x0000000710900000| 0%| F| |TAMS 0x0000000710800000, 0x0000000710800000| Untracked +| 119|0x0000000710900000, 0x0000000710900000, 0x0000000710a00000| 0%| F| |TAMS 0x0000000710900000, 0x0000000710900000| Untracked +| 120|0x0000000710a00000, 0x0000000710a00000, 0x0000000710b00000| 0%| F| |TAMS 0x0000000710a00000, 0x0000000710a00000| Untracked +| 121|0x0000000710b00000, 0x0000000710b00000, 0x0000000710c00000| 0%| F| |TAMS 0x0000000710b00000, 0x0000000710b00000| Untracked +| 122|0x0000000710c00000, 0x0000000710c00000, 0x0000000710d00000| 0%| F| |TAMS 0x0000000710c00000, 0x0000000710c00000| Untracked +| 123|0x0000000710d00000, 0x0000000710d00000, 0x0000000710e00000| 0%| F| |TAMS 0x0000000710d00000, 0x0000000710d00000| Untracked +| 124|0x0000000710e00000, 0x0000000710e00000, 0x0000000710f00000| 0%| F| |TAMS 0x0000000710e00000, 0x0000000710e00000| Untracked +| 125|0x0000000710f00000, 0x0000000710f00000, 0x0000000711000000| 0%| F| |TAMS 0x0000000710f00000, 0x0000000710f00000| Untracked +| 126|0x0000000711000000, 0x0000000711000000, 0x0000000711100000| 0%| F| |TAMS 0x0000000711000000, 0x0000000711000000| Untracked +| 127|0x0000000711100000, 0x0000000711100000, 0x0000000711200000| 0%| F| |TAMS 0x0000000711100000, 0x0000000711100000| Untracked +| 128|0x0000000711200000, 0x0000000711200000, 0x0000000711300000| 0%| F| |TAMS 0x0000000711200000, 0x0000000711200000| Untracked +| 129|0x0000000711300000, 0x0000000711300000, 0x0000000711400000| 0%| F| |TAMS 0x0000000711300000, 0x0000000711300000| Untracked +| 130|0x0000000711400000, 0x0000000711400000, 0x0000000711500000| 0%| F| |TAMS 0x0000000711400000, 0x0000000711400000| Untracked +| 131|0x0000000711500000, 0x0000000711500000, 0x0000000711600000| 0%| F| |TAMS 0x0000000711500000, 0x0000000711500000| Untracked +| 132|0x0000000711600000, 0x0000000711600000, 0x0000000711700000| 0%| F| |TAMS 0x0000000711600000, 0x0000000711600000| Untracked +| 133|0x0000000711700000, 0x0000000711700000, 0x0000000711800000| 0%| F| |TAMS 0x0000000711700000, 0x0000000711700000| Untracked +| 134|0x0000000711800000, 0x0000000711800000, 0x0000000711900000| 0%| F| |TAMS 0x0000000711800000, 0x0000000711800000| Untracked +| 135|0x0000000711900000, 0x0000000711900000, 0x0000000711a00000| 0%| F| |TAMS 0x0000000711900000, 0x0000000711900000| Untracked +| 136|0x0000000711a00000, 0x0000000711a00000, 0x0000000711b00000| 0%| F| |TAMS 0x0000000711a00000, 0x0000000711a00000| Untracked +| 137|0x0000000711b00000, 0x0000000711b00000, 0x0000000711c00000| 0%| F| |TAMS 0x0000000711b00000, 0x0000000711b00000| Untracked +| 138|0x0000000711c00000, 0x0000000711c00000, 0x0000000711d00000| 0%| F| |TAMS 0x0000000711c00000, 0x0000000711c00000| Untracked +| 139|0x0000000711d00000, 0x0000000711d00000, 0x0000000711e00000| 0%| F| |TAMS 0x0000000711d00000, 0x0000000711d00000| Untracked +| 140|0x0000000711e00000, 0x0000000711e00000, 0x0000000711f00000| 0%| F| |TAMS 0x0000000711e00000, 0x0000000711e00000| Untracked +| 141|0x0000000711f00000, 0x0000000711f00000, 0x0000000712000000| 0%| F| |TAMS 0x0000000711f00000, 0x0000000711f00000| Untracked +| 142|0x0000000712000000, 0x0000000712000000, 0x0000000712100000| 0%| F| |TAMS 0x0000000712000000, 0x0000000712000000| Untracked +| 143|0x0000000712100000, 0x0000000712100000, 0x0000000712200000| 0%| F| |TAMS 0x0000000712100000, 0x0000000712100000| Untracked +| 144|0x0000000712200000, 0x0000000712200000, 0x0000000712300000| 0%| F| |TAMS 0x0000000712200000, 0x0000000712200000| Untracked +| 145|0x0000000712300000, 0x0000000712300000, 0x0000000712400000| 0%| F| |TAMS 0x0000000712300000, 0x0000000712300000| Untracked +| 146|0x0000000712400000, 0x0000000712400000, 0x0000000712500000| 0%| F| |TAMS 0x0000000712400000, 0x0000000712400000| Untracked +| 147|0x0000000712500000, 0x0000000712500000, 0x0000000712600000| 0%| F| |TAMS 0x0000000712500000, 0x0000000712500000| Untracked +| 148|0x0000000712600000, 0x0000000712600000, 0x0000000712700000| 0%| F| |TAMS 0x0000000712600000, 0x0000000712600000| Untracked +| 149|0x0000000712700000, 0x0000000712700000, 0x0000000712800000| 0%| F| |TAMS 0x0000000712700000, 0x0000000712700000| Untracked +| 150|0x0000000712800000, 0x0000000712800000, 0x0000000712900000| 0%| F| |TAMS 0x0000000712800000, 0x0000000712800000| Untracked +| 151|0x0000000712900000, 0x0000000712900000, 0x0000000712a00000| 0%| F| |TAMS 0x0000000712900000, 0x0000000712900000| Untracked +| 152|0x0000000712a00000, 0x0000000712a00000, 0x0000000712b00000| 0%| F| |TAMS 0x0000000712a00000, 0x0000000712a00000| Untracked +| 153|0x0000000712b00000, 0x0000000712b00000, 0x0000000712c00000| 0%| F| |TAMS 0x0000000712b00000, 0x0000000712b00000| Untracked +| 154|0x0000000712c00000, 0x0000000712c00000, 0x0000000712d00000| 0%| F| |TAMS 0x0000000712c00000, 0x0000000712c00000| Untracked +| 155|0x0000000712d00000, 0x0000000712d00000, 0x0000000712e00000| 0%| F| |TAMS 0x0000000712d00000, 0x0000000712d00000| Untracked +| 156|0x0000000712e00000, 0x0000000712e00000, 0x0000000712f00000| 0%| F| |TAMS 0x0000000712e00000, 0x0000000712e00000| Untracked +| 157|0x0000000712f00000, 0x0000000712f00000, 0x0000000713000000| 0%| F| |TAMS 0x0000000712f00000, 0x0000000712f00000| Untracked +| 158|0x0000000713000000, 0x0000000713000000, 0x0000000713100000| 0%| F| |TAMS 0x0000000713000000, 0x0000000713000000| Untracked +| 159|0x0000000713100000, 0x0000000713100000, 0x0000000713200000| 0%| F| |TAMS 0x0000000713100000, 0x0000000713100000| Untracked +| 160|0x0000000713200000, 0x0000000713200000, 0x0000000713300000| 0%| F| |TAMS 0x0000000713200000, 0x0000000713200000| Untracked +| 161|0x0000000713300000, 0x0000000713300000, 0x0000000713400000| 0%| F| |TAMS 0x0000000713300000, 0x0000000713300000| Untracked +| 162|0x0000000713400000, 0x0000000713400000, 0x0000000713500000| 0%| F| |TAMS 0x0000000713400000, 0x0000000713400000| Untracked +| 163|0x0000000713500000, 0x0000000713500000, 0x0000000713600000| 0%| F| |TAMS 0x0000000713500000, 0x0000000713500000| Untracked +| 164|0x0000000713600000, 0x0000000713600000, 0x0000000713700000| 0%| F| |TAMS 0x0000000713600000, 0x0000000713600000| Untracked +| 165|0x0000000713700000, 0x0000000713700000, 0x0000000713800000| 0%| F| |TAMS 0x0000000713700000, 0x0000000713700000| Untracked +| 166|0x0000000713800000, 0x0000000713800000, 0x0000000713900000| 0%| F| |TAMS 0x0000000713800000, 0x0000000713800000| Untracked +| 167|0x0000000713900000, 0x0000000713900000, 0x0000000713a00000| 0%| F| |TAMS 0x0000000713900000, 0x0000000713900000| Untracked +| 168|0x0000000713a00000, 0x0000000713a00000, 0x0000000713b00000| 0%| F| |TAMS 0x0000000713a00000, 0x0000000713a00000| Untracked +| 169|0x0000000713b00000, 0x0000000713b00000, 0x0000000713c00000| 0%| F| |TAMS 0x0000000713b00000, 0x0000000713b00000| Untracked +| 170|0x0000000713c00000, 0x0000000713c00000, 0x0000000713d00000| 0%| F| |TAMS 0x0000000713c00000, 0x0000000713c00000| Untracked +| 171|0x0000000713d00000, 0x0000000713d00000, 0x0000000713e00000| 0%| F| |TAMS 0x0000000713d00000, 0x0000000713d00000| Untracked +| 172|0x0000000713e00000, 0x0000000713e00000, 0x0000000713f00000| 0%| F| |TAMS 0x0000000713e00000, 0x0000000713e00000| Untracked +| 173|0x0000000713f00000, 0x0000000713f00000, 0x0000000714000000| 0%| F| |TAMS 0x0000000713f00000, 0x0000000713f00000| Untracked +| 174|0x0000000714000000, 0x0000000714000000, 0x0000000714100000| 0%| F| |TAMS 0x0000000714000000, 0x0000000714000000| Untracked +| 175|0x0000000714100000, 0x0000000714100000, 0x0000000714200000| 0%| F| |TAMS 0x0000000714100000, 0x0000000714100000| Untracked +| 176|0x0000000714200000, 0x0000000714200000, 0x0000000714300000| 0%| F| |TAMS 0x0000000714200000, 0x0000000714200000| Untracked +| 177|0x0000000714300000, 0x0000000714300000, 0x0000000714400000| 0%| F| |TAMS 0x0000000714300000, 0x0000000714300000| Untracked +| 178|0x0000000714400000, 0x0000000714400000, 0x0000000714500000| 0%| F| |TAMS 0x0000000714400000, 0x0000000714400000| Untracked +| 179|0x0000000714500000, 0x0000000714500000, 0x0000000714600000| 0%| F| |TAMS 0x0000000714500000, 0x0000000714500000| Untracked +| 180|0x0000000714600000, 0x0000000714600000, 0x0000000714700000| 0%| F| |TAMS 0x0000000714600000, 0x0000000714600000| Untracked +| 181|0x0000000714700000, 0x0000000714700000, 0x0000000714800000| 0%| F| |TAMS 0x0000000714700000, 0x0000000714700000| Untracked +| 182|0x0000000714800000, 0x0000000714800000, 0x0000000714900000| 0%| F| |TAMS 0x0000000714800000, 0x0000000714800000| Untracked +| 183|0x0000000714900000, 0x0000000714900000, 0x0000000714a00000| 0%| F| |TAMS 0x0000000714900000, 0x0000000714900000| Untracked +| 184|0x0000000714a00000, 0x0000000714a00000, 0x0000000714b00000| 0%| F| |TAMS 0x0000000714a00000, 0x0000000714a00000| Untracked +| 185|0x0000000714b00000, 0x0000000714b00000, 0x0000000714c00000| 0%| F| |TAMS 0x0000000714b00000, 0x0000000714b00000| Untracked +| 186|0x0000000714c00000, 0x0000000714c00000, 0x0000000714d00000| 0%| F| |TAMS 0x0000000714c00000, 0x0000000714c00000| Untracked +| 187|0x0000000714d00000, 0x0000000714d00000, 0x0000000714e00000| 0%| F| |TAMS 0x0000000714d00000, 0x0000000714d00000| Untracked +| 188|0x0000000714e00000, 0x0000000714e00000, 0x0000000714f00000| 0%| F| |TAMS 0x0000000714e00000, 0x0000000714e00000| Untracked +| 189|0x0000000714f00000, 0x0000000714f00000, 0x0000000715000000| 0%| F| |TAMS 0x0000000714f00000, 0x0000000714f00000| Untracked +| 190|0x0000000715000000, 0x0000000715000000, 0x0000000715100000| 0%| F| |TAMS 0x0000000715000000, 0x0000000715000000| Untracked +| 191|0x0000000715100000, 0x0000000715100000, 0x0000000715200000| 0%| F| |TAMS 0x0000000715100000, 0x0000000715100000| Untracked +| 192|0x0000000715200000, 0x0000000715200000, 0x0000000715300000| 0%| F| |TAMS 0x0000000715200000, 0x0000000715200000| Untracked +| 193|0x0000000715300000, 0x0000000715300000, 0x0000000715400000| 0%| F| |TAMS 0x0000000715300000, 0x0000000715300000| Untracked +| 194|0x0000000715400000, 0x0000000715400000, 0x0000000715500000| 0%| F| |TAMS 0x0000000715400000, 0x0000000715400000| Untracked +| 195|0x0000000715500000, 0x0000000715500000, 0x0000000715600000| 0%| F| |TAMS 0x0000000715500000, 0x0000000715500000| Untracked +| 196|0x0000000715600000, 0x0000000715600000, 0x0000000715700000| 0%| F| |TAMS 0x0000000715600000, 0x0000000715600000| Untracked +| 197|0x0000000715700000, 0x0000000715700000, 0x0000000715800000| 0%| F| |TAMS 0x0000000715700000, 0x0000000715700000| Untracked +| 198|0x0000000715800000, 0x0000000715800000, 0x0000000715900000| 0%| F| |TAMS 0x0000000715800000, 0x0000000715800000| Untracked +| 199|0x0000000715900000, 0x0000000715900000, 0x0000000715a00000| 0%| F| |TAMS 0x0000000715900000, 0x0000000715900000| Untracked +| 200|0x0000000715a00000, 0x0000000715a00000, 0x0000000715b00000| 0%| F| |TAMS 0x0000000715a00000, 0x0000000715a00000| Untracked +| 201|0x0000000715b00000, 0x0000000715b00000, 0x0000000715c00000| 0%| F| |TAMS 0x0000000715b00000, 0x0000000715b00000| Untracked +| 202|0x0000000715c00000, 0x0000000715c00000, 0x0000000715d00000| 0%| F| |TAMS 0x0000000715c00000, 0x0000000715c00000| Untracked +| 203|0x0000000715d00000, 0x0000000715d00000, 0x0000000715e00000| 0%| F| |TAMS 0x0000000715d00000, 0x0000000715d00000| Untracked +| 204|0x0000000715e00000, 0x0000000715e00000, 0x0000000715f00000| 0%| F| |TAMS 0x0000000715e00000, 0x0000000715e00000| Untracked +| 205|0x0000000715f00000, 0x0000000715f00000, 0x0000000716000000| 0%| F| |TAMS 0x0000000715f00000, 0x0000000715f00000| Untracked +| 206|0x0000000716000000, 0x0000000716000000, 0x0000000716100000| 0%| F| |TAMS 0x0000000716000000, 0x0000000716000000| Untracked +| 207|0x0000000716100000, 0x0000000716100000, 0x0000000716200000| 0%| F| |TAMS 0x0000000716100000, 0x0000000716100000| Untracked +| 208|0x0000000716200000, 0x0000000716200000, 0x0000000716300000| 0%| F| |TAMS 0x0000000716200000, 0x0000000716200000| Untracked +| 209|0x0000000716300000, 0x0000000716300000, 0x0000000716400000| 0%| F| |TAMS 0x0000000716300000, 0x0000000716300000| Untracked +| 210|0x0000000716400000, 0x0000000716400000, 0x0000000716500000| 0%| F| |TAMS 0x0000000716400000, 0x0000000716400000| Untracked +| 211|0x0000000716500000, 0x0000000716500000, 0x0000000716600000| 0%| F| |TAMS 0x0000000716500000, 0x0000000716500000| Untracked +| 212|0x0000000716600000, 0x0000000716600000, 0x0000000716700000| 0%| F| |TAMS 0x0000000716600000, 0x0000000716600000| Untracked +| 213|0x0000000716700000, 0x0000000716700000, 0x0000000716800000| 0%| F| |TAMS 0x0000000716700000, 0x0000000716700000| Untracked +| 214|0x0000000716800000, 0x0000000716800000, 0x0000000716900000| 0%| F| |TAMS 0x0000000716800000, 0x0000000716800000| Untracked +| 215|0x0000000716900000, 0x0000000716900000, 0x0000000716a00000| 0%| F| |TAMS 0x0000000716900000, 0x0000000716900000| Untracked +| 216|0x0000000716a00000, 0x0000000716a00000, 0x0000000716b00000| 0%| F| |TAMS 0x0000000716a00000, 0x0000000716a00000| Untracked +| 217|0x0000000716b00000, 0x0000000716b00000, 0x0000000716c00000| 0%| F| |TAMS 0x0000000716b00000, 0x0000000716b00000| Untracked +| 218|0x0000000716c00000, 0x0000000716c00000, 0x0000000716d00000| 0%| F| |TAMS 0x0000000716c00000, 0x0000000716c00000| Untracked +| 219|0x0000000716d00000, 0x0000000716d00000, 0x0000000716e00000| 0%| F| |TAMS 0x0000000716d00000, 0x0000000716d00000| Untracked +| 220|0x0000000716e00000, 0x0000000716e00000, 0x0000000716f00000| 0%| F| |TAMS 0x0000000716e00000, 0x0000000716e00000| Untracked +| 221|0x0000000716f00000, 0x0000000716f6fd50, 0x0000000717000000| 43%| S|CS|TAMS 0x0000000716f00000, 0x0000000716f00000| Complete +| 222|0x0000000717000000, 0x0000000717100000, 0x0000000717100000|100%| S|CS|TAMS 0x0000000717000000, 0x0000000717000000| Complete +| 223|0x0000000717100000, 0x0000000717200000, 0x0000000717200000|100%| S|CS|TAMS 0x0000000717100000, 0x0000000717100000| Complete +| 224|0x0000000717200000, 0x0000000717200000, 0x0000000717300000| 0%| F| |TAMS 0x0000000717200000, 0x0000000717200000| Untracked +| 225|0x0000000717300000, 0x0000000717300000, 0x0000000717400000| 0%| F| |TAMS 0x0000000717300000, 0x0000000717300000| Untracked +| 226|0x0000000717400000, 0x0000000717400000, 0x0000000717500000| 0%| F| |TAMS 0x0000000717400000, 0x0000000717400000| Untracked +| 227|0x0000000717500000, 0x0000000717500000, 0x0000000717600000| 0%| F| |TAMS 0x0000000717500000, 0x0000000717500000| Untracked +| 228|0x0000000717600000, 0x0000000717600000, 0x0000000717700000| 0%| F| |TAMS 0x0000000717600000, 0x0000000717600000| Untracked +| 229|0x0000000717700000, 0x0000000717700000, 0x0000000717800000| 0%| F| |TAMS 0x0000000717700000, 0x0000000717700000| Untracked +| 230|0x0000000717800000, 0x0000000717800000, 0x0000000717900000| 0%| F| |TAMS 0x0000000717800000, 0x0000000717800000| Untracked +| 231|0x0000000717900000, 0x0000000717900000, 0x0000000717a00000| 0%| F| |TAMS 0x0000000717900000, 0x0000000717900000| Untracked +| 232|0x0000000717a00000, 0x0000000717a00000, 0x0000000717b00000| 0%| F| |TAMS 0x0000000717a00000, 0x0000000717a00000| Untracked +| 233|0x0000000717b00000, 0x0000000717b00000, 0x0000000717c00000| 0%| F| |TAMS 0x0000000717b00000, 0x0000000717b00000| Untracked +| 234|0x0000000717c00000, 0x0000000717c00000, 0x0000000717d00000| 0%| F| |TAMS 0x0000000717c00000, 0x0000000717c00000| Untracked +| 235|0x0000000717d00000, 0x0000000717d00000, 0x0000000717e00000| 0%| F| |TAMS 0x0000000717d00000, 0x0000000717d00000| Untracked +| 236|0x0000000717e00000, 0x0000000717e00000, 0x0000000717f00000| 0%| F| |TAMS 0x0000000717e00000, 0x0000000717e00000| Untracked +| 237|0x0000000717f00000, 0x0000000717f00000, 0x0000000718000000| 0%| F| |TAMS 0x0000000717f00000, 0x0000000717f00000| Untracked +| 238|0x0000000718000000, 0x0000000718000000, 0x0000000718100000| 0%| F| |TAMS 0x0000000718000000, 0x0000000718000000| Untracked +| 239|0x0000000718100000, 0x0000000718100000, 0x0000000718200000| 0%| F| |TAMS 0x0000000718100000, 0x0000000718100000| Untracked +| 240|0x0000000718200000, 0x0000000718200000, 0x0000000718300000| 0%| F| |TAMS 0x0000000718200000, 0x0000000718200000| Untracked +| 241|0x0000000718300000, 0x0000000718300000, 0x0000000718400000| 0%| F| |TAMS 0x0000000718300000, 0x0000000718300000| Untracked +| 242|0x0000000718400000, 0x0000000718400000, 0x0000000718500000| 0%| F| |TAMS 0x0000000718400000, 0x0000000718400000| Untracked +| 243|0x0000000718500000, 0x0000000718500000, 0x0000000718600000| 0%| F| |TAMS 0x0000000718500000, 0x0000000718500000| Untracked +| 244|0x0000000718600000, 0x0000000718600000, 0x0000000718700000| 0%| F| |TAMS 0x0000000718600000, 0x0000000718600000| Untracked +| 245|0x0000000718700000, 0x0000000718700000, 0x0000000718800000| 0%| F| |TAMS 0x0000000718700000, 0x0000000718700000| Untracked +| 246|0x0000000718800000, 0x0000000718900000, 0x0000000718900000|100%| E| |TAMS 0x0000000718800000, 0x0000000718800000| Complete +| 247|0x0000000718900000, 0x0000000718a00000, 0x0000000718a00000|100%| E|CS|TAMS 0x0000000718900000, 0x0000000718900000| Complete +|2924|0x00000007bfe00000, 0x00000007bfe48000, 0x00000007bff00000| 28%|OA| |TAMS 0x00000007bfe00000, 0x00000007bfe00000| Untracked +|2925|0x00000007bff00000, 0x00000007bff6c000, 0x00000007c0000000| 42%|CA| |TAMS 0x00000007bff00000, 0x00000007bff00000| Untracked + +Card table byte_map: [0x00007f7cd56a5000,0x00007f7cd5e5c000] _byte_map_base: 0x00007f7cd1e5c000 + +Marking Bits (Prev, Next): (CMBitMap*) 0x00007f7cd007d798, (CMBitMap*) 0x00007f7cd007d7d0 + Prev Bits: [0x00007f7cb0248000, 0x00007f7cb4000000) + Next Bits: [0x00007f7cac490000, 0x00007f7cb0248000) + +Polling page: 0x00007f7cd7817000 + +Metaspace: + +Usage: + Non-class: 7.71 MB capacity, 6.44 MB ( 84%) used, 1.21 MB ( 16%) free+waste, 62.69 KB ( <1%) overhead. + Class: 1.21 MB capacity, 905.91 KB ( 73%) used, 298.34 KB ( 24%) free+waste, 33.75 KB ( 3%) overhead. + Both: 8.92 MB capacity, 7.32 MB ( 82%) used, 1.50 MB ( 17%) free+waste, 96.44 KB ( 1%) overhead. + +Virtual space: + Non-class space: 8.00 MB reserved, 7.75 MB ( 97%) committed + Class space: 1.00 GB reserved, 1.25 MB ( <1%) committed + Both: 1.01 GB reserved, 9.00 MB ( <1%) committed + +Chunk freelists: + Non-Class: 42.00 KB + Class: 0 bytes + Both: 42.00 KB + +MaxMetaspaceSize: unlimited +CompressedClassSpaceSize: 1.00 GB +Initial GC threshold: 20.80 MB +Current GC threshold: 20.80 MB +CDS: on + +CodeHeap 'non-profiled nmethods': size=119172Kb used=406Kb max_used=406Kb free=118765Kb + bounds [0x00007f7cc036e000, 0x00007f7cc05de000, 0x00007f7cc77cf000] +CodeHeap 'profiled nmethods': size=119168Kb used=2947Kb max_used=2947Kb free=116221Kb + bounds [0x00007f7cb8f0e000, 0x00007f7cb91fe000, 0x00007f7cc036e000] +CodeHeap 'non-nmethods': size=7420Kb used=1728Kb max_used=2308Kb free=5691Kb + bounds [0x00007f7cb87cf000, 0x00007f7cb8a3f000, 0x00007f7cb8f0e000] + total_blobs=1883 nmethods=1458 adapters=337 + compilation: enabled + stopped_count=0, restarted_count=0 + full_count=0 + +Compilation events (20 events): +Event: 2.814 Thread 0x00007f7cd0264000 nmethod 1447 0x00007f7cb91eb790 code [0x00007f7cb91eb940, 0x00007f7cb91ebab0] +Event: 2.975 Thread 0x00007f7cd0262000 1448 ! 4 jdk.internal.loader.URLClassPath$JarLoader::ensureOpen (36 bytes) +Event: 2.976 Thread 0x00007f7cd0262000 nmethod 1448 0x00007f7cc03cf610 code [0x00007f7cc03cf7a0, 0x00007f7cc03cf838] +Event: 2.976 Thread 0x00007f7cd0262000 1449 4 java.util.jar.JarFile::getEntry (22 bytes) +Event: 2.995 Thread 0x00007f7cd0262000 nmethod 1449 0x00007f7cc03cf910 code [0x00007f7cc03cfbe0, 0x00007f7cc03d0e18] +Event: 3.087 Thread 0x00007f7c8008c800 1451 ! 3 java.nio.charset.CharsetEncoder::encode (285 bytes) +Event: 3.087 Thread 0x00007f7cd0264000 1452 3 sun.nio.cs.UTF_8$Encoder::encodeLoop (28 bytes) +Event: 3.087 Thread 0x00007f7cd0264000 nmethod 1452 0x00007f7cb91ebb10 code [0x00007f7cb91ebd00, 0x00007f7cb91ec110] +Event: 3.087 Thread 0x00007f7cd0262000 1454 4 java.nio.StringCharBuffer::get (19 bytes) +Event: 3.087 Thread 0x00007f7cd0264000 1453 3 java.util.regex.Pattern::next (33 bytes) +Event: 3.088 Thread 0x00007f7c8008c800 nmethod 1451 0x00007f7cb91ec290 code [0x00007f7cb91ec5c0, 0x00007f7cb91ed930] +Event: 3.088 Thread 0x00007f7c8008c800 1455 3 jdk.internal.misc.Unsafe::convEndian (16 bytes) +Event: 3.088 Thread 0x00007f7cd0264000 nmethod 1453 0x00007f7cb91edf10 code [0x00007f7cb91ee0e0, 0x00007f7cb91ee360] +Event: 3.088 Thread 0x00007f7c8008c800 nmethod 1455 0x00007f7cb91ee490 code [0x00007f7cb91ee640, 0x00007f7cb91ee7f0] +Event: 3.088 Thread 0x00007f7cd0264000 1456 3 java.lang.Integer::reverseBytes (26 bytes) +Event: 3.088 Thread 0x00007f7cd0264000 nmethod 1456 0x00007f7cb91ee890 code [0x00007f7cb91eea40, 0x00007f7cb91eeb50] +Event: 3.089 Thread 0x00007f7cd0262000 nmethod 1454 0x00007f7cc03d1a10 code [0x00007f7cc03d1bc0, 0x00007f7cc03d1d08] +Event: 3.150 Thread 0x00007f7cd0262000 1458 4 java.io.UnixFileSystem::normalize (75 bytes) +Event: 3.152 Thread 0x00007f7cd0262000 nmethod 1458 0x00007f7cc03d1e90 code [0x00007f7cc03d2040, 0x00007f7cc03d2228] +Event: 3.152 Thread 0x00007f7cd0262000 1457 ! 4 jdk.internal.loader.URLClassPath$JarLoader::getResource (65 bytes) + +GC Heap History (2 events): +Event: 0.711 GC heap before +{Heap before GC invocations=0 (full 0): + garbage-first heap total 256000K, used 24272K [0x0000000709200000, 0x0000000800000000) + region size 1024K, 24 young (24576K), 0 survivors (0K) + Metaspace used 7128K, capacity 8964K, committed 9216K, reserved 1056768K + class space used 862K, capacity 1222K, committed 1280K, reserved 1048576K +} +Event: 0.729 GC heap after +{Heap after GC invocations=1 (full 0): + garbage-first heap total 256000K, used 3215K [0x0000000709200000, 0x0000000800000000) + region size 1024K, 3 young (3072K), 3 survivors (3072K) + Metaspace used 7128K, capacity 8964K, committed 9216K, reserved 1056768K + class space used 862K, capacity 1222K, committed 1280K, reserved 1048576K +} + +Deoptimization events (20 events): +Event: 0.588 Thread 0x00007f7cd0016000 DEOPT PACKING pc=0x00007f7cb8f95d08 sp=0x00007f7cd795a4a0 +Event: 0.588 Thread 0x00007f7cd0016000 DEOPT UNPACKING pc=0x00007f7cb881964a sp=0x00007f7cd79599d8 mode 0 +Event: 0.643 Thread 0x00007f7cd0016000 Uncommon trap: trap_request=0xffffff4d fr.pc=0x00007f7cc03a8844 relative=0x0000000000000284 +Event: 0.643 Thread 0x00007f7cd0016000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f7cc03a8844 method=java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object; @ 86 c2 +Event: 0.643 Thread 0x00007f7cd0016000 DEOPT PACKING pc=0x00007f7cc03a8844 sp=0x00007f7cd7959a50 +Event: 0.643 Thread 0x00007f7cd0016000 DEOPT UNPACKING pc=0x00007f7cb8818ea5 sp=0x00007f7cd79599e8 mode 2 +Event: 0.672 Thread 0x00007f7cd0016000 Uncommon trap: trap_request=0xffffff4d fr.pc=0x00007f7cc0382864 relative=0x0000000000000044 +Event: 0.672 Thread 0x00007f7cd0016000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f7cc0382864 method=java.lang.CharacterData.of(I)Ljava/lang/CharacterData; @ 4 c2 +Event: 0.672 Thread 0x00007f7cd0016000 DEOPT PACKING pc=0x00007f7cc0382864 sp=0x00007f7cd7957f60 +Event: 0.672 Thread 0x00007f7cd0016000 DEOPT UNPACKING pc=0x00007f7cb8818ea5 sp=0x00007f7cd7957f18 mode 2 +Event: 0.674 Thread 0x00007f7cd0016000 Uncommon trap: trap_request=0xffffff4d fr.pc=0x00007f7cc037a438 relative=0x0000000000000198 +Event: 0.674 Thread 0x00007f7cd0016000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f7cc037a438 method=java.lang.String.isLatin1()Z @ 10 c2 +Event: 0.674 Thread 0x00007f7cd0016000 DEOPT PACKING pc=0x00007f7cc037a438 sp=0x00007f7cd79587b0 +Event: 0.674 Thread 0x00007f7cd0016000 DEOPT UNPACKING pc=0x00007f7cb8818ea5 sp=0x00007f7cd79586f8 mode 2 +Event: 0.680 Thread 0x00007f7cd0016000 Uncommon trap: trap_request=0xffffff4d fr.pc=0x00007f7cc03a6b44 relative=0x00000000000004a4 +Event: 0.680 Thread 0x00007f7cd0016000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f7cc03a6b44 method=jdk.internal.org.objectweb.asm.Type.getArgumentsAndReturnSizes(Ljava/lang/String;)I @ 130 c2 +Event: 0.680 Thread 0x00007f7cd0016000 DEOPT PACKING pc=0x00007f7cc03a6b44 sp=0x00007f7cd7957810 +Event: 0.680 Thread 0x00007f7cd0016000 DEOPT UNPACKING pc=0x00007f7cb8818ea5 sp=0x00007f7cd79577c8 mode 2 +Event: 3.150 Thread 0x00007f7cd0016000 DEOPT PACKING pc=0x00007f7cb8fa6ea0 sp=0x00007f7cd7957b50 +Event: 3.150 Thread 0x00007f7cd0016000 DEOPT UNPACKING pc=0x00007f7cb881964a sp=0x00007f7cd7957088 mode 0 + +Classes redefined (0 events): +No events + +Internal exceptions (20 events): +Event: 0.516 Thread 0x00007f7cd0016000 Exception (0x0000000717aac4f8) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.556 Thread 0x00007f7cd0016000 Exception (0x00000007179f3468) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.556 Thread 0x00007f7cd0016000 Exception (0x00000007179f6bc0) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 839] +Event: 0.577 Thread 0x00007f7cd0016000 Exception (0x0000000717895f28) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.577 Thread 0x00007f7cd0016000 Exception (0x0000000717898ce8) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 839] +Event: 0.579 Thread 0x00007f7cd0016000 Exception (0x00000007178bcd80) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.593 Thread 0x00007f7cd0016000 Exception (0x000000071775b2a0) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.600 Thread 0x00007f7cd0016000 Exception (0x00000007177af948) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.604 Thread 0x00007f7cd0016000 Exception (0x00000007177cb850) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.613 Thread 0x00007f7cd0016000 Exception (0x0000000717687448) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.623 Thread 0x00007f7cd0016000 Exception (0x00000007175196c8) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.653 Thread 0x00007f7cd0016000 Exception (0x000000071748a458) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.654 Thread 0x00007f7cd0016000 Exception (0x00000007174988a0) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 0.655 Thread 0x00007f7cd0016000 Exception (0x00000007174aa388) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 839] +Event: 2.787 Thread 0x00007f7cd0016000 Exception (0x0000000718916010) thrown at [./src/hotspot/share/prims/jni.cpp, line 617] +Event: 2.796 Thread 0x00007f7cd0016000 Exception (0x00000007189386b0) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 2.796 Thread 0x00007f7cd0016000 Exception (0x0000000718944d20) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 2.797 Thread 0x00007f7cd0016000 Exception (0x000000071894bd78) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 2.797 Thread 0x00007f7cd0016000 Exception (0x000000071894ff40) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] +Event: 2.798 Thread 0x00007f7cd0016000 Exception (0x0000000718953928) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] + +Events (20 events): +Event: 3.078 loading class com/nvidia/cuopt/linearprogramming/Solution$NativeHandle +Event: 3.078 loading class com/nvidia/cuopt/linearprogramming/Solution$NativeHandle done +Event: 3.084 loading class com/nvidia/cuopt/linearprogramming/BatchSolveResult +Event: 3.084 loading class com/nvidia/cuopt/linearprogramming/BatchSolveResult done +Event: 3.084 loading class com/nvidia/cuopt/linearprogramming/Solution +Event: 3.084 loading class com/nvidia/cuopt/linearprogramming/Solution done +Event: 3.148 Executing VM operation: RevokeBias +Event: 3.148 Executing VM operation: RevokeBias done +Event: 3.148 Executing VM operation: RevokeBias +Event: 3.148 Executing VM operation: RevokeBias done +Event: 3.148 Executing VM operation: RevokeBias +Event: 3.148 Executing VM operation: RevokeBias done +Event: 3.150 loading class org/junit/jupiter/api/AssertionFailureBuilder +Event: 3.150 loading class org/junit/jupiter/api/AssertionFailureBuilder done +Event: 3.150 loading class java/util/ArrayDeque$DeqSpliterator +Event: 3.150 loading class java/util/ArrayDeque$DeqSpliterator done +Event: 3.151 loading class org/opentest4j/AssertionFailedError$1 +Event: 3.151 loading class org/opentest4j/AssertionFailedError$1 done +Event: 3.151 loading class org/opentest4j/ValueWrapper +Event: 3.151 loading class org/opentest4j/ValueWrapper done + + +Dynamic libraries: +200000000-200600000 rw-s 00000000 00:01 8252 /dev/zero (deleted) +200600000-203000000 ---p 00000000 00:00 0 +203000000-203200000 rw-s 00000000 00:01 8260 /dev/zero (deleted) +203200000-203400000 rw-s 00000000 00:01 8293 /dev/zero (deleted) +203400000-203600000 ---p 00000000 00:00 0 +203600000-203800000 rw-s 00000000 00:01 8295 /dev/zero (deleted) +203800000-203a00000 rw-s 00000000 00:01 8296 /dev/zero (deleted) +203a00000-203e00000 ---p 00000000 00:00 0 +203e00000-204000000 rw-s 00000000 00:01 8298 /dev/zero (deleted) +204000000-204200000 rw-s 00000000 00:01 8299 /dev/zero (deleted) +204200000-700000000 ---p 00000000 00:00 0 +709200000-718a00000 rw-p 00000000 00:00 0 +718a00000-7bfe00000 ---p 00000000 00:00 0 +7bfe00000-7bfe48000 rw-p 00b14000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa +7bfe48000-7bff00000 rw-p 00000000 00:00 0 +7bff00000-7bff6c000 rw-p 00aa8000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa +7bff6c000-7c0000000 rw-p 00000000 00:00 0 +7c0000000-800000000 ---p 00000000 00:00 0 +800000000-800002000 rwxp 00001000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa +800002000-8003ce000 rw-p 00003000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa +8003ce000-800aa6000 r--p 003cf000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa +800aa6000-800aa7000 rw-p 00aa7000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa +840000000-840140000 rw-p 00000000 00:00 0 +840140000-880000000 ---p 00000000 00:00 0 +900000000-c00000000 ---p 00000000 00:00 0 +55851a364000-55851a365000 r--p 00000000 08:20 294880 /usr/lib/jvm/java-11-openjdk-amd64/bin/java +55851a365000-55851a366000 r-xp 00001000 08:20 294880 /usr/lib/jvm/java-11-openjdk-amd64/bin/java +55851a366000-55851a367000 r--p 00002000 08:20 294880 /usr/lib/jvm/java-11-openjdk-amd64/bin/java +55851a367000-55851a368000 r--p 00002000 08:20 294880 /usr/lib/jvm/java-11-openjdk-amd64/bin/java +55851a368000-55851a369000 rw-p 00003000 08:20 294880 /usr/lib/jvm/java-11-openjdk-amd64/bin/java +55851bb38000-55851bb59000 rw-p 00000000 00:00 0 [heap] +7f7be0000000-7f7be0021000 rw-p 00000000 00:00 0 +7f7be0021000-7f7be4000000 ---p 00000000 00:00 0 +7f7be7803000-7f7be8000000 rw-p 00000000 00:00 0 +7f7be8000000-7f7be8021000 rw-p 00000000 00:00 0 +7f7be8021000-7f7bec000000 ---p 00000000 00:00 0 +7f7bec543000-7f7bec544000 ---p 00000000 00:00 0 +7f7bec544000-7f7bf0000000 rw-p 00000000 00:00 0 +7f7bf0000000-7f7bf0021000 rw-p 00000000 00:00 0 +7f7bf0021000-7f7bf4000000 ---p 00000000 00:00 0 +7f7bf417b000-7f7bf5d6b000 rw-p 00000000 00:00 0 +7f7bf5d6b000-7f7bf5f6b000 rw-s 00000000 00:01 8297 /dev/zero (deleted) +7f7bf5f6b000-7f7bf616b000 rw-s 00000000 00:01 8294 /dev/zero (deleted) +7f7bf616b000-7f7bf8b6b000 rw-s 00000000 00:01 8259 /dev/zero (deleted) +7f7bf8b6b000-7f7bf8d6b000 rw-s 00000000 00:01 8258 /dev/zero (deleted) +7f7bf8d6b000-7f7bf8d6c000 ---p 00000000 00:00 0 +7f7bf8d6c000-7f7bf97ff000 rw-p 00000000 00:00 0 +7f7bf97ff000-7f7bff800000 ---p 00000000 00:00 0 +7f7bff800000-7f7c00000000 rw-p 00000000 00:00 0 +7f7c00000000-7f7c00021000 rw-p 00000000 00:00 0 +7f7c00021000-7f7c04000000 ---p 00000000 00:00 0 +7f7c04006000-7f7c04400000 rw-p 00000000 00:00 0 +7f7c04400000-7f7c0440d000 r-xp 00000000 00:21 1688849861009784 /usr/lib/wsl/drivers/nvdm.inf_amd64_86ce1e7b61a7cb15/libnvdxgdmal.so.1 +7f7c0440d000-7f7c0460d000 ---p 0000d000 00:21 1688849861009784 /usr/lib/wsl/drivers/nvdm.inf_amd64_86ce1e7b61a7cb15/libnvdxgdmal.so.1 +7f7c0460d000-7f7c0460f000 r--p 0000d000 00:21 1688849861009784 /usr/lib/wsl/drivers/nvdm.inf_amd64_86ce1e7b61a7cb15/libnvdxgdmal.so.1 +7f7c0460f000-7f7c04610000 rw-p 0000f000 00:21 1688849861009784 /usr/lib/wsl/drivers/nvdm.inf_amd64_86ce1e7b61a7cb15/libnvdxgdmal.so.1 +7f7c0466e000-7f7c047ff000 rw-p 00000000 00:00 0 +7f7c047ff000-7f7c04800000 ---p 00000000 00:00 0 +7f7c04800000-7f7c05000000 rw-p 00000000 00:00 0 +7f7c05000000-7f7c0666e000 r-xp 00000000 00:21 1688849861009763 /usr/lib/wsl/drivers/nvdm.inf_amd64_86ce1e7b61a7cb15/libcuda.so.1.1 +7f7c0666e000-7f7c0686d000 ---p 0166e000 00:21 1688849861009763 /usr/lib/wsl/drivers/nvdm.inf_amd64_86ce1e7b61a7cb15/libcuda.so.1.1 +7f7c0686d000-7f7c06bad000 r--p 0166d000 00:21 1688849861009763 /usr/lib/wsl/drivers/nvdm.inf_amd64_86ce1e7b61a7cb15/libcuda.so.1.1 +7f7c06bad000-7f7c06bb4000 rw-p 019ad000 00:21 1688849861009763 /usr/lib/wsl/drivers/nvdm.inf_amd64_86ce1e7b61a7cb15/libcuda.so.1.1 +7f7c06bb4000-7f7c06c21000 rw-p 00000000 00:00 0 +7f7c06cfe000-7f7c07000000 rw-p 00000000 00:00 0 +7f7c07000000-7f7c07028000 r-xp 00000000 00:22 1688849861009770 /usr/lib/wsl/lib/libcuda.so.1 +7f7c07028000-7f7c07228000 ---p 00028000 00:22 1688849861009770 /usr/lib/wsl/lib/libcuda.so.1 +7f7c07228000-7f7c07229000 r--p 00028000 00:22 1688849861009770 /usr/lib/wsl/lib/libcuda.so.1 +7f7c07229000-7f7c0722b000 rw-p 00029000 00:22 1688849861009770 /usr/lib/wsl/lib/libcuda.so.1 +7f7c07279000-7f7c0727a000 rw-s a01e41000 00:01 8292 /dev/zero (deleted) +7f7c0727a000-7f7c0727b000 rw-s a01e40000 00:01 8291 /dev/zero (deleted) +7f7c0727b000-7f7c0727c000 rw-s a01e3f000 00:01 8290 /dev/zero (deleted) +7f7c0727c000-7f7c0727d000 rw-s a01e3e000 00:01 8289 /dev/zero (deleted) +7f7c0727d000-7f7c0727e000 rw-s a01e3d000 00:01 8288 /dev/zero (deleted) +7f7c0727e000-7f7c0727f000 rw-s a01e3c000 00:01 8287 /dev/zero (deleted) +7f7c0727f000-7f7c07280000 rw-s a01e3b000 00:01 8286 /dev/zero (deleted) +7f7c07280000-7f7c07281000 rw-s a01e3a000 00:01 8285 /dev/zero (deleted) +7f7c07281000-7f7c07282000 rw-s a01e39000 00:01 8284 /dev/zero (deleted) +7f7c07282000-7f7c07283000 rw-s a01e38000 00:01 8283 /dev/zero (deleted) +7f7c07283000-7f7c07284000 rw-s a01e37000 00:01 8282 /dev/zero (deleted) +7f7c07284000-7f7c07285000 rw-s a01e36000 00:01 8281 /dev/zero (deleted) +7f7c07285000-7f7c07286000 rw-s a01e35000 00:01 8280 /dev/zero (deleted) +7f7c07286000-7f7c07287000 rw-s a01e34000 00:01 8279 /dev/zero (deleted) +7f7c07287000-7f7c07288000 rw-s a01e33000 00:01 8278 /dev/zero (deleted) +7f7c07288000-7f7c07289000 rw-s a01e32000 00:01 8277 /dev/zero (deleted) +7f7c07289000-7f7c0728a000 rw-s a01e31000 00:01 8276 /dev/zero (deleted) +7f7c0728a000-7f7c0730b000 rw-p 00000000 00:00 0 +7f7c0730b000-7f7c0730f000 ---p 00000000 00:00 0 +7f7c0730f000-7f7c073ee000 rw-p 00000000 00:00 0 +7f7c073ee000-7f7c074dd000 r--p 00000000 08:20 320733 /home/cbrissette/cuopt/.cuopt_env/lib/libcrypto.so.3 +7f7c074dd000-7f7c07841000 r-xp 000ef000 08:20 320733 /home/cbrissette/cuopt/.cuopt_env/lib/libcrypto.so.3 +7f7c07841000-7f7c07978000 r--p 00453000 08:20 320733 /home/cbrissette/cuopt/.cuopt_env/lib/libcrypto.so.3 +7f7c07978000-7f7c079fa000 r--p 00589000 08:20 320733 /home/cbrissette/cuopt/.cuopt_env/lib/libcrypto.so.3 +7f7c079fa000-7f7c079fd000 rw-p 0060b000 08:20 320733 /home/cbrissette/cuopt/.cuopt_env/lib/libcrypto.so.3 +7f7c079fd000-7f7c07a00000 rw-p 00000000 00:00 0 +7f7c07a00000-7f7c1ee7c000 r-xp 00000000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 +7f7c1ee7c000-7f7c1f07c000 ---p 1747c000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 +7f7c1f07c000-7f7c1f334000 r--p 1747c000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 +7f7c1f334000-7f7c1f9c8000 rw-p 17734000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 +7f7c1f9c8000-7f7c253e0000 rw-p 00000000 00:00 0 +7f7c253e0000-7f7c255df000 ---p 1d9e0000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 +7f7c255df000-7f7c260d5000 r--p 17ddf000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 +7f7c260d5000-7f7c262d4000 ---p 1e6d5000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 +7f7c262d4000-7f7c2beb7000 rw-p 188d4000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 +7f7c2beb7000-7f7c2beb8000 rw-s a01e30000 00:01 8275 /dev/zero (deleted) +7f7c2beb8000-7f7c2beb9000 rw-s a01e2f000 00:01 8274 /dev/zero (deleted) +7f7c2beb9000-7f7c2bf1c000 r--p 00000000 00:23 9288674231615732 /usr/lib/wsl/lib/libdxcore.so +7f7c2bf1c000-7f7c2bf99000 r-xp 00062000 00:23 9288674231615732 /usr/lib/wsl/lib/libdxcore.so +7f7c2bf99000-7f7c2bfa1000 r--p 000de000 00:23 9288674231615732 /usr/lib/wsl/lib/libdxcore.so +7f7c2bfa1000-7f7c2bfa2000 rw-p 000e5000 00:23 9288674231615732 /usr/lib/wsl/lib/libdxcore.so +7f7c2bfa2000-7f7c2bff6000 rw-p 00000000 00:00 0 +7f7c2bff6000-7f7c2bffc000 r--p 00000000 08:20 194064 /home/cbrissette/cuopt/.cuopt_env/lib/libtbbmalloc.so.2.18 +7f7c2bffc000-7f7c2c013000 r-xp 00006000 08:20 194064 /home/cbrissette/cuopt/.cuopt_env/lib/libtbbmalloc.so.2.18 +7f7c2c013000-7f7c2c018000 r--p 0001d000 08:20 194064 /home/cbrissette/cuopt/.cuopt_env/lib/libtbbmalloc.so.2.18 +7f7c2c018000-7f7c2c019000 r--p 00021000 08:20 194064 /home/cbrissette/cuopt/.cuopt_env/lib/libtbbmalloc.so.2.18 +7f7c2c019000-7f7c2c01b000 rw-p 00022000 08:20 194064 /home/cbrissette/cuopt/.cuopt_env/lib/libtbbmalloc.so.2.18 +7f7c2c01b000-7f7c2c03c000 rw-p 00000000 00:00 0 +7f7c2c03c000-7f7c2c03d000 r--p 00000000 08:20 177053 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_utf8_for_code_point.so.2601.0.0 +7f7c2c03d000-7f7c2c03e000 r-xp 00001000 08:20 177053 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_utf8_for_code_point.so.2601.0.0 +7f7c2c03e000-7f7c2c03f000 r--p 00002000 08:20 177053 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_utf8_for_code_point.so.2601.0.0 +7f7c2c03f000-7f7c2c040000 r--p 00002000 08:20 177053 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_utf8_for_code_point.so.2601.0.0 +7f7c2c040000-7f7c2c041000 rw-p 00003000 08:20 177053 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_utf8_for_code_point.so.2601.0.0 +7f7c2c041000-7f7c2c042000 r--p 00000000 08:20 176909 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_decode_rust_punycode.so.2601.0.0 +7f7c2c042000-7f7c2c043000 r-xp 00001000 08:20 176909 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_decode_rust_punycode.so.2601.0.0 +7f7c2c043000-7f7c2c044000 r--p 00002000 08:20 176909 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_decode_rust_punycode.so.2601.0.0 +7f7c2c044000-7f7c2c045000 r--p 00002000 08:20 176909 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_decode_rust_punycode.so.2601.0.0 +7f7c2c045000-7f7c2c046000 rw-p 00003000 08:20 176909 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_decode_rust_punycode.so.2601.0.0 +7f7c2c046000-7f7c2c047000 r--p 00000000 08:20 176160 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_rust.so.2601.0.0 +7f7c2c047000-7f7c2c04b000 r-xp 00001000 08:20 176160 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_rust.so.2601.0.0 +7f7c2c04b000-7f7c2c04c000 r--p 00005000 08:20 176160 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_rust.so.2601.0.0 +7f7c2c04c000-7f7c2c04d000 r--p 00005000 08:20 176160 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_rust.so.2601.0.0 +7f7c2c04d000-7f7c2c04e000 rw-p 00006000 08:20 176160 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_rust.so.2601.0.0 +7f7c2c04e000-7f7c2c050000 r--p 00000000 08:20 175645 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_internal.so.2601.0.0 +7f7c2c050000-7f7c2c052000 r-xp 00002000 08:20 175645 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_internal.so.2601.0.0 +7f7c2c052000-7f7c2c053000 r--p 00004000 08:20 175645 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_internal.so.2601.0.0 +7f7c2c053000-7f7c2c054000 r--p 00004000 08:20 175645 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_internal.so.2601.0.0 +7f7c2c054000-7f7c2c055000 rw-p 00005000 08:20 175645 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_internal.so.2601.0.0 +7f7c2c055000-7f7c2c057000 r--p 00000000 08:20 176073 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_internal.so.2601.0.0 +7f7c2c057000-7f7c2c063000 r-xp 00002000 08:20 176073 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_internal.so.2601.0.0 +7f7c2c063000-7f7c2c065000 r--p 0000e000 08:20 176073 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_internal.so.2601.0.0 +7f7c2c065000-7f7c2c066000 r--p 00010000 08:20 176073 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_internal.so.2601.0.0 +7f7c2c066000-7f7c2c067000 rw-p 00011000 08:20 176073 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_internal.so.2601.0.0 +7f7c2c067000-7f7c2c068000 r--p 00000000 08:20 174727 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_program_name.so.2601.0.0 +7f7c2c068000-7f7c2c069000 r-xp 00001000 08:20 174727 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_program_name.so.2601.0.0 +7f7c2c069000-7f7c2c06a000 r--p 00002000 08:20 174727 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_program_name.so.2601.0.0 +7f7c2c06a000-7f7c2c06b000 r--p 00002000 08:20 174727 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_program_name.so.2601.0.0 +7f7c2c06b000-7f7c2c06c000 rw-p 00003000 08:20 174727 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_program_name.so.2601.0.0 +7f7c2c06c000-7f7c2c06e000 r--p 00000000 08:20 174492 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_debugging_internal.so.2601.0.0 +7f7c2c06e000-7f7c2c06f000 r-xp 00002000 08:20 174492 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_debugging_internal.so.2601.0.0 +7f7c2c06f000-7f7c2c070000 r--p 00003000 08:20 174492 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_debugging_internal.so.2601.0.0 +7f7c2c070000-7f7c2c071000 r--p 00003000 08:20 174492 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_debugging_internal.so.2601.0.0 +7f7c2c071000-7f7c2c072000 rw-p 00004000 08:20 174492 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_debugging_internal.so.2601.0.0 +7f7c2c072000-7f7c2c073000 r--p 00000000 08:20 172719 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_borrowed_fixup_buffer.so.2601.0.0 +7f7c2c073000-7f7c2c074000 r-xp 00001000 08:20 172719 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_borrowed_fixup_buffer.so.2601.0.0 +7f7c2c074000-7f7c2c075000 r--p 00002000 08:20 172719 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_borrowed_fixup_buffer.so.2601.0.0 +7f7c2c075000-7f7c2c076000 r--p 00002000 08:20 172719 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_borrowed_fixup_buffer.so.2601.0.0 +7f7c2c076000-7f7c2c077000 rw-p 00003000 08:20 172719 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_borrowed_fixup_buffer.so.2601.0.0 +7f7c2c077000-7f7c2c08f000 rw-p 00000000 00:00 0 +7f7c2c08f000-7f7c2c2b9000 r--p 00000000 08:20 139302 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc.so.52.0.0 +7f7c2c2b9000-7f7c2cb03000 r-xp 0022a000 08:20 139302 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc.so.52.0.0 +7f7c2cb03000-7f7c2cdb4000 r--p 00a74000 08:20 139302 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc.so.52.0.0 +7f7c2cdb4000-7f7c2cdee000 r--p 00d25000 08:20 139302 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc.so.52.0.0 +7f7c2cdee000-7f7c2cdfb000 rw-p 00d5f000 08:20 139302 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc.so.52.0.0 +7f7c2cdfb000-7f7c2ce00000 rw-p 00000000 00:00 0 +7f7c2ce00000-7f7c30e5e000 r-xp 00000000 08:20 101383 /home/cbrissette/cuopt/.cuopt_env/lib/libcudss.so.0.7.1 +7f7c30e5e000-7f7c3105e000 ---p 0405e000 08:20 101383 /home/cbrissette/cuopt/.cuopt_env/lib/libcudss.so.0.7.1 +7f7c3105e000-7f7c31068000 r--p 0405e000 08:20 101383 /home/cbrissette/cuopt/.cuopt_env/lib/libcudss.so.0.7.1 +7f7c31068000-7f7c3106e000 rw-p 04068000 08:20 101383 /home/cbrissette/cuopt/.cuopt_env/lib/libcudss.so.0.7.1 +7f7c3106e000-7f7c3107e000 rw-p 00000000 00:00 0 +7f7c3107e000-7f7c31080000 rw-p 042ac000 08:20 101383 /home/cbrissette/cuopt/.cuopt_env/lib/libcudss.so.0.7.1 +7f7c31080000-7f7c31081000 rw-s a01e2e000 00:01 8273 /dev/zero (deleted) +7f7c31081000-7f7c31082000 rw-s a01e2d000 00:01 8272 /dev/zero (deleted) +7f7c31082000-7f7c31083000 rw-s a01e2c000 00:01 8271 /dev/zero (deleted) +7f7c31083000-7f7c31085000 r--p 00000000 08:20 177931 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc32c.so.2601.0.0 +7f7c31085000-7f7c31086000 r-xp 00002000 08:20 177931 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc32c.so.2601.0.0 +7f7c31086000-7f7c31087000 r--p 00003000 08:20 177931 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc32c.so.2601.0.0 +7f7c31087000-7f7c31088000 r--p 00003000 08:20 177931 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc32c.so.2601.0.0 +7f7c31088000-7f7c31089000 rw-p 00004000 08:20 177931 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc32c.so.2601.0.0 +7f7c31089000-7f7c3108a000 r--p 00000000 08:20 177959 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_sink.so.2601.0.0 +7f7c3108a000-7f7c3108b000 r-xp 00001000 08:20 177959 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_sink.so.2601.0.0 +7f7c3108b000-7f7c3108c000 r--p 00002000 08:20 177959 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_sink.so.2601.0.0 +7f7c3108c000-7f7c3108d000 r--p 00002000 08:20 177959 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_sink.so.2601.0.0 +7f7c3108d000-7f7c3108e000 rw-p 00003000 08:20 177959 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_sink.so.2601.0.0 +7f7c3108e000-7f7c31090000 r--p 00000000 08:20 175392 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_symbolize.so.2601.0.0 +7f7c31090000-7f7c31093000 r-xp 00002000 08:20 175392 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_symbolize.so.2601.0.0 +7f7c31093000-7f7c31094000 r--p 00005000 08:20 175392 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_symbolize.so.2601.0.0 +7f7c31094000-7f7c31095000 r--p 00006000 08:20 175392 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_symbolize.so.2601.0.0 +7f7c31095000-7f7c31096000 rw-p 00007000 08:20 175392 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_symbolize.so.2601.0.0 +7f7c31096000-7f7c31097000 r--p 00000000 08:20 176368 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_private_handle_accessor.so.2601.0.0 +7f7c31097000-7f7c31098000 r-xp 00001000 08:20 176368 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_private_handle_accessor.so.2601.0.0 +7f7c31098000-7f7c31099000 r--p 00002000 08:20 176368 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_private_handle_accessor.so.2601.0.0 +7f7c31099000-7f7c3109a000 r--p 00002000 08:20 176368 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_private_handle_accessor.so.2601.0.0 +7f7c3109a000-7f7c3109b000 rw-p 00003000 08:20 176368 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_private_handle_accessor.so.2601.0.0 +7f7c3109b000-7f7c3109d000 r--p 00000000 08:20 176315 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_config.so.2601.0.0 +7f7c3109d000-7f7c3109f000 r-xp 00002000 08:20 176315 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_config.so.2601.0.0 +7f7c3109f000-7f7c310a0000 r--p 00004000 08:20 176315 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_config.so.2601.0.0 +7f7c310a0000-7f7c310a1000 r--p 00004000 08:20 176315 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_config.so.2601.0.0 +7f7c310a1000-7f7c310a2000 rw-p 00005000 08:20 176315 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_config.so.2601.0.0 +7f7c310a2000-7f7c310a3000 r--p 00000000 08:20 174103 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag_internal.so.2601.0.0 +7f7c310a3000-7f7c310a4000 r-xp 00001000 08:20 174103 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag_internal.so.2601.0.0 +7f7c310a4000-7f7c310a5000 r--p 00002000 08:20 174103 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag_internal.so.2601.0.0 +7f7c310a5000-7f7c310a6000 r--p 00002000 08:20 174103 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag_internal.so.2601.0.0 +7f7c310a6000-7f7c310a7000 rw-p 00003000 08:20 174103 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag_internal.so.2601.0.0 +7f7c310a7000-7f7c310a8000 r--p 00000000 08:20 175648 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag.so.2601.0.0 +7f7c310a8000-7f7c310a9000 r-xp 00001000 08:20 175648 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag.so.2601.0.0 +7f7c310a9000-7f7c310aa000 r--p 00002000 08:20 175648 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag.so.2601.0.0 +7f7c310aa000-7f7c310ab000 r--p 00002000 08:20 175648 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag.so.2601.0.0 +7f7c310ab000-7f7c310ac000 rw-p 00003000 08:20 175648 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag.so.2601.0.0 +7f7c310ac000-7f7c310ad000 r--p 00000000 08:20 172450 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_platform.so.2601.0.0 +7f7c310ad000-7f7c310ae000 r-xp 00001000 08:20 172450 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_platform.so.2601.0.0 +7f7c310ae000-7f7c310b0000 r--p 00002000 08:20 172450 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_platform.so.2601.0.0 +7f7c310b0000-7f7c310b1000 r--p 00003000 08:20 172450 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_platform.so.2601.0.0 +7f7c310b1000-7f7c310b2000 rw-p 00004000 08:20 172450 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_platform.so.2601.0.0 +7f7c310b2000-7f7c310b3000 r--p 00000000 08:20 178131 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes.so.2601.0.0 +7f7c310b3000-7f7c310b4000 r-xp 00001000 08:20 178131 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes.so.2601.0.0 +7f7c310b4000-7f7c310b5000 r--p 00002000 08:20 178131 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes.so.2601.0.0 +7f7c310b5000-7f7c310b6000 r--p 00002000 08:20 178131 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes.so.2601.0.0 +7f7c310b6000-7f7c310b7000 rw-p 00003000 08:20 178131 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes.so.2601.0.0 +7f7c310b7000-7f7c310b8000 r--p 00000000 08:20 176601 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_seed_gen_exception.so.2601.0.0 +7f7c310b8000-7f7c310b9000 r-xp 00001000 08:20 176601 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_seed_gen_exception.so.2601.0.0 +7f7c310b9000-7f7c310ba000 r--p 00002000 08:20 176601 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_seed_gen_exception.so.2601.0.0 +7f7c310ba000-7f7c310bb000 r--p 00002000 08:20 176601 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_seed_gen_exception.so.2601.0.0 +7f7c310bb000-7f7c310bc000 rw-p 00003000 08:20 176601 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_seed_gen_exception.so.2601.0.0 +7f7c310bc000-7f7c310bd000 r--p 00000000 08:20 178171 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_seed_material.so.2601.0.0 +7f7c310bd000-7f7c310be000 r-xp 00001000 08:20 178171 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_seed_material.so.2601.0.0 +7f7c310be000-7f7c310bf000 r--p 00002000 08:20 178171 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_seed_material.so.2601.0.0 +7f7c310bf000-7f7c310c0000 r--p 00002000 08:20 178171 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_seed_material.so.2601.0.0 +7f7c310c0000-7f7c310c1000 rw-p 00003000 08:20 178171 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_seed_material.so.2601.0.0 +7f7c310c1000-7f7c310c2000 r--p 00000000 08:20 175910 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_city.so.2601.0.0 +7f7c310c2000-7f7c310c3000 r-xp 00001000 08:20 175910 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_city.so.2601.0.0 +7f7c310c3000-7f7c310c4000 r--p 00002000 08:20 175910 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_city.so.2601.0.0 +7f7c310c4000-7f7c310c5000 r--p 00002000 08:20 175910 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_city.so.2601.0.0 +7f7c310c5000-7f7c310c6000 rw-p 00003000 08:20 175910 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_city.so.2601.0.0 +7f7c310c6000-7f7c310c8000 r--p 00000000 08:20 174503 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hashtablez_sampler.so.2601.0.0 +7f7c310c8000-7f7c310c9000 r-xp 00002000 08:20 174503 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hashtablez_sampler.so.2601.0.0 +7f7c310c9000-7f7c310ca000 r--p 00003000 08:20 174503 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hashtablez_sampler.so.2601.0.0 +7f7c310ca000-7f7c310cb000 r--p 00003000 08:20 174503 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hashtablez_sampler.so.2601.0.0 +7f7c310cb000-7f7c310cc000 rw-p 00004000 08:20 174503 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hashtablez_sampler.so.2601.0.0 +7f7c310cc000-7f7c310ce000 r--p 00000000 08:20 176334 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_int128.so.2601.0.0 +7f7c310ce000-7f7c310d0000 r-xp 00002000 08:20 176334 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_int128.so.2601.0.0 +7f7c310d0000-7f7c310d1000 r--p 00004000 08:20 176334 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_int128.so.2601.0.0 +7f7c310d1000-7f7c310d2000 r--p 00004000 08:20 176334 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_int128.so.2601.0.0 +7f7c310d2000-7f7c310d3000 rw-p 00005000 08:20 176334 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_int128.so.2601.0.0 +7f7c310d3000-7f7c310d4000 r--p 00000000 08:20 173674 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_fnmatch.so.2601.0.0 +7f7c310d4000-7f7c310d5000 r-xp 00001000 08:20 173674 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_fnmatch.so.2601.0.0 +7f7c310d5000-7f7c310d6000 r--p 00002000 08:20 173674 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_fnmatch.so.2601.0.0 +7f7c310d6000-7f7c310d7000 r--p 00002000 08:20 173674 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_fnmatch.so.2601.0.0 +7f7c310d7000-7f7c310d8000 rw-p 00003000 08:20 173674 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_fnmatch.so.2601.0.0 +7f7c310d8000-7f7c310da000 r--p 00000000 08:20 176024 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_malloc_internal.so.2601.0.0 +7f7c310da000-7f7c310dc000 r-xp 00002000 08:20 176024 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_malloc_internal.so.2601.0.0 +7f7c310dc000-7f7c310dd000 r--p 00004000 08:20 176024 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_malloc_internal.so.2601.0.0 +7f7c310dd000-7f7c310de000 r--p 00004000 08:20 176024 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_malloc_internal.so.2601.0.0 +7f7c310de000-7f7c310df000 rw-p 00005000 08:20 176024 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_malloc_internal.so.2601.0.0 +7f7c310df000-7f7c310e0000 r--p 00000000 08:20 178559 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_tracing_internal.so.2601.0.0 +7f7c310e0000-7f7c310e1000 r-xp 00001000 08:20 178559 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_tracing_internal.so.2601.0.0 +7f7c310e1000-7f7c310e2000 r--p 00002000 08:20 178559 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_tracing_internal.so.2601.0.0 +7f7c310e2000-7f7c310e3000 r--p 00002000 08:20 178559 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_tracing_internal.so.2601.0.0 +7f7c310e3000-7f7c310e4000 rw-p 00003000 08:20 178559 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_tracing_internal.so.2601.0.0 +7f7c310e4000-7f7c310e5000 r--p 00000000 08:20 173445 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_exponential_biased.so.2601.0.0 +7f7c310e5000-7f7c310e6000 r-xp 00001000 08:20 173445 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_exponential_biased.so.2601.0.0 +7f7c310e6000-7f7c310e7000 r--p 00002000 08:20 173445 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_exponential_biased.so.2601.0.0 +7f7c310e7000-7f7c310e8000 r--p 00002000 08:20 173445 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_exponential_biased.so.2601.0.0 +7f7c310e8000-7f7c310e9000 rw-p 00003000 08:20 173445 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_exponential_biased.so.2601.0.0 +7f7c310e9000-7f7c310ea000 r--p 00000000 08:20 173659 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_stacktrace.so.2601.0.0 +7f7c310ea000-7f7c310ec000 r-xp 00001000 08:20 173659 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_stacktrace.so.2601.0.0 +7f7c310ec000-7f7c310ed000 r--p 00003000 08:20 173659 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_stacktrace.so.2601.0.0 +7f7c310ed000-7f7c310ee000 r--p 00003000 08:20 173659 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_stacktrace.so.2601.0.0 +7f7c310ee000-7f7c310ef000 rw-p 00004000 08:20 173659 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_stacktrace.so.2601.0.0 +7f7c310ef000-7f7c310f1000 r--p 00000000 08:20 177928 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_handle.so.2601.0.0 +7f7c310f1000-7f7c310f2000 r-xp 00002000 08:20 177928 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_handle.so.2601.0.0 +7f7c310f2000-7f7c310f3000 r--p 00003000 08:20 177928 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_handle.so.2601.0.0 +7f7c310f3000-7f7c310f4000 r--p 00003000 08:20 177928 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_handle.so.2601.0.0 +7f7c310f4000-7f7c310f5000 rw-p 00004000 08:20 177928 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_handle.so.2601.0.0 +7f7c310f5000-7f7c310f7000 r--p 00000000 08:20 175778 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_cord_state.so.2601.0.0 +7f7c310f7000-7f7c310fb000 r-xp 00002000 08:20 175778 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_cord_state.so.2601.0.0 +7f7c310fb000-7f7c310fc000 r--p 00006000 08:20 175778 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_cord_state.so.2601.0.0 +7f7c310fc000-7f7c310fd000 r--p 00006000 08:20 175778 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_cord_state.so.2601.0.0 +7f7c310fd000-7f7c310fe000 rw-p 00007000 08:20 175778 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_cord_state.so.2601.0.0 +7f7c310fe000-7f7c310ff000 r--p 00000000 08:20 177417 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_logging_internal.so.2601.0.0 +7f7c310ff000-7f7c31100000 r-xp 00001000 08:20 177417 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_logging_internal.so.2601.0.0 +7f7c31100000-7f7c31101000 r--p 00002000 08:20 177417 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_logging_internal.so.2601.0.0 +7f7c31101000-7f7c31102000 r--p 00002000 08:20 177417 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_logging_internal.so.2601.0.0 +7f7c31102000-7f7c31103000 rw-p 00003000 08:20 177417 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_logging_internal.so.2601.0.0 +7f7c31103000-7f7c31127000 r--p 00000000 08:20 167892 /home/cbrissette/cuopt/.cuopt_env/lib/libssl.so.3 +7f7c31127000-7f7c311c2000 r-xp 00024000 08:20 167892 /home/cbrissette/cuopt/.cuopt_env/lib/libssl.so.3 +7f7c311c2000-7f7c311f2000 r--p 000bf000 08:20 167892 /home/cbrissette/cuopt/.cuopt_env/lib/libssl.so.3 +7f7c311f2000-7f7c311fc000 r--p 000ef000 08:20 167892 /home/cbrissette/cuopt/.cuopt_env/lib/libssl.so.3 +7f7c311fc000-7f7c31200000 rw-p 000f9000 08:20 167892 /home/cbrissette/cuopt/.cuopt_env/lib/libssl.so.3 +7f7c31200000-7f7c3b16c000 r-xp 00000000 08:20 100411 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcusparse.so.12.7.10.1 +7f7c3b16c000-7f7c3b36c000 ---p 09f6c000 08:20 100411 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcusparse.so.12.7.10.1 +7f7c3b36c000-7f7c3b37b000 r--p 09f6c000 08:20 100411 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcusparse.so.12.7.10.1 +7f7c3b37b000-7f7c3b399000 rw-p 09f7b000 08:20 100411 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcusparse.so.12.7.10.1 +7f7c3b399000-7f7c3b3be000 rw-p 00000000 00:00 0 +7f7c3b3be000-7f7c3b3bf000 rw-s a01e2b000 00:01 8270 /dev/zero (deleted) +7f7c3b3bf000-7f7c3b3c0000 rw-s a01e2a000 00:01 8269 /dev/zero (deleted) +7f7c3b3c0000-7f7c3b3c1000 rw-s a01e29000 00:01 8268 /dev/zero (deleted) +7f7c3b3c1000-7f7c3b3c2000 rw-s a01e28000 00:01 8267 /dev/zero (deleted) +7f7c3b3c2000-7f7c3b3c4000 r--p 00000000 08:20 173916 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_base.so.2601.0.0 +7f7c3b3c4000-7f7c3b3c5000 r-xp 00002000 08:20 173916 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_base.so.2601.0.0 +7f7c3b3c5000-7f7c3b3c6000 r--p 00003000 08:20 173916 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_base.so.2601.0.0 +7f7c3b3c6000-7f7c3b3c7000 r--p 00003000 08:20 173916 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_base.so.2601.0.0 +7f7c3b3c7000-7f7c3b3c8000 rw-p 00004000 08:20 173916 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_base.so.2601.0.0 +7f7c3b3c8000-7f7c3b3ca000 r--p 00000000 08:20 177853 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings_internal.so.2601.0.0 +7f7c3b3ca000-7f7c3b3cb000 r-xp 00002000 08:20 177853 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings_internal.so.2601.0.0 +7f7c3b3cb000-7f7c3b3cc000 r--p 00003000 08:20 177853 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings_internal.so.2601.0.0 +7f7c3b3cc000-7f7c3b3cd000 r--p 00003000 08:20 177853 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings_internal.so.2601.0.0 +7f7c3b3cd000-7f7c3b3ce000 rw-p 00004000 08:20 177853 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings_internal.so.2601.0.0 +7f7c3b3ce000-7f7c3b3cf000 r--p 00000000 08:20 174472 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_proto.so.2601.0.0 +7f7c3b3cf000-7f7c3b3d0000 r-xp 00001000 08:20 174472 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_proto.so.2601.0.0 +7f7c3b3d0000-7f7c3b3d1000 r--p 00002000 08:20 174472 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_proto.so.2601.0.0 +7f7c3b3d1000-7f7c3b3d2000 r--p 00002000 08:20 174472 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_proto.so.2601.0.0 +7f7c3b3d2000-7f7c3b3d3000 rw-p 00003000 08:20 174472 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_proto.so.2601.0.0 +7f7c3b3d3000-7f7c3b3d4000 r--p 00000000 08:20 177006 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_globals.so.2601.0.0 +7f7c3b3d4000-7f7c3b3d5000 r-xp 00001000 08:20 177006 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_globals.so.2601.0.0 +7f7c3b3d5000-7f7c3b3d6000 r--p 00002000 08:20 177006 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_globals.so.2601.0.0 +7f7c3b3d6000-7f7c3b3d7000 r--p 00002000 08:20 177006 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_globals.so.2601.0.0 +7f7c3b3d7000-7f7c3b3d8000 rw-p 00003000 08:20 177006 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_globals.so.2601.0.0 +7f7c3b3d8000-7f7c3b3da000 r--p 00000000 08:20 172473 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_log_sink_set.so.2601.0.0 +7f7c3b3da000-7f7c3b3db000 r-xp 00002000 08:20 172473 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_log_sink_set.so.2601.0.0 +7f7c3b3db000-7f7c3b3dc000 r--p 00003000 08:20 172473 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_log_sink_set.so.2601.0.0 +7f7c3b3dc000-7f7c3b3dd000 r--p 00003000 08:20 172473 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_log_sink_set.so.2601.0.0 +7f7c3b3dd000-7f7c3b3de000 rw-p 00004000 08:20 172473 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_log_sink_set.so.2601.0.0 +7f7c3b3de000-7f7c3b3df000 r--p 00000000 08:20 173223 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strerror.so.2601.0.0 +7f7c3b3df000-7f7c3b3e0000 r-xp 00001000 08:20 173223 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strerror.so.2601.0.0 +7f7c3b3e0000-7f7c3b3e1000 r--p 00002000 08:20 173223 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strerror.so.2601.0.0 +7f7c3b3e1000-7f7c3b3e2000 r--p 00002000 08:20 173223 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strerror.so.2601.0.0 +7f7c3b3e2000-7f7c3b3e3000 rw-p 00003000 08:20 173223 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strerror.so.2601.0.0 +7f7c3b3e3000-7f7c3b3e4000 r--p 00000000 08:20 175668 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_structured_proto.so.2601.0.0 +7f7c3b3e4000-7f7c3b3e5000 r-xp 00001000 08:20 175668 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_structured_proto.so.2601.0.0 +7f7c3b3e5000-7f7c3b3e6000 r--p 00002000 08:20 175668 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_structured_proto.so.2601.0.0 +7f7c3b3e6000-7f7c3b3e7000 r--p 00002000 08:20 175668 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_structured_proto.so.2601.0.0 +7f7c3b3e7000-7f7c3b3e8000 rw-p 00003000 08:20 175668 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_structured_proto.so.2601.0.0 +7f7c3b3e8000-7f7c3b3ea000 r--p 00000000 08:20 173934 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_format.so.2601.0.0 +7f7c3b3ea000-7f7c3b3eb000 r-xp 00002000 08:20 173934 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_format.so.2601.0.0 +7f7c3b3eb000-7f7c3b3ec000 r--p 00003000 08:20 173934 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_format.so.2601.0.0 +7f7c3b3ec000-7f7c3b3ed000 r--p 00003000 08:20 173934 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_format.so.2601.0.0 +7f7c3b3ed000-7f7c3b3ee000 rw-p 00004000 08:20 173934 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_format.so.2601.0.0 +7f7c3b3ee000-7f7c3b3ef000 r--p 00000000 08:20 172814 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_examine_stack.so.2601.0.0 +7f7c3b3ef000-7f7c3b3f0000 r-xp 00001000 08:20 172814 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_examine_stack.so.2601.0.0 +7f7c3b3f0000-7f7c3b3f1000 r--p 00002000 08:20 172814 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_examine_stack.so.2601.0.0 +7f7c3b3f1000-7f7c3b3f2000 r--p 00002000 08:20 172814 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_examine_stack.so.2601.0.0 +7f7c3b3f2000-7f7c3b3f3000 rw-p 00003000 08:20 172814 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_examine_stack.so.2601.0.0 +7f7c3b3f3000-7f7c3b3f6000 r--p 00000000 08:20 172840 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_reflection.so.2601.0.0 +7f7c3b3f6000-7f7c3b3fc000 r-xp 00003000 08:20 172840 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_reflection.so.2601.0.0 +7f7c3b3fc000-7f7c3b3fe000 r--p 00009000 08:20 172840 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_reflection.so.2601.0.0 +7f7c3b3fe000-7f7c3b3ff000 r--p 0000a000 08:20 172840 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_reflection.so.2601.0.0 +7f7c3b3ff000-7f7c3b400000 rw-p 0000b000 08:20 172840 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_reflection.so.2601.0.0 +7f7c3b400000-7f7c3e79d000 r-xp 00000000 08:20 101544 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublas.so.13.4.0.1 +7f7c3e79d000-7f7c3e99d000 ---p 0339d000 08:20 101544 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublas.so.13.4.0.1 +7f7c3e99d000-7f7c3e9a9000 r--p 0339d000 08:20 101544 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublas.so.13.4.0.1 +7f7c3e9a9000-7f7c3e9b0000 rw-p 033a9000 08:20 101544 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublas.so.13.4.0.1 +7f7c3e9b0000-7f7c3e9d4000 rw-p 00000000 00:00 0 +7f7c3e9d4000-7f7c3e9d5000 rw-s a01e27000 00:01 8266 /dev/zero (deleted) +7f7c3e9d5000-7f7c3e9d6000 rw-s a01e26000 00:01 8265 /dev/zero (deleted) +7f7c3e9d6000-7f7c3e9d7000 r--p 00000000 08:20 176086 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_leak_check.so.2601.0.0 +7f7c3e9d7000-7f7c3e9d8000 r-xp 00001000 08:20 176086 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_leak_check.so.2601.0.0 +7f7c3e9d8000-7f7c3e9d9000 r--p 00002000 08:20 176086 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_leak_check.so.2601.0.0 +7f7c3e9d9000-7f7c3e9da000 r--p 00002000 08:20 176086 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_leak_check.so.2601.0.0 +7f7c3e9da000-7f7c3e9db000 rw-p 00003000 08:20 176086 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_leak_check.so.2601.0.0 +7f7c3e9db000-7f7c3e9df000 r--p 00000000 08:20 173480 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_marshalling.so.2601.0.0 +7f7c3e9df000-7f7c3e9e4000 r-xp 00004000 08:20 173480 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_marshalling.so.2601.0.0 +7f7c3e9e4000-7f7c3e9e5000 r--p 00009000 08:20 173480 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_marshalling.so.2601.0.0 +7f7c3e9e5000-7f7c3e9e6000 r--p 0000a000 08:20 173480 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_marshalling.so.2601.0.0 +7f7c3e9e6000-7f7c3e9e7000 rw-p 0000b000 08:20 173480 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_marshalling.so.2601.0.0 +7f7c3e9e7000-7f7c3e9eb000 r--p 00000000 08:20 176110 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_internal.so.2601.0.0 +7f7c3e9eb000-7f7c3e9ee000 r-xp 00004000 08:20 176110 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_internal.so.2601.0.0 +7f7c3e9ee000-7f7c3e9f0000 r--p 00007000 08:20 176110 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_internal.so.2601.0.0 +7f7c3e9f0000-7f7c3e9f1000 r--p 00008000 08:20 176110 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_internal.so.2601.0.0 +7f7c3e9f1000-7f7c3e9f2000 rw-p 00009000 08:20 176110 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_internal.so.2601.0.0 +7f7c3e9f2000-7f7c3e9f3000 r--p 00000000 08:20 176919 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_slow.so.2601.0.0 +7f7c3e9f3000-7f7c3e9f4000 r-xp 00001000 08:20 176919 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_slow.so.2601.0.0 +7f7c3e9f4000-7f7c3e9f6000 r--p 00002000 08:20 176919 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_slow.so.2601.0.0 +7f7c3e9f6000-7f7c3e9f7000 r--p 00003000 08:20 176919 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_slow.so.2601.0.0 +7f7c3e9f7000-7f7c3e9f8000 rw-p 00004000 08:20 176919 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_slow.so.2601.0.0 +7f7c3e9f8000-7f7c3e9f9000 r--p 00000000 08:20 172885 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes_impl.so.2601.0.0 +7f7c3e9f9000-7f7c3e9fa000 r-xp 00001000 08:20 172885 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes_impl.so.2601.0.0 +7f7c3e9fa000-7f7c3e9fb000 r--p 00002000 08:20 172885 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes_impl.so.2601.0.0 +7f7c3e9fb000-7f7c3e9fc000 r--p 00002000 08:20 172885 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes_impl.so.2601.0.0 +7f7c3e9fc000-7f7c3e9fd000 rw-p 00003000 08:20 172885 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes_impl.so.2601.0.0 +7f7c3e9fd000-7f7c3ea15000 r--p 00000000 08:20 192153 /home/cbrissette/cuopt/.cuopt_env/lib/libre2.so.11 +7f7c3ea15000-7f7c3ea5b000 r-xp 00018000 08:20 192153 /home/cbrissette/cuopt/.cuopt_env/lib/libre2.so.11 +7f7c3ea5b000-7f7c3ea74000 r--p 0005e000 08:20 192153 /home/cbrissette/cuopt/.cuopt_env/lib/libre2.so.11 +7f7c3ea74000-7f7c3ea79000 r--p 00076000 08:20 192153 /home/cbrissette/cuopt/.cuopt_env/lib/libre2.so.11 +7f7c3ea79000-7f7c3ea7a000 rw-p 0007b000 08:20 192153 /home/cbrissette/cuopt/.cuopt_env/lib/libre2.so.11 +7f7c3ea7a000-7f7c3ea88000 r--p 00000000 08:20 84539 /home/cbrissette/cuopt/.cuopt_env/lib/libcares.so.2.19.5 +7f7c3ea88000-7f7c3eab3000 r-xp 0000e000 08:20 84539 /home/cbrissette/cuopt/.cuopt_env/lib/libcares.so.2.19.5 +7f7c3eab3000-7f7c3eabe000 r--p 00039000 08:20 84539 /home/cbrissette/cuopt/.cuopt_env/lib/libcares.so.2.19.5 +7f7c3eabe000-7f7c3eac0000 r--p 00043000 08:20 84539 /home/cbrissette/cuopt/.cuopt_env/lib/libcares.so.2.19.5 +7f7c3eac0000-7f7c3eac1000 rw-p 00045000 08:20 84539 /home/cbrissette/cuopt/.cuopt_env/lib/libcares.so.2.19.5 +7f7c3eac1000-7f7c3ed51000 r--p 00000000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so +7f7c3ed51000-7f7c3f960000 r-xp 00290000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so +7f7c3f960000-7f7c3fc88000 r--p 00e9f000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so +7f7c3fc88000-7f7c3fca9000 r--p 011c7000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so +7f7c3fca9000-7f7c3fcb0000 rw-p 011e8000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so +7f7c3fcb0000-7f7c40e30000 rw-p 00000000 00:00 0 +7f7c40e30000-7f7c40e31000 ---p 0236f000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so +7f7c40e31000-7f7c44000000 rw-p 011ef000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so +7f7c44000000-7f7c44021000 rw-p 00000000 00:00 0 +7f7c44021000-7f7c48000000 ---p 00000000 00:00 0 +7f7c48000000-7f7c48021000 rw-p 00000000 00:00 0 +7f7c48021000-7f7c4c000000 ---p 00000000 00:00 0 +7f7c4c000000-7f7c4c021000 rw-p 00000000 00:00 0 +7f7c4c021000-7f7c50000000 ---p 00000000 00:00 0 +7f7c50000000-7f7c50021000 rw-p 00000000 00:00 0 +7f7c50021000-7f7c54000000 ---p 00000000 00:00 0 +7f7c54000000-7f7c54021000 rw-p 00000000 00:00 0 +7f7c54021000-7f7c58000000 ---p 00000000 00:00 0 +7f7c58000000-7f7c58021000 rw-p 00000000 00:00 0 +7f7c58021000-7f7c5c000000 ---p 00000000 00:00 0 +7f7c5c000000-7f7c5c04c000 rw-p 00000000 00:00 0 +7f7c5c04c000-7f7c60000000 ---p 00000000 00:00 0 +7f7c60000000-7f7c601c4000 rw-p 00000000 00:00 0 +7f7c601c4000-7f7c64000000 ---p 00000000 00:00 0 +7f7c64000000-7f7c64021000 rw-p 00000000 00:00 0 +7f7c64021000-7f7c68000000 ---p 00000000 00:00 0 +7f7c68000000-7f7c68023000 rw-p 00000000 00:00 0 +7f7c68023000-7f7c6c000000 ---p 00000000 00:00 0 +7f7c6c000000-7f7c6c021000 rw-p 00000000 00:00 0 +7f7c6c021000-7f7c70000000 ---p 00000000 00:00 0 +7f7c70000000-7f7c70021000 rw-p 00000000 00:00 0 +7f7c70021000-7f7c74000000 ---p 00000000 00:00 0 +7f7c74000000-7f7c74021000 rw-p 00000000 00:00 0 +7f7c74021000-7f7c78000000 ---p 00000000 00:00 0 +7f7c78000000-7f7c780e8000 rw-p 00000000 00:00 0 +7f7c780e8000-7f7c7c000000 ---p 00000000 00:00 0 +7f7c7c000000-7f7c7c3a3000 rw-p 00000000 00:00 0 +7f7c7c3a3000-7f7c80000000 ---p 00000000 00:00 0 +7f7c80000000-7f7c802b8000 rw-p 00000000 00:00 0 +7f7c802b8000-7f7c84000000 ---p 00000000 00:00 0 +7f7c84000000-7f7c84021000 rw-p 00000000 00:00 0 +7f7c84021000-7f7c88000000 ---p 00000000 00:00 0 +7f7c88000000-7f7c88021000 rw-p 00000000 00:00 0 +7f7c88021000-7f7c8c000000 ---p 00000000 00:00 0 +7f7c8c000000-7f7c8c021000 rw-p 00000000 00:00 0 +7f7c8c021000-7f7c90000000 ---p 00000000 00:00 0 +7f7c90000000-7f7c90021000 rw-p 00000000 00:00 0 +7f7c90021000-7f7c94000000 ---p 00000000 00:00 0 +7f7c94000000-7f7c94021000 rw-p 00000000 00:00 0 +7f7c94021000-7f7c98000000 ---p 00000000 00:00 0 +7f7c98000000-7f7c98023000 rw-p 00000000 00:00 0 +7f7c98023000-7f7c9c000000 ---p 00000000 00:00 0 +7f7c9c000000-7f7c9c021000 rw-p 00000000 00:00 0 +7f7c9c021000-7f7ca0000000 ---p 00000000 00:00 0 +7f7ca0000000-7f7ca0021000 rw-p 00000000 00:00 0 +7f7ca0021000-7f7ca4000000 ---p 00000000 00:00 0 +7f7ca4000000-7f7ca4001000 rw-s a01e25000 00:01 8264 /dev/zero (deleted) +7f7ca4001000-7f7ca4002000 rw-s a01e24000 00:01 8263 /dev/zero (deleted) +7f7ca4002000-7f7ca4003000 r--p 00000000 08:20 173464 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen.so.2601.0.0 +7f7ca4003000-7f7ca4004000 r-xp 00001000 08:20 173464 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen.so.2601.0.0 +7f7ca4004000-7f7ca4005000 r--p 00002000 08:20 173464 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen.so.2601.0.0 +7f7ca4005000-7f7ca4006000 r--p 00002000 08:20 173464 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen.so.2601.0.0 +7f7ca4006000-7f7ca4007000 rw-p 00003000 08:20 173464 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen.so.2601.0.0 +7f7ca4007000-7f7ca4009000 r--p 00000000 08:20 178082 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_kernel_timeout_internal.so.2601.0.0 +7f7ca4009000-7f7ca400a000 r-xp 00002000 08:20 178082 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_kernel_timeout_internal.so.2601.0.0 +7f7ca400a000-7f7ca400b000 r--p 00003000 08:20 178082 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_kernel_timeout_internal.so.2601.0.0 +7f7ca400b000-7f7ca400c000 r--p 00003000 08:20 178082 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_kernel_timeout_internal.so.2601.0.0 +7f7ca400c000-7f7ca400d000 rw-p 00004000 08:20 178082 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_kernel_timeout_internal.so.2601.0.0 +7f7ca400d000-7f7ca400f000 r--p 00000000 08:20 175359 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_entropy_pool.so.2601.0.0 +7f7ca400f000-7f7ca4010000 r-xp 00002000 08:20 175359 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_entropy_pool.so.2601.0.0 +7f7ca4010000-7f7ca4011000 r--p 00003000 08:20 175359 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_entropy_pool.so.2601.0.0 +7f7ca4011000-7f7ca4012000 r--p 00003000 08:20 175359 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_entropy_pool.so.2601.0.0 +7f7ca4012000-7f7ca4013000 rw-p 00004000 08:20 175359 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_entropy_pool.so.2601.0.0 +7f7ca4013000-7f7ca4015000 r--p 00000000 08:20 178507 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_globals.so.2601.0.0 +7f7ca4015000-7f7ca4016000 r-xp 00002000 08:20 178507 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_globals.so.2601.0.0 +7f7ca4016000-7f7ca4017000 r--p 00003000 08:20 178507 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_globals.so.2601.0.0 +7f7ca4017000-7f7ca4018000 r--p 00003000 08:20 178507 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_globals.so.2601.0.0 +7f7ca4018000-7f7ca4019000 rw-p 00004000 08:20 178507 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_globals.so.2601.0.0 +7f7ca4019000-7f7ca401a000 r--p 00000000 08:20 139113 /home/cbrissette/cuopt/.cuopt_env/lib/libaddress_sorting.so.52.0.0 +7f7ca401a000-7f7ca401b000 r-xp 00001000 08:20 139113 /home/cbrissette/cuopt/.cuopt_env/lib/libaddress_sorting.so.52.0.0 +7f7ca401b000-7f7ca401c000 r--p 00002000 08:20 139113 /home/cbrissette/cuopt/.cuopt_env/lib/libaddress_sorting.so.52.0.0 +7f7ca401c000-7f7ca401d000 r--p 00002000 08:20 139113 /home/cbrissette/cuopt/.cuopt_env/lib/libaddress_sorting.so.52.0.0 +7f7ca401d000-7f7ca401e000 rw-p 00003000 08:20 139113 /home/cbrissette/cuopt/.cuopt_env/lib/libaddress_sorting.so.52.0.0 +7f7ca401e000-7f7ca4021000 r--p 00000000 08:20 175772 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_throw_delegate.so.2601.0.0 +7f7ca4021000-7f7ca4022000 r-xp 00003000 08:20 175772 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_throw_delegate.so.2601.0.0 +7f7ca4022000-7f7ca4023000 r--p 00004000 08:20 175772 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_throw_delegate.so.2601.0.0 +7f7ca4023000-7f7ca4024000 r--p 00004000 08:20 175772 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_throw_delegate.so.2601.0.0 +7f7ca4024000-7f7ca4025000 rw-p 00005000 08:20 175772 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_throw_delegate.so.2601.0.0 +7f7ca4025000-7f7ca4026000 r--p 00000000 08:20 174707 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_spinlock_wait.so.2601.0.0 +7f7ca4026000-7f7ca4027000 r-xp 00001000 08:20 174707 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_spinlock_wait.so.2601.0.0 +7f7ca4027000-7f7ca4028000 r--p 00002000 08:20 174707 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_spinlock_wait.so.2601.0.0 +7f7ca4028000-7f7ca4029000 r--p 00002000 08:20 174707 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_spinlock_wait.so.2601.0.0 +7f7ca4029000-7f7ca402a000 rw-p 00003000 08:20 174707 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_spinlock_wait.so.2601.0.0 +7f7ca402a000-7f7ca402b000 r--p 00000000 08:20 172795 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hash.so.2601.0.0 +7f7ca402b000-7f7ca402c000 r-xp 00001000 08:20 172795 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hash.so.2601.0.0 +7f7ca402c000-7f7ca402d000 r--p 00002000 08:20 172795 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hash.so.2601.0.0 +7f7ca402d000-7f7ca402e000 r--p 00002000 08:20 172795 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hash.so.2601.0.0 +7f7ca402e000-7f7ca402f000 rw-p 00003000 08:20 172795 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hash.so.2601.0.0 +7f7ca402f000-7f7ca4036000 r--p 00000000 08:20 172948 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time_zone.so.2601.0.0 +7f7ca4036000-7f7ca404a000 r-xp 00007000 08:20 172948 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time_zone.so.2601.0.0 +7f7ca404a000-7f7ca404d000 r--p 0001b000 08:20 172948 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time_zone.so.2601.0.0 +7f7ca404d000-7f7ca404e000 r--p 0001e000 08:20 172948 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time_zone.so.2601.0.0 +7f7ca404e000-7f7ca404f000 rw-p 0001f000 08:20 172948 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time_zone.so.2601.0.0 +7f7ca404f000-7f7ca4055000 r--p 00000000 08:20 173780 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time.so.2601.0.0 +7f7ca4055000-7f7ca4062000 r-xp 00006000 08:20 173780 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time.so.2601.0.0 +7f7ca4062000-7f7ca4064000 r--p 00013000 08:20 173780 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time.so.2601.0.0 +7f7ca4064000-7f7ca4065000 r--p 00015000 08:20 173780 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time.so.2601.0.0 +7f7ca4065000-7f7ca4066000 rw-p 00016000 08:20 173780 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time.so.2601.0.0 +7f7ca4066000-7f7ca4069000 r--p 00000000 08:20 174438 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord_internal.so.2601.0.0 +7f7ca4069000-7f7ca4077000 r-xp 00003000 08:20 174438 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord_internal.so.2601.0.0 +7f7ca4077000-7f7ca4079000 r--p 00011000 08:20 174438 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord_internal.so.2601.0.0 +7f7ca4079000-7f7ca407a000 r--p 00012000 08:20 174438 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord_internal.so.2601.0.0 +7f7ca407a000-7f7ca407b000 rw-p 00013000 08:20 174438 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord_internal.so.2601.0.0 +7f7ca407b000-7f7ca407d000 r--p 00000000 08:20 173725 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_hash_set.so.2601.0.0 +7f7ca407d000-7f7ca4081000 r-xp 00002000 08:20 173725 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_hash_set.so.2601.0.0 +7f7ca4081000-7f7ca4082000 r--p 00006000 08:20 173725 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_hash_set.so.2601.0.0 +7f7ca4082000-7f7ca4083000 r--p 00007000 08:20 173725 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_hash_set.so.2601.0.0 +7f7ca4083000-7f7ca4084000 rw-p 00008000 08:20 173725 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_hash_set.so.2601.0.0 +7f7ca4084000-7f7ca4085000 r--p 00000000 08:20 174927 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_conditions.so.2601.0.0 +7f7ca4085000-7f7ca4086000 r-xp 00001000 08:20 174927 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_conditions.so.2601.0.0 +7f7ca4086000-7f7ca4087000 r--p 00002000 08:20 174927 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_conditions.so.2601.0.0 +7f7ca4087000-7f7ca4088000 r--p 00002000 08:20 174927 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_conditions.so.2601.0.0 +7f7ca4088000-7f7ca4089000 rw-p 00003000 08:20 174927 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_conditions.so.2601.0.0 +7f7ca4089000-7f7ca408a000 r--p 00000000 08:20 144730 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_validity.so.33.5.0 +7f7ca408a000-7f7ca408b000 r-xp 00001000 08:20 144730 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_validity.so.33.5.0 +7f7ca408b000-7f7ca408c000 r--p 00002000 08:20 144730 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_validity.so.33.5.0 +7f7ca408c000-7f7ca408d000 r--p 00002000 08:20 144730 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_validity.so.33.5.0 +7f7ca408d000-7f7ca408e000 rw-p 00003000 08:20 144730 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_validity.so.33.5.0 +7f7ca408e000-7f7ca408f000 r--p 00000000 08:20 173312 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_die_if_null.so.2601.0.0 +7f7ca408f000-7f7ca4090000 r-xp 00001000 08:20 173312 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_die_if_null.so.2601.0.0 +7f7ca4090000-7f7ca4091000 r--p 00002000 08:20 173312 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_die_if_null.so.2601.0.0 +7f7ca4091000-7f7ca4092000 r--p 00002000 08:20 173312 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_die_if_null.so.2601.0.0 +7f7ca4092000-7f7ca4093000 rw-p 00003000 08:20 173312 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_die_if_null.so.2601.0.0 +7f7ca4093000-7f7ca4099000 r--p 00000000 08:20 178474 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_str_format_internal.so.2601.0.0 +7f7ca4099000-7f7ca40af000 r-xp 00006000 08:20 178474 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_str_format_internal.so.2601.0.0 +7f7ca40af000-7f7ca40b2000 r--p 0001c000 08:20 178474 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_str_format_internal.so.2601.0.0 +7f7ca40b2000-7f7ca40b3000 r--p 0001f000 08:20 178474 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_str_format_internal.so.2601.0.0 +7f7ca40b3000-7f7ca40b4000 rw-p 00020000 08:20 178474 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_str_format_internal.so.2601.0.0 +7f7ca40b4000-7f7ca40b8000 r--p 00000000 08:20 178182 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_status.so.2601.0.0 +7f7ca40b8000-7f7ca40bc000 r-xp 00004000 08:20 178182 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_status.so.2601.0.0 +7f7ca40bc000-7f7ca40be000 r--p 00008000 08:20 178182 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_status.so.2601.0.0 +7f7ca40be000-7f7ca40bf000 r--p 00009000 08:20 178182 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_status.so.2601.0.0 +7f7ca40bf000-7f7ca40c0000 rw-p 0000a000 08:20 178182 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_status.so.2601.0.0 +7f7ca40c0000-7f7ca40c2000 r--p 00000000 08:20 175942 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_statusor.so.2601.0.0 +7f7ca40c2000-7f7ca40c3000 r-xp 00002000 08:20 175942 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_statusor.so.2601.0.0 +7f7ca40c3000-7f7ca40c4000 r--p 00003000 08:20 175942 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_statusor.so.2601.0.0 +7f7ca40c4000-7f7ca40c5000 r--p 00003000 08:20 175942 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_statusor.so.2601.0.0 +7f7ca40c5000-7f7ca40c6000 rw-p 00004000 08:20 175942 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_statusor.so.2601.0.0 +7f7ca40c6000-7f7ca40c8000 r--p 00000000 08:20 174394 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_vlog_config_internal.so.2601.0.0 +7f7ca40c8000-7f7ca40cc000 r-xp 00002000 08:20 174394 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_vlog_config_internal.so.2601.0.0 +7f7ca40cc000-7f7ca40cd000 r--p 00006000 08:20 174394 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_vlog_config_internal.so.2601.0.0 +7f7ca40cd000-7f7ca40ce000 r--p 00006000 08:20 174394 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_vlog_config_internal.so.2601.0.0 +7f7ca40ce000-7f7ca40cf000 rw-p 00007000 08:20 174394 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_vlog_config_internal.so.2601.0.0 +7f7ca40cf000-7f7ca40d0000 r--p 00000000 08:20 144825 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_range.so.33.5.0 +7f7ca40d0000-7f7ca40d1000 r-xp 00001000 08:20 144825 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_range.so.33.5.0 +7f7ca40d1000-7f7ca40d2000 r--p 00002000 08:20 144825 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_range.so.33.5.0 +7f7ca40d2000-7f7ca40d3000 r--p 00002000 08:20 144825 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_range.so.33.5.0 +7f7ca40d3000-7f7ca40d4000 rw-p 00003000 08:20 144825 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_range.so.33.5.0 +7f7ca40d4000-7f7ca40db000 r--p 00000000 08:20 173525 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings.so.2601.0.0 +7f7ca40db000-7f7ca40f2000 r-xp 00007000 08:20 173525 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings.so.2601.0.0 +7f7ca40f2000-7f7ca40fb000 r--p 0001e000 08:20 173525 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings.so.2601.0.0 +7f7ca40fb000-7f7ca40fc000 r--p 00026000 08:20 173525 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings.so.2601.0.0 +7f7ca40fc000-7f7ca40fd000 rw-p 00027000 08:20 173525 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings.so.2601.0.0 +7f7ca40fd000-7f7ca4103000 r--p 00000000 08:20 176237 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_synchronization.so.2601.0.0 +7f7ca4103000-7f7ca4108000 r-xp 00006000 08:20 176237 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_synchronization.so.2601.0.0 +7f7ca4108000-7f7ca410b000 r--p 0000b000 08:20 176237 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_synchronization.so.2601.0.0 +7f7ca410b000-7f7ca410c000 r--p 0000d000 08:20 176237 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_synchronization.so.2601.0.0 +7f7ca410c000-7f7ca410d000 rw-p 0000e000 08:20 176237 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_synchronization.so.2601.0.0 +7f7ca410d000-7f7ca410f000 rw-p 00000000 00:00 0 +7f7ca410f000-7f7ca4110000 r--p 00000000 08:20 178365 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_functions.so.2601.0.0 +7f7ca4110000-7f7ca4111000 r-xp 00001000 08:20 178365 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_functions.so.2601.0.0 +7f7ca4111000-7f7ca4112000 r--p 00002000 08:20 178365 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_functions.so.2601.0.0 +7f7ca4112000-7f7ca4113000 r--p 00002000 08:20 178365 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_functions.so.2601.0.0 +7f7ca4113000-7f7ca4114000 rw-p 00003000 08:20 178365 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_functions.so.2601.0.0 +7f7ca4114000-7f7ca4116000 r--p 00000000 08:20 175257 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_info.so.2601.0.0 +7f7ca4116000-7f7ca4118000 r-xp 00002000 08:20 175257 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_info.so.2601.0.0 +7f7ca4118000-7f7ca4119000 r--p 00004000 08:20 175257 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_info.so.2601.0.0 +7f7ca4119000-7f7ca411a000 r--p 00004000 08:20 175257 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_info.so.2601.0.0 +7f7ca411a000-7f7ca411b000 rw-p 00005000 08:20 175257 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_info.so.2601.0.0 +7f7ca411b000-7f7ca4121000 r--p 00000000 08:20 177056 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord.so.2601.0.0 +7f7ca4121000-7f7ca413a000 r-xp 00006000 08:20 177056 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord.so.2601.0.0 +7f7ca413a000-7f7ca413d000 r--p 0001f000 08:20 177056 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord.so.2601.0.0 +7f7ca413d000-7f7ca413e000 r--p 00021000 08:20 177056 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord.so.2601.0.0 +7f7ca413e000-7f7ca413f000 rw-p 00022000 08:20 177056 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord.so.2601.0.0 +7f7ca413f000-7f7ca4145000 r--p 00000000 08:20 173104 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_message.so.2601.0.0 +7f7ca4145000-7f7ca4149000 r-xp 00006000 08:20 173104 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_message.so.2601.0.0 +7f7ca4149000-7f7ca414b000 r--p 0000a000 08:20 173104 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_message.so.2601.0.0 +7f7ca414b000-7f7ca414c000 r--p 0000b000 08:20 173104 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_message.so.2601.0.0 +7f7ca414c000-7f7ca414d000 rw-p 0000c000 08:20 173104 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_message.so.2601.0.0 +7f7ca414d000-7f7ca41e2000 r--p 00000000 08:20 144643 /home/cbrissette/cuopt/.cuopt_env/lib/libprotobuf.so.33.5.0 +7f7ca41e2000-7f7ca4405000 r-xp 00095000 08:20 144643 /home/cbrissette/cuopt/.cuopt_env/lib/libprotobuf.so.33.5.0 +7f7ca4405000-7f7ca4471000 r--p 002b8000 08:20 144643 /home/cbrissette/cuopt/.cuopt_env/lib/libprotobuf.so.33.5.0 +7f7ca4471000-7f7ca447c000 r--p 00324000 08:20 144643 /home/cbrissette/cuopt/.cuopt_env/lib/libprotobuf.so.33.5.0 +7f7ca447c000-7f7ca4483000 rw-p 0032f000 08:20 144643 /home/cbrissette/cuopt/.cuopt_env/lib/libprotobuf.so.33.5.0 +7f7ca4483000-7f7ca4484000 rw-p 00000000 00:00 0 +7f7ca4484000-7f7ca4491000 r--p 00000000 08:20 83455 /home/cbrissette/cuopt/.cuopt_env/lib/libgomp.so.1.0.0 +7f7ca4491000-7f7ca44ca000 r-xp 0000d000 08:20 83455 /home/cbrissette/cuopt/.cuopt_env/lib/libgomp.so.1.0.0 +7f7ca44ca000-7f7ca44d8000 r--p 00046000 08:20 83455 /home/cbrissette/cuopt/.cuopt_env/lib/libgomp.so.1.0.0 +7f7ca44d8000-7f7ca44d9000 r--p 00054000 08:20 83455 /home/cbrissette/cuopt/.cuopt_env/lib/libgomp.so.1.0.0 +7f7ca44d9000-7f7ca44da000 rw-p 00055000 08:20 83455 /home/cbrissette/cuopt/.cuopt_env/lib/libgomp.so.1.0.0 +7f7ca44da000-7f7ca44f6000 r--p 00000000 08:20 182877 /home/cbrissette/cuopt/.cuopt_env/lib/librmm.so +7f7ca44f6000-7f7ca45b6000 r-xp 0001c000 08:20 182877 /home/cbrissette/cuopt/.cuopt_env/lib/librmm.so +7f7ca45b6000-7f7ca45e6000 r--p 000dc000 08:20 182877 /home/cbrissette/cuopt/.cuopt_env/lib/librmm.so +7f7ca45e6000-7f7ca45ed000 r--p 0010c000 08:20 182877 /home/cbrissette/cuopt/.cuopt_env/lib/librmm.so +7f7ca45ed000-7f7ca45ee000 rw-p 00113000 08:20 182877 /home/cbrissette/cuopt/.cuopt_env/lib/librmm.so +7f7ca45ee000-7f7ca45f0000 rw-p 00000000 00:00 0 +7f7ca45f0000-7f7ca461d000 r--p 00000000 08:20 140888 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc++.so.1.78.1 +7f7ca461d000-7f7ca4676000 r-xp 0002d000 08:20 140888 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc++.so.1.78.1 +7f7ca4676000-7f7ca4692000 r--p 00086000 08:20 140888 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc++.so.1.78.1 +7f7ca4692000-7f7ca4697000 r--p 000a2000 08:20 140888 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc++.so.1.78.1 +7f7ca4697000-7f7ca4698000 rw-p 000a7000 08:20 140888 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc++.so.1.78.1 +7f7ca4698000-7f7ca46a6000 r--p 00000000 08:20 194104 /home/cbrissette/cuopt/.cuopt_env/lib/libtbb.so.12.18 +7f7ca46a6000-7f7ca46d3000 r-xp 0000e000 08:20 194104 /home/cbrissette/cuopt/.cuopt_env/lib/libtbb.so.12.18 +7f7ca46d3000-7f7ca46df000 r--p 0003b000 08:20 194104 /home/cbrissette/cuopt/.cuopt_env/lib/libtbb.so.12.18 +7f7ca46df000-7f7ca46e1000 r--p 00046000 08:20 194104 /home/cbrissette/cuopt/.cuopt_env/lib/libtbb.so.12.18 +7f7ca46e1000-7f7ca46e4000 rw-p 00048000 08:20 194104 /home/cbrissette/cuopt/.cuopt_env/lib/libtbb.so.12.18 +7f7ca46e4000-7f7ca46fa000 rw-p 00000000 00:00 0 +7f7ca46fa000-7f7ca46fe000 ---p 00000000 00:00 0 +7f7ca46fe000-7f7ca47fa000 rw-p 00000000 00:00 0 +7f7ca47fa000-7f7ca47fb000 ---p 00000000 00:00 0 +7f7ca47fb000-7f7ca48fb000 rw-p 00000000 00:00 0 +7f7ca48fb000-7f7ca48fc000 ---p 00000000 00:00 0 +7f7ca48fc000-7f7ca49fc000 rw-p 00000000 00:00 0 +7f7ca49fc000-7f7ca49fd000 ---p 00000000 00:00 0 +7f7ca49fd000-7f7ca4afd000 rw-p 00000000 00:00 0 +7f7ca4afd000-7f7ca4afe000 ---p 00000000 00:00 0 +7f7ca4afe000-7f7ca4bfe000 rw-p 00000000 00:00 0 +7f7ca4bfe000-7f7ca4bff000 ---p 00000000 00:00 0 +7f7ca4bff000-7f7ca4cff000 rw-p 00000000 00:00 0 +7f7ca4cff000-7f7ca4d03000 ---p 00000000 00:00 0 +7f7ca4d03000-7f7ca4dff000 rw-p 00000000 00:00 0 +7f7ca4dff000-7f7ca4e03000 ---p 00000000 00:00 0 +7f7ca4e03000-7f7ca4eff000 rw-p 00000000 00:00 0 +7f7ca4eff000-7f7ca4f03000 ---p 00000000 00:00 0 +7f7ca4f03000-7f7ca4fff000 rw-p 00000000 00:00 0 +7f7ca4fff000-7f7ca5003000 ---p 00000000 00:00 0 +7f7ca5003000-7f7ca50ff000 rw-p 00000000 00:00 0 +7f7ca50ff000-7f7ca5103000 ---p 00000000 00:00 0 +7f7ca5103000-7f7ca51ff000 rw-p 00000000 00:00 0 +7f7ca51ff000-7f7ca5200000 ---p 00000000 00:00 0 +7f7ca5200000-7f7ca5300000 rw-p 00000000 00:00 0 +7f7ca5300000-7f7ca5304000 ---p 00000000 00:00 0 +7f7ca5304000-7f7ca5400000 rw-p 00000000 00:00 0 +7f7ca5400000-7f7ca5404000 ---p 00000000 00:00 0 +7f7ca5404000-7f7ca5500000 rw-p 00000000 00:00 0 +7f7ca5500000-7f7ca5504000 ---p 00000000 00:00 0 +7f7ca5504000-7f7ca5600000 rw-p 00000000 00:00 0 +7f7ca5600000-7f7ca5604000 ---p 00000000 00:00 0 +7f7ca5604000-7f7ca5700000 rw-p 00000000 00:00 0 +7f7ca5700000-7f7ca5704000 ---p 00000000 00:00 0 +7f7ca5704000-7f7ca5fc0000 rw-p 00000000 00:00 0 +7f7ca5fc0000-7f7ca6000000 ---p 00000000 00:00 0 +7f7ca6000000-7f7ca8000000 rw-p 00000000 00:00 0 +7f7ca8000000-7f7ca8021000 rw-p 00000000 00:00 0 +7f7ca8021000-7f7cac000000 ---p 00000000 00:00 0 +7f7cac000000-7f7cac003000 r--p 00000000 08:20 175246 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_check_op.so.2601.0.0 +7f7cac003000-7f7cac006000 r-xp 00003000 08:20 175246 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_check_op.so.2601.0.0 +7f7cac006000-7f7cac007000 r--p 00006000 08:20 175246 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_check_op.so.2601.0.0 +7f7cac007000-7f7cac008000 r--p 00006000 08:20 175246 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_check_op.so.2601.0.0 +7f7cac008000-7f7cac009000 rw-p 00007000 08:20 175246 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_check_op.so.2601.0.0 +7f7cac009000-7f7cac013000 r--p 00000000 08:20 198476 /home/cbrissette/cuopt/.cuopt_env/lib/librapids_logger.so +7f7cac013000-7f7cac044000 r-xp 0000a000 08:20 198476 /home/cbrissette/cuopt/.cuopt_env/lib/librapids_logger.so +7f7cac044000-7f7cac051000 r--p 0003b000 08:20 198476 /home/cbrissette/cuopt/.cuopt_env/lib/librapids_logger.so +7f7cac051000-7f7cac054000 r--p 00048000 08:20 198476 /home/cbrissette/cuopt/.cuopt_env/lib/librapids_logger.so +7f7cac054000-7f7cac055000 rw-p 0004b000 08:20 198476 /home/cbrissette/cuopt/.cuopt_env/lib/librapids_logger.so +7f7cac055000-7f7cac067000 r--p 00000000 08:20 78513 /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so +7f7cac067000-7f7cac083000 r-xp 00012000 08:20 78513 /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so +7f7cac083000-7f7cac08c000 r--p 0002e000 08:20 78513 /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so +7f7cac08c000-7f7cac08d000 r--p 00037000 08:20 78513 /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so +7f7cac08d000-7f7cac08e000 rw-p 00038000 08:20 78513 /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so +7f7cac08e000-7f7cac08f000 rw-p 00000000 00:00 0 +7f7cac08f000-7f7cac093000 ---p 00000000 00:00 0 +7f7cac093000-7f7cac18f000 rw-p 00000000 00:00 0 +7f7cac18f000-7f7cac193000 ---p 00000000 00:00 0 +7f7cac193000-7f7cac28f000 rw-p 00000000 00:00 0 +7f7cac28f000-7f7cac293000 ---p 00000000 00:00 0 +7f7cac293000-7f7cac38f000 rw-p 00000000 00:00 0 +7f7cac38f000-7f7cac390000 ---p 00000000 00:00 0 +7f7cac390000-7f7cac870000 rw-p 00000000 00:00 0 +7f7cac870000-7f7caf240000 ---p 00000000 00:00 0 +7f7caf240000-7f7caf248000 rw-p 00000000 00:00 0 +7f7caf248000-7f7cb0248000 ---p 00000000 00:00 0 +7f7cb0248000-7f7cb0628000 rw-p 00000000 00:00 0 +7f7cb0628000-7f7cb2ff8000 ---p 00000000 00:00 0 +7f7cb2ff8000-7f7cb3000000 rw-p 00000000 00:00 0 +7f7cb3000000-7f7cb4000000 ---p 00000000 00:00 0 +7f7cb4000000-7f7cb4021000 rw-p 00000000 00:00 0 +7f7cb4021000-7f7cb8000000 ---p 00000000 00:00 0 +7f7cb8000000-7f7cb8001000 r--p 00000000 08:20 172516 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_nullguard.so.2601.0.0 +7f7cb8001000-7f7cb8002000 r-xp 00001000 08:20 172516 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_nullguard.so.2601.0.0 +7f7cb8002000-7f7cb8003000 r--p 00002000 08:20 172516 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_nullguard.so.2601.0.0 +7f7cb8003000-7f7cb8004000 r--p 00002000 08:20 172516 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_nullguard.so.2601.0.0 +7f7cb8004000-7f7cb8005000 rw-p 00003000 08:20 172516 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_nullguard.so.2601.0.0 +7f7cb8005000-7f7cb8011000 r--p 00000000 08:20 140730 /home/cbrissette/cuopt/.cuopt_env/lib/libgpr.so.52.0.0 +7f7cb8011000-7f7cb801e000 r-xp 0000c000 08:20 140730 /home/cbrissette/cuopt/.cuopt_env/lib/libgpr.so.52.0.0 +7f7cb801e000-7f7cb8024000 r--p 00019000 08:20 140730 /home/cbrissette/cuopt/.cuopt_env/lib/libgpr.so.52.0.0 +7f7cb8024000-7f7cb8025000 r--p 0001f000 08:20 140730 /home/cbrissette/cuopt/.cuopt_env/lib/libgpr.so.52.0.0 +7f7cb8025000-7f7cb8026000 rw-p 00020000 08:20 140730 /home/cbrissette/cuopt/.cuopt_env/lib/libgpr.so.52.0.0 +7f7cb8026000-7f7cb8027000 r--p 00000000 08:20 218634 /usr/lib/x86_64-linux-gnu/libpthread.so.0 +7f7cb8027000-7f7cb8028000 r-xp 00001000 08:20 218634 /usr/lib/x86_64-linux-gnu/libpthread.so.0 +7f7cb8028000-7f7cb8029000 r--p 00002000 08:20 218634 /usr/lib/x86_64-linux-gnu/libpthread.so.0 +7f7cb8029000-7f7cb802a000 r--p 00002000 08:20 218634 /usr/lib/x86_64-linux-gnu/libpthread.so.0 +7f7cb802a000-7f7cb802b000 rw-p 00003000 08:20 218634 /usr/lib/x86_64-linux-gnu/libpthread.so.0 +7f7cb802b000-7f7cb802c000 rw-s a01e23000 00:01 8262 /dev/zero (deleted) +7f7cb802c000-7f7cb802d000 rw-s a01e22000 00:01 8261 /dev/zero (deleted) +7f7cb802d000-7f7cb802e000 rw-s a01e21000 00:01 8257 /dev/zero (deleted) +7f7cb802e000-7f7cb802f000 rw-s a01e20000 00:01 8256 /dev/zero (deleted) +7f7cb802f000-7f7cb8030000 rw-s a01e1f000 00:01 8255 /dev/zero (deleted) +7f7cb8030000-7f7cb8031000 rw-s a01e1e000 00:01 8254 /dev/zero (deleted) +7f7cb8031000-7f7cb8032000 rw-s a01e1d000 00:01 8253 /dev/zero (deleted) +7f7cb8032000-7f7cb8033000 r--p 00000000 00:00 0 +7f7cb8033000-7f7cb8034000 rw-s a01e1c000 00:01 8251 /dev/zero (deleted) +7f7cb8034000-7f7cb8035000 rw-s a01e1b000 00:01 280 /dev/zero (deleted) +7f7cb8035000-7f7cb8037000 r--p 00000000 08:20 294962 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement_ext.so +7f7cb8037000-7f7cb803a000 r-xp 00002000 08:20 294962 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement_ext.so +7f7cb803a000-7f7cb803c000 r--p 00005000 08:20 294962 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement_ext.so +7f7cb803c000-7f7cb803d000 r--p 00006000 08:20 294962 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement_ext.so +7f7cb803d000-7f7cb803e000 rw-p 00007000 08:20 294962 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement_ext.so +7f7cb803e000-7f7cb8041000 r--p 00000000 08:20 294960 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement.so +7f7cb8041000-7f7cb8042000 r-xp 00003000 08:20 294960 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement.so +7f7cb8042000-7f7cb8043000 r--p 00004000 08:20 294960 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement.so +7f7cb8043000-7f7cb8044000 r--p 00004000 08:20 294960 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement.so +7f7cb8044000-7f7cb8045000 rw-p 00005000 08:20 294960 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement.so +7f7cb8045000-7f7cb8049000 r--p 00000000 08:20 294964 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnet.so +7f7cb8049000-7f7cb8057000 r-xp 00004000 08:20 294964 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnet.so +7f7cb8057000-7f7cb805b000 r--p 00012000 08:20 294964 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnet.so +7f7cb805b000-7f7cb805c000 r--p 00015000 08:20 294964 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnet.so +7f7cb805c000-7f7cb805d000 rw-p 00016000 08:20 294964 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnet.so +7f7cb805d000-7f7cb8064000 r--p 00000000 08:20 294965 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnio.so +7f7cb8064000-7f7cb806c000 r-xp 00007000 08:20 294965 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnio.so +7f7cb806c000-7f7cb806f000 r--p 0000f000 08:20 294965 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnio.so +7f7cb806f000-7f7cb8070000 r--p 00011000 08:20 294965 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnio.so +7f7cb8070000-7f7cb8071000 rw-p 00012000 08:20 294965 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnio.so +7f7cb8071000-7f7cb80c8000 r--p 00000000 08:20 217873 /usr/lib/locale/C.utf8/LC_CTYPE +7f7cb80c8000-7f7cb80c9000 ---p 00000000 00:00 0 +7f7cb80c9000-7f7cb81c9000 rw-p 00000000 00:00 0 +7f7cb81c9000-7f7cb81ca000 ---p 00000000 00:00 0 +7f7cb81ca000-7f7cb87cf000 rw-p 00000000 00:00 0 +7f7cb87cf000-7f7cb8a3f000 rwxp 00000000 00:00 0 +7f7cb8a3f000-7f7cb8f0e000 ---p 00000000 00:00 0 +7f7cb8f0e000-7f7cb91fe000 rwxp 00000000 00:00 0 +7f7cb91fe000-7f7cc036e000 ---p 00000000 00:00 0 +7f7cc036e000-7f7cc05de000 rwxp 00000000 00:00 0 +7f7cc05de000-7f7cc77cf000 ---p 00000000 00:00 0 +7f7cc77cf000-7f7cd0000000 r--s 00000000 08:20 294975 /usr/lib/jvm/java-11-openjdk-amd64/lib/modules +7f7cd0000000-7f7cd3fe4000 rw-p 00000000 00:00 0 +7f7cd3fe4000-7f7cd4000000 ---p 00000000 00:00 0 +7f7cd4000000-7f7cd4001000 r--p 00000000 08:20 217879 /usr/lib/locale/C.utf8/LC_NUMERIC +7f7cd4001000-7f7cd4002000 r--p 00000000 08:20 217882 /usr/lib/locale/C.utf8/LC_TIME +7f7cd4002000-7f7cd4003000 r--p 00000000 08:20 217872 /usr/lib/locale/C.utf8/LC_COLLATE +7f7cd4003000-7f7cd4004000 r--p 00000000 08:20 217877 /usr/lib/locale/C.utf8/LC_MONETARY +7f7cd4004000-7f7cd4005000 r--p 00000000 08:20 217876 /usr/lib/locale/C.utf8/LC_MESSAGES/SYS_LC_MESSAGES +7f7cd4005000-7f7cd4006000 r--p 00000000 08:20 217880 /usr/lib/locale/C.utf8/LC_PAPER +7f7cd4006000-7f7cd4007000 r--p 00000000 08:20 217878 /usr/lib/locale/C.utf8/LC_NAME +7f7cd4007000-7f7cd4008000 r--p 00000000 08:20 217871 /usr/lib/locale/C.utf8/LC_ADDRESS +7f7cd4008000-7f7cd4009000 r--p 00000000 08:20 217881 /usr/lib/locale/C.utf8/LC_TELEPHONE +7f7cd4009000-7f7cd4010000 r--s 00000000 08:20 218904 /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache +7f7cd4010000-7f7cd4af6000 rw-p 00000000 00:00 0 +7f7cd4af6000-7f7cd4af7000 ---p 00000000 00:00 0 +7f7cd4af7000-7f7cd4bf7000 rw-p 00000000 00:00 0 +7f7cd4bf7000-7f7cd4bf8000 ---p 00000000 00:00 0 +7f7cd4bf8000-7f7cd4f6a000 rw-p 00000000 00:00 0 +7f7cd4f6a000-7f7cd54a4000 ---p 00000000 00:00 0 +7f7cd54a4000-7f7cd54a5000 rw-p 00000000 00:00 0 +7f7cd54a5000-7f7cd56a5000 ---p 00000000 00:00 0 +7f7cd56a5000-7f7cd5721000 rw-p 00000000 00:00 0 +7f7cd5721000-7f7cd5c5b000 ---p 00000000 00:00 0 +7f7cd5c5b000-7f7cd5c5c000 rw-p 00000000 00:00 0 +7f7cd5c5c000-7f7cd5e5c000 ---p 00000000 00:00 0 +7f7cd5e5c000-7f7cd5ed8000 rw-p 00000000 00:00 0 +7f7cd5ed8000-7f7cd6412000 ---p 00000000 00:00 0 +7f7cd6412000-7f7cd6413000 rw-p 00000000 00:00 0 +7f7cd6413000-7f7cd6613000 ---p 00000000 00:00 0 +7f7cd6613000-7f7cd7522000 rw-p 00000000 00:00 0 +7f7cd7522000-7f7cd7523000 ---p 00000000 00:00 0 +7f7cd7523000-7f7cd7628000 rw-p 00000000 00:00 0 +7f7cd7628000-7f7cd770c000 ---p 00000000 00:00 0 +7f7cd770c000-7f7cd7712000 rw-p 00000000 00:00 0 +7f7cd7712000-7f7cd77f5000 ---p 00000000 00:00 0 +7f7cd77f5000-7f7cd77fa000 rw-p 00000000 00:00 0 +7f7cd77fa000-7f7cd7804000 ---p 00000000 00:00 0 +7f7cd7804000-7f7cd7806000 r--p 00000000 08:20 294974 /usr/lib/jvm/java-11-openjdk-amd64/lib/libzip.so +7f7cd7806000-7f7cd780b000 r-xp 00002000 08:20 294974 /usr/lib/jvm/java-11-openjdk-amd64/lib/libzip.so +7f7cd780b000-7f7cd780d000 r--p 00007000 08:20 294974 /usr/lib/jvm/java-11-openjdk-amd64/lib/libzip.so +7f7cd780d000-7f7cd780e000 r--p 00008000 08:20 294974 /usr/lib/jvm/java-11-openjdk-amd64/lib/libzip.so +7f7cd780e000-7f7cd780f000 rw-p 00009000 08:20 294974 /usr/lib/jvm/java-11-openjdk-amd64/lib/libzip.so +7f7cd780f000-7f7cd7817000 rw-s 00000000 08:20 78568 /tmp/hsperfdata_cbrissette/1449708 +7f7cd7817000-7f7cd7818000 ---p 00000000 00:00 0 +7f7cd7818000-7f7cd7819000 r--p 00000000 00:00 0 +7f7cd7819000-7f7cd7827000 r--p 00000000 08:20 294953 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjava.so +7f7cd7827000-7f7cd783d000 r-xp 0000e000 08:20 294953 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjava.so +7f7cd783d000-7f7cd7844000 r--p 00024000 08:20 294953 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjava.so +7f7cd7844000-7f7cd7845000 r--p 0002a000 08:20 294953 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjava.so +7f7cd7845000-7f7cd7846000 rw-p 0002b000 08:20 294953 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjava.so +7f7cd7846000-7f7cd7847000 rw-p 00000000 00:00 0 +7f7cd7847000-7f7cd784c000 r--p 00000000 08:20 294973 /usr/lib/jvm/java-11-openjdk-amd64/lib/libverify.so +7f7cd784c000-7f7cd7853000 r-xp 00005000 08:20 294973 /usr/lib/jvm/java-11-openjdk-amd64/lib/libverify.so +7f7cd7853000-7f7cd7855000 r--p 0000c000 08:20 294973 /usr/lib/jvm/java-11-openjdk-amd64/lib/libverify.so +7f7cd7855000-7f7cd7857000 r--p 0000d000 08:20 294973 /usr/lib/jvm/java-11-openjdk-amd64/lib/libverify.so +7f7cd7857000-7f7cd7858000 rw-p 0000f000 08:20 294973 /usr/lib/jvm/java-11-openjdk-amd64/lib/libverify.so +7f7cd7858000-7f7cd7859000 r--p 00000000 08:20 218636 /usr/lib/x86_64-linux-gnu/librt.so.1 +7f7cd7859000-7f7cd785a000 r-xp 00001000 08:20 218636 /usr/lib/x86_64-linux-gnu/librt.so.1 +7f7cd785a000-7f7cd785b000 r--p 00002000 08:20 218636 /usr/lib/x86_64-linux-gnu/librt.so.1 +7f7cd785b000-7f7cd785c000 r--p 00002000 08:20 218636 /usr/lib/x86_64-linux-gnu/librt.so.1 +7f7cd785c000-7f7cd785d000 rw-p 00003000 08:20 218636 /usr/lib/x86_64-linux-gnu/librt.so.1 +7f7cd785d000-7f7cd7861000 ---p 00000000 00:00 0 +7f7cd7861000-7f7cd795d000 rw-p 00000000 00:00 0 +7f7cd795d000-7f7cd795e000 r--p 00000000 08:20 218624 /usr/lib/x86_64-linux-gnu/libdl.so.2 +7f7cd795e000-7f7cd795f000 r-xp 00001000 08:20 218624 /usr/lib/x86_64-linux-gnu/libdl.so.2 +7f7cd795f000-7f7cd7960000 r--p 00002000 08:20 218624 /usr/lib/x86_64-linux-gnu/libdl.so.2 +7f7cd7960000-7f7cd7961000 r--p 00002000 08:20 218624 /usr/lib/x86_64-linux-gnu/libdl.so.2 +7f7cd7961000-7f7cd7962000 rw-p 00003000 08:20 218624 /usr/lib/x86_64-linux-gnu/libdl.so.2 +7f7cd7962000-7f7cd7966000 r--p 00000000 08:20 84327 /home/cbrissette/cuopt/.cuopt_env/lib/libgcc_s.so.1 +7f7cd7966000-7f7cd7989000 r-xp 00004000 08:20 84327 /home/cbrissette/cuopt/.cuopt_env/lib/libgcc_s.so.1 +7f7cd7989000-7f7cd798d000 r--p 00027000 08:20 84327 /home/cbrissette/cuopt/.cuopt_env/lib/libgcc_s.so.1 +7f7cd798d000-7f7cd798e000 r--p 0002a000 08:20 84327 /home/cbrissette/cuopt/.cuopt_env/lib/libgcc_s.so.1 +7f7cd798e000-7f7cd798f000 rw-p 0002b000 08:20 84327 /home/cbrissette/cuopt/.cuopt_env/lib/libgcc_s.so.1 +7f7cd798f000-7f7cd799d000 r--p 00000000 08:20 218625 /usr/lib/x86_64-linux-gnu/libm.so.6 +7f7cd799d000-7f7cd7a19000 r-xp 0000e000 08:20 218625 /usr/lib/x86_64-linux-gnu/libm.so.6 +7f7cd7a19000-7f7cd7a74000 r--p 0008a000 08:20 218625 /usr/lib/x86_64-linux-gnu/libm.so.6 +7f7cd7a74000-7f7cd7a75000 r--p 000e4000 08:20 218625 /usr/lib/x86_64-linux-gnu/libm.so.6 +7f7cd7a75000-7f7cd7a76000 rw-p 000e5000 08:20 218625 /usr/lib/x86_64-linux-gnu/libm.so.6 +7f7cd7a76000-7f7cd7b20000 r--p 00000000 08:20 84948 /home/cbrissette/cuopt/.cuopt_env/lib/libstdc++.so.6.0.34 +7f7cd7b20000-7f7cd7c51000 r-xp 000aa000 08:20 84948 /home/cbrissette/cuopt/.cuopt_env/lib/libstdc++.so.6.0.34 +7f7cd7c51000-7f7cd7cdf000 r--p 001db000 08:20 84948 /home/cbrissette/cuopt/.cuopt_env/lib/libstdc++.so.6.0.34 +7f7cd7cdf000-7f7cd7cee000 r--p 00268000 08:20 84948 /home/cbrissette/cuopt/.cuopt_env/lib/libstdc++.so.6.0.34 +7f7cd7cee000-7f7cd7cf1000 rw-p 00277000 08:20 84948 /home/cbrissette/cuopt/.cuopt_env/lib/libstdc++.so.6.0.34 +7f7cd7cf1000-7f7cd7cf5000 rw-p 00000000 00:00 0 +7f7cd7cf5000-7f7cd7f78000 r--p 00000000 08:20 294978 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so +7f7cd7f78000-7f7cd8c16000 r-xp 00283000 08:20 294978 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so +7f7cd8c16000-7f7cd8e72000 r--p 00f21000 08:20 294978 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so +7f7cd8e72000-7f7cd8f36000 r--p 0117c000 08:20 294978 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so +7f7cd8f36000-7f7cd8f71000 rw-p 01240000 08:20 294978 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so +7f7cd8f71000-7f7cd8fca000 rw-p 00000000 00:00 0 +7f7cd8fca000-7f7cd8ff2000 r--p 00000000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 +7f7cd8ff2000-7f7cd9187000 r-xp 00028000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 +7f7cd9187000-7f7cd91df000 r--p 001bd000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 +7f7cd91df000-7f7cd91e0000 ---p 00215000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 +7f7cd91e0000-7f7cd91e4000 r--p 00215000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 +7f7cd91e4000-7f7cd91e6000 rw-p 00219000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 +7f7cd91e6000-7f7cd91f3000 rw-p 00000000 00:00 0 +7f7cd91f3000-7f7cd91f4000 r--p 00000000 08:20 217875 /usr/lib/locale/C.utf8/LC_MEASUREMENT +7f7cd91f4000-7f7cd91f6000 r--p 00000000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so +7f7cd91f6000-7f7cd91f9000 r-xp 00002000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so +7f7cd91f9000-7f7cd91fa000 r--p 00005000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so +7f7cd91fa000-7f7cd91fb000 ---p 00006000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so +7f7cd91fb000-7f7cd91fc000 r--p 00006000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so +7f7cd91fc000-7f7cd91fd000 rw-p 00007000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so +7f7cd91fd000-7f7cd9200000 r--p 00000000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so +7f7cd9200000-7f7cd920a000 r-xp 00003000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so +7f7cd920a000-7f7cd920d000 r--p 0000d000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so +7f7cd920d000-7f7cd920e000 ---p 00010000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so +7f7cd920e000-7f7cd920f000 r--p 00010000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so +7f7cd920f000-7f7cd9210000 rw-p 00011000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so +7f7cd9210000-7f7cd9213000 r--p 00000000 08:20 83514 /home/cbrissette/cuopt/.cuopt_env/lib/libz.so.1.3.2 +7f7cd9213000-7f7cd9223000 r-xp 00003000 08:20 83514 /home/cbrissette/cuopt/.cuopt_env/lib/libz.so.1.3.2 +7f7cd9223000-7f7cd9229000 r--p 00013000 08:20 83514 /home/cbrissette/cuopt/.cuopt_env/lib/libz.so.1.3.2 +7f7cd9229000-7f7cd922a000 r--p 00019000 08:20 83514 /home/cbrissette/cuopt/.cuopt_env/lib/libz.so.1.3.2 +7f7cd922a000-7f7cd922b000 rw-p 0001a000 08:20 83514 /home/cbrissette/cuopt/.cuopt_env/lib/libz.so.1.3.2 +7f7cd922b000-7f7cd922d000 rw-p 00000000 00:00 0 +7f7cd922d000-7f7cd922f000 r--p 00000000 08:20 218618 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 +7f7cd922f000-7f7cd9259000 r-xp 00002000 08:20 218618 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 +7f7cd9259000-7f7cd9264000 r--p 0002c000 08:20 218618 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 +7f7cd9264000-7f7cd9265000 r--p 00000000 08:20 217874 /usr/lib/locale/C.utf8/LC_IDENTIFICATION +7f7cd9265000-7f7cd9267000 r--p 00037000 08:20 218618 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 +7f7cd9267000-7f7cd9269000 rw-p 00039000 08:20 218618 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 +7ffd3bb4a000-7ffd3bb6d000 rw-p 00000000 00:00 0 [stack] +7ffd3bbf3000-7ffd3bbf7000 r--p 00000000 00:00 0 [vvar] +7ffd3bbf7000-7ffd3bbf9000 r-xp 00000000 00:00 0 [vdso] + + +VM Arguments: +java_command: /home/cbrissette/cuopt/java/cuopt/target/surefire/surefirebooter-20260707091921778_3.jar /home/cbrissette/cuopt/java/cuopt/target/surefire 2026-07-07T09-19-21_604-jvmRun1 surefire-20260707091921778_1tmp surefire_0-20260707091921778_2tmp +java_class_path (initial): /home/cbrissette/cuopt/java/cuopt/target/surefire/surefirebooter-20260707091921778_3.jar +Launcher Type: SUN_STANDARD + +[Global flags] + intx CICompilerCount = 12 {product} {ergonomic} + uint ConcGCThreads = 4 {product} {ergonomic} + uint G1ConcRefinementThreads = 15 {product} {ergonomic} + size_t G1HeapRegionSize = 1048576 {product} {ergonomic} + uintx GCDrainStackTargetSize = 64 {product} {ergonomic} + size_t InitialHeapSize = 260046848 {product} {ergonomic} + size_t MarkStackSize = 4194304 {product} {ergonomic} + size_t MaxHeapSize = 4141875200 {product} {ergonomic} + size_t MaxNewSize = 2485125120 {product} {ergonomic} + size_t MinHeapDeltaBytes = 1048576 {product} {ergonomic} + uintx NonNMethodCodeHeapSize = 7594288 {pd product} {ergonomic} + uintx NonProfiledCodeHeapSize = 122031976 {pd product} {ergonomic} + uintx ProfiledCodeHeapSize = 122031976 {pd product} {ergonomic} + uintx ReservedCodeCacheSize = 251658240 {pd product} {ergonomic} + bool SegmentedCodeCache = true {product} {ergonomic} + bool UseCompressedClassPointers = true {lp64_product} {ergonomic} + bool UseCompressedOops = true {lp64_product} {ergonomic} + bool UseG1GC = true {product} {ergonomic} + +Logging: +Log output configuration: + #0: stdout all=warning uptime,level,tags + #1: stderr all=off uptime,level,tags + +Environment Variables: +JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 +PATH=/usr/lib/jvm/java-11-openjdk-amd64/bin:/home/cbrissette/cuopt/.cuopt_env/bin:/usr/lib/jvm/java-11-openjdk-amd64/bin:/path/to/jdk-11/bin:/home/cbrissette/cuopt/.cuopt_env/bin:/home/cbrissette/miniforge3/condabin:/usr/local/cuda-12/bin:/usr/lib:/lib:/home/cbrissette/.npm-packages/bin:/home/cbrissette/.local/node/bin:/home/cbrissette/.vscode-server/bin/034f571df509819cc10b0c8129f66ef77a542f0e/bin/remote-cli:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/wsl/lib:/mnt/c/Program Files/Microsoft VS Code:/mnt/c/Windows/system32:/mnt/c/Windows:/mnt/c/Windows/System32/Wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0:/mnt/c/Windows/System32/OpenSSH:/mnt/c/Program Files/dotnet:/mnt/c/Program Files/Microsoft VS Code/bin:/mnt/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/mnt/c/Program Files/NVIDIA Corporation/Nsight Compute 2025.1.0:/mnt/c/Program Files/Teleport:/mnt/c/PROGRA~1/cinc/bin:/mnt/c/Program Files/NVInfo/bin:/mnt/c/Program Files/ai-pim-utils:/mnt/c/WINDOWS/system32:/mnt/c/WINDOWS:/mnt/c/WINDOWS/System32/Wbem:/mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0:/mnt/c/WINDOWS/System32/OpenSSH:/mnt/c/Program Files/Teleport Connect/resources/bin:/mnt/c/Users/cbrissette/.local/bin:/mnt/c/Users/cbrissette/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/cbrissette/AppData/Local/Programs/cursor/resources/app/bin:/mnt/c/Users/cbrissette/AppData/Local/Microsoft/WinGet/Packages/astral-sh.uv_Microsoft.Winget.Source_8wekyb3d8bbwe:/mnt/c/Users/cbrissette/AppData/Local/Microsoft/WindowsApps:/snap/bin:/home/cbrissette/ngc-cli:/home/cbrissette/.local/bin:/usr/local/go/bin +LD_LIBRARY_PATH=/home/cbrissette/cuopt/.cuopt_env/lib:/home/cbrissette/cuopt/java/cuopt/build/native:/home/cbrissette/cuopt/.cuopt_env/lib:/home/cbrissette/cuopt/cpp/build +SHELL=/bin/bash +DISPLAY=:0 +HOSTTYPE=x86_64 +LANG=C.UTF-8 +TERM=xterm-256color + +Signal Handlers: +SIGSEGV: [libjvm.so+0xeaead0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGBUS: [libjvm.so+0xeaead0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGFPE: [libjvm.so+0xeaead0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGPIPE: [libjvm.so+0xbf1430], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGXFSZ: [libjvm.so+0xbf1430], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGILL: [libjvm.so+0xeaead0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGUSR2: [libjvm.so+0xbf12d0], sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO +SIGHUP: [libjvm.so+0xbf1a90], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGINT: [libjvm.so+0xbf1a90], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGTERM: [libjvm.so+0xbf1a90], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGQUIT: [libjvm.so+0xbf1a90], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO + + +--------------- S Y S T E M --------------- + +OS:DISTRIB_ID=Ubuntu +DISTRIB_RELEASE=22.04 +DISTRIB_CODENAME=jammy +DISTRIB_DESCRIPTION="Ubuntu 22.04.5 LTS" +uname:Linux 5.15.153.1-microsoft-standard-WSL2 #1 SMP Fri Mar 29 23:14:13 UTC 2024 x86_64 +OS uptime: 2 days 16:24 hours +libc:glibc 2.35 NPTL 2.35 +rlimit (soft/hard): STACK 8192k/infinity , CORE 0k/infinity , NPROC 63166/63166 , NOFILE 1048576/1048576 , AS infinity/infinity , CPU infinity/infinity , DATA infinity/infinity , FSIZE infinity/infinity , MEMLOCK 65536k/65536k +load average:2.00 5.66 4.74 + +/proc/meminfo: +MemTotal: 16177528 kB +MemFree: 9117720 kB +MemAvailable: 11883568 kB +Buffers: 79512 kB +Cached: 2676828 kB +SwapCached: 57768 kB +Active: 1612520 kB +Inactive: 4539092 kB +Active(anon): 14392 kB +Inactive(anon): 3450132 kB +Active(file): 1598128 kB +Inactive(file): 1088960 kB +Unevictable: 0 kB +Mlocked: 0 kB +SwapTotal: 4194304 kB +SwapFree: 3716668 kB +Dirty: 3724 kB +Writeback: 0 kB +AnonPages: 3266292 kB +Mapped: 525420 kB +Shmem: 69292 kB +KReclaimable: 410860 kB +Slab: 532904 kB +SReclaimable: 410860 kB +SUnreclaim: 122044 kB +KernelStack: 14880 kB +PageTables: 48672 kB +NFS_Unstable: 0 kB +Bounce: 0 kB +WritebackTmp: 0 kB +CommitLimit: 12283068 kB +Committed_AS: 6753580 kB +VmallocTotal: 34359738367 kB +VmallocUsed: 37960 kB +VmallocChunk: 0 kB +Percpu: 13248 kB +AnonHugePages: 1247232 kB +ShmemHugePages: 0 kB +ShmemPmdMapped: 0 kB +FileHugePages: 0 kB +FilePmdMapped: 0 kB +HugePages_Total: 0 +HugePages_Free: 0 +HugePages_Rsvd: 0 +HugePages_Surp: 0 +Hugepagesize: 2048 kB +Hugetlb: 0 kB +DirectMap4k: 410624 kB +DirectMap2M: 13017088 kB +DirectMap1G: 11534336 kB + +/sys/kernel/mm/transparent_hugepage/enabled: +[always] madvise never +/sys/kernel/mm/transparent_hugepage/defrag (defrag/compaction efforts parameter): +always defer defer+madvise [madvise] never + +Process Memory: +Virtual Size: 42675260K (peak: 42732616K) +Resident Set Size: 505140K (peak: 505140K) (anon: 312764K, file: 126788K, shmem: 65588K) +Swapped out: 0K +C-Heap outstanding allocations: 203013K, retained: 4906K +glibc malloc tunables: (default) + +/proc/sys/kernel/threads-max (system-wide limit on the number of threads): +126333 +/proc/sys/vm/max_map_count (maximum number of memory map areas a process may have): +65530 +/proc/sys/kernel/pid_max (system-wide limit on number of process identifiers): +4194304 + +container (cgroup) information: +container_type: cgroupv1 +cpu_cpuset_cpus: 0-19 +cpu_memory_nodes: 0 +active_processor_count: 20 +cpu_quota: no quota +cpu_period: 100000 +cpu_shares: no shares +memory_limit_in_bytes: unlimited +memory_and_swap_limit_in_bytes: unlimited +memory_soft_limit_in_bytes: unlimited +memory_usage_in_bytes: 6023092 k +memory_max_usage_in_bytes: 2211664 k +kernel_memory_usage_in_bytes: 38436 k +kernel_memory_max_usage_in_bytes: unlimited +kernel_memory_limit_in_bytes: 70264 k +maximum number of tasks: not supported +current number of tasks: not supported + +Hyper-V virtualization detected +Steal ticks since vm start: 0 +Steal ticks percentage since vm start: 0.000 + +CPU:total 20 (initial active 20) (16 cores per cpu, 2 threads per core) family 6 model 186 stepping 2 microcode 0xffffffff, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, clmul, erms, 3dnowpref, lzcnt, ht, tsc, tscinvbit, bmi1, bmi2, adx, sha, fma +CPU Model and flags from /proc/cpuinfo: +model name : 13th Gen Intel(R) Core(TM) i7-13800H +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq vmx ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves avx_vnni umip waitpkg gfni vaes vpclmulqdq rdpid movdiri movdir64b fsrm md_clear serialize flush_l1d arch_capabilities +Online cpus: +0-19 +Offline cpus: + +BIOS frequency limitation: + +Frequency switch latency (ns): + +Available cpu frequencies: + +Current governor: + +Core performance/turbo boost: + + +Memory: 4k page, physical 16177528k(9117720k free), swap 4194304k(3716668k free) + +vm_info: OpenJDK 64-Bit Server VM (11.0.24+8-post-Ubuntu-1ubuntu322.04) for linux-amd64 JRE (11.0.24+8-post-Ubuntu-1ubuntu322.04), built on Jul 21 2024 21:19:53 by "unknown" with gcc 11.4.0 + +END. diff --git a/java/cuopt/pom.xml b/java/cuopt/pom.xml new file mode 100644 index 0000000000..7393bc0bbe --- /dev/null +++ b/java/cuopt/pom.xml @@ -0,0 +1,95 @@ + + + + 4.0.0 + + com.nvidia + cuopt + 26.8.0-SNAPSHOT + cuOpt Java Bindings + Java JNI bindings for cuOpt numerical optimization. + + + 11 + UTF-8 + 5.11.4 + + + + + org.junit.jupiter + junit-jupiter + ${junit.jupiter.version} + test + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + ${maven.compiler.release} + + + + org.codehaus.mojo + exec-maven-plugin + 3.5.0 + + + generate-cuopt-constants + generate-sources + + exec + + + ${project.basedir}/scripts/generate_constants.sh + + ${project.basedir}/../../cpp/include/cuopt/linear_programming/constants.h + ${project.build.directory}/generated-sources/cuopt + + + + + + + org.codehaus.mojo + build-helper-maven-plugin + 3.6.0 + + + add-generated-sources + generate-sources + + add-source + + + + ${project.build.directory}/generated-sources/cuopt + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.5.2 + + false + + ${cuopt.native.dir} + + + + + + diff --git a/java/cuopt/scripts/build_native.sh b/java/cuopt/scripts/build_native.sh new file mode 100644 index 0000000000..e9bcdc0216 --- /dev/null +++ b/java/cuopt/scripts/build_native.sh @@ -0,0 +1,65 @@ +#!/usr/bin/env bash +# SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. +# SPDX-License-Identifier: Apache-2.0 + +set -euo pipefail + +MODULE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +REPO_ROOT="$(cd "${MODULE_DIR}/../.." && pwd)" +CUOPT_PREFIX="${CUOPT_PREFIX:-${CONDA_PREFIX:-${REPO_ROOT}/.cuopt_env}}" +BUILD_DIR="${CUOPT_JAVA_NATIVE_BUILD_DIR:-${MODULE_DIR}/build/native}" + +if [[ -z "${JAVA_HOME:-}" ]]; then + JAVAC_PATH="$(command -v javac || true)" + if [[ -n "${JAVAC_PATH}" ]]; then + JAVA_HOME="$(dirname "$(dirname "$(readlink -f "${JAVAC_PATH}")")")" + export JAVA_HOME + fi +fi + +if [[ ! -x "${JAVA_HOME:-}/bin/javac" ]]; then + echo "JAVA_HOME must point to a JDK containing bin/javac (Java 11 is required)." >&2 + exit 1 +fi + +CMAKE="${CMAKE:-}" +if [[ -z "${CMAKE}" && -x "${CUOPT_PREFIX}/bin/cmake" ]]; then + CMAKE="${CUOPT_PREFIX}/bin/cmake" +fi +if [[ -z "${CMAKE}" ]]; then + CMAKE="$(command -v cmake || true)" +fi +if [[ -z "${CMAKE}" ]]; then + echo "cmake was not found; use the cuOpt conda environment or set CMAKE." >&2 + exit 1 +fi + +if [[ ! -f "${CUOPT_PREFIX}/lib/libcuopt.so" ]]; then + echo "cuOpt shared library was not found at ${CUOPT_PREFIX}/lib/libcuopt.so." >&2 + exit 1 +fi + +CXX_COMPILER="${CXX:-}" +if [[ -z "${CXX_COMPILER}" && -f "${BUILD_DIR}/CMakeCache.txt" ]]; then + CACHED_CXX_COMPILER="$(sed -n 's/^CMAKE_CXX_COMPILER:.*=//p' "${BUILD_DIR}/CMakeCache.txt" | head -n 1)" + if [[ -x "${CACHED_CXX_COMPILER}" ]]; then + CXX_COMPILER="${CACHED_CXX_COMPILER}" + fi +fi +if [[ -z "${CXX_COMPILER}" && -x "${CUOPT_PREFIX}/bin/c++" ]]; then + CXX_COMPILER="${CUOPT_PREFIX}/bin/c++" +fi + +env -u CFLAGS -u CXXFLAGS -u CPPFLAGS -u LDFLAGS \ + "${CMAKE}" -S "${MODULE_DIR}" -B "${BUILD_DIR}" \ + -DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE:-Release}" \ + -DCUOPT_PREFIX="${CUOPT_PREFIX}" \ + -DCUOPT_RUNTIME_LIBRARY_DIR="${CUOPT_PREFIX}/lib" \ + ${CXX_COMPILER:+-DCMAKE_CXX_COMPILER="${CXX_COMPILER}"} \ + -DJAVA_HOME="${JAVA_HOME}" + +env -u CFLAGS -u CXXFLAGS -u CPPFLAGS -u LDFLAGS \ + "${CMAKE}" --build "${BUILD_DIR}" --target cuopt_jni \ + --parallel "${PARALLEL_LEVEL:-2}" + +echo "Built ${BUILD_DIR}/libcuopt_jni.so" diff --git a/java/cuopt/scripts/generate_constants.sh b/java/cuopt/scripts/generate_constants.sh new file mode 100755 index 0000000000..2245e26a62 --- /dev/null +++ b/java/cuopt/scripts/generate_constants.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +# SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +set -euo pipefail + +HEADER=${1:?missing constants.h path} +OUT_DIR=${2:?missing output directory} +PACKAGE_DIR="${OUT_DIR}/com/nvidia/cuopt/linearprogramming" +OUT_FILE="${PACKAGE_DIR}/CuOptConstants.java" + +mkdir -p "${PACKAGE_DIR}" + +{ + echo "package com.nvidia.cuopt.linearprogramming;" + echo + echo "public final class CuOptConstants {" + echo " private CuOptConstants() {}" + echo + awk ' + /^#define CUOPT_/ { + name = $2 + value = $3 + if (name ~ /CUOPT_INFINITY/) next + if (value ~ /^[-]?[0-9]+$/) { + printf(" public static final int %s = %s;%s", name, value, "\n") + } else if (value ~ /^'\''.'\''$/) { + printf(" public static final byte %s = (byte) %s;%s", name, value, "\n") + } else if (value ~ /^".*"$/) { + printf(" public static final String %s = %s;%s", name, value, "\n") + } + } + ' "${HEADER}" + echo "}" +} > "${OUT_FILE}" diff --git a/java/cuopt/scripts/test.sh b/java/cuopt/scripts/test.sh new file mode 100644 index 0000000000..a1c9f09dee --- /dev/null +++ b/java/cuopt/scripts/test.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash +# SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. +# SPDX-License-Identifier: Apache-2.0 + +set -euo pipefail + +MODULE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +REPO_ROOT="$(cd "${MODULE_DIR}/../.." && pwd)" +CUOPT_PREFIX="${CUOPT_PREFIX:-${CONDA_PREFIX:-${REPO_ROOT}/.cuopt_env}}" +NATIVE_BUILD_DIR="${CUOPT_JAVA_NATIVE_BUILD_DIR:-${MODULE_DIR}/build/native}" +export CUOPT_PREFIX CUOPT_JAVA_NATIVE_BUILD_DIR="${NATIVE_BUILD_DIR}" + +bash "${MODULE_DIR}/scripts/build_native.sh" + +if [[ -z "${JAVA_HOME:-}" ]]; then + JAVAC_PATH="$(command -v javac || true)" + if [[ -n "${JAVAC_PATH}" ]]; then + JAVA_HOME="$(dirname "$(dirname "$(readlink -f "${JAVAC_PATH}")")")" + export JAVA_HOME + fi +fi +if [[ ! -x "${JAVA_HOME:-}/bin/java" ]]; then + echo "JAVA_HOME must point to a JDK containing bin/java (Java 11 is required)." >&2 + exit 1 +fi + +existing_ld_library_path="${LD_LIBRARY_PATH:-}" +CUDA_RUNTIME_DIR="${CUOPT_PREFIX}/targets/x86_64-linux/lib" +library_path="${CUOPT_PREFIX}/lib:${NATIVE_BUILD_DIR}" +if [[ -d "${CUDA_RUNTIME_DIR}" ]]; then + library_path="${CUDA_RUNTIME_DIR}:${library_path}" +fi +export LD_LIBRARY_PATH="${library_path}${existing_ld_library_path:+:${existing_ld_library_path}}" + +cd "${MODULE_DIR}" +mvn test \ + -Dcuopt.native.dir="${NATIVE_BUILD_DIR}" \ + -Dcuopt.python="${CUOPT_PYTHON:-${CUOPT_PREFIX}/bin/python}" \ + "$@" diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/BatchSolve.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/BatchSolve.java new file mode 100644 index 0000000000..36dd6e0263 --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/BatchSolve.java @@ -0,0 +1,41 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.linearprogramming; + +import java.util.ArrayList; +import java.util.List; + +/** Compatibility entry point for Python's deprecated LP BatchSolve API. */ +public final class BatchSolve { + private BatchSolve() {} + + /** + * Solve each model and return the solutions plus aggregate elapsed time. + * + *

The Python API marks batch solving deprecated; Java deliberately uses sequential solves so + * callers can control their own concurrency without adding another native batch ABI. + */ + public static BatchSolveResult solve(List dataModels, SolverSettings settings) { + List solutions = new ArrayList<>(); + long start = System.nanoTime(); + try { + for (DataModel dataModel : dataModels) { + solutions.add(dataModel.solve(settings)); + } + return new BatchSolveResult(solutions, (System.nanoTime() - start) / 1.0e9); + } catch (RuntimeException e) { + solutions.forEach(Solution::close); + throw e; + } + } + + public static BatchSolveResult solve(List dataModels) { + try (SolverSettings settings = new SolverSettings()) { + BatchSolveResult result = solve(dataModels, settings); + // The result owns the solutions; only the temporary settings are closed here. + return result; + } + } +} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/BatchSolveResult.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/BatchSolveResult.java new file mode 100644 index 0000000000..373086e4b9 --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/BatchSolveResult.java @@ -0,0 +1,31 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.linearprogramming; + +import java.util.List; + +/** Result of the Java compatibility implementation of Python BatchSolve. */ +public final class BatchSolveResult implements AutoCloseable { + private final List solutions; + private final double solveTime; + + BatchSolveResult(List solutions, double solveTime) { + this.solutions = List.copyOf(solutions); + this.solveTime = solveTime; + } + + public List getSolutions() { + return solutions; + } + + public double getSolveTime() { + return solveTime; + } + + @Override + public void close() { + solutions.forEach(Solution::close); + } +} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Constraint.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Constraint.java new file mode 100644 index 0000000000..d60dba2294 --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Constraint.java @@ -0,0 +1,122 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.linearprogramming; + +import java.util.Map; + +public final class Constraint { + private int index = -1; + private LinearExpression linearExpression; + private final QuadraticExpression quadraticExpression; + private final ConstraintSense sense; + private double rhs; + private String name = ""; + private double slack = Double.NaN; + private double dualValue = Double.NaN; + + Constraint(LinearExpression expression, ConstraintSense sense, double rhs) { + this.linearExpression = expression; + this.quadraticExpression = null; + this.sense = sense; + this.rhs = rhs - expression.getConstant(); + } + + Constraint(QuadraticExpression expression, ConstraintSense sense, double rhs) { + this.linearExpression = expression.getLinearExpression(); + this.quadraticExpression = expression; + this.sense = sense; + this.rhs = rhs - expression.getLinearExpression().getConstant(); + } + + public String getConstraintName() { + return name; + } + + public int getIndex() { + return index; + } + + void setIndex(int index) { + this.index = index; + } + + Constraint setConstraintName(String name) { + this.name = name == null ? "" : name; + return this; + } + + public ConstraintSense getSense() { + return sense; + } + + public double getRHS() { + return rhs; + } + + Constraint updateLinearExpression(LinearExpression expression) { + this.linearExpression = expression; + return this; + } + + Constraint updateRHS(double rhs) { + this.rhs = rhs; + return this; + } + + public double getCoefficient(Variable variable) { + return linearExpression.getTerms().getOrDefault(variable, 0.0); + } + + public LinearExpression getLinearExpression() { + return linearExpression; + } + + public boolean isQuadratic() { + return quadraticExpression != null && !quadraticExpression.getQuadraticTerms().isEmpty(); + } + + public QuadraticExpression getQuadraticExpression() { + return quadraticExpression; + } + + public double computeSlack() { + double lhs = 0.0; + for (Map.Entry entry : linearExpression.getTerms().entrySet()) { + lhs += entry.getValue() * entry.getKey().getValue(); + } + if (isQuadratic()) { + for (QuadraticExpression.QuadraticTerm term : quadraticExpression.getQuadraticTerms()) { + lhs += + term.getCoefficient() + * term.getFirst().getValue() + * term.getSecond().getValue(); + } + } + // Match Python's Constraint.compute_slack contract: RHS minus the evaluated LHS for + // every row sense. This intentionally keeps the sign convention stable for GE rows too. + return rhs - lhs; + } + + public double getSlack() { + return slack; + } + + void setSlack(double slack) { + this.slack = slack; + } + + public double getDualValue() { + return dualValue; + } + + void setDualValue(double dualValue) { + this.dualValue = dualValue; + } + + void resetSolvedValues() { + slack = Double.NaN; + dualValue = Double.NaN; + } +} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/ConstraintSense.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/ConstraintSense.java new file mode 100644 index 0000000000..07c644cfb4 --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/ConstraintSense.java @@ -0,0 +1,30 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.linearprogramming; + +public enum ConstraintSense { + LE((byte) 'L'), + GE((byte) 'G'), + EQ((byte) 'E'); + + private final byte nativeValue; + + ConstraintSense(byte nativeValue) { + this.nativeValue = nativeValue; + } + + byte nativeValue() { + return nativeValue; + } + + static ConstraintSense fromNative(byte value) { + for (ConstraintSense sense : values()) { + if (sense.nativeValue == value) { + return sense; + } + } + throw new IllegalArgumentException("Unknown constraint sense: " + (char) value); + } +} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/CsrMatrix.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/CsrMatrix.java new file mode 100644 index 0000000000..74598971fd --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/CsrMatrix.java @@ -0,0 +1,46 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.linearprogramming; + +import java.util.Arrays; + +public final class CsrMatrix { + private final int[] rowOffsets; + private final int[] columnIndices; + private final double[] values; + + public CsrMatrix(int[] rowOffsets, int[] columnIndices, double[] values) { + this.rowOffsets = Arrays.copyOf(rowOffsets, rowOffsets.length); + this.columnIndices = Arrays.copyOf(columnIndices, columnIndices.length); + this.values = Arrays.copyOf(values, values.length); + if (this.values.length != this.columnIndices.length) { + throw new IllegalArgumentException("CSR values and column indices must have the same length"); + } + } + + public int[] getRowOffsets() { + return Arrays.copyOf(rowOffsets, rowOffsets.length); + } + + public int[] getColumnIndices() { + return Arrays.copyOf(columnIndices, columnIndices.length); + } + + public double[] getValues() { + return Arrays.copyOf(values, values.length); + } + + int[] rowOffsetsUnsafe() { + return rowOffsets; + } + + int[] columnIndicesUnsafe() { + return columnIndices; + } + + double[] valuesUnsafe() { + return values; + } +} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/CuOptException.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/CuOptException.java new file mode 100644 index 0000000000..504ffaa284 --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/CuOptException.java @@ -0,0 +1,18 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.linearprogramming; + +public class CuOptException extends RuntimeException { + private final int statusCode; + + public CuOptException(int statusCode, String message) { + super(message); + this.statusCode = statusCode; + } + + public int getStatusCode() { + return statusCode; + } +} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/DataModel.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/DataModel.java new file mode 100644 index 0000000000..478444e5b8 --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/DataModel.java @@ -0,0 +1,586 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.linearprogramming; + +import java.lang.ref.Cleaner; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +public final class DataModel implements AutoCloseable { + private static final Cleaner CLEANER = Cleaner.create(); + private final NativeHandle nativeHandle; + private final Cleaner.Cleanable cleanable; + private double[] initialPrimalSolution = new double[0]; + private double[] initialDualSolution = new double[0]; + // Keep the user-facing CSR representation separate from cuOpt's internal GPU + // representation. The GPU setter stores Q + Q^T for solving, while Python's + // DataModel getters expose the matrix supplied by the caller. + private double[] quadraticObjectiveValues = new double[0]; + private int[] quadraticObjectiveIndices = new int[0]; + private int[] quadraticObjectiveOffsets = new int[0]; + private boolean quadraticObjectiveMatrixSet; + private final List quadraticConstraintNames = new ArrayList<>(); + + /** Create an empty mutable LP/MIP/QP data model. */ + public DataModel() { + this(NativeCuOpt.createEmptyProblem()); + } + + private DataModel(long handle) { + this.nativeHandle = new NativeHandle(handle); + this.cleanable = CLEANER.register(this, nativeHandle); + } + + public static DataModel createProblem( + int numConstraints, + int numVariables, + ObjectiveSense objectiveSense, + double objectiveOffset, + double[] objectiveCoefficients, + CsrMatrix constraintMatrix, + byte[] constraintSense, + double[] rhs, + double[] variableLowerBounds, + double[] variableUpperBounds, + byte[] variableTypes) { + long handle = + NativeCuOpt.createProblem( + numConstraints, + numVariables, + objectiveSense.nativeValue(), + objectiveOffset, + Arrays.copyOf(objectiveCoefficients, objectiveCoefficients.length), + constraintMatrix.getRowOffsets(), + constraintMatrix.getColumnIndices(), + constraintMatrix.getValues(), + Arrays.copyOf(constraintSense, constraintSense.length), + Arrays.copyOf(rhs, rhs.length), + Arrays.copyOf(variableLowerBounds, variableLowerBounds.length), + Arrays.copyOf(variableUpperBounds, variableUpperBounds.length), + Arrays.copyOf(variableTypes, variableTypes.length)); + return new DataModel(handle); + } + + public static DataModel createRangedProblem( + int numConstraints, + int numVariables, + ObjectiveSense objectiveSense, + double objectiveOffset, + double[] objectiveCoefficients, + CsrMatrix constraintMatrix, + double[] constraintLowerBounds, + double[] constraintUpperBounds, + double[] variableLowerBounds, + double[] variableUpperBounds, + byte[] variableTypes) { + long handle = + NativeCuOpt.createRangedProblem( + numConstraints, + numVariables, + objectiveSense.nativeValue(), + objectiveOffset, + Arrays.copyOf(objectiveCoefficients, objectiveCoefficients.length), + constraintMatrix.getRowOffsets(), + constraintMatrix.getColumnIndices(), + constraintMatrix.getValues(), + Arrays.copyOf(constraintLowerBounds, constraintLowerBounds.length), + Arrays.copyOf(constraintUpperBounds, constraintUpperBounds.length), + Arrays.copyOf(variableLowerBounds, variableLowerBounds.length), + Arrays.copyOf(variableUpperBounds, variableUpperBounds.length), + Arrays.copyOf(variableTypes, variableTypes.length)); + return new DataModel(handle); + } + + public static DataModel read(String path) { + return new DataModel(NativeCuOpt.readProblem(path)); + } + + public static DataModel read(String path, boolean fixedMpsFormat) { + return new DataModel(NativeCuOpt.readProblemWithFormat(path, fixedMpsFormat)); + } + + /** Parse an MPS/QPS file directly, optionally using fixed-format parsing. */ + public static DataModel parseMps(String path) { + return parseMps(path, false); + } + + public static DataModel parseMps(String path, boolean fixedMpsFormat) { + return new DataModel(NativeCuOpt.parseMpsProblem(path, fixedMpsFormat)); + } + + long handle() { + nativeHandle.requireOpen(); + return nativeHandle.handle; + } + + public int getNumVariables() { + return NativeCuOpt.getNumVariables(handle()); + } + + public int getNumConstraints() { + return NativeCuOpt.getNumConstraints(handle()); + } + + public int getNumNonZeros() { + return NativeCuOpt.getNumNonZeros(handle()); + } + + public ObjectiveSense getObjectiveSense() { + return NativeCuOpt.getObjectiveSense(handle()) == ObjectiveSense.MAXIMIZE.nativeValue() + ? ObjectiveSense.MAXIMIZE + : ObjectiveSense.MINIMIZE; + } + + /** Return true for maximize and false for minimize, matching Python get_sense(). */ + public boolean getSense() { + return getObjectiveSense() == ObjectiveSense.MAXIMIZE; + } + + public double getObjectiveOffset() { + return NativeCuOpt.getObjectiveOffset(handle()); + } + + public double getObjectiveScalingFactor() { + return NativeCuOpt.getObjectiveScalingFactor(handle()); + } + + public double[] getObjectiveCoefficients() { + return NativeCuOpt.getObjectiveCoefficients(handle()); + } + + public CsrMatrix getConstraintMatrix() { + Object[] matrix = NativeCuOpt.getConstraintMatrix(handle()); + return new CsrMatrix((int[]) matrix[0], (int[]) matrix[1], (double[]) matrix[2]); + } + + public double[] getConstraintMatrixValues() { + return getConstraintMatrix().getValues(); + } + + public int[] getConstraintMatrixIndices() { + return getConstraintMatrix().getColumnIndices(); + } + + public int[] getConstraintMatrixOffsets() { + return getConstraintMatrix().getRowOffsets(); + } + + public byte[] getConstraintSense() { + return NativeCuOpt.getConstraintSense(handle()); + } + + public byte[] getRowTypes() { + return getConstraintSense(); + } + + public double[] getConstraintRhs() { + return NativeCuOpt.getConstraintRhs(handle()); + } + + public double[] getConstraintBounds() { + return getConstraintRhs(); + } + + public double[] getConstraintLowerBounds() { + return NativeCuOpt.getConstraintLowerBounds(handle()); + } + + public double[] getConstraintUpperBounds() { + return NativeCuOpt.getConstraintUpperBounds(handle()); + } + + public double[] getVariableLowerBounds() { + return NativeCuOpt.getVariableLowerBounds(handle()); + } + + public double[] getVariableUpperBounds() { + return NativeCuOpt.getVariableUpperBounds(handle()); + } + + public byte[] getVariableTypes() { + return NativeCuOpt.getVariableTypes(handle()); + } + + public boolean isMip() { + return NativeCuOpt.isMip(handle()); + } + + public ProblemCategory getProblemCategory() { + return ProblemCategory.fromNative(NativeCuOpt.getProblemCategory(handle())); + } + + public DataModel setMaximize(boolean maximize) { + NativeCuOpt.setMaximize(handle(), maximize); + return this; + } + + public DataModel setCsrConstraintMatrix(double[] values, int[] indices, int[] offsets) { + NativeCuOpt.setConstraintMatrix(handle(), copy(values), copy(indices), copy(offsets)); + return this; + } + + public DataModel setConstraintBounds(double[] bounds) { + NativeCuOpt.setConstraintBounds(handle(), copy(bounds)); + return this; + } + + public DataModel setObjectiveCoefficients(double[] coefficients) { + NativeCuOpt.setObjectiveCoefficients(handle(), copy(coefficients)); + return this; + } + + public DataModel setObjectiveScalingFactor(double scalingFactor) { + NativeCuOpt.setObjectiveScalingFactor(handle(), scalingFactor); + return this; + } + + public DataModel setObjectiveOffset(double offset) { + NativeCuOpt.setObjectiveOffset(handle(), offset); + return this; + } + + public DataModel setQuadraticObjectiveMatrix(double[] values, int[] indices, int[] offsets) { + double[] copiedValues = copy(values); + int[] copiedIndices = copy(indices); + int[] copiedOffsets = copy(offsets); + NativeCuOpt.setQuadraticObjectiveMatrix(handle(), copiedValues, copiedIndices, copiedOffsets); + quadraticObjectiveValues = copiedValues; + quadraticObjectiveIndices = copiedIndices; + quadraticObjectiveOffsets = copiedOffsets; + quadraticObjectiveMatrixSet = true; + return this; + } + + public DataModel setVariableLowerBounds(double[] bounds) { + NativeCuOpt.setVariableLowerBounds(handle(), copy(bounds)); + return this; + } + + public DataModel setVariableUpperBounds(double[] bounds) { + NativeCuOpt.setVariableUpperBounds(handle(), copy(bounds)); + return this; + } + + public DataModel setConstraintLowerBounds(double[] bounds) { + NativeCuOpt.setConstraintLowerBounds(handle(), copy(bounds)); + return this; + } + + public DataModel setConstraintUpperBounds(double[] bounds) { + NativeCuOpt.setConstraintUpperBounds(handle(), copy(bounds)); + return this; + } + + public DataModel setRowTypes(byte[] rowTypes) { + NativeCuOpt.setRowTypes(handle(), copy(rowTypes)); + return this; + } + + public DataModel setVariableTypes(byte[] variableTypes) { + NativeCuOpt.setVariableTypes(handle(), copy(variableTypes)); + return this; + } + + public DataModel setVariableNames(String[] variableNames) { + NativeCuOpt.setVariableNames(handle(), variableNames == null ? new String[0] : variableNames.clone()); + return this; + } + + public DataModel setRowNames(String[] rowNames) { + NativeCuOpt.setRowNames(handle(), rowNames == null ? new String[0] : rowNames.clone()); + return this; + } + + public DataModel setObjectiveName(String objectiveName) { + NativeCuOpt.setObjectiveName(handle(), objectiveName == null ? "" : objectiveName); + return this; + } + + public DataModel setProblemName(String problemName) { + NativeCuOpt.setProblemName(handle(), problemName == null ? "" : problemName); + return this; + } + + public DataModel setInitialPrimalSolution(double[] values) { + initialPrimalSolution = copy(values); + NativeCuOpt.setInitialPrimalSolutionOnProblem(handle(), initialPrimalSolution); + return this; + } + + public DataModel setInitialDualSolution(double[] values) { + initialDualSolution = copy(values); + NativeCuOpt.setInitialDualSolutionOnProblem(handle(), initialDualSolution); + return this; + } + + public double[] getInitialPrimalSolution() { + return copy(initialPrimalSolution); + } + + public double[] getInitialDualSolution() { + return copy(initialDualSolution); + } + + public double[] getQuadraticObjectiveValues() { + return quadraticObjectiveMatrixSet + ? copy(quadraticObjectiveValues) + : NativeCuOpt.getQuadraticObjectiveValues(handle()); + } + + public int[] getQuadraticObjectiveIndices() { + return quadraticObjectiveMatrixSet + ? copy(quadraticObjectiveIndices) + : NativeCuOpt.getQuadraticObjectiveIndices(handle()); + } + + public int[] getQuadraticObjectiveOffsets() { + return quadraticObjectiveMatrixSet + ? copy(quadraticObjectiveOffsets) + : NativeCuOpt.getQuadraticObjectiveOffsets(handle()); + } + + public String[] getVariableNames() { + return NativeCuOpt.getVariableNames(handle()); + } + + public String[] getRowNames() { + return NativeCuOpt.getRowNames(handle()); + } + + public String getObjectiveName() { + return NativeCuOpt.getObjectiveName(handle()); + } + + public String getProblemName() { + return NativeCuOpt.getProblemName(handle()); + } + + public byte[] getAsciiRowTypes() { + return getConstraintSense(); + } + + /** Return a Java map with the same logical fields as Python's parser.toDict. */ + public Map toDict() { + CsrMatrix matrix = getConstraintMatrix(); + Map csr = new LinkedHashMap<>(); + csr.put("offsets", matrix.getRowOffsets()); + csr.put("indices", matrix.getColumnIndices()); + csr.put("values", matrix.getValues()); + + Map bounds = new LinkedHashMap<>(); + bounds.put("bounds", getConstraintRhs()); + bounds.put("upper_bounds", getConstraintUpperBounds()); + bounds.put("lower_bounds", getConstraintLowerBounds()); + bounds.put("types", getConstraintSense()); + + Map objective = new LinkedHashMap<>(); + objective.put("coefficients", getObjectiveCoefficients()); + objective.put("scalability_factor", getObjectiveScalingFactor()); + objective.put("offset", getObjectiveOffset()); + + Map variableBounds = new LinkedHashMap<>(); + variableBounds.put("upper_bounds", getVariableUpperBounds()); + variableBounds.put("lower_bounds", getVariableLowerBounds()); + + Map result = new LinkedHashMap<>(); + result.put("csr_constraint_matrix", csr); + result.put("constraint_bounds", bounds); + result.put("objective_data", objective); + result.put("variable_bounds", variableBounds); + result.put("maximize", getObjectiveSense() == ObjectiveSense.MAXIMIZE); + result.put("variable_types", getVariableTypes()); + result.put("variable_names", getVariableNames()); + return result; + } + + public DataModel setQuadraticObjective(QuadraticExpression expression) { + NativeCuOpt.setQuadraticObjective( + handle(), quadraticRows(expression), quadraticColumns(expression), quadraticValues(expression)); + return this; + } + + public DataModel addQuadraticConstraint(Constraint constraint) { + if (!constraint.isQuadratic()) { + throw new IllegalArgumentException("Quadratic constraint requires quadratic terms"); + } + if (constraint.getSense() == ConstraintSense.EQ) { + throw new IllegalArgumentException("Equality quadratic constraints are not supported"); + } + QuadraticExpression expression = constraint.getQuadraticExpression(); + LinearExpression linear = constraint.getLinearExpression(); + int[] linearIndices = new int[linear.getTerms().size()]; + double[] linearCoefficients = new double[linear.getTerms().size()]; + int i = 0; + for (var entry : linear.getTerms().entrySet()) { + linearIndices[i] = entry.getKey().getIndex(); + linearCoefficients[i] = entry.getValue(); + i++; + } + NativeCuOpt.addQuadraticConstraint( + handle(), + quadraticRows(expression), + quadraticColumns(expression), + quadraticValues(expression), + linearIndices, + linearCoefficients, + constraint.getSense().nativeValue(), + constraint.getRHS()); + quadraticConstraintNames.add(constraint.getConstraintName()); + return this; + } + + public DataModel addQuadraticConstraint( + String rowName, + double[] linearValues, + int[] linearIndices, + double rhs, + double[] values, + int[] rows, + int[] columns, + ConstraintSense sense) { + if (sense == ConstraintSense.EQ) { + throw new IllegalArgumentException("Equality quadratic constraints are not supported"); + } + if (linearValues == null || linearIndices == null || linearValues.length != linearIndices.length) { + throw new IllegalArgumentException("linearValues and linearIndices must have the same length"); + } + if (values == null || rows == null || columns == null + || values.length != rows.length || values.length != columns.length) { + throw new IllegalArgumentException("quadratic COO arrays must have the same length"); + } + NativeCuOpt.addQuadraticConstraint( + handle(), + copy(rows), + copy(columns), + copy(values), + copy(linearIndices), + copy(linearValues), + sense.nativeValue(), + rhs); + quadraticConstraintNames.add(rowName == null ? "" : rowName); + return this; + } + + public List getQuadraticConstraints() { + Object[] nativeConstraints = NativeCuOpt.getQuadraticConstraints(handle()); + List result = new ArrayList<>(nativeConstraints.length); + for (int i = 0; i < nativeConstraints.length; i++) { + Object[] entry = (Object[]) nativeConstraints[i]; + int rowIndex = ((int[]) entry[0])[0]; + String rowName = (String) entry[1]; + if (i < quadraticConstraintNames.size() && !quadraticConstraintNames.get(i).isEmpty()) { + rowName = quadraticConstraintNames.get(i); + } + ConstraintSense sense = ConstraintSense.fromNative(((byte[]) entry[2])[0]); + double rhs = ((double[]) entry[5])[0]; + result.add( + new QuadraticConstraint( + rowIndex, + rowName, + sense, + (double[]) entry[3], + (int[]) entry[4], + rhs, + (int[]) entry[6], + (int[]) entry[7], + (double[]) entry[8])); + } + return List.copyOf(result); + } + + public DataModel clearQuadraticConstraints() { + NativeCuOpt.clearQuadraticConstraints(handle()); + quadraticConstraintNames.clear(); + return this; + } + + public Solution solve(SolverSettings settings) { + SolverSettings actualSettings = settings == null ? new SolverSettings() : settings; + boolean closeSettings = settings == null; + try { + long solutionHandle = NativeCuOpt.solve(handle(), actualSettings.handle()); + return new Solution( + solutionHandle, + getNumVariables(), + getNumConstraints(), + getProblemCategory(), + getVariableNames()); + } finally { + if (closeSettings) { + actualSettings.close(); + } + } + } + + public void writeMPS(String path) { + NativeCuOpt.writeProblem(handle(), path); + } + + @Override + public void close() { + cleanable.clean(); + } + + private static int[] quadraticRows(QuadraticExpression expression) { + int[] rows = new int[expression.getQuadraticTerms().size()]; + for (int i = 0; i < rows.length; i++) { + rows[i] = expression.getQuadraticTerms().get(i).getFirst().getIndex(); + } + return rows; + } + + private static double[] copy(double[] values) { + return values == null ? new double[0] : Arrays.copyOf(values, values.length); + } + + private static int[] copy(int[] values) { + return values == null ? new int[0] : Arrays.copyOf(values, values.length); + } + + private static byte[] copy(byte[] values) { + return values == null ? new byte[0] : Arrays.copyOf(values, values.length); + } + + private static int[] quadraticColumns(QuadraticExpression expression) { + int[] columns = new int[expression.getQuadraticTerms().size()]; + for (int i = 0; i < columns.length; i++) { + columns[i] = expression.getQuadraticTerms().get(i).getSecond().getIndex(); + } + return columns; + } + + private static double[] quadraticValues(QuadraticExpression expression) { + double[] values = new double[expression.getQuadraticTerms().size()]; + for (int i = 0; i < values.length; i++) { + values[i] = expression.getQuadraticTerms().get(i).getCoefficient(); + } + return values; + } + + private static final class NativeHandle implements Runnable { + private long handle; + + NativeHandle(long handle) { + this.handle = handle; + } + + void requireOpen() { + if (handle == 0) { + throw new IllegalStateException("DataModel is closed"); + } + } + + @Override + public void run() { + if (handle != 0) { + NativeCuOpt.destroyProblem(handle); + handle = 0; + } + } + } +} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/LPStats.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/LPStats.java new file mode 100644 index 0000000000..6d4e7e1c11 --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/LPStats.java @@ -0,0 +1,41 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.linearprogramming; + +public final class LPStats { + private final double primalResidual; + private final double dualResidual; + private final double gap; + private final int numIterations; + private final SolverMethod solvedBy; + + LPStats(double[] values) { + this.primalResidual = values[0]; + this.dualResidual = values[1]; + this.gap = values[2]; + this.numIterations = (int) values[3]; + this.solvedBy = SolverMethod.fromNative((int) values[4]); + } + + public double getPrimalResidual() { + return primalResidual; + } + + public double getDualResidual() { + return dualResidual; + } + + public double getGap() { + return gap; + } + + public int getNumIterations() { + return numIterations; + } + + public SolverMethod getSolvedBy() { + return solvedBy; + } +} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/LinearExpression.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/LinearExpression.java new file mode 100644 index 0000000000..641eb47ac4 --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/LinearExpression.java @@ -0,0 +1,183 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.linearprogramming; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +public final class LinearExpression { + private final LinkedHashMap terms; + private final double constant; + + public LinearExpression() { + this(new LinkedHashMap<>(), 0.0); + } + + private LinearExpression(LinkedHashMap terms, double constant) { + this.terms = terms; + this.constant = constant; + } + + public static LinearExpression of(Variable variable) { + return of(variable, 1.0); + } + + public static LinearExpression of(Variable variable, double coefficient) { + return new LinearExpression().plus(variable, coefficient); + } + + public static LinearExpression ofConstant(double constant) { + return new LinearExpression(new LinkedHashMap<>(), constant); + } + + public LinearExpression plus(Variable variable) { + return plus(variable, 1.0); + } + + public LinearExpression plus(Variable variable, double coefficient) { + LinkedHashMap copy = new LinkedHashMap<>(terms); + copy.merge(variable, coefficient, Double::sum); + return new LinearExpression(copy, constant); + } + + public LinearExpression plus(LinearExpression other) { + LinkedHashMap copy = new LinkedHashMap<>(terms); + for (Map.Entry entry : other.terms.entrySet()) { + copy.merge(entry.getKey(), entry.getValue(), Double::sum); + } + return new LinearExpression(copy, constant + other.constant); + } + + public QuadraticExpression plus(QuadraticExpression other) { + return other.plus(this); + } + + public LinearExpression constant(double additionalConstant) { + return new LinearExpression(new LinkedHashMap<>(terms), constant + additionalConstant); + } + + public LinearExpression plus(double value) { + return constant(value); + } + + public LinearExpression minus(double value) { + return constant(-value); + } + + public LinearExpression minus(Variable variable) { + return plus(variable, -1.0); + } + + public LinearExpression minus(Variable variable, double coefficient) { + return plus(variable, -coefficient); + } + + public LinearExpression minus(LinearExpression other) { + return plus(other.times(-1.0)); + } + + public QuadraticExpression minus(QuadraticExpression other) { + return other.times(-1.0).plus(this); + } + + public LinearExpression times(double scalar) { + LinkedHashMap copy = new LinkedHashMap<>(); + for (Map.Entry entry : terms.entrySet()) { + copy.put(entry.getKey(), entry.getValue() * scalar); + } + return new LinearExpression(copy, constant * scalar); + } + + public LinearExpression dividedBy(double scalar) { + return times(1.0 / scalar); + } + + public Map getVariablesAndCoefficients() { + return getTerms(); + } + + public Constraint le(double rhs) { + return new Constraint(this, ConstraintSense.LE, rhs); + } + + public Constraint le(Variable variable) { + return minus(variable).le(0.0); + } + + public Constraint le(LinearExpression expression) { + return minus(expression).le(0.0); + } + + public Constraint le(QuadraticExpression expression) { + return expression.times(-1.0).plus(this).le(0.0); + } + + public Constraint ge(double rhs) { + return new Constraint(this, ConstraintSense.GE, rhs); + } + + public Constraint ge(Variable variable) { + return minus(variable).ge(0.0); + } + + public Constraint ge(LinearExpression expression) { + return minus(expression).ge(0.0); + } + + public Constraint ge(QuadraticExpression expression) { + return expression.times(-1.0).plus(this).ge(0.0); + } + + public Constraint eq(double rhs) { + return new Constraint(this, ConstraintSense.EQ, rhs); + } + + public Constraint eq(Variable variable) { + return minus(variable).eq(0.0); + } + + public Constraint eq(LinearExpression expression) { + return minus(expression).eq(0.0); + } + + public Map getTerms() { + return Collections.unmodifiableMap(terms); + } + + public List getVariables() { + return List.copyOf(terms.keySet()); + } + + public Variable getVariable(int index) { + return new ArrayList<>(terms.keySet()).get(index); + } + + public List getCoefficients() { + return List.copyOf(terms.values()); + } + + public double getCoefficient(int index) { + return new ArrayList<>(terms.values()).get(index); + } + + public double getCoefficient(Variable variable) { + return terms.getOrDefault(variable, 0.0); + } + + public double getConstant() { + return constant; + } + + public double getValue() { + double value = constant; + for (Map.Entry entry : terms.entrySet()) { + value += entry.getValue() * entry.getKey().getValue(); + } + return value; + } +} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MIPStats.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MIPStats.java new file mode 100644 index 0000000000..75081aeeaf --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MIPStats.java @@ -0,0 +1,47 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.linearprogramming; + +public final class MIPStats { + private final double presolveTime; + private final double maxConstraintViolation; + private final double maxIntViolation; + private final double maxVariableBoundViolation; + private final int numNodes; + private final int numSimplexIterations; + + MIPStats(double[] values) { + this.presolveTime = values[0]; + this.maxConstraintViolation = values[1]; + this.maxIntViolation = values[2]; + this.maxVariableBoundViolation = values[3]; + this.numNodes = (int) values[4]; + this.numSimplexIterations = (int) values[5]; + } + + public double getPresolveTime() { + return presolveTime; + } + + public double getMaxConstraintViolation() { + return maxConstraintViolation; + } + + public double getMaxIntViolation() { + return maxIntViolation; + } + + public double getMaxVariableBoundViolation() { + return maxVariableBoundViolation; + } + + public int getNumNodes() { + return numNodes; + } + + public int getNumSimplexIterations() { + return numSimplexIterations; + } +} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MipCallbackSolution.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MipCallbackSolution.java new file mode 100644 index 0000000000..58258c4b1b --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MipCallbackSolution.java @@ -0,0 +1,25 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.linearprogramming; + +import java.util.Arrays; + +public final class MipCallbackSolution { + final double[] solution; + final double objectiveValue; + + public MipCallbackSolution(double[] solution, double objectiveValue) { + this.solution = Arrays.copyOf(solution, solution.length); + this.objectiveValue = objectiveValue; + } + + public double[] getSolution() { + return Arrays.copyOf(solution, solution.length); + } + + public double getObjectiveValue() { + return objectiveValue; + } +} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MipSetSolutionCallback.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MipSetSolutionCallback.java new file mode 100644 index 0000000000..c55d477e44 --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MipSetSolutionCallback.java @@ -0,0 +1,10 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.linearprogramming; + +@FunctionalInterface +public interface MipSetSolutionCallback { + MipCallbackSolution getSolution(double solutionBound, Object userData); +} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MipSolutionCallback.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MipSolutionCallback.java new file mode 100644 index 0000000000..1b5a5b0adc --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MipSolutionCallback.java @@ -0,0 +1,10 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.linearprogramming; + +@FunctionalInterface +public interface MipSolutionCallback { + void onSolution(double[] solution, double objectiveValue, double solutionBound, Object userData); +} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/NativeCuOpt.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/NativeCuOpt.java new file mode 100644 index 0000000000..36df31ca68 --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/NativeCuOpt.java @@ -0,0 +1,191 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.linearprogramming; + +import java.nio.file.Path; + +final class NativeCuOpt { + static final int PDLP_WARM_START_CURRENT_PRIMAL_SOLUTION = 0; + static final int PDLP_WARM_START_CURRENT_DUAL_SOLUTION = 1; + static final int PDLP_WARM_START_INITIAL_PRIMAL_AVERAGE = 2; + static final int PDLP_WARM_START_INITIAL_DUAL_AVERAGE = 3; + static final int PDLP_WARM_START_CURRENT_ATY = 4; + static final int PDLP_WARM_START_SUM_PRIMAL_SOLUTIONS = 5; + static final int PDLP_WARM_START_SUM_DUAL_SOLUTIONS = 6; + static final int PDLP_WARM_START_LAST_RESTART_DUALITY_GAP_PRIMAL_SOLUTION = 7; + static final int PDLP_WARM_START_LAST_RESTART_DUALITY_GAP_DUAL_SOLUTION = 8; + static final int PDLP_WARM_START_INITIAL_PRIMAL_WEIGHT = 9; + static final int PDLP_WARM_START_INITIAL_STEP_SIZE = 10; + static final int PDLP_WARM_START_TOTAL_PDLP_ITERATIONS = 11; + static final int PDLP_WARM_START_TOTAL_PDHG_ITERATIONS = 12; + static final int PDLP_WARM_START_LAST_CANDIDATE_KKT_SCORE = 13; + static final int PDLP_WARM_START_LAST_RESTART_KKT_SCORE = 14; + static final int PDLP_WARM_START_SUM_SOLUTION_WEIGHT = 15; + static final int PDLP_WARM_START_ITERATIONS_SINCE_LAST_RESTART = 16; + + static { + String nativeDir = System.getProperty("cuopt.native.dir"); + if (nativeDir == null || nativeDir.isBlank()) { + System.loadLibrary("cuopt_jni"); + } else { + System.load(Path.of(nativeDir, System.mapLibraryName("cuopt_jni")).toAbsolutePath().toString()); + } + } + + private NativeCuOpt() {} + + static native int getFloatSize(); + static native String[] getSolverParameterNames(); + static native long createEmptyProblem(); + static native long parseMpsProblem(String path, boolean fixedMpsFormat); + static native long readProblemWithFormat(String path, boolean fixedMpsFormat); + + static native long createSolverSettings(); + static native void destroySolverSettings(long handle); + static native void setParameter(long handle, String name, String value); + static native void setIntegerParameter(long handle, String name, int value); + static native void setFloatParameter(long handle, String name, double value); + static native String getParameter(long handle, String name); + static native void loadParametersFromFile(long handle, String path); + static native boolean dumpParametersToFile(long handle, String path, boolean hyperparametersOnly); + static native void setInitialPrimalSolution(long handle, double[] values); + static native void setInitialDualSolution(long handle, double[] values); + static native void addMipStart(long handle, double[] values); + static native void registerMipGetSolutionCallback( + long handle, MipSolutionCallback callback, Object userData, int numVariables); + static native void registerMipSetSolutionCallback( + long handle, MipSetSolutionCallback callback, Object userData, int numVariables); + static native void setPdlpWarmStartData( + long handle, + double[] currentPrimalSolution, + double[] currentDualSolution, + double[] initialPrimalAverage, + double[] initialDualAverage, + double[] currentAty, + double[] sumPrimalSolutions, + double[] sumDualSolutions, + double[] lastRestartDualityGapPrimalSolution, + double[] lastRestartDualityGapDualSolution, + double initialPrimalWeight, + double initialStepSize, + int totalPdlpIterations, + int totalPdhgIterations, + double lastCandidateKktScore, + double lastRestartKktScore, + double sumSolutionWeight, + int iterationsSinceLastRestart); + + static native long createProblem( + int numConstraints, + int numVariables, + int objectiveSense, + double objectiveOffset, + double[] objectiveCoefficients, + int[] rowOffsets, + int[] columnIndices, + double[] values, + byte[] constraintSense, + double[] rhs, + double[] lowerBounds, + double[] upperBounds, + byte[] variableTypes); + + static native long createRangedProblem( + int numConstraints, + int numVariables, + int objectiveSense, + double objectiveOffset, + double[] objectiveCoefficients, + int[] rowOffsets, + int[] columnIndices, + double[] values, + double[] constraintLowerBounds, + double[] constraintUpperBounds, + double[] variableLowerBounds, + double[] variableUpperBounds, + byte[] variableTypes); + + static native long readProblem(String path); + static native void writeProblem(long handle, String path); + static native void destroyProblem(long handle); + static native void setQuadraticObjective(long handle, int[] rows, int[] columns, double[] values); + static native void addQuadraticConstraint( + long handle, + int[] rows, + int[] columns, + double[] values, + int[] linearIndices, + double[] linearCoefficients, + byte sense, + double rhs); + + static native int getNumVariables(long handle); + static native int getNumConstraints(long handle); + static native int getNumNonZeros(long handle); + static native int getObjectiveSense(long handle); + static native double getObjectiveOffset(long handle); + static native double[] getObjectiveCoefficients(long handle); + static native Object[] getConstraintMatrix(long handle); + static native byte[] getConstraintSense(long handle); + static native double[] getConstraintRhs(long handle); + static native double[] getConstraintLowerBounds(long handle); + static native double[] getConstraintUpperBounds(long handle); + static native double[] getVariableLowerBounds(long handle); + static native double[] getVariableUpperBounds(long handle); + static native byte[] getVariableTypes(long handle); + static native void setMaximize(long handle, boolean maximize); + static native void setConstraintMatrix(long handle, double[] values, int[] indices, int[] offsets); + static native void setConstraintBounds(long handle, double[] values); + static native void setObjectiveCoefficients(long handle, double[] values); + static native void setObjectiveScalingFactor(long handle, double value); + static native double getObjectiveScalingFactor(long handle); + static native void setObjectiveOffset(long handle, double value); + static native void setQuadraticObjectiveMatrix(long handle, double[] values, int[] indices, int[] offsets); + static native void setVariableLowerBounds(long handle, double[] values); + static native void setVariableUpperBounds(long handle, double[] values); + static native void setConstraintLowerBounds(long handle, double[] values); + static native void setConstraintUpperBounds(long handle, double[] values); + static native void setRowTypes(long handle, byte[] values); + static native void setVariableTypes(long handle, byte[] values); + static native void setVariableNames(long handle, String[] values); + static native void setRowNames(long handle, String[] values); + static native void setObjectiveName(long handle, String value); + static native void setProblemName(long handle, String value); + static native void setInitialPrimalSolutionOnProblem(long handle, double[] values); + static native void setInitialDualSolutionOnProblem(long handle, double[] values); + static native double[] getQuadraticObjectiveValues(long handle); + static native int[] getQuadraticObjectiveIndices(long handle); + static native int[] getQuadraticObjectiveOffsets(long handle); + static native String[] getVariableNames(long handle); + static native String[] getRowNames(long handle); + static native String getObjectiveName(long handle); + static native String getProblemName(long handle); + static native int getProblemCategory(long handle); + static native Object[] getQuadraticConstraints(long handle); + static native void clearQuadraticConstraints(long handle); + static native boolean isMip(long handle); + static native long solve(long problemHandle, long settingsHandle); + + static native void destroySolution(long handle); + static native boolean solutionIsMip(long handle); + static native int getTerminationStatus(long handle); + static native int getErrorStatus(long handle); + static native String getErrorString(long handle); + static native double[] getPrimalSolution(long handle, int size); + static native int getDualSolutionSize(long handle); + static native double[] getDualSolution(long handle, int size); + static native double[] getReducedCosts(long handle, int size); + static native double getObjectiveValue(long handle); + static native double getDualObjectiveValue(long handle); + static native double getSolveTime(long handle); + static native double getMipGap(long handle); + static native double getSolutionBound(long handle); + static native double[] getLpStats(long handle); + static native double[] getMipStats(long handle); + static native boolean hasPdlpWarmStartData(long handle); + static native double[] getPdlpWarmStartVector(long handle, int fieldId); + static native double getPdlpWarmStartScalar(long handle, int fieldId); + static native int getPdlpWarmStartInteger(long handle, int fieldId); +} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/ObjectiveSense.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/ObjectiveSense.java new file mode 100644 index 0000000000..b28d9eeb72 --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/ObjectiveSense.java @@ -0,0 +1,20 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.linearprogramming; + +public enum ObjectiveSense { + MAXIMIZE(-1), + MINIMIZE(1); + + private final int nativeValue; + + ObjectiveSense(int nativeValue) { + this.nativeValue = nativeValue; + } + + int nativeValue() { + return nativeValue; + } +} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/PDLPSolverMode.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/PDLPSolverMode.java new file mode 100644 index 0000000000..c6ca69a024 --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/PDLPSolverMode.java @@ -0,0 +1,23 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.linearprogramming; + +public enum PDLPSolverMode { + STABLE1(0), + STABLE2(1), + METHODICAL1(2), + FAST1(3), + STABLE3(4); + + private final int nativeValue; + + PDLPSolverMode(int nativeValue) { + this.nativeValue = nativeValue; + } + + public int nativeValue() { + return nativeValue; + } +} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/PDLPWarmStartData.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/PDLPWarmStartData.java new file mode 100644 index 0000000000..fe6818650f --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/PDLPWarmStartData.java @@ -0,0 +1,198 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.linearprogramming; + +import java.util.Arrays; + +public final class PDLPWarmStartData { + private final double[] currentPrimalSolution; + private final double[] currentDualSolution; + private final double[] initialPrimalAverage; + private final double[] initialDualAverage; + private final double[] currentAty; + private final double[] sumPrimalSolutions; + private final double[] sumDualSolutions; + private final double[] lastRestartDualityGapPrimalSolution; + private final double[] lastRestartDualityGapDualSolution; + private final double initialPrimalWeight; + private final double initialStepSize; + private final int totalPdlpIterations; + private final int totalPdhgIterations; + private final double lastCandidateKktScore; + private final double lastRestartKktScore; + private final double sumSolutionWeight; + private final int iterationsSinceLastRestart; + + public PDLPWarmStartData( + double[] currentPrimalSolution, + double[] currentDualSolution, + double[] initialPrimalAverage, + double[] initialDualAverage, + double[] currentAty, + double[] sumPrimalSolutions, + double[] sumDualSolutions, + double[] lastRestartDualityGapPrimalSolution, + double[] lastRestartDualityGapDualSolution, + double initialPrimalWeight, + double initialStepSize, + int totalPdlpIterations, + int totalPdhgIterations, + double lastCandidateKktScore, + double lastRestartKktScore, + double sumSolutionWeight, + int iterationsSinceLastRestart) { + this.currentPrimalSolution = copy(currentPrimalSolution); + this.currentDualSolution = copy(currentDualSolution); + this.initialPrimalAverage = copy(initialPrimalAverage); + this.initialDualAverage = copy(initialDualAverage); + this.currentAty = copy(currentAty); + this.sumPrimalSolutions = copy(sumPrimalSolutions); + this.sumDualSolutions = copy(sumDualSolutions); + this.lastRestartDualityGapPrimalSolution = copy(lastRestartDualityGapPrimalSolution); + this.lastRestartDualityGapDualSolution = copy(lastRestartDualityGapDualSolution); + this.initialPrimalWeight = initialPrimalWeight; + this.initialStepSize = initialStepSize; + this.totalPdlpIterations = totalPdlpIterations; + this.totalPdhgIterations = totalPdhgIterations; + this.lastCandidateKktScore = lastCandidateKktScore; + this.lastRestartKktScore = lastRestartKktScore; + this.sumSolutionWeight = sumSolutionWeight; + this.iterationsSinceLastRestart = iterationsSinceLastRestart; + } + + static PDLPWarmStartData fromSolution(long solutionHandle) { + return new PDLPWarmStartData( + NativeCuOpt.getPdlpWarmStartVector( + solutionHandle, NativeCuOpt.PDLP_WARM_START_CURRENT_PRIMAL_SOLUTION), + NativeCuOpt.getPdlpWarmStartVector( + solutionHandle, NativeCuOpt.PDLP_WARM_START_CURRENT_DUAL_SOLUTION), + NativeCuOpt.getPdlpWarmStartVector( + solutionHandle, NativeCuOpt.PDLP_WARM_START_INITIAL_PRIMAL_AVERAGE), + NativeCuOpt.getPdlpWarmStartVector( + solutionHandle, NativeCuOpt.PDLP_WARM_START_INITIAL_DUAL_AVERAGE), + NativeCuOpt.getPdlpWarmStartVector( + solutionHandle, NativeCuOpt.PDLP_WARM_START_CURRENT_ATY), + NativeCuOpt.getPdlpWarmStartVector( + solutionHandle, NativeCuOpt.PDLP_WARM_START_SUM_PRIMAL_SOLUTIONS), + NativeCuOpt.getPdlpWarmStartVector( + solutionHandle, NativeCuOpt.PDLP_WARM_START_SUM_DUAL_SOLUTIONS), + NativeCuOpt.getPdlpWarmStartVector( + solutionHandle, + NativeCuOpt.PDLP_WARM_START_LAST_RESTART_DUALITY_GAP_PRIMAL_SOLUTION), + NativeCuOpt.getPdlpWarmStartVector( + solutionHandle, + NativeCuOpt.PDLP_WARM_START_LAST_RESTART_DUALITY_GAP_DUAL_SOLUTION), + NativeCuOpt.getPdlpWarmStartScalar( + solutionHandle, NativeCuOpt.PDLP_WARM_START_INITIAL_PRIMAL_WEIGHT), + NativeCuOpt.getPdlpWarmStartScalar( + solutionHandle, NativeCuOpt.PDLP_WARM_START_INITIAL_STEP_SIZE), + NativeCuOpt.getPdlpWarmStartInteger( + solutionHandle, NativeCuOpt.PDLP_WARM_START_TOTAL_PDLP_ITERATIONS), + NativeCuOpt.getPdlpWarmStartInteger( + solutionHandle, NativeCuOpt.PDLP_WARM_START_TOTAL_PDHG_ITERATIONS), + NativeCuOpt.getPdlpWarmStartScalar( + solutionHandle, NativeCuOpt.PDLP_WARM_START_LAST_CANDIDATE_KKT_SCORE), + NativeCuOpt.getPdlpWarmStartScalar( + solutionHandle, NativeCuOpt.PDLP_WARM_START_LAST_RESTART_KKT_SCORE), + NativeCuOpt.getPdlpWarmStartScalar( + solutionHandle, NativeCuOpt.PDLP_WARM_START_SUM_SOLUTION_WEIGHT), + NativeCuOpt.getPdlpWarmStartInteger( + solutionHandle, NativeCuOpt.PDLP_WARM_START_ITERATIONS_SINCE_LAST_RESTART)); + } + + void applyTo(long settingsHandle) { + NativeCuOpt.setPdlpWarmStartData( + settingsHandle, + currentPrimalSolution, + currentDualSolution, + initialPrimalAverage, + initialDualAverage, + currentAty, + sumPrimalSolutions, + sumDualSolutions, + lastRestartDualityGapPrimalSolution, + lastRestartDualityGapDualSolution, + initialPrimalWeight, + initialStepSize, + totalPdlpIterations, + totalPdhgIterations, + lastCandidateKktScore, + lastRestartKktScore, + sumSolutionWeight, + iterationsSinceLastRestart); + } + + private static double[] copy(double[] values) { + return Arrays.copyOf(values, values.length); + } + + public double[] getCurrentPrimalSolution() { + return copy(currentPrimalSolution); + } + + public double[] getCurrentDualSolution() { + return copy(currentDualSolution); + } + + public double[] getInitialPrimalAverage() { + return copy(initialPrimalAverage); + } + + public double[] getInitialDualAverage() { + return copy(initialDualAverage); + } + + public double[] getCurrentAty() { + return copy(currentAty); + } + + public double[] getSumPrimalSolutions() { + return copy(sumPrimalSolutions); + } + + public double[] getSumDualSolutions() { + return copy(sumDualSolutions); + } + + public double[] getLastRestartDualityGapPrimalSolution() { + return copy(lastRestartDualityGapPrimalSolution); + } + + public double[] getLastRestartDualityGapDualSolution() { + return copy(lastRestartDualityGapDualSolution); + } + + public double getInitialPrimalWeight() { + return initialPrimalWeight; + } + + public double getInitialStepSize() { + return initialStepSize; + } + + public int getTotalPdlpIterations() { + return totalPdlpIterations; + } + + public int getTotalPdhgIterations() { + return totalPdhgIterations; + } + + public double getLastCandidateKktScore() { + return lastCandidateKktScore; + } + + public double getLastRestartKktScore() { + return lastRestartKktScore; + } + + public double getSumSolutionWeight() { + return sumSolutionWeight; + } + + public int getIterationsSinceLastRestart() { + return iterationsSinceLastRestart; + } +} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Problem.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Problem.java new file mode 100644 index 0000000000..3ab7799ed9 --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Problem.java @@ -0,0 +1,731 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.linearprogramming; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + +public final class Problem implements AutoCloseable { + private final String name; + private final List variables = new ArrayList<>(); + private final List constraints = new ArrayList<>(); + private LinearExpression linearObjective = new LinearExpression(); + private QuadraticExpression quadraticObjective = null; + private ObjectiveSense objectiveSense = ObjectiveSense.MINIMIZE; + private boolean objectiveSet = false; + private boolean solved = false; + private TerminationStatus status = TerminationStatus.NO_TERMINATION; + private double objectiveValue = Double.NaN; + private double solveTime = Double.NaN; + private PDLPWarmStartData warmStartData; + + public Problem() { + this(""); + } + + public Problem(String name) { + this.name = name == null ? "" : name; + } + + public String getName() { + return name; + } + + public Variable addVariable() { + return addVariable(0.0, Double.POSITIVE_INFINITY, 0.0, VariableType.CONTINUOUS, ""); + } + + public Variable addVariable( + double lowerBound, + double upperBound, + double objectiveCoefficient, + VariableType variableType, + String name) { + Variable variable = + new Variable( + variables.size(), lowerBound, upperBound, objectiveCoefficient, variableType, name); + variables.add(variable); + solved = false; + return variable; + } + + public Constraint addConstraint(Constraint constraint) { + return addConstraint(constraint, ""); + } + + public Constraint addConstraint(Constraint constraint, String name) { + constraint.setConstraintName(name); + constraint.setIndex(constraints.size()); + constraints.add(constraint); + solved = false; + return constraint; + } + + public Problem setObjective(LinearExpression expression, ObjectiveSense sense) { + this.linearObjective = expression; + this.quadraticObjective = null; + this.objectiveSense = sense; + this.objectiveSet = true; + syncVariableObjectiveCoefficients(expression); + solved = false; + resetSolvedValues(); + return this; + } + + public Problem setObjective(Variable variable, ObjectiveSense sense) { + return setObjective(LinearExpression.of(variable), sense); + } + + public Problem setObjective(double constant, ObjectiveSense sense) { + return setObjective(LinearExpression.ofConstant(constant), sense); + } + + public Problem setObjective(QuadraticExpression expression, ObjectiveSense sense) { + this.linearObjective = expression.getLinearExpression(); + this.quadraticObjective = expression; + this.objectiveSense = sense; + this.objectiveSet = true; + syncVariableObjectiveCoefficients(expression.getLinearExpression()); + solved = false; + resetSolvedValues(); + return this; + } + + public List getVariables() { + return List.copyOf(variables); + } + + public Variable getVariable(int index) { + return variables.get(index); + } + + public Variable getVariable(String variableName) { + for (Variable variable : variables) { + if (variable.getVariableName().equals(variableName)) { + return variable; + } + } + return null; + } + + public List getConstraints() { + return List.copyOf(constraints); + } + + public Constraint getConstraint(int index) { + return constraints.get(index); + } + + public Constraint getConstraint(String constraintName) { + for (Constraint constraint : constraints) { + if (constraint.getConstraintName().equals(constraintName)) { + return constraint; + } + } + return null; + } + + public int getNumVariables() { + return variables.size(); + } + + public int getNumConstraints() { + return constraints.size(); + } + + public boolean isMip() { + return variables.stream().anyMatch(v -> v.getVariableType() != VariableType.CONTINUOUS); + } + + public boolean isSolved() { + return solved; + } + + public TerminationStatus getStatus() { + return status; + } + + public double getObjectiveValue() { + return objectiveValue; + } + + public double getSolveTime() { + return solveTime; + } + + public CsrMatrix getCSR() { + return buildLinearConstraintMatrix().matrix; + } + + public DataModel toDataModel() { + MatrixBuild matrixBuild = buildLinearConstraintMatrix(); + double[] objectiveCoefficients = objectiveCoefficients(); + double[] lowerBounds = new double[variables.size()]; + double[] upperBounds = new double[variables.size()]; + byte[] variableTypes = new byte[variables.size()]; + for (Variable variable : variables) { + int index = variable.getIndex(); + lowerBounds[index] = variable.getLowerBound(); + upperBounds[index] = variable.getUpperBound(); + variableTypes[index] = variable.getVariableType().nativeValue(); + } + + DataModel dataModel = + DataModel.createProblem( + matrixBuild.linearConstraints.size(), + variables.size(), + objectiveSense, + objectiveSet ? linearObjective.getConstant() : 0.0, + objectiveCoefficients, + matrixBuild.matrix, + matrixBuild.constraintSense, + matrixBuild.rhs, + lowerBounds, + upperBounds, + variableTypes); + + if (quadraticObjective != null && !quadraticObjective.getQuadraticTerms().isEmpty()) { + dataModel.setQuadraticObjective(quadraticObjective); + } + for (Constraint constraint : constraints) { + if (constraint.isQuadratic()) { + dataModel.addQuadraticConstraint(constraint); + } + } + String[] variableNames = new String[variables.size()]; + for (Variable variable : variables) { + variableNames[variable.getIndex()] = variable.getVariableName(); + } + String[] rowNames = new String[constraints.size()]; + for (int i = 0; i < constraints.size(); i++) { + rowNames[i] = constraints.get(i).getConstraintName(); + } + dataModel.setVariableNames(variableNames).setRowNames(rowNames).setProblemName(name); + return dataModel; + } + + public Solution solve() { + return solve(null); + } + + public Solution solve(SolverSettings settings) { + SolverSettings actualSettings = settings == null ? new SolverSettings() : settings; + boolean closeSettings = settings == null; + addMipStarts(actualSettings); + try (DataModel dataModel = toDataModel()) { + Solution solution = dataModel.solve(actualSettings); + populateSolution(solution); + return solution; + } finally { + if (closeSettings) { + actualSettings.close(); + } + } + } + + public void writeMPS(String path) { + try (DataModel dataModel = toDataModel()) { + dataModel.writeMPS(path); + } + } + + public static Problem read(String path) { + return read(path, false); + } + + public static Problem read(String path, boolean fixedMpsFormat) { + try (DataModel dataModel = DataModel.read(path, fixedMpsFormat)) { + return fromDataModel(dataModel); + } + } + + private static Problem fromDataModel(DataModel dataModel) { + Problem problem = new Problem(dataModel.getProblemName()); + double[] lowerBounds = dataModel.getVariableLowerBounds(); + double[] upperBounds = dataModel.getVariableUpperBounds(); + byte[] variableTypes = dataModel.getVariableTypes(); + double[] objectiveCoefficients = dataModel.getObjectiveCoefficients(); + String[] variableNames = dataModel.getVariableNames(); + for (int i = 0; i < dataModel.getNumVariables(); i++) { + problem.addVariable( + lowerBounds[i], + upperBounds[i], + objectiveCoefficients[i], + VariableType.fromNative(variableTypes[i]), + variableNames.length > i && !variableNames[i].isEmpty() ? variableNames[i] : "x" + i); + } + + CsrMatrix matrix = dataModel.getConstraintMatrix(); + int[] rowOffsets = matrix.getRowOffsets(); + int[] columnIndices = matrix.getColumnIndices(); + double[] values = matrix.getValues(); + byte[] senses = dataModel.getConstraintSense(); + double[] rhs = dataModel.getConstraintRhs(); + double[] constraintLowerBounds = dataModel.getConstraintLowerBounds(); + double[] constraintUpperBounds = dataModel.getConstraintUpperBounds(); + String[] rowNames = dataModel.getRowNames(); + for (int row = 0; row < dataModel.getNumConstraints(); row++) { + LinearExpression expression = new LinearExpression(); + for (int p = rowOffsets[row]; p < rowOffsets[row + 1]; p++) { + expression = expression.plus(problem.getVariable(columnIndices[p]), values[p]); + } + ConstraintSense sense = ConstraintSense.fromNative(senses[row]); + if (constraintLowerBounds.length > row && constraintUpperBounds.length > row) { + if (Double.compare(constraintLowerBounds[row], constraintUpperBounds[row]) == 0) { + sense = ConstraintSense.EQ; + } else if (Double.compare(constraintLowerBounds[row], rhs[row]) == 0) { + sense = ConstraintSense.GE; + } else if (Double.compare(constraintUpperBounds[row], rhs[row]) == 0) { + sense = ConstraintSense.LE; + } + } + Constraint constraint; + switch (sense) { + case LE: + constraint = expression.le(rhs[row]); + break; + case GE: + constraint = expression.ge(rhs[row]); + break; + case EQ: + constraint = expression.eq(rhs[row]); + break; + default: + throw new IllegalStateException("Unsupported sense " + sense); + } + problem.addConstraint( + constraint, + rowNames.length > row && !rowNames[row].isEmpty() ? rowNames[row] : "c" + row); + } + + int[] qOffsets = dataModel.getQuadraticObjectiveOffsets(); + int[] qIndices = dataModel.getQuadraticObjectiveIndices(); + double[] qValues = dataModel.getQuadraticObjectiveValues(); + if (qValues.length == 0) { + LinearExpression objective = LinearExpression.ofConstant(dataModel.getObjectiveOffset()); + for (int i = 0; i < objectiveCoefficients.length; i++) { + if (objectiveCoefficients[i] != 0.0) { + objective = objective.plus(problem.getVariable(i), objectiveCoefficients[i]); + } + } + problem.setObjective(objective, dataModel.getObjectiveSense()); + } else { + QuadraticExpression objective = + new QuadraticExpression().constant(dataModel.getObjectiveOffset()); + for (int i = 0; i < objectiveCoefficients.length; i++) { + if (objectiveCoefficients[i] != 0.0) { + objective = objective.plus(problem.getVariable(i), objectiveCoefficients[i]); + } + } + for (int row = 0; row + 1 < qOffsets.length; row++) { + for (int p = qOffsets[row]; p < qOffsets[row + 1]; p++) { + objective = + objective.plus( + problem.getVariable(row), problem.getVariable(qIndices[p]), qValues[p]); + } + } + problem.setObjective(objective, dataModel.getObjectiveSense()); + } + + for (QuadraticConstraint quadraticConstraint : dataModel.getQuadraticConstraints()) { + QuadraticExpression expression = new QuadraticExpression(); + double[] linearValues = quadraticConstraint.getLinearValues(); + int[] linearIndices = quadraticConstraint.getLinearIndices(); + for (int i = 0; i < linearValues.length; i++) { + expression = expression.plus(problem.getVariable(linearIndices[i]), linearValues[i]); + } + int[] rows = quadraticConstraint.getRows(); + int[] columns = quadraticConstraint.getColumns(); + double[] quadraticValues = quadraticConstraint.getValues(); + for (int i = 0; i < quadraticValues.length; i++) { + expression = + expression.plus( + problem.getVariable(rows[i]), problem.getVariable(columns[i]), quadraticValues[i]); + } + Constraint constraint = + quadraticConstraint.getSense() == ConstraintSense.LE + ? expression.le(quadraticConstraint.getRHS()) + : expression.ge(quadraticConstraint.getRHS()); + problem.addConstraint(constraint, quadraticConstraint.getRowName()); + } + return problem; + } + + public static Problem readMPS(String path) { + return readMPS(path, false); + } + + public static Problem readMPS(String path, boolean fixedMpsFormat) { + try (DataModel dataModel = DataModel.parseMps(path, fixedMpsFormat)) { + return fromDataModel(dataModel); + } + } + + @Override + public void close() { + // Problem owns no native handle; DataModel and Solution carry native lifetimes. + } + + public void update() { + resetSolvedValues(); + } + + public void resetSolvedValues() { + variables.forEach(Variable::resetSolvedValues); + constraints.forEach(Constraint::resetSolvedValues); + solved = false; + status = TerminationStatus.NO_TERMINATION; + objectiveValue = Double.NaN; + solveTime = Double.NaN; + warmStartData = null; + } + + public void updateConstraint(Constraint constraint, Map coefficients, Double rhs) { + if (!constraints.contains(constraint)) { + throw new IllegalArgumentException("Constraint does not belong to this problem"); + } + if (constraint.isQuadratic()) { + throw new IllegalArgumentException("updateConstraint applies to linear constraints only"); + } + LinearExpression expression = new LinearExpression(); + for (Map.Entry entry : constraint.getLinearExpression().getTerms().entrySet()) { + expression = expression.plus(entry.getKey(), entry.getValue()); + } + if (coefficients != null) { + for (Map.Entry entry : coefficients.entrySet()) { + expression = expression.plus(entry.getKey(), entry.getValue() - constraint.getCoefficient(entry.getKey())); + } + } + constraint.updateLinearExpression(expression); + if (rhs != null) { + constraint.updateRHS(rhs); + } + resetSolvedValues(); + } + + public void updateObjective(Map coefficients, Double constant, ObjectiveSense sense) { + if (coefficients != null) { + for (Map.Entry entry : coefficients.entrySet()) { + if (!variables.contains(entry.getKey())) { + throw new IllegalArgumentException("Objective variable does not belong to this problem"); + } + entry.getKey().setObjectiveCoefficient(entry.getValue()); + } + if (objectiveSet) { + LinearExpression updated = + LinearExpression.ofConstant(constant == null ? linearObjective.getConstant() : constant); + for (Map.Entry entry : linearObjective.getTerms().entrySet()) { + updated = updated.plus(entry.getKey(), coefficients.getOrDefault(entry.getKey(), entry.getValue())); + } + for (Map.Entry entry : coefficients.entrySet()) { + if (!linearObjective.getTerms().containsKey(entry.getKey())) { + updated = updated.plus(entry.getKey(), entry.getValue()); + } + } + linearObjective = updated; + if (quadraticObjective != null) { + QuadraticExpression updatedQuadratic = + new QuadraticExpression().constant(linearObjective.getConstant()); + for (Map.Entry entry : linearObjective.getTerms().entrySet()) { + updatedQuadratic = updatedQuadratic.plus(entry.getKey(), entry.getValue()); + } + for (QuadraticExpression.QuadraticTerm term : quadraticObjective.getQuadraticTerms()) { + updatedQuadratic = + updatedQuadratic.plus(term.getFirst(), term.getSecond(), term.getCoefficient()); + } + quadraticObjective = updatedQuadratic; + } + } else if (constant != null) { + linearObjective = LinearExpression.ofConstant(constant); + for (Variable variable : variables) { + if (variable.getObjectiveCoefficient() != 0.0) { + linearObjective = linearObjective.plus(variable, variable.getObjectiveCoefficient()); + } + } + objectiveSet = true; + } + } else if (constant != null) { + linearObjective = linearObjective.constant(constant - linearObjective.getConstant()); + if (quadraticObjective != null) { + quadraticObjective = quadraticObjective.plus(LinearExpression.ofConstant(constant - quadraticObjective.getLinearExpression().getConstant())); + } + objectiveSet = true; + } + if (sense != null) { + objectiveSense = sense; + } + resetSolvedValues(); + } + + public Object getObjective() { + return quadraticObjective == null ? linearObjective : quadraticObjective; + } + + public ObjectiveSense getObjectiveSense() { + return objectiveSense; + } + + public double getObjectiveConstant() { + return objectiveSet ? linearObjective.getConstant() : 0.0; + } + + public int getNumNonZeros() { + return buildLinearConstraintMatrix().matrix.getValues().length; + } + + public List getQuadraticConstraints() { + List result = new ArrayList<>(); + for (Constraint constraint : constraints) { + if (constraint.isQuadratic()) { + result.add(constraint); + } + } + return List.copyOf(result); + } + + public CsrMatrix getQCSR() { + if (quadraticObjective == null) { + return null; + } + int n = variables.size(); + int[] offsets = new int[n + 1]; + Map> byRow = new TreeMap<>(); + for (int i = 0; i < n; i++) { + byRow.put(i, new TreeMap<>()); + } + for (QuadraticExpression.QuadraticTerm term : quadraticObjective.getQuadraticTerms()) { + byRow + .get(term.getFirst().getIndex()) + .merge(term.getSecond().getIndex(), term.getCoefficient(), Double::sum); + } + int nnz = 0; + for (int row = 0; row < n; row++) { + offsets[row] = nnz; + nnz += byRow.get(row).size(); + } + offsets[n] = nnz; + int[] columns = new int[nnz]; + double[] coefficients = new double[nnz]; + int position = 0; + for (int row = 0; row < n; row++) { + for (Map.Entry entry : byRow.get(row).entrySet()) { + columns[position] = entry.getKey(); + coefficients[position++] = entry.getValue(); + } + } + return new CsrMatrix(offsets, columns, coefficients); + } + + public CsrMatrix getQcsr() { + return getQCSR(); + } + + public List getIncumbentValues(double[] solution, List requestedVariables) { + List values = new ArrayList<>(); + for (Variable variable : requestedVariables) { + values.add(solution[variable.getIndex()]); + } + return List.copyOf(values); + } + + public List get_incumbent_values(double[] solution, List requestedVariables) { + return getIncumbentValues(solution, requestedVariables); + } + + public PDLPWarmStartData getWarmstartData() { + return warmStartData; + } + + public PDLPWarmStartData getPdlpWarmStartData() { + return getWarmstartData(); + } + + public PDLPWarmStartData get_pdlp_warm_start_data() { + return getWarmstartData(); + } + + public Problem relax() { + Map mapping = new LinkedHashMap<>(); + Problem relaxed = new Problem(name); + for (Variable variable : variables) { + mapping.put(variable, relaxed.addVariable(variable.getLowerBound(), variable.getUpperBound(), + variable.getObjectiveCoefficient(), VariableType.CONTINUOUS, variable.getVariableName())); + } + for (Constraint constraint : constraints) { + if (constraint.isQuadratic()) { + QuadraticExpression expression = new QuadraticExpression(); + for (Map.Entry entry : constraint.getLinearExpression().getTerms().entrySet()) { + expression = expression.plus(mapping.get(entry.getKey()), entry.getValue()); + } + for (QuadraticExpression.QuadraticTerm term : constraint.getQuadraticExpression().getQuadraticTerms()) { + expression = expression.plus(mapping.get(term.getFirst()), mapping.get(term.getSecond()), term.getCoefficient()); + } + relaxed.addConstraint(constraint.getSense() == ConstraintSense.LE + ? expression.le(constraint.getRHS()) : expression.ge(constraint.getRHS()), constraint.getConstraintName()); + } else { + LinearExpression expression = new LinearExpression(); + for (Map.Entry entry : constraint.getLinearExpression().getTerms().entrySet()) { + expression = expression.plus(mapping.get(entry.getKey()), entry.getValue()); + } + Constraint copy; + switch (constraint.getSense()) { + case LE: + copy = expression.le(constraint.getRHS()); + break; + case GE: + copy = expression.ge(constraint.getRHS()); + break; + case EQ: + copy = expression.eq(constraint.getRHS()); + break; + default: + throw new IllegalStateException("Unsupported constraint sense"); + } + relaxed.addConstraint(copy, constraint.getConstraintName()); + } + } + if (quadraticObjective != null) { + QuadraticExpression expression = new QuadraticExpression().constant(quadraticObjective.getLinearExpression().getConstant()); + for (Map.Entry entry : quadraticObjective.getLinearExpression().getTerms().entrySet()) { + expression = expression.plus(mapping.get(entry.getKey()), entry.getValue()); + } + for (QuadraticExpression.QuadraticTerm term : quadraticObjective.getQuadraticTerms()) { + expression = expression.plus(mapping.get(term.getFirst()), mapping.get(term.getSecond()), term.getCoefficient()); + } + relaxed.setObjective(expression, objectiveSense); + } else { + LinearExpression expression = new LinearExpression().constant(linearObjective.getConstant()); + for (Map.Entry entry : linearObjective.getTerms().entrySet()) { + expression = expression.plus(mapping.get(entry.getKey()), entry.getValue()); + } + relaxed.setObjective(expression, objectiveSense); + } + return relaxed; + } + + private void populateSolution(Solution solution) { + double[] primal = solution.getPrimalSolution(); + for (int i = 0; i < variables.size(); i++) { + variables.get(i).setValue(primal[i]); + } + if (!solution.isMip()) { + double[] reducedCosts = solution.getReducedCost(); + for (int i = 0; i < variables.size(); i++) { + variables.get(i).setReducedCost(reducedCosts[i]); + } + double[] dual = solution.getDualSolution(); + int linearRow = 0; + for (Constraint constraint : constraints) { + if (!constraint.isQuadratic()) { + constraint.setDualValue(dual[linearRow++]); + } + } + } + for (Constraint constraint : constraints) { + constraint.setSlack(constraint.computeSlack()); + } + status = solution.getTerminationStatus(); + objectiveValue = solution.getPrimalObjective(); + solveTime = solution.getSolveTime(); + warmStartData = solution.isMip() ? null : solution.getPdlpWarmStartData(); + solved = true; + } + + private void addMipStarts(SolverSettings settings) { + if (!isMip()) { + return; + } + double[] starts = new double[variables.size()]; + boolean any = false; + for (Variable variable : variables) { + starts[variable.getIndex()] = variable.getMipStart(); + any |= !Double.isNaN(variable.getMipStart()); + } + if (any) { + settings.addMipStart(starts); + } + } + + private double[] objectiveCoefficients() { + double[] coefficients = new double[variables.size()]; + if (!objectiveSet) { + for (Variable variable : variables) { + coefficients[variable.getIndex()] = variable.getObjectiveCoefficient(); + } + } else { + for (Map.Entry entry : linearObjective.getTerms().entrySet()) { + coefficients[entry.getKey().getIndex()] += entry.getValue(); + } + } + return coefficients; + } + + private void syncVariableObjectiveCoefficients(LinearExpression expression) { + for (Variable variable : variables) { + variable.setObjectiveCoefficient(0.0); + } + for (Map.Entry entry : expression.getTerms().entrySet()) { + if (!variables.contains(entry.getKey())) { + throw new IllegalArgumentException("Objective variable does not belong to this problem"); + } + entry.getKey().setObjectiveCoefficient(entry.getValue()); + } + } + + private MatrixBuild buildLinearConstraintMatrix() { + List linearConstraints = new ArrayList<>(); + for (Constraint constraint : constraints) { + if (!constraint.isQuadratic()) { + linearConstraints.add(constraint); + } + } + + int nnz = 0; + for (Constraint constraint : linearConstraints) { + nnz += constraint.getLinearExpression().getTerms().size(); + } + + int[] rowOffsets = new int[linearConstraints.size() + 1]; + int[] columnIndices = new int[nnz]; + double[] values = new double[nnz]; + byte[] senses = new byte[linearConstraints.size()]; + double[] rhs = new double[linearConstraints.size()]; + + int position = 0; + for (int row = 0; row < linearConstraints.size(); row++) { + Constraint constraint = linearConstraints.get(row); + rowOffsets[row] = position; + for (Map.Entry entry : constraint.getLinearExpression().getTerms().entrySet()) { + columnIndices[position] = entry.getKey().getIndex(); + values[position] = entry.getValue(); + position++; + } + senses[row] = constraint.getSense().nativeValue(); + rhs[row] = constraint.getRHS(); + } + rowOffsets[linearConstraints.size()] = position; + return new MatrixBuild( + new CsrMatrix(rowOffsets, columnIndices, values), linearConstraints, senses, rhs); + } + + private static final class MatrixBuild { + private final CsrMatrix matrix; + private final List linearConstraints; + private final byte[] constraintSense; + private final double[] rhs; + + private MatrixBuild( + CsrMatrix matrix, List linearConstraints, byte[] constraintSense, double[] rhs) { + this.matrix = matrix; + this.linearConstraints = linearConstraints; + this.constraintSense = Arrays.copyOf(constraintSense, constraintSense.length); + this.rhs = Arrays.copyOf(rhs, rhs.length); + } + } +} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/ProblemCategory.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/ProblemCategory.java new file mode 100644 index 0000000000..c4fa971acd --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/ProblemCategory.java @@ -0,0 +1,31 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.linearprogramming; + +/** Problem categories returned by cuOpt solutions. */ +public enum ProblemCategory { + LP(0), + MIP(1), + IP(2); + + private final int nativeValue; + + ProblemCategory(int nativeValue) { + this.nativeValue = nativeValue; + } + + public int nativeValue() { + return nativeValue; + } + + static ProblemCategory fromNative(int value) { + for (ProblemCategory category : values()) { + if (category.nativeValue == value) { + return category; + } + } + throw new IllegalArgumentException("Unknown problem category: " + value); + } +} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/QuadraticConstraint.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/QuadraticConstraint.java new file mode 100644 index 0000000000..c9416da842 --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/QuadraticConstraint.java @@ -0,0 +1,86 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.linearprogramming; + +import java.util.Arrays; + +/** Host-side representation of a quadratic constraint in COO form. */ +public final class QuadraticConstraint { + private final int rowIndex; + private final String rowName; + private final ConstraintSense sense; + private final double[] linearValues; + private final int[] linearIndices; + private final double rhs; + private final int[] rows; + private final int[] columns; + private final double[] values; + + public QuadraticConstraint( + int rowIndex, + String rowName, + ConstraintSense sense, + double[] linearValues, + int[] linearIndices, + double rhs, + int[] rows, + int[] columns, + double[] values) { + if (linearValues.length != linearIndices.length) { + throw new IllegalArgumentException("linearValues and linearIndices must have the same length"); + } + if (rows.length != columns.length || rows.length != values.length) { + throw new IllegalArgumentException("quadratic COO arrays must have the same length"); + } + if (sense == ConstraintSense.EQ) { + throw new IllegalArgumentException("Equality quadratic constraints are not supported"); + } + this.rowIndex = rowIndex; + this.rowName = rowName == null ? "" : rowName; + this.sense = sense; + this.linearValues = Arrays.copyOf(linearValues, linearValues.length); + this.linearIndices = Arrays.copyOf(linearIndices, linearIndices.length); + this.rhs = rhs; + this.rows = Arrays.copyOf(rows, rows.length); + this.columns = Arrays.copyOf(columns, columns.length); + this.values = Arrays.copyOf(values, values.length); + } + + public int getRowIndex() { + return rowIndex; + } + + public String getRowName() { + return rowName; + } + + public ConstraintSense getSense() { + return sense; + } + + public double[] getLinearValues() { + return Arrays.copyOf(linearValues, linearValues.length); + } + + public int[] getLinearIndices() { + return Arrays.copyOf(linearIndices, linearIndices.length); + } + + public double getRHS() { + return rhs; + } + + public int[] getRows() { + return Arrays.copyOf(rows, rows.length); + } + + public int[] getColumns() { + return Arrays.copyOf(columns, columns.length); + } + + public double[] getValues() { + return Arrays.copyOf(values, values.length); + } +} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/QuadraticExpression.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/QuadraticExpression.java new file mode 100644 index 0000000000..8c43671f11 --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/QuadraticExpression.java @@ -0,0 +1,195 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.linearprogramming; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public final class QuadraticExpression { + public static final class QuadraticTerm { + private final Variable first; + private final Variable second; + private final double coefficient; + + QuadraticTerm(Variable first, Variable second, double coefficient) { + this.first = first; + this.second = second; + this.coefficient = coefficient; + } + + public Variable getFirst() { + return first; + } + + public Variable getSecond() { + return second; + } + + public double getCoefficient() { + return coefficient; + } + } + + private final LinearExpression linearExpression; + private final List quadraticTerms; + + public QuadraticExpression() { + this(new LinearExpression(), new ArrayList<>()); + } + + private QuadraticExpression(LinearExpression linearExpression, List quadraticTerms) { + this.linearExpression = linearExpression; + this.quadraticTerms = quadraticTerms; + } + + public static QuadraticExpression of(Variable first, Variable second, double coefficient) { + return new QuadraticExpression().plus(first, second, coefficient); + } + + public QuadraticExpression plus(Variable first, Variable second, double coefficient) { + List copy = new ArrayList<>(quadraticTerms); + copy.add(new QuadraticTerm(first, second, coefficient)); + return new QuadraticExpression(linearExpression, copy); + } + + public QuadraticExpression plus(Variable variable, double coefficient) { + return new QuadraticExpression(linearExpression.plus(variable, coefficient), quadraticTerms); + } + + public QuadraticExpression plus(Variable variable) { + return plus(variable, 1.0); + } + + public QuadraticExpression plus(double value) { + return constant(value); + } + + public QuadraticExpression plus(LinearExpression expression) { + return new QuadraticExpression(linearExpression.plus(expression), quadraticTerms); + } + + public QuadraticExpression plus(QuadraticExpression expression) { + List copy = new ArrayList<>(quadraticTerms); + copy.addAll(expression.quadraticTerms); + return new QuadraticExpression(linearExpression.plus(expression.linearExpression), copy); + } + + public QuadraticExpression constant(double constant) { + return new QuadraticExpression(linearExpression.constant(constant), quadraticTerms); + } + + public QuadraticExpression minus(QuadraticExpression expression) { + return plus(expression.times(-1.0)); + } + + public QuadraticExpression minus(LinearExpression expression) { + return plus(expression.times(-1.0)); + } + + public QuadraticExpression minus(Variable variable) { + return plus(variable, -1.0); + } + + public QuadraticExpression minus(double value) { + return plus(-value); + } + + public QuadraticExpression times(double scalar) { + List terms = new ArrayList<>(); + for (QuadraticTerm term : quadraticTerms) { + terms.add(new QuadraticTerm(term.first, term.second, term.coefficient * scalar)); + } + return new QuadraticExpression(linearExpression.times(scalar), terms); + } + + public QuadraticExpression dividedBy(double scalar) { + return times(1.0 / scalar); + } + + public Constraint le(double rhs) { + return new Constraint(this, ConstraintSense.LE, rhs); + } + + public Constraint le(Variable variable) { + return minus(variable).le(0.0); + } + + public Constraint le(LinearExpression expression) { + return minus(expression).le(0.0); + } + + public Constraint le(QuadraticExpression expression) { + return minus(expression).le(0.0); + } + + public Constraint ge(double rhs) { + return new Constraint(this, ConstraintSense.GE, rhs); + } + + public Constraint ge(Variable variable) { + return minus(variable).ge(0.0); + } + + public Constraint ge(LinearExpression expression) { + return minus(expression).ge(0.0); + } + + public Constraint ge(QuadraticExpression expression) { + return minus(expression).ge(0.0); + } + + public Constraint eq(double rhs) { + throw new IllegalArgumentException("Equality quadratic constraints are not supported"); + } + + public LinearExpression getLinearExpression() { + return linearExpression; + } + + public double getConstant() { + return linearExpression.getConstant(); + } + + public List getQuadraticTerms() { + return Collections.unmodifiableList(quadraticTerms); + } + + public List getVariables() { + List result = new ArrayList<>(); + for (QuadraticTerm term : quadraticTerms) { + result.add(new Variable[] {term.first, term.second}); + } + return Collections.unmodifiableList(result); + } + + public Variable getVariable1(int index) { + return quadraticTerms.get(index).first; + } + + public Variable getVariable2(int index) { + return quadraticTerms.get(index).second; + } + + public List getCoefficients() { + List result = new ArrayList<>(); + for (QuadraticTerm term : quadraticTerms) { + result.add(term.coefficient); + } + return Collections.unmodifiableList(result); + } + + public double getCoefficient(int index) { + return quadraticTerms.get(index).coefficient; + } + + public double getValue() { + double value = linearExpression.getValue(); + for (QuadraticTerm term : quadraticTerms) { + value += term.coefficient * term.first.getValue() * term.second.getValue(); + } + return value; + } +} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Solution.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Solution.java new file mode 100644 index 0000000000..6ba6ccf3a0 --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Solution.java @@ -0,0 +1,184 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.linearprogramming; + +import java.lang.ref.Cleaner; +import java.util.Arrays; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.Map; + +public final class Solution implements AutoCloseable { + private static final Cleaner CLEANER = Cleaner.create(); + private final NativeHandle nativeHandle; + private final Cleaner.Cleanable cleanable; + private final int numVariables; + private final int numConstraints; + private final boolean mip; + private final ProblemCategory problemCategory; + private final String[] variableNames; + + Solution(long handle, int numVariables, int numConstraints) { + this(handle, numVariables, numConstraints, ProblemCategory.LP, new String[0]); + } + + Solution( + long handle, + int numVariables, + int numConstraints, + ProblemCategory problemCategory, + String[] variableNames) { + this.nativeHandle = new NativeHandle(handle); + this.cleanable = CLEANER.register(this, nativeHandle); + this.numVariables = numVariables; + this.numConstraints = numConstraints; + this.mip = NativeCuOpt.solutionIsMip(handle); + this.problemCategory = problemCategory; + this.variableNames = variableNames == null ? new String[0] : Arrays.copyOf(variableNames, variableNames.length); + } + + long handle() { + nativeHandle.requireOpen(); + return nativeHandle.handle; + } + + public boolean isMip() { + return mip; + } + + public ProblemCategory getProblemCategory() { + return problemCategory; + } + + public double[] getPrimalSolution() { + return NativeCuOpt.getPrimalSolution(handle(), numVariables); + } + + public double[] getDualSolution() { + requireLp("getDualSolution"); + return NativeCuOpt.getDualSolution(handle(), NativeCuOpt.getDualSolutionSize(handle())); + } + + public double[] getReducedCost() { + requireLp("getReducedCost"); + return NativeCuOpt.getReducedCosts(handle(), numVariables); + } + + public double getPrimalObjective() { + return NativeCuOpt.getObjectiveValue(handle()); + } + + public double getDualObjective() { + requireLp("getDualObjective"); + return NativeCuOpt.getDualObjectiveValue(handle()); + } + + public TerminationStatus getTerminationStatus() { + return TerminationStatus.fromNative(NativeCuOpt.getTerminationStatus(handle())); + } + + public String getTerminationReason() { + return getTerminationStatus().name(); + } + + public int getErrorStatus() { + return NativeCuOpt.getErrorStatus(handle()); + } + + public String getErrorMessage() { + return NativeCuOpt.getErrorString(handle()); + } + + public double getSolveTime() { + return NativeCuOpt.getSolveTime(handle()); + } + + public SolverMethod getSolvedBy() { + return mip ? SolverMethod.UNSET : getLpStats().getSolvedBy(); + } + + public boolean getSolvedByPdlp() { + return !mip && getSolvedBy() == SolverMethod.PDLP; + } + + public Map getVars() { + double[] values = getPrimalSolution(); + Map result = new LinkedHashMap<>(); + int count = Math.min(variableNames.length, values.length); + for (int i = 0; i < count; ++i) { + result.put(variableNames[i], values[i]); + } + return Collections.unmodifiableMap(result); + } + + public double getMipGap() { + requireMip("getMipGap"); + return NativeCuOpt.getMipGap(handle()); + } + + public double getSolutionBound() { + requireMip("getSolutionBound"); + return NativeCuOpt.getSolutionBound(handle()); + } + + public LPStats getLpStats() { + requireLp("getLpStats"); + return new LPStats(NativeCuOpt.getLpStats(handle())); + } + + public MIPStats getMipStats() { + requireMip("getMipStats"); + return new MIPStats(NativeCuOpt.getMipStats(handle())); + } + + public boolean hasPdlpWarmStartData() { + requireLp("hasPdlpWarmStartData"); + return NativeCuOpt.hasPdlpWarmStartData(handle()); + } + + public PDLPWarmStartData getPdlpWarmStartData() { + requireLp("getPdlpWarmStartData"); + return PDLPWarmStartData.fromSolution(handle()); + } + + @Override + public void close() { + cleanable.clean(); + } + + private void requireLp(String method) { + if (mip) { + throw new IllegalStateException(method + " is not available for MIP solutions"); + } + } + + private void requireMip(String method) { + if (!mip) { + throw new IllegalStateException(method + " is not available for LP solutions"); + } + } + + private static final class NativeHandle implements Runnable { + private long handle; + + NativeHandle(long handle) { + this.handle = handle; + } + + void requireOpen() { + if (handle == 0) { + throw new IllegalStateException("Solution is closed"); + } + } + + @Override + public void run() { + if (handle != 0) { + NativeCuOpt.destroySolution(handle); + handle = 0; + } + } + } +} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/SolverMethod.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/SolverMethod.java new file mode 100644 index 0000000000..a94a5e31e6 --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/SolverMethod.java @@ -0,0 +1,32 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.linearprogramming; + +public enum SolverMethod { + CONCURRENT(0), + PDLP(1), + DUAL_SIMPLEX(2), + BARRIER(3), + UNSET(4); + + private final int nativeValue; + + SolverMethod(int nativeValue) { + this.nativeValue = nativeValue; + } + + public int nativeValue() { + return nativeValue; + } + + static SolverMethod fromNative(int value) { + for (SolverMethod method : values()) { + if (method.nativeValue == value) { + return method; + } + } + return UNSET; + } +} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/SolverSettings.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/SolverSettings.java new file mode 100644 index 0000000000..756b301179 --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/SolverSettings.java @@ -0,0 +1,223 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.linearprogramming; + +import java.lang.ref.Cleaner; +import java.util.Arrays; +import java.util.ArrayList; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +public final class SolverSettings implements AutoCloseable { + private static final Cleaner CLEANER = Cleaner.create(); + private final NativeHandle nativeHandle; + private final Cleaner.Cleanable cleanable; + private PDLPWarmStartData pdlpWarmStartData; + private final List mipCallbacks = new ArrayList<>(); + + public SolverSettings() { + this.nativeHandle = new NativeHandle(NativeCuOpt.createSolverSettings()); + this.cleanable = CLEANER.register(this, nativeHandle); + } + + long handle() { + nativeHandle.requireOpen(); + return nativeHandle.handle; + } + + public static Set getSolverParameterNames() { + return new LinkedHashSet<>(Arrays.asList(NativeCuOpt.getSolverParameterNames())); + } + + public static String getSolverSetting(String name) { + try (SolverSettings settings = new SolverSettings()) { + return settings.getParameterAsString(name); + } + } + + public static Object getTypedSolverSetting(String name) { + return typedValue(getSolverSetting(name)); + } + + public static String getSolverSettingAsString(String name) { + try (SolverSettings settings = new SolverSettings()) { + return settings.getParameterAsString(name); + } + } + + public SolverSettings setParameter(String name, String value) { + NativeCuOpt.setParameter(handle(), name, value); + return this; + } + + public SolverSettings setParameter(String name, int value) { + NativeCuOpt.setIntegerParameter(handle(), name, value); + return this; + } + + public SolverSettings setParameter(String name, double value) { + NativeCuOpt.setFloatParameter(handle(), name, value); + return this; + } + + public SolverSettings setParameter(String name, boolean value) { + NativeCuOpt.setIntegerParameter(handle(), name, value ? 1 : 0); + return this; + } + + public String getParameter(String name) { + return getParameterAsString(name); + } + + public Object getTypedParameter(String name) { + return typedValue(getParameterAsString(name)); + } + + public String getParameterAsString(String name) { + return NativeCuOpt.getParameter(handle(), name); + } + + public SolverSettings setMethod(SolverMethod method) { + return setParameter(CuOptConstants.CUOPT_METHOD, method.nativeValue()); + } + + public SolverSettings setPdlpSolverMode(PDLPSolverMode mode) { + return setParameter(CuOptConstants.CUOPT_PDLP_SOLVER_MODE, mode.nativeValue()); + } + + public SolverSettings setOptimalityTolerance(double tolerance) { + for (String parameter : getSolverParameterNames()) { + if (parameter.endsWith("tolerance") + && !parameter.startsWith("mip") + && !parameter.contains("infeasible")) { + setParameter(parameter, tolerance); + } + } + return this; + } + + public SolverSettings setInitialPrimalSolution(double[] values) { + NativeCuOpt.setInitialPrimalSolution(handle(), Arrays.copyOf(values, values.length)); + return this; + } + + public SolverSettings setInitialDualSolution(double[] values) { + NativeCuOpt.setInitialDualSolution(handle(), Arrays.copyOf(values, values.length)); + return this; + } + + public SolverSettings addMipStart(double[] values) { + NativeCuOpt.addMipStart(handle(), Arrays.copyOf(values, values.length)); + return this; + } + + public SolverSettings setPdlpWarmStartData(PDLPWarmStartData warmStartData) { + if (warmStartData == null) { + throw new IllegalArgumentException("warmStartData must not be null"); + } + warmStartData.applyTo(handle()); + this.pdlpWarmStartData = warmStartData; + return this; + } + + public SolverSettings setMipCallback( + MipSolutionCallback callback, Object userData, int numVariables) { + NativeCuOpt.registerMipGetSolutionCallback(handle(), callback, userData, numVariables); + mipCallbacks.add(callback); + return this; + } + + public SolverSettings setMipCallback( + MipSetSolutionCallback callback, Object userData, int numVariables) { + NativeCuOpt.registerMipSetSolutionCallback(handle(), callback, userData, numVariables); + mipCallbacks.add(callback); + return this; + } + + public List getMipCallbacks() { + return Collections.unmodifiableList(mipCallbacks); + } + + public PDLPWarmStartData getPdlpWarmStartData() { + return pdlpWarmStartData; + } + + public boolean dumpParametersToFile(String path, boolean hyperparametersOnly) { + return NativeCuOpt.dumpParametersToFile(handle(), path, hyperparametersOnly); + } + + public boolean dumpParametersToFile(String path) { + return dumpParametersToFile(path, true); + } + + public SolverSettings loadParametersFromFile(String path) { + NativeCuOpt.loadParametersFromFile(handle(), path); + return this; + } + + public Map toDict() { + Map result = new LinkedHashMap<>(); + Map tolerances = new LinkedHashMap<>(); + for (String parameter : getSolverParameterNames()) { + Object value = getTypedParameter(parameter); + if (parameter.endsWith("tolerance")) { + tolerances.put(parameter, value); + } else { + result.put(parameter, value instanceof Double && ((Double) value).isInfinite() ? null : value); + } + } + result.put("tolerances", tolerances); + return Collections.unmodifiableMap(result); + } + + private static Object typedValue(String value) { + if ("true".equalsIgnoreCase(value)) { + return true; + } + if ("false".equalsIgnoreCase(value)) { + return false; + } + try { + return Integer.valueOf(value); + } catch (NumberFormatException ignored) { + try { + return Double.valueOf(value); + } catch (NumberFormatException ignoredAgain) { + return value; + } + } + } + + @Override + public void close() { + cleanable.clean(); + } + + private static final class NativeHandle implements Runnable { + private long handle; + + NativeHandle(long handle) { + this.handle = handle; + } + + void requireOpen() { + if (handle == 0) { + throw new IllegalStateException("SolverSettings is closed"); + } + } + + @Override + public void run() { + if (handle != 0) { + NativeCuOpt.destroySolverSettings(handle); + handle = 0; + } + } + } +} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/TerminationStatus.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/TerminationStatus.java new file mode 100644 index 0000000000..eaa7cc3140 --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/TerminationStatus.java @@ -0,0 +1,40 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.linearprogramming; + +public enum TerminationStatus { + NO_TERMINATION(0), + OPTIMAL(1), + INFEASIBLE(2), + UNBOUNDED(3), + ITERATION_LIMIT(4), + TIME_LIMIT(5), + NUMERICAL_ERROR(6), + PRIMAL_FEASIBLE(7), + FEASIBLE_FOUND(8), + CONCURRENT_LIMIT(9), + WORK_LIMIT(10), + UNBOUNDED_OR_INFEASIBLE(11), + UNKNOWN(Integer.MIN_VALUE); + + private final int nativeValue; + + TerminationStatus(int nativeValue) { + this.nativeValue = nativeValue; + } + + public int nativeValue() { + return nativeValue; + } + + static TerminationStatus fromNative(int value) { + for (TerminationStatus status : values()) { + if (status.nativeValue == value) { + return status; + } + } + return UNKNOWN; + } +} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Variable.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Variable.java new file mode 100644 index 0000000000..2cf3b7640e --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Variable.java @@ -0,0 +1,111 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.linearprogramming; + +public final class Variable { + private final int index; + private double lowerBound; + private double upperBound; + private double objectiveCoefficient; + private VariableType variableType; + private String name; + private double value = Double.NaN; + private double reducedCost = Double.NaN; + private double mipStart = Double.NaN; + + Variable( + int index, + double lowerBound, + double upperBound, + double objectiveCoefficient, + VariableType variableType, + String name) { + this.index = index; + this.lowerBound = lowerBound; + this.upperBound = upperBound; + this.objectiveCoefficient = objectiveCoefficient; + this.variableType = variableType; + this.name = name == null ? "" : name; + } + + public int getIndex() { + return index; + } + + public double getLowerBound() { + return lowerBound; + } + + public Variable setLowerBound(double lowerBound) { + this.lowerBound = lowerBound; + return this; + } + + public double getUpperBound() { + return upperBound; + } + + public Variable setUpperBound(double upperBound) { + this.upperBound = upperBound; + return this; + } + + public double getObjectiveCoefficient() { + return objectiveCoefficient; + } + + public Variable setObjectiveCoefficient(double objectiveCoefficient) { + this.objectiveCoefficient = objectiveCoefficient; + return this; + } + + public VariableType getVariableType() { + return variableType; + } + + public Variable setVariableType(VariableType variableType) { + this.variableType = variableType; + return this; + } + + public String getVariableName() { + return name; + } + + public Variable setVariableName(String name) { + this.name = name == null ? "" : name; + return this; + } + + public double getValue() { + return value; + } + + void setValue(double value) { + this.value = value; + } + + public double getReducedCost() { + return reducedCost; + } + + void setReducedCost(double reducedCost) { + this.reducedCost = reducedCost; + } + + public double getMipStart() { + return mipStart; + } + + public Variable setMipStart(double mipStart) { + this.mipStart = mipStart; + return this; + } + + void resetSolvedValues() { + value = Double.NaN; + reducedCost = Double.NaN; + } +} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/VariableType.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/VariableType.java new file mode 100644 index 0000000000..8730d3fc98 --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/VariableType.java @@ -0,0 +1,30 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.linearprogramming; + +public enum VariableType { + CONTINUOUS((byte) 'C'), + INTEGER((byte) 'I'), + SEMI_CONTINUOUS((byte) 'S'); + + private final byte nativeValue; + + VariableType(byte nativeValue) { + this.nativeValue = nativeValue; + } + + byte nativeValue() { + return nativeValue; + } + + static VariableType fromNative(byte value) { + for (VariableType type : values()) { + if (type.nativeValue == value) { + return type; + } + } + throw new IllegalArgumentException("Unknown variable type: " + (char) value); + } +} diff --git a/java/cuopt/src/main/native/cuopt_java_native_api.cpp b/java/cuopt/src/main/native/cuopt_java_native_api.cpp new file mode 100644 index 0000000000..9b4cab9255 --- /dev/null +++ b/java/cuopt/src/main/native/cuopt_java_native_api.cpp @@ -0,0 +1,395 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cuopt_java_native_api.hpp" + +#include +#include + +namespace { + +using namespace cuopt::linear_programming; +using java_solver_settings_t = + cuopt::linear_programming::solver_settings_t; +using java_lp_solution_t = lp_solution_interface_t; +using java_mip_solution_t = mip_solution_interface_t; + +// cuOpt's C API intentionally keeps its settings handle opaque. The first member is the +// solver_settings_t pointer; this private view avoids adding Java-only fields to the public C API. +struct settings_handle_prefix_t { + java_solver_settings_t* settings; +}; + +java_solver_settings_t* settings_from_handle(cuOptSolverSettings handle) +{ + return handle == nullptr ? nullptr : static_cast(handle)->settings; +} + +struct warm_start_storage_t { + std::vector current_primal_solution; + std::vector current_dual_solution; + std::vector initial_primal_average; + std::vector initial_dual_average; + std::vector current_aty; + std::vector sum_primal_solutions; + std::vector sum_dual_solutions; + std::vector last_restart_primal_solution; + std::vector last_restart_dual_solution; +}; + +std::mutex warm_start_mutex; +std::unordered_map> warm_starts; + +java_lp_solution_t* get_lp_solution(cuOptSolution solution) +{ + auto* view = static_cast(solution); + return view == nullptr || view->is_mip ? nullptr : view->lp_solution_interface_ptr; +} + +java_mip_solution_t* get_mip_solution(cuOptSolution solution) +{ + auto* view = static_cast(solution); + return view == nullptr || !view->is_mip ? nullptr : view->mip_solution_interface_ptr; +} + +std::vector get_warm_start_vector(java_lp_solution_t* solution, cuopt_int_t field_id) +{ + switch (field_id) { + case CUOPT_JAVA_PDLP_WARM_START_CURRENT_PRIMAL_SOLUTION: + return solution->get_current_primal_solution_host(); + case CUOPT_JAVA_PDLP_WARM_START_CURRENT_DUAL_SOLUTION: + return solution->get_current_dual_solution_host(); + case CUOPT_JAVA_PDLP_WARM_START_INITIAL_PRIMAL_AVERAGE: + return solution->get_initial_primal_average_host(); + case CUOPT_JAVA_PDLP_WARM_START_INITIAL_DUAL_AVERAGE: + return solution->get_initial_dual_average_host(); + case CUOPT_JAVA_PDLP_WARM_START_CURRENT_ATY: return solution->get_current_ATY_host(); + case CUOPT_JAVA_PDLP_WARM_START_SUM_PRIMAL_SOLUTIONS: + return solution->get_sum_primal_solutions_host(); + case CUOPT_JAVA_PDLP_WARM_START_SUM_DUAL_SOLUTIONS: + return solution->get_sum_dual_solutions_host(); + case CUOPT_JAVA_PDLP_WARM_START_LAST_RESTART_DUALITY_GAP_PRIMAL_SOLUTION: + return solution->get_last_restart_duality_gap_primal_solution_host(); + case CUOPT_JAVA_PDLP_WARM_START_LAST_RESTART_DUALITY_GAP_DUAL_SOLUTION: + return solution->get_last_restart_duality_gap_dual_solution_host(); + default: throw std::invalid_argument("Invalid PDLP warm-start vector field"); + } +} + +} // namespace + +void cuopt_java_release_settings_state(cuOptSolverSettings settings) +{ + std::lock_guard lock(warm_start_mutex); + warm_starts.erase(settings); +} + +extern "C" cuopt_int_t cuOptLoadParametersFromFile(cuOptSolverSettings settings, const char* path) +{ + if (settings == nullptr || path == nullptr || path[0] == '\0') { return CUOPT_INVALID_ARGUMENT; } + try { + settings_from_handle(settings)->load_parameters_from_file(path); + } catch (const std::exception&) { + return CUOPT_INVALID_ARGUMENT; + } + return CUOPT_SUCCESS; +} + +extern "C" cuopt_int_t cuOptDumpParametersToFile(cuOptSolverSettings settings, + const char* path, + cuopt_int_t hyperparameters_only, + cuopt_int_t* dumped_successfully) +{ + if (settings == nullptr || path == nullptr || path[0] == '\0' || dumped_successfully == nullptr) { + return CUOPT_INVALID_ARGUMENT; + } + try { + *dumped_successfully = static_cast( + settings_from_handle(settings)->dump_parameters_to_file(path, hyperparameters_only != 0)); + } catch (const std::exception&) { + return CUOPT_INVALID_ARGUMENT; + } + return CUOPT_SUCCESS; +} + +extern "C" cuopt_int_t cuOptGetNumSolverParameters(cuopt_int_t* num_parameters_ptr) +{ + if (num_parameters_ptr == nullptr) { return CUOPT_INVALID_ARGUMENT; } + try { + java_solver_settings_t settings; + *num_parameters_ptr = static_cast(settings.get_parameter_names().size()); + } catch (const std::exception&) { + return CUOPT_RUNTIME_ERROR; + } + return CUOPT_SUCCESS; +} + +extern "C" cuopt_int_t cuOptGetSolverParameterName(cuopt_int_t index, + cuopt_int_t parameter_name_size, + char* parameter_name) +{ + if (index < 0 || parameter_name_size <= 0 || parameter_name == nullptr) { + return CUOPT_INVALID_ARGUMENT; + } + try { + java_solver_settings_t settings; + const auto names = settings.get_parameter_names(); + if (index >= static_cast(names.size())) { return CUOPT_INVALID_ARGUMENT; } + std::snprintf(parameter_name, + static_cast(parameter_name_size), + "%s", + names[static_cast(index)].c_str()); + } catch (const std::exception&) { + return CUOPT_RUNTIME_ERROR; + } + return CUOPT_SUCCESS; +} + +extern "C" cuopt_int_t cuOptSetPDLPWarmStartData( + cuOptSolverSettings settings, + const cuopt_float_t* current_primal_solution, + const cuopt_float_t* current_dual_solution, + const cuopt_float_t* initial_primal_average, + const cuopt_float_t* initial_dual_average, + const cuopt_float_t* current_ATY, + const cuopt_float_t* sum_primal_solutions, + const cuopt_float_t* sum_dual_solutions, + const cuopt_float_t* last_restart_duality_gap_primal_solution, + const cuopt_float_t* last_restart_duality_gap_dual_solution, + cuopt_int_t primal_size, + cuopt_int_t dual_size, + cuopt_float_t initial_primal_weight, + cuopt_float_t initial_step_size, + cuopt_int_t total_pdlp_iterations, + cuopt_int_t total_pdhg_iterations, + cuopt_float_t last_candidate_kkt_score, + cuopt_float_t last_restart_kkt_score, + cuopt_float_t sum_solution_weight, + cuopt_int_t iterations_since_last_restart) +{ + if (settings == nullptr || primal_size <= 0 || dual_size <= 0) { return CUOPT_INVALID_ARGUMENT; } + if (current_primal_solution == nullptr || current_dual_solution == nullptr || + initial_primal_average == nullptr || initial_dual_average == nullptr || + current_ATY == nullptr || sum_primal_solutions == nullptr || sum_dual_solutions == nullptr || + last_restart_duality_gap_primal_solution == nullptr || + last_restart_duality_gap_dual_solution == nullptr) { + return CUOPT_INVALID_ARGUMENT; + } + + auto storage = std::make_unique(); + storage->current_primal_solution.assign(current_primal_solution, + current_primal_solution + primal_size); + storage->current_dual_solution.assign(current_dual_solution, current_dual_solution + dual_size); + storage->initial_primal_average.assign(initial_primal_average, + initial_primal_average + primal_size); + storage->initial_dual_average.assign(initial_dual_average, initial_dual_average + dual_size); + storage->current_aty.assign(current_ATY, current_ATY + primal_size); + storage->sum_primal_solutions.assign(sum_primal_solutions, sum_primal_solutions + primal_size); + storage->sum_dual_solutions.assign(sum_dual_solutions, sum_dual_solutions + dual_size); + storage->last_restart_primal_solution.assign( + last_restart_duality_gap_primal_solution, + last_restart_duality_gap_primal_solution + primal_size); + storage->last_restart_dual_solution.assign(last_restart_duality_gap_dual_solution, + last_restart_duality_gap_dual_solution + dual_size); + try { + settings_from_handle(settings)->set_pdlp_warm_start_data( + storage->current_primal_solution.data(), + storage->current_dual_solution.data(), + storage->initial_primal_average.data(), + storage->initial_dual_average.data(), + storage->current_aty.data(), + storage->sum_primal_solutions.data(), + storage->sum_dual_solutions.data(), + storage->last_restart_primal_solution.data(), + storage->last_restart_dual_solution.data(), + primal_size, + dual_size, + initial_primal_weight, + initial_step_size, + total_pdlp_iterations, + total_pdhg_iterations, + last_candidate_kkt_score, + last_restart_kkt_score, + sum_solution_weight, + iterations_since_last_restart); + } catch (const std::exception&) { + return CUOPT_INVALID_ARGUMENT; + } + std::lock_guard lock(warm_start_mutex); + warm_starts[settings] = std::move(storage); + return CUOPT_SUCCESS; +} + +extern "C" cuopt_int_t cuOptSolutionIsMIP(cuOptSolution solution, cuopt_int_t* is_mip_ptr) +{ + if (solution == nullptr || is_mip_ptr == nullptr) { return CUOPT_INVALID_ARGUMENT; } + *is_mip_ptr = + static_cast(static_cast(solution)->is_mip); + return CUOPT_SUCCESS; +} + +extern "C" cuopt_int_t cuOptGetLPSolverStats(cuOptSolution solution, + cuopt_float_t* primal_residual_ptr, + cuopt_float_t* dual_residual_ptr, + cuopt_float_t* gap_ptr, + cuopt_int_t* num_iterations_ptr, + cuopt_int_t* solved_by_ptr) +{ + auto* lp = get_lp_solution(solution); + if (lp == nullptr) { return CUOPT_INVALID_ARGUMENT; } + try { + if (primal_residual_ptr != nullptr) { *primal_residual_ptr = lp->get_l2_primal_residual(); } + if (dual_residual_ptr != nullptr) { *dual_residual_ptr = lp->get_l2_dual_residual(); } + if (gap_ptr != nullptr) { *gap_ptr = lp->get_gap(); } + if (num_iterations_ptr != nullptr) { *num_iterations_ptr = lp->get_num_iterations(); } + if (solved_by_ptr != nullptr) { *solved_by_ptr = static_cast(lp->solved_by()); } + } catch (const std::exception&) { + return CUOPT_RUNTIME_ERROR; + } + return CUOPT_SUCCESS; +} + +extern "C" cuopt_int_t cuOptGetMIPSolverStats(cuOptSolution solution, + cuopt_float_t* presolve_time_ptr, + cuopt_float_t* max_constraint_violation_ptr, + cuopt_float_t* max_int_violation_ptr, + cuopt_float_t* max_variable_bound_violation_ptr, + cuopt_int_t* num_nodes_ptr, + cuopt_int_t* num_simplex_iterations_ptr) +{ + auto* mip = get_mip_solution(solution); + if (mip == nullptr) { return CUOPT_INVALID_ARGUMENT; } + try { + if (presolve_time_ptr != nullptr) { *presolve_time_ptr = mip->get_presolve_time(); } + if (max_constraint_violation_ptr != nullptr) { + *max_constraint_violation_ptr = mip->get_max_constraint_violation(); + } + if (max_int_violation_ptr != nullptr) { *max_int_violation_ptr = mip->get_max_int_violation(); } + if (max_variable_bound_violation_ptr != nullptr) { + *max_variable_bound_violation_ptr = mip->get_max_variable_bound_violation(); + } + if (num_nodes_ptr != nullptr) { *num_nodes_ptr = mip->get_num_nodes(); } + if (num_simplex_iterations_ptr != nullptr) { + *num_simplex_iterations_ptr = mip->get_num_simplex_iterations(); + } + } catch (const std::exception&) { + return CUOPT_RUNTIME_ERROR; + } + return CUOPT_SUCCESS; +} + +extern "C" cuopt_int_t cuOptHasPDLPWarmStartData(cuOptSolution solution, + cuopt_int_t* has_warm_start_ptr) +{ + auto* lp = get_lp_solution(solution); + if (lp == nullptr || has_warm_start_ptr == nullptr) { return CUOPT_INVALID_ARGUMENT; } + try { + *has_warm_start_ptr = static_cast(lp->has_warm_start_data()); + } catch (const std::exception&) { + return CUOPT_RUNTIME_ERROR; + } + return CUOPT_SUCCESS; +} + +extern "C" cuopt_int_t cuOptGetPDLPWarmStartVectorSize(cuOptSolution solution, + cuopt_int_t field_id, + cuopt_int_t* size_ptr) +{ + auto* lp = get_lp_solution(solution); + if (lp == nullptr || size_ptr == nullptr) { return CUOPT_INVALID_ARGUMENT; } + try { + *size_ptr = static_cast(get_warm_start_vector(lp, field_id).size()); + } catch (const std::invalid_argument&) { + return CUOPT_INVALID_ARGUMENT; + } catch (const std::exception&) { + return CUOPT_RUNTIME_ERROR; + } + return CUOPT_SUCCESS; +} + +extern "C" cuopt_int_t cuOptGetPDLPWarmStartVector(cuOptSolution solution, + cuopt_int_t field_id, + cuopt_float_t* values) +{ + auto* lp = get_lp_solution(solution); + if (lp == nullptr || values == nullptr) { return CUOPT_INVALID_ARGUMENT; } + try { + const auto vector = get_warm_start_vector(lp, field_id); + if (!vector.empty()) { + std::memcpy(values, vector.data(), vector.size() * sizeof(cuopt_float_t)); + } + } catch (const std::invalid_argument&) { + return CUOPT_INVALID_ARGUMENT; + } catch (const std::exception&) { + return CUOPT_RUNTIME_ERROR; + } + return CUOPT_SUCCESS; +} + +extern "C" cuopt_int_t cuOptGetPDLPWarmStartScalar(cuOptSolution solution, + cuopt_int_t field_id, + cuopt_float_t* value_ptr) +{ + auto* lp = get_lp_solution(solution); + if (lp == nullptr || value_ptr == nullptr) { return CUOPT_INVALID_ARGUMENT; } + try { + switch (field_id) { + case CUOPT_JAVA_PDLP_WARM_START_INITIAL_PRIMAL_WEIGHT: + *value_ptr = lp->get_initial_primal_weight(); + break; + case CUOPT_JAVA_PDLP_WARM_START_INITIAL_STEP_SIZE: + *value_ptr = lp->get_initial_step_size(); + break; + case CUOPT_JAVA_PDLP_WARM_START_LAST_CANDIDATE_KKT_SCORE: + *value_ptr = lp->get_last_candidate_kkt_score(); + break; + case CUOPT_JAVA_PDLP_WARM_START_LAST_RESTART_KKT_SCORE: + *value_ptr = lp->get_last_restart_kkt_score(); + break; + case CUOPT_JAVA_PDLP_WARM_START_SUM_SOLUTION_WEIGHT: + *value_ptr = lp->get_sum_solution_weight(); + break; + default: return CUOPT_INVALID_ARGUMENT; + } + } catch (const std::exception&) { + return CUOPT_RUNTIME_ERROR; + } + return CUOPT_SUCCESS; +} + +extern "C" cuopt_int_t cuOptGetPDLPWarmStartInteger(cuOptSolution solution, + cuopt_int_t field_id, + cuopt_int_t* value_ptr) +{ + auto* lp = get_lp_solution(solution); + if (lp == nullptr || value_ptr == nullptr) { return CUOPT_INVALID_ARGUMENT; } + try { + switch (field_id) { + case CUOPT_JAVA_PDLP_WARM_START_TOTAL_PDLP_ITERATIONS: + *value_ptr = lp->get_total_pdlp_iterations(); + break; + case CUOPT_JAVA_PDLP_WARM_START_TOTAL_PDHG_ITERATIONS: + *value_ptr = lp->get_total_pdhg_iterations(); + break; + case CUOPT_JAVA_PDLP_WARM_START_ITERATIONS_SINCE_LAST_RESTART: + *value_ptr = lp->get_iterations_since_last_restart(); + break; + default: return CUOPT_INVALID_ARGUMENT; + } + } catch (const std::exception&) { + return CUOPT_RUNTIME_ERROR; + } + return CUOPT_SUCCESS; +} diff --git a/java/cuopt/src/main/native/cuopt_java_native_api.hpp b/java/cuopt/src/main/native/cuopt_java_native_api.hpp new file mode 100644 index 0000000000..050dea195a --- /dev/null +++ b/java/cuopt/src/main/native/cuopt_java_native_api.hpp @@ -0,0 +1,92 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once + +#include + +void cuopt_java_release_settings_state(cuOptSolverSettings settings); + +extern "C" { + +cuopt_int_t cuOptLoadParametersFromFile(cuOptSolverSettings settings, const char* path); +cuopt_int_t cuOptDumpParametersToFile(cuOptSolverSettings settings, + const char* path, + cuopt_int_t hyperparameters_only, + cuopt_int_t* dumped_successfully); +cuopt_int_t cuOptGetNumSolverParameters(cuopt_int_t* num_parameters_ptr); +cuopt_int_t cuOptGetSolverParameterName(cuopt_int_t index, + cuopt_int_t parameter_name_size, + char* parameter_name); + +cuopt_int_t cuOptSetPDLPWarmStartData(cuOptSolverSettings settings, + const cuopt_float_t* current_primal_solution, + const cuopt_float_t* current_dual_solution, + const cuopt_float_t* initial_primal_average, + const cuopt_float_t* initial_dual_average, + const cuopt_float_t* current_ATY, + const cuopt_float_t* sum_primal_solutions, + const cuopt_float_t* sum_dual_solutions, + const cuopt_float_t* last_restart_duality_gap_primal_solution, + const cuopt_float_t* last_restart_duality_gap_dual_solution, + cuopt_int_t primal_size, + cuopt_int_t dual_size, + cuopt_float_t initial_primal_weight, + cuopt_float_t initial_step_size, + cuopt_int_t total_pdlp_iterations, + cuopt_int_t total_pdhg_iterations, + cuopt_float_t last_candidate_kkt_score, + cuopt_float_t last_restart_kkt_score, + cuopt_float_t sum_solution_weight, + cuopt_int_t iterations_since_last_restart); + +cuopt_int_t cuOptSolutionIsMIP(cuOptSolution solution, cuopt_int_t* is_mip_ptr); +cuopt_int_t cuOptGetLPSolverStats(cuOptSolution solution, + cuopt_float_t* primal_residual_ptr, + cuopt_float_t* dual_residual_ptr, + cuopt_float_t* gap_ptr, + cuopt_int_t* num_iterations_ptr, + cuopt_int_t* solved_by_ptr); +cuopt_int_t cuOptGetMIPSolverStats(cuOptSolution solution, + cuopt_float_t* presolve_time_ptr, + cuopt_float_t* max_constraint_violation_ptr, + cuopt_float_t* max_int_violation_ptr, + cuopt_float_t* max_variable_bound_violation_ptr, + cuopt_int_t* num_nodes_ptr, + cuopt_int_t* num_simplex_iterations_ptr); +cuopt_int_t cuOptHasPDLPWarmStartData(cuOptSolution solution, cuopt_int_t* has_warm_start_ptr); +cuopt_int_t cuOptGetPDLPWarmStartVectorSize(cuOptSolution solution, + cuopt_int_t field_id, + cuopt_int_t* size_ptr); +cuopt_int_t cuOptGetPDLPWarmStartVector(cuOptSolution solution, + cuopt_int_t field_id, + cuopt_float_t* values); +cuopt_int_t cuOptGetPDLPWarmStartScalar(cuOptSolution solution, + cuopt_int_t field_id, + cuopt_float_t* value_ptr); +cuopt_int_t cuOptGetPDLPWarmStartInteger(cuOptSolution solution, + cuopt_int_t field_id, + cuopt_int_t* value_ptr); +} + +enum cuopt_java_pdlp_warm_start_field : cuopt_int_t { + CUOPT_JAVA_PDLP_WARM_START_CURRENT_PRIMAL_SOLUTION = 0, + CUOPT_JAVA_PDLP_WARM_START_CURRENT_DUAL_SOLUTION = 1, + CUOPT_JAVA_PDLP_WARM_START_INITIAL_PRIMAL_AVERAGE = 2, + CUOPT_JAVA_PDLP_WARM_START_INITIAL_DUAL_AVERAGE = 3, + CUOPT_JAVA_PDLP_WARM_START_CURRENT_ATY = 4, + CUOPT_JAVA_PDLP_WARM_START_SUM_PRIMAL_SOLUTIONS = 5, + CUOPT_JAVA_PDLP_WARM_START_SUM_DUAL_SOLUTIONS = 6, + CUOPT_JAVA_PDLP_WARM_START_LAST_RESTART_DUALITY_GAP_PRIMAL_SOLUTION = 7, + CUOPT_JAVA_PDLP_WARM_START_LAST_RESTART_DUALITY_GAP_DUAL_SOLUTION = 8, + CUOPT_JAVA_PDLP_WARM_START_INITIAL_PRIMAL_WEIGHT = 9, + CUOPT_JAVA_PDLP_WARM_START_INITIAL_STEP_SIZE = 10, + CUOPT_JAVA_PDLP_WARM_START_TOTAL_PDLP_ITERATIONS = 11, + CUOPT_JAVA_PDLP_WARM_START_TOTAL_PDHG_ITERATIONS = 12, + CUOPT_JAVA_PDLP_WARM_START_LAST_CANDIDATE_KKT_SCORE = 13, + CUOPT_JAVA_PDLP_WARM_START_LAST_RESTART_KKT_SCORE = 14, + CUOPT_JAVA_PDLP_WARM_START_SUM_SOLUTION_WEIGHT = 15, + CUOPT_JAVA_PDLP_WARM_START_ITERATIONS_SINCE_LAST_RESTART = 16 +}; diff --git a/java/cuopt/src/main/native/cuopt_jni.cpp b/java/cuopt/src/main/native/cuopt_jni.cpp new file mode 100644 index 0000000000..b5b05d81c0 --- /dev/null +++ b/java/cuopt/src/main/native/cuopt_jni.cpp @@ -0,0 +1,1725 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "cuopt_java_native_api.hpp" + +#include + +namespace { + +JavaVM* g_jvm = nullptr; + +struct java_callback_context_t { + jobject callback{nullptr}; + jobject user_data{nullptr}; + int num_variables{0}; +}; + +std::mutex g_callback_mutex; +std::unordered_map> g_callback_contexts; + +struct java_problem_state_t { + std::vector initial_primal_solution; + std::vector initial_dual_solution; +}; + +std::mutex g_problem_state_mutex; +std::unordered_map g_problem_states; + +// Problems created directly by this JNI module must be destroyed here as well. +// Passing these C++ objects to cuOptDestroyProblem in libcuopt.so crosses the +// shared-library boundary with a private wrapper type. +std::mutex g_jni_owned_problem_mutex; +std::unordered_set g_jni_owned_problem_handles; + +cuOptOptimizationProblem to_problem(jlong handle) +{ + return reinterpret_cast(handle); +} + +cuopt::linear_programming::problem_and_stream_view_t* to_problem_view(jlong handle) +{ + return reinterpret_cast(handle); +} + +cuOptSolverSettings to_settings(jlong handle) +{ + return reinterpret_cast(handle); +} + +cuOptSolution to_solution(jlong handle) +{ + return reinterpret_cast(handle); +} + +jlong from_handle(void* handle) +{ + return reinterpret_cast(handle); +} + +void remember_jni_owned_problem(void* handle) +{ + std::lock_guard lock(g_jni_owned_problem_mutex); + g_jni_owned_problem_handles.insert(from_handle(handle)); +} + +bool take_jni_owned_problem(jlong handle) +{ + std::lock_guard lock(g_jni_owned_problem_mutex); + return g_jni_owned_problem_handles.erase(handle) != 0; +} + +std::vector get_double_array(JNIEnv* env, jdoubleArray array) +{ + if (array == nullptr) { return {}; } + const jsize len = env->GetArrayLength(array); + std::vector tmp(static_cast(len)); + env->GetDoubleArrayRegion(array, 0, len, tmp.data()); + return std::vector(tmp.begin(), tmp.end()); +} + +std::vector get_int_array(JNIEnv* env, jintArray array) +{ + if (array == nullptr) { return {}; } + const jsize len = env->GetArrayLength(array); + std::vector tmp(static_cast(len)); + env->GetIntArrayRegion(array, 0, len, tmp.data()); + return std::vector(tmp.begin(), tmp.end()); +} + +std::vector get_byte_array(JNIEnv* env, jbyteArray array) +{ + if (array == nullptr) { return {}; } + const jsize len = env->GetArrayLength(array); + std::vector tmp(static_cast(len)); + env->GetByteArrayRegion(array, 0, len, tmp.data()); + return std::vector(tmp.begin(), tmp.end()); +} + +std::string get_string(JNIEnv* env, jstring value); + +std::vector get_string_array(JNIEnv* env, jobjectArray array) +{ + if (array == nullptr) { return {}; } + const jsize len = env->GetArrayLength(array); + std::vector values; + values.reserve(static_cast(len)); + for (jsize i = 0; i < len; ++i) { + values.push_back(get_string(env, static_cast(env->GetObjectArrayElement(array, i)))); + } + return values; +} + +jobjectArray to_string_array(JNIEnv* env, const std::vector& values) +{ + jclass string_class = env->FindClass("java/lang/String"); + jobjectArray result = env->NewObjectArray(static_cast(values.size()), string_class, nullptr); + for (jsize i = 0; i < static_cast(values.size()); ++i) { + env->SetObjectArrayElement(result, i, env->NewStringUTF(values[static_cast(i)].c_str())); + } + return result; +} + +jdoubleArray to_double_array(JNIEnv* env, const std::vector& values) +{ + jdoubleArray result = env->NewDoubleArray(static_cast(values.size())); + std::vector tmp(values.begin(), values.end()); + env->SetDoubleArrayRegion(result, 0, static_cast(tmp.size()), tmp.data()); + return result; +} + +jintArray to_int_array(JNIEnv* env, const std::vector& values) +{ + jintArray result = env->NewIntArray(static_cast(values.size())); + std::vector tmp(values.begin(), values.end()); + env->SetIntArrayRegion(result, 0, static_cast(tmp.size()), tmp.data()); + return result; +} + +jbyteArray to_byte_array(JNIEnv* env, const std::vector& values) +{ + jbyteArray result = env->NewByteArray(static_cast(values.size())); + std::vector tmp(values.begin(), values.end()); + env->SetByteArrayRegion(result, 0, static_cast(tmp.size()), tmp.data()); + return result; +} + +std::string get_string(JNIEnv* env, jstring value) +{ + if (value == nullptr) { return {}; } + const char* chars = env->GetStringUTFChars(value, nullptr); + std::string result(chars); + env->ReleaseStringUTFChars(value, chars); + return result; +} + +void throw_cuopt_exception(JNIEnv* env, cuopt_int_t status, const std::string& message) +{ + jclass cls = env->FindClass("com/nvidia/cuopt/linearprogramming/CuOptException"); + if (cls == nullptr) { return; } + jmethodID ctor = env->GetMethodID(cls, "", "(ILjava/lang/String;)V"); + if (ctor == nullptr) { return; } + jstring msg = env->NewStringUTF(message.c_str()); + jobject ex = env->NewObject(cls, ctor, static_cast(status), msg); + env->Throw(static_cast(ex)); +} + +void throw_illegal_state(JNIEnv* env, const std::string& message) +{ + jclass cls = env->FindClass("java/lang/IllegalStateException"); + if (cls == nullptr) { return; } + env->ThrowNew(cls, message.c_str()); +} + +bool check_status(JNIEnv* env, cuopt_int_t status, const char* operation) +{ + if (status == CUOPT_SUCCESS) { return true; } + throw_cuopt_exception(env, status, std::string(operation) + " failed with status " + + std::to_string(status)); + return false; +} + +cuopt::linear_programming::lp_solution_interface_t* to_lp_solution( + JNIEnv* env, jlong handle, const char* operation) +{ + auto* solution = + reinterpret_cast(handle); + if (solution == nullptr || solution->is_mip || solution->lp_solution_interface_ptr == nullptr) { + throw_illegal_state(env, std::string(operation) + " is only available for LP solutions"); + return nullptr; + } + return solution->lp_solution_interface_ptr; +} + +template +bool run_problem_operation(JNIEnv* env, const char* operation, F&& operation_fn) +{ + try { + operation_fn(); + return true; + } catch (const std::exception& e) { + throw_cuopt_exception(env, + CUOPT_INVALID_ARGUMENT, + std::string(operation) + " failed: " + e.what()); + return false; + } +} + +JNIEnv* get_callback_env(bool& detach) +{ + detach = false; + JNIEnv* env = nullptr; + if (g_jvm->GetEnv(reinterpret_cast(&env), JNI_VERSION_1_8) == JNI_OK) { return env; } + if (g_jvm->AttachCurrentThread(reinterpret_cast(&env), nullptr) == JNI_OK) { + detach = true; + return env; + } + return nullptr; +} + +void cleanup_callback_contexts(JNIEnv* env, jlong settings_handle) +{ + std::vector contexts; + { + std::lock_guard lock(g_callback_mutex); + auto it = g_callback_contexts.find(settings_handle); + if (it == g_callback_contexts.end()) { return; } + contexts = std::move(it->second); + g_callback_contexts.erase(it); + } + for (auto* context : contexts) { + if (context->callback != nullptr) { env->DeleteGlobalRef(context->callback); } + if (context->user_data != nullptr) { env->DeleteGlobalRef(context->user_data); } + delete context; + } +} + +void remember_callback_context(jlong settings_handle, java_callback_context_t* context) +{ + std::lock_guard lock(g_callback_mutex); + g_callback_contexts[settings_handle].push_back(context); +} + +void mip_get_solution_callback(const cuopt_float_t* solution, + const cuopt_float_t* objective_value, + const cuopt_float_t* solution_bound, + void* user_data) +{ + auto* context = static_cast(user_data); + if (context == nullptr || context->callback == nullptr) { return; } + + bool detach = false; + JNIEnv* env = get_callback_env(detach); + if (env == nullptr) { return; } + + jclass cls = env->GetObjectClass(context->callback); + jmethodID method = + env->GetMethodID(cls, "onSolution", "([DDDLjava/lang/Object;)V"); + if (method != nullptr) { + std::vector values(solution, solution + context->num_variables); + jdoubleArray solution_array = to_double_array(env, values); + env->CallVoidMethod(context->callback, + method, + solution_array, + static_cast(*objective_value), + static_cast(*solution_bound), + context->user_data); + env->DeleteLocalRef(solution_array); + } + + if (detach) { g_jvm->DetachCurrentThread(); } +} + +void mip_set_solution_callback(cuopt_float_t* solution, + cuopt_float_t* objective_value, + const cuopt_float_t* solution_bound, + void* user_data) +{ + auto* context = static_cast(user_data); + if (context == nullptr || context->callback == nullptr) { return; } + + bool detach = false; + JNIEnv* env = get_callback_env(detach); + if (env == nullptr) { return; } + + jclass cls = env->GetObjectClass(context->callback); + jmethodID method = env->GetMethodID( + cls, "getSolution", "(DLjava/lang/Object;)Lcom/nvidia/cuopt/linearprogramming/MipCallbackSolution;"); + if (method != nullptr) { + jobject callback_solution = + env->CallObjectMethod(context->callback, method, static_cast(*solution_bound), context->user_data); + if (callback_solution != nullptr) { + jclass result_cls = env->GetObjectClass(callback_solution); + jfieldID solution_field = env->GetFieldID(result_cls, "solution", "[D"); + jfieldID objective_field = env->GetFieldID(result_cls, "objectiveValue", "D"); + if (solution_field != nullptr && objective_field != nullptr) { + auto solution_array = + static_cast(env->GetObjectField(callback_solution, solution_field)); + const auto values = get_double_array(env, solution_array); + if (values.size() == static_cast(context->num_variables)) { + std::memcpy(solution, values.data(), values.size() * sizeof(cuopt_float_t)); + *objective_value = + static_cast(env->GetDoubleField(callback_solution, objective_field)); + } + } + } + } + + if (detach) { g_jvm->DetachCurrentThread(); } +} + +} // namespace + +extern "C" jint JNI_OnLoad(JavaVM* vm, void*) +{ + g_jvm = vm; + return JNI_VERSION_1_8; +} + +extern "C" JNIEXPORT jint JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getFloatSize(JNIEnv*, jclass) +{ + return cuOptGetFloatSize(); +} + +extern "C" JNIEXPORT jobjectArray JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getSolverParameterNames(JNIEnv* env, jclass) +{ + cuopt_int_t count = 0; + if (!check_status(env, cuOptGetNumSolverParameters(&count), "cuOptGetNumSolverParameters")) { + return nullptr; + } + jclass string_class = env->FindClass("java/lang/String"); + jobjectArray result = env->NewObjectArray(count, string_class, nullptr); + for (cuopt_int_t i = 0; i < count; ++i) { + char buffer[256] = {}; + if (!check_status(env, cuOptGetSolverParameterName(i, sizeof(buffer), buffer), + "cuOptGetSolverParameterName")) { + return nullptr; + } + env->SetObjectArrayElement(result, i, env->NewStringUTF(buffer)); + } + return result; +} + +extern "C" JNIEXPORT jlong JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_createEmptyProblem(JNIEnv* env, jclass) +{ + try { + auto problem = std::make_unique( + cuopt::linear_programming::get_memory_backend_type()); + auto* raw_problem = problem.get(); + remember_jni_owned_problem(raw_problem); + problem.release(); + return from_handle(raw_problem); + } catch (const std::exception& e) { + throw_cuopt_exception(env, CUOPT_RUNTIME_ERROR, std::string("createEmptyProblem failed: ") + e.what()); + return 0; + } +} + +extern "C" JNIEXPORT jlong JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_parseMpsProblem(JNIEnv* env, + jclass, + jstring path, + jboolean fixed_mps_format) +{ + const auto filename = get_string(env, path); + auto problem = std::make_unique( + cuopt::linear_programming::get_memory_backend_type()); + try { + auto data_model = cuopt::linear_programming::io::read_mps( + filename, static_cast(fixed_mps_format)); + cuopt::linear_programming::populate_from_mps_data_model( + problem->get_problem(), data_model); + auto* raw_problem = problem.get(); + remember_jni_owned_problem(raw_problem); + problem.release(); + return from_handle(raw_problem); + } catch (const std::exception& e) { + const cuopt_int_t status = + std::string(e.what()).find("Error opening input file") != std::string::npos + ? CUOPT_MPS_FILE_ERROR + : CUOPT_MPS_PARSE_ERROR; + throw_cuopt_exception(env, status, std::string("parseMpsProblem failed: ") + e.what()); + return 0; + } +} + +extern "C" JNIEXPORT jlong JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_readProblemWithFormat(JNIEnv* env, + jclass, + jstring path, + jboolean fixed_mps_format) +{ + const auto filename = get_string(env, path); + auto problem = std::make_unique( + cuopt::linear_programming::get_memory_backend_type()); + try { + auto data_model = cuopt::linear_programming::io::read( + filename, static_cast(fixed_mps_format)); + cuopt::linear_programming::populate_from_mps_data_model( + problem->get_problem(), data_model); + auto* raw_problem = problem.get(); + remember_jni_owned_problem(raw_problem); + problem.release(); + return from_handle(raw_problem); + } catch (const std::exception& e) { + const cuopt_int_t status = + std::string(e.what()).find("Error opening input file") != std::string::npos + ? CUOPT_MPS_FILE_ERROR + : CUOPT_MPS_PARSE_ERROR; + throw_cuopt_exception(env, status, std::string("readProblemWithFormat failed: ") + e.what()); + return 0; + } +} + +extern "C" JNIEXPORT jlong JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_createSolverSettings(JNIEnv* env, jclass) +{ + cuOptSolverSettings settings = nullptr; + if (!check_status(env, cuOptCreateSolverSettings(&settings), "cuOptCreateSolverSettings")) { + return 0; + } + return from_handle(settings); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_destroySolverSettings(JNIEnv* env, + jclass, + jlong handle) +{ + if (handle == 0) { return; } + cleanup_callback_contexts(env, handle); + cuopt_java_release_settings_state(to_settings(handle)); + cuOptSolverSettings settings = to_settings(handle); + cuOptDestroySolverSettings(&settings); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setParameter(JNIEnv* env, + jclass, + jlong handle, + jstring name, + jstring value) +{ + const auto parameter_name = get_string(env, name); + const auto parameter_value = get_string(env, value); + check_status(env, + cuOptSetParameter(to_settings(handle), parameter_name.c_str(), parameter_value.c_str()), + "cuOptSetParameter"); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setIntegerParameter(JNIEnv* env, + jclass, + jlong handle, + jstring name, + jint value) +{ + const auto parameter_name = get_string(env, name); + check_status(env, + cuOptSetIntegerParameter(to_settings(handle), parameter_name.c_str(), value), + "cuOptSetIntegerParameter"); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setFloatParameter(JNIEnv* env, + jclass, + jlong handle, + jstring name, + jdouble value) +{ + const auto parameter_name = get_string(env, name); + check_status(env, + cuOptSetFloatParameter( + to_settings(handle), parameter_name.c_str(), static_cast(value)), + "cuOptSetFloatParameter"); +} + +extern "C" JNIEXPORT jstring JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getParameter(JNIEnv* env, + jclass, + jlong handle, + jstring name) +{ + const auto parameter_name = get_string(env, name); + char buffer[256] = {}; + if (!check_status(env, + cuOptGetParameter(to_settings(handle), parameter_name.c_str(), sizeof(buffer), buffer), + "cuOptGetParameter")) { + return nullptr; + } + return env->NewStringUTF(buffer); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_loadParametersFromFile(JNIEnv* env, + jclass, + jlong handle, + jstring path) +{ + const auto filename = get_string(env, path); + check_status(env, + cuOptLoadParametersFromFile(to_settings(handle), filename.c_str()), + "cuOptLoadParametersFromFile"); +} + +extern "C" JNIEXPORT jboolean JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_dumpParametersToFile(JNIEnv* env, + jclass, + jlong handle, + jstring path, + jboolean hyperparameters_only) +{ + const auto filename = get_string(env, path); + cuopt_int_t dumped_successfully = 0; + if (!check_status(env, + cuOptDumpParametersToFile(to_settings(handle), + filename.c_str(), + hyperparameters_only ? 1 : 0, + &dumped_successfully), + "cuOptDumpParametersToFile")) { + return JNI_FALSE; + } + return dumped_successfully != 0 ? JNI_TRUE : JNI_FALSE; +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setInitialPrimalSolution(JNIEnv* env, + jclass, + jlong handle, + jdoubleArray values) +{ + const auto data = get_double_array(env, values); + check_status(env, + cuOptSetInitialPrimalSolution( + to_settings(handle), data.data(), static_cast(data.size())), + "cuOptSetInitialPrimalSolution"); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setInitialDualSolution(JNIEnv* env, + jclass, + jlong handle, + jdoubleArray values) +{ + const auto data = get_double_array(env, values); + check_status(env, + cuOptSetInitialDualSolution( + to_settings(handle), data.data(), static_cast(data.size())), + "cuOptSetInitialDualSolution"); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_addMipStart(JNIEnv* env, + jclass, + jlong handle, + jdoubleArray values) +{ + const auto data = get_double_array(env, values); + check_status(env, + cuOptAddMIPStart(to_settings(handle), data.data(), static_cast(data.size())), + "cuOptAddMIPStart"); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_registerMipGetSolutionCallback( + JNIEnv* env, jclass, jlong handle, jobject callback, jobject user_data, jint num_variables) +{ + auto* context = new java_callback_context_t; + context->callback = env->NewGlobalRef(callback); + context->user_data = user_data == nullptr ? nullptr : env->NewGlobalRef(user_data); + context->num_variables = num_variables; + const auto status = + cuOptSetMIPGetSolutionCallback(to_settings(handle), mip_get_solution_callback, context); + if (!check_status(env, status, "cuOptSetMIPGetSolutionCallback")) { + if (context->callback != nullptr) { env->DeleteGlobalRef(context->callback); } + if (context->user_data != nullptr) { env->DeleteGlobalRef(context->user_data); } + delete context; + return; + } + remember_callback_context(handle, context); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_registerMipSetSolutionCallback( + JNIEnv* env, jclass, jlong handle, jobject callback, jobject user_data, jint num_variables) +{ + auto* context = new java_callback_context_t; + context->callback = env->NewGlobalRef(callback); + context->user_data = user_data == nullptr ? nullptr : env->NewGlobalRef(user_data); + context->num_variables = num_variables; + const auto status = + cuOptSetMIPSetSolutionCallback(to_settings(handle), mip_set_solution_callback, context); + if (!check_status(env, status, "cuOptSetMIPSetSolutionCallback")) { + if (context->callback != nullptr) { env->DeleteGlobalRef(context->callback); } + if (context->user_data != nullptr) { env->DeleteGlobalRef(context->user_data); } + delete context; + return; + } + remember_callback_context(handle, context); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setPdlpWarmStartData( + JNIEnv* env, + jclass, + jlong handle, + jdoubleArray current_primal_solution, + jdoubleArray current_dual_solution, + jdoubleArray initial_primal_average, + jdoubleArray initial_dual_average, + jdoubleArray current_aty, + jdoubleArray sum_primal_solutions, + jdoubleArray sum_dual_solutions, + jdoubleArray last_restart_duality_gap_primal_solution, + jdoubleArray last_restart_duality_gap_dual_solution, + jdouble initial_primal_weight, + jdouble initial_step_size, + jint total_pdlp_iterations, + jint total_pdhg_iterations, + jdouble last_candidate_kkt_score, + jdouble last_restart_kkt_score, + jdouble sum_solution_weight, + jint iterations_since_last_restart) +{ + const auto current_primal = get_double_array(env, current_primal_solution); + const auto current_dual = get_double_array(env, current_dual_solution); + const auto initial_primal = get_double_array(env, initial_primal_average); + const auto initial_dual = get_double_array(env, initial_dual_average); + const auto aty = get_double_array(env, current_aty); + const auto sum_primal = get_double_array(env, sum_primal_solutions); + const auto sum_dual = get_double_array(env, sum_dual_solutions); + const auto last_primal = get_double_array(env, last_restart_duality_gap_primal_solution); + const auto last_dual = get_double_array(env, last_restart_duality_gap_dual_solution); + + check_status( + env, + cuOptSetPDLPWarmStartData(to_settings(handle), + current_primal.data(), + current_dual.data(), + initial_primal.data(), + initial_dual.data(), + aty.data(), + sum_primal.data(), + sum_dual.data(), + last_primal.data(), + last_dual.data(), + static_cast(current_primal.size()), + static_cast(current_dual.size()), + static_cast(initial_primal_weight), + static_cast(initial_step_size), + total_pdlp_iterations, + total_pdhg_iterations, + static_cast(last_candidate_kkt_score), + static_cast(last_restart_kkt_score), + static_cast(sum_solution_weight), + iterations_since_last_restart), + "cuOptSetPDLPWarmStartData"); +} + +extern "C" JNIEXPORT jlong JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_createProblem(JNIEnv* env, + jclass, + jint num_constraints, + jint num_variables, + jint objective_sense, + jdouble objective_offset, + jdoubleArray objective_coefficients, + jintArray row_offsets, + jintArray column_indices, + jdoubleArray values, + jbyteArray constraint_sense, + jdoubleArray rhs, + jdoubleArray lower_bounds, + jdoubleArray upper_bounds, + jbyteArray variable_types) +{ + const auto obj = get_double_array(env, objective_coefficients); + const auto rows = get_int_array(env, row_offsets); + const auto cols = get_int_array(env, column_indices); + const auto coeffs = get_double_array(env, values); + const auto senses = get_byte_array(env, constraint_sense); + const auto rhs_values = get_double_array(env, rhs); + const auto lbs = get_double_array(env, lower_bounds); + const auto ubs = get_double_array(env, upper_bounds); + const auto types = get_byte_array(env, variable_types); + cuOptOptimizationProblem problem = nullptr; + if (!check_status(env, + cuOptCreateProblem(num_constraints, + num_variables, + objective_sense, + static_cast(objective_offset), + obj.data(), + rows.data(), + cols.data(), + coeffs.data(), + senses.data(), + rhs_values.data(), + lbs.data(), + ubs.data(), + types.data(), + &problem), + "cuOptCreateProblem")) { + return 0; + } + return from_handle(problem); +} + +extern "C" JNIEXPORT jlong JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_createRangedProblem( + JNIEnv* env, + jclass, + jint num_constraints, + jint num_variables, + jint objective_sense, + jdouble objective_offset, + jdoubleArray objective_coefficients, + jintArray row_offsets, + jintArray column_indices, + jdoubleArray values, + jdoubleArray constraint_lower_bounds, + jdoubleArray constraint_upper_bounds, + jdoubleArray variable_lower_bounds, + jdoubleArray variable_upper_bounds, + jbyteArray variable_types) +{ + const auto obj = get_double_array(env, objective_coefficients); + const auto rows = get_int_array(env, row_offsets); + const auto cols = get_int_array(env, column_indices); + const auto coeffs = get_double_array(env, values); + const auto clb = get_double_array(env, constraint_lower_bounds); + const auto cub = get_double_array(env, constraint_upper_bounds); + const auto vlb = get_double_array(env, variable_lower_bounds); + const auto vub = get_double_array(env, variable_upper_bounds); + const auto types = get_byte_array(env, variable_types); + cuOptOptimizationProblem problem = nullptr; + if (!check_status(env, + cuOptCreateRangedProblem(num_constraints, + num_variables, + objective_sense, + static_cast(objective_offset), + obj.data(), + rows.data(), + cols.data(), + coeffs.data(), + clb.data(), + cub.data(), + vlb.data(), + vub.data(), + types.data(), + &problem), + "cuOptCreateRangedProblem")) { + return 0; + } + return from_handle(problem); +} + +extern "C" JNIEXPORT jlong JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_readProblem(JNIEnv* env, jclass, jstring path) +{ + const auto filename = get_string(env, path); + cuOptOptimizationProblem problem = nullptr; + if (!check_status(env, cuOptReadProblem(filename.c_str(), &problem), "cuOptReadProblem")) { + return 0; + } + return from_handle(problem); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_writeProblem(JNIEnv* env, + jclass, + jlong handle, + jstring path) +{ + const auto filename = get_string(env, path); + check_status( + env, cuOptWriteProblem(to_problem(handle), filename.c_str(), CUOPT_FILE_FORMAT_MPS), "cuOptWriteProblem"); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_destroyProblem(JNIEnv*, jclass, jlong handle) +{ + if (handle == 0) { return; } + { + std::lock_guard lock(g_problem_state_mutex); + g_problem_states.erase(handle); + } + if (take_jni_owned_problem(handle)) { + delete to_problem_view(handle); + return; + } + cuOptOptimizationProblem problem = to_problem(handle); + cuOptDestroyProblem(&problem); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setQuadraticObjective(JNIEnv* env, + jclass, + jlong handle, + jintArray rows, + jintArray cols, + jdoubleArray coeffs) +{ + const auto row_data = get_int_array(env, rows); + const auto col_data = get_int_array(env, cols); + const auto val_data = get_double_array(env, coeffs); + check_status(env, + cuOptSetQuadraticObjective(to_problem(handle), + static_cast(val_data.size()), + row_data.data(), + col_data.data(), + val_data.data()), + "cuOptSetQuadraticObjective"); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_addQuadraticConstraint(JNIEnv* env, + jclass, + jlong handle, + jintArray rows, + jintArray cols, + jdoubleArray coeffs, + jintArray linear_indices, + jdoubleArray linear_coeffs, + jbyte sense, + jdouble rhs) +{ + const auto row_data = get_int_array(env, rows); + const auto col_data = get_int_array(env, cols); + const auto val_data = get_double_array(env, coeffs); + const auto lin_idx = get_int_array(env, linear_indices); + const auto lin_coeff = get_double_array(env, linear_coeffs); + check_status(env, + cuOptAddQuadraticConstraint(to_problem(handle), + static_cast(val_data.size()), + row_data.data(), + col_data.data(), + val_data.data(), + static_cast(lin_coeff.size()), + lin_idx.data(), + lin_coeff.data(), + static_cast(sense), + static_cast(rhs)), + "cuOptAddQuadraticConstraint"); +} + +extern "C" JNIEXPORT jint JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getNumVariables(JNIEnv* env, + jclass, + jlong handle) +{ + cuopt_int_t value = 0; + check_status(env, cuOptGetNumVariables(to_problem(handle), &value), "cuOptGetNumVariables"); + return value; +} + +extern "C" JNIEXPORT jint JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getNumConstraints(JNIEnv* env, + jclass, + jlong handle) +{ + cuopt_int_t value = 0; + check_status(env, cuOptGetNumConstraints(to_problem(handle), &value), "cuOptGetNumConstraints"); + return value; +} + +extern "C" JNIEXPORT jint JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getNumNonZeros(JNIEnv* env, + jclass, + jlong handle) +{ + cuopt_int_t value = 0; + check_status(env, cuOptGetNumNonZeros(to_problem(handle), &value), "cuOptGetNumNonZeros"); + return value; +} + +extern "C" JNIEXPORT jint JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getObjectiveSense(JNIEnv* env, + jclass, + jlong handle) +{ + cuopt_int_t value = 0; + check_status(env, cuOptGetObjectiveSense(to_problem(handle), &value), "cuOptGetObjectiveSense"); + return value; +} + +extern "C" JNIEXPORT jdouble JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getObjectiveOffset(JNIEnv* env, + jclass, + jlong handle) +{ + cuopt_float_t value = 0; + check_status(env, cuOptGetObjectiveOffset(to_problem(handle), &value), "cuOptGetObjectiveOffset"); + return value; +} + +extern "C" JNIEXPORT jdoubleArray JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getObjectiveCoefficients(JNIEnv* env, + jclass, + jlong handle) +{ + const int n = Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getNumVariables(env, nullptr, handle); + std::vector values(static_cast(n)); + if (!check_status(env, + cuOptGetObjectiveCoefficients(to_problem(handle), values.data()), + "cuOptGetObjectiveCoefficients")) { + return nullptr; + } + return to_double_array(env, values); +} + +extern "C" JNIEXPORT jobjectArray JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getConstraintMatrix(JNIEnv* env, + jclass, + jlong handle) +{ + const int rows_size = Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getNumConstraints(env, nullptr, handle) + 1; + const int nnz = Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getNumNonZeros(env, nullptr, handle); + std::vector rows(static_cast(rows_size)); + std::vector cols(static_cast(nnz)); + std::vector values(static_cast(nnz)); + if (!check_status(env, + cuOptGetConstraintMatrix(to_problem(handle), rows.data(), cols.data(), values.data()), + "cuOptGetConstraintMatrix")) { + return nullptr; + } + jclass object_class = env->FindClass("java/lang/Object"); + jobjectArray result = env->NewObjectArray(3, object_class, nullptr); + env->SetObjectArrayElement(result, 0, to_int_array(env, rows)); + env->SetObjectArrayElement(result, 1, to_int_array(env, cols)); + env->SetObjectArrayElement(result, 2, to_double_array(env, values)); + return result; +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setMaximize(JNIEnv* env, + jclass, + jlong handle, + jboolean maximize) +{ + run_problem_operation(env, "setMaximize", [&] { + to_problem_view(handle)->get_problem()->set_maximize(maximize != JNI_FALSE); + }); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setConstraintMatrix(JNIEnv* env, + jclass, + jlong handle, + jdoubleArray values, + jintArray indices, + jintArray offsets) +{ + const auto h_values = get_double_array(env, values); + const auto h_indices = get_int_array(env, indices); + const auto h_offsets = get_int_array(env, offsets); + run_problem_operation(env, "setConstraintMatrix", [&] { + to_problem_view(handle)->get_problem()->set_csr_constraint_matrix( + h_values.data(), h_values.size(), h_indices.data(), h_indices.size(), h_offsets.data(), h_offsets.size()); + }); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setConstraintBounds(JNIEnv* env, + jclass, + jlong handle, + jdoubleArray values) +{ + const auto h_values = get_double_array(env, values); + run_problem_operation(env, "setConstraintBounds", [&] { + to_problem_view(handle)->get_problem()->set_constraint_bounds(h_values.data(), h_values.size()); + }); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setObjectiveCoefficients(JNIEnv* env, + jclass, + jlong handle, + jdoubleArray values) +{ + const auto h_values = get_double_array(env, values); + run_problem_operation(env, "setObjectiveCoefficients", [&] { + to_problem_view(handle)->get_problem()->set_objective_coefficients(h_values.data(), h_values.size()); + }); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setObjectiveScalingFactor(JNIEnv* env, + jclass, + jlong handle, + jdouble value) +{ + run_problem_operation(env, "setObjectiveScalingFactor", [&] { + to_problem_view(handle)->get_problem()->set_objective_scaling_factor(value); + }); +} + +extern "C" JNIEXPORT jdouble JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getObjectiveScalingFactor(JNIEnv* env, + jclass, + jlong handle) +{ + jdouble value = 0.0; + if (!run_problem_operation(env, "getObjectiveScalingFactor", [&] { + value = to_problem_view(handle)->get_problem()->get_objective_scaling_factor(); + })) { + return 0.0; + } + return value; +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setObjectiveOffset(JNIEnv* env, + jclass, + jlong handle, + jdouble value) +{ + run_problem_operation(env, "setObjectiveOffset", [&] { + to_problem_view(handle)->get_problem()->set_objective_offset(value); + }); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setQuadraticObjectiveMatrix(JNIEnv* env, + jclass, + jlong handle, + jdoubleArray values, + jintArray indices, + jintArray offsets) +{ + const auto h_values = get_double_array(env, values); + const auto h_indices = get_int_array(env, indices); + const auto h_offsets = get_int_array(env, offsets); + run_problem_operation(env, "setQuadraticObjectiveMatrix", [&] { + to_problem_view(handle)->get_problem()->set_quadratic_objective_matrix( + h_values.data(), h_values.size(), h_indices.data(), h_indices.size(), h_offsets.data(), h_offsets.size()); + }); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setVariableLowerBounds(JNIEnv* env, + jclass, + jlong handle, + jdoubleArray values) +{ + const auto h_values = get_double_array(env, values); + run_problem_operation(env, "setVariableLowerBounds", [&] { + to_problem_view(handle)->get_problem()->set_variable_lower_bounds(h_values.data(), h_values.size()); + }); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setVariableUpperBounds(JNIEnv* env, + jclass, + jlong handle, + jdoubleArray values) +{ + const auto h_values = get_double_array(env, values); + run_problem_operation(env, "setVariableUpperBounds", [&] { + to_problem_view(handle)->get_problem()->set_variable_upper_bounds(h_values.data(), h_values.size()); + }); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setConstraintLowerBounds(JNIEnv* env, + jclass, + jlong handle, + jdoubleArray values) +{ + const auto h_values = get_double_array(env, values); + run_problem_operation(env, "setConstraintLowerBounds", [&] { + to_problem_view(handle)->get_problem()->set_constraint_lower_bounds(h_values.data(), h_values.size()); + }); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setConstraintUpperBounds(JNIEnv* env, + jclass, + jlong handle, + jdoubleArray values) +{ + const auto h_values = get_double_array(env, values); + run_problem_operation(env, "setConstraintUpperBounds", [&] { + to_problem_view(handle)->get_problem()->set_constraint_upper_bounds(h_values.data(), h_values.size()); + }); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setRowTypes(JNIEnv* env, + jclass, + jlong handle, + jbyteArray values) +{ + const auto h_values = get_byte_array(env, values); + run_problem_operation(env, "setRowTypes", [&] { + to_problem_view(handle)->get_problem()->set_row_types(h_values.data(), h_values.size()); + }); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setVariableTypes(JNIEnv* env, + jclass, + jlong handle, + jbyteArray values) +{ + const auto h_values = get_byte_array(env, values); + run_problem_operation(env, "setVariableTypes", [&] { + std::vector variable_types; + variable_types.reserve(h_values.size()); + for (char value : h_values) { + variable_types.push_back(cuopt::linear_programming::detail::char_to_var_type(value)); + } + to_problem_view(handle)->get_problem()->set_variable_types(variable_types.data(), variable_types.size()); + }); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setVariableNames(JNIEnv* env, + jclass, + jlong handle, + jobjectArray values) +{ + const auto h_values = get_string_array(env, values); + run_problem_operation(env, "setVariableNames", [&] { + to_problem_view(handle)->get_problem()->set_variable_names(h_values); + }); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setRowNames(JNIEnv* env, + jclass, + jlong handle, + jobjectArray values) +{ + const auto h_values = get_string_array(env, values); + run_problem_operation(env, "setRowNames", [&] { + to_problem_view(handle)->get_problem()->set_row_names(h_values); + }); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setObjectiveName(JNIEnv* env, + jclass, + jlong handle, + jstring value) +{ + const auto name = get_string(env, value); + run_problem_operation(env, "setObjectiveName", [&] { + to_problem_view(handle)->get_problem()->set_objective_name(name); + }); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setProblemName(JNIEnv* env, + jclass, + jlong handle, + jstring value) +{ + const auto name = get_string(env, value); + run_problem_operation(env, "setProblemName", [&] { + to_problem_view(handle)->get_problem()->set_problem_name(name); + }); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setInitialPrimalSolutionOnProblem(JNIEnv* env, + jclass, + jlong handle, + jdoubleArray values) +{ + const auto h_values = get_double_array(env, values); + run_problem_operation(env, "setInitialPrimalSolutionOnProblem", [&] { + std::lock_guard lock(g_problem_state_mutex); + g_problem_states[handle].initial_primal_solution = h_values; + }); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setInitialDualSolutionOnProblem(JNIEnv* env, + jclass, + jlong handle, + jdoubleArray values) +{ + const auto h_values = get_double_array(env, values); + run_problem_operation(env, "setInitialDualSolutionOnProblem", [&] { + std::lock_guard lock(g_problem_state_mutex); + g_problem_states[handle].initial_dual_solution = h_values; + }); +} + +extern "C" JNIEXPORT jdoubleArray JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getQuadraticObjectiveValues(JNIEnv* env, + jclass, + jlong handle) +{ + return to_double_array(env, to_problem_view(handle)->get_problem()->get_quadratic_objective_values()); +} + +extern "C" JNIEXPORT jintArray JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getQuadraticObjectiveIndices(JNIEnv* env, + jclass, + jlong handle) +{ + return to_int_array(env, to_problem_view(handle)->get_problem()->get_quadratic_objective_indices()); +} + +extern "C" JNIEXPORT jintArray JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getQuadraticObjectiveOffsets(JNIEnv* env, + jclass, + jlong handle) +{ + return to_int_array(env, to_problem_view(handle)->get_problem()->get_quadratic_objective_offsets()); +} + +extern "C" JNIEXPORT jobjectArray JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getVariableNames(JNIEnv* env, + jclass, + jlong handle) +{ + return to_string_array(env, to_problem_view(handle)->get_problem()->get_variable_names()); +} + +extern "C" JNIEXPORT jobjectArray JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getRowNames(JNIEnv* env, + jclass, + jlong handle) +{ + return to_string_array(env, to_problem_view(handle)->get_problem()->get_row_names()); +} + +extern "C" JNIEXPORT jstring JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getObjectiveName(JNIEnv* env, + jclass, + jlong handle) +{ + return env->NewStringUTF(to_problem_view(handle)->get_problem()->get_objective_name().c_str()); +} + +extern "C" JNIEXPORT jstring JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getProblemName(JNIEnv* env, + jclass, + jlong handle) +{ + return env->NewStringUTF(to_problem_view(handle)->get_problem()->get_problem_name().c_str()); +} + +extern "C" JNIEXPORT jint JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getProblemCategory(JNIEnv* env, + jclass, + jlong handle) +{ + jint category = 0; + if (!run_problem_operation(env, "getProblemCategory", [&] { + category = static_cast(to_problem_view(handle)->get_problem()->get_problem_category()); + })) { + return 0; + } + return category; +} + +extern "C" JNIEXPORT jobjectArray JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getQuadraticConstraints(JNIEnv* env, + jclass, + jlong handle) +{ + const auto& constraints = to_problem_view(handle)->get_problem()->get_quadratic_constraints(); + jclass object_class = env->FindClass("java/lang/Object"); + jobjectArray result = env->NewObjectArray(static_cast(constraints.size()), object_class, nullptr); + for (jsize i = 0; i < static_cast(constraints.size()); ++i) { + const auto& constraint = constraints[static_cast(i)]; + jobjectArray entry = env->NewObjectArray(9, object_class, nullptr); + env->SetObjectArrayElement(entry, 0, to_int_array(env, {constraint.constraint_row_index})); + env->SetObjectArrayElement(entry, 1, env->NewStringUTF(constraint.constraint_row_name.c_str())); + env->SetObjectArrayElement(entry, 2, to_byte_array(env, {constraint.constraint_row_type})); + env->SetObjectArrayElement(entry, 3, to_double_array(env, constraint.linear_values)); + env->SetObjectArrayElement(entry, 4, to_int_array(env, constraint.linear_indices)); + env->SetObjectArrayElement(entry, 5, to_double_array(env, {constraint.rhs_value})); + env->SetObjectArrayElement(entry, 6, to_int_array(env, constraint.rows)); + env->SetObjectArrayElement(entry, 7, to_int_array(env, constraint.cols)); + env->SetObjectArrayElement(entry, 8, to_double_array(env, constraint.vals)); + env->SetObjectArrayElement(result, i, entry); + env->DeleteLocalRef(entry); + } + return result; +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_clearQuadraticConstraints(JNIEnv* env, + jclass, + jlong handle) +{ + run_problem_operation(env, "clearQuadraticConstraints", [&] { + using problem_t = cuopt::linear_programming::optimization_problem_interface_t; + to_problem_view(handle)->get_problem()->set_quadratic_constraints( + std::vector{}); + }); +} + +#define DEFINE_DOUBLE_PROBLEM_GETTER(JAVA_NAME, C_NAME, COUNT_EXPR) \ + extern "C" JNIEXPORT jdoubleArray JNICALL \ + Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_##JAVA_NAME( \ + JNIEnv* env, jclass, jlong handle) \ + { \ + const int count = (COUNT_EXPR); \ + std::vector values(static_cast(count)); \ + if (!check_status(env, C_NAME(to_problem(handle), values.data()), #C_NAME)) { return nullptr; } \ + return to_double_array(env, values); \ + } + +#define DEFINE_BYTE_PROBLEM_GETTER(JAVA_NAME, C_NAME, COUNT_EXPR) \ + extern "C" JNIEXPORT jbyteArray JNICALL \ + Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_##JAVA_NAME( \ + JNIEnv* env, jclass, jlong handle) \ + { \ + const int count = (COUNT_EXPR); \ + std::vector values(static_cast(count)); \ + if (!check_status(env, C_NAME(to_problem(handle), values.data()), #C_NAME)) { return nullptr; } \ + return to_byte_array(env, values); \ + } + +DEFINE_DOUBLE_PROBLEM_GETTER(getConstraintRhs, + cuOptGetConstraintRightHandSide, + Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getNumConstraints(env, nullptr, handle)) + +extern "C" JNIEXPORT jdoubleArray JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getConstraintLowerBounds(JNIEnv* env, + jclass, + jlong handle) +{ + std::vector values; + if (!run_problem_operation(env, "getConstraintLowerBounds", [&] { + values = to_problem_view(handle)->get_problem()->get_constraint_lower_bounds_host(); + })) { + return nullptr; + } + return to_double_array(env, values); +} + +extern "C" JNIEXPORT jdoubleArray JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getConstraintUpperBounds(JNIEnv* env, + jclass, + jlong handle) +{ + std::vector values; + if (!run_problem_operation(env, "getConstraintUpperBounds", [&] { + values = to_problem_view(handle)->get_problem()->get_constraint_upper_bounds_host(); + })) { + return nullptr; + } + return to_double_array(env, values); +} + +extern "C" JNIEXPORT jdoubleArray JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getVariableLowerBounds(JNIEnv* env, + jclass, + jlong handle) +{ + std::vector values; + if (!run_problem_operation(env, "getVariableLowerBounds", [&] { + values = to_problem_view(handle)->get_problem()->get_variable_lower_bounds_host(); + })) { + return nullptr; + } + return to_double_array(env, values); +} + +extern "C" JNIEXPORT jdoubleArray JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getVariableUpperBounds(JNIEnv* env, + jclass, + jlong handle) +{ + std::vector values; + if (!run_problem_operation(env, "getVariableUpperBounds", [&] { + values = to_problem_view(handle)->get_problem()->get_variable_upper_bounds_host(); + })) { + return nullptr; + } + return to_double_array(env, values); +} + +DEFINE_BYTE_PROBLEM_GETTER(getConstraintSense, + cuOptGetConstraintSense, + Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getNumConstraints(env, nullptr, handle)) +DEFINE_BYTE_PROBLEM_GETTER(getVariableTypes, + cuOptGetVariableTypes, + Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getNumVariables(env, nullptr, handle)) + +#undef DEFINE_DOUBLE_PROBLEM_GETTER +#undef DEFINE_BYTE_PROBLEM_GETTER + +extern "C" JNIEXPORT jboolean JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_isMip(JNIEnv* env, jclass, jlong handle) +{ + cuopt_int_t value = 0; + check_status(env, cuOptIsMIP(to_problem(handle), &value), "cuOptIsMIP"); + return static_cast(value != 0); +} + +extern "C" JNIEXPORT jlong JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_solve(JNIEnv* env, + jclass, + jlong problem_handle, + jlong settings_handle) +{ + cuopt_int_t is_mip = 0; + if (!check_status(env, + cuOptIsMIP(to_problem(problem_handle), &is_mip), + "cuOptIsMIP")) { + return 0; + } + java_problem_state_t problem_state; + { + std::lock_guard lock(g_problem_state_mutex); + auto it = g_problem_states.find(problem_handle); + if (it != g_problem_states.end()) { problem_state = it->second; } + } + if (is_mip != 0) { + if (!problem_state.initial_primal_solution.empty() && + !check_status(env, + cuOptAddMIPStart(to_settings(settings_handle), + problem_state.initial_primal_solution.data(), + problem_state.initial_primal_solution.size()), + "cuOptAddMIPStart")) { + return 0; + } + } else { + if (!problem_state.initial_primal_solution.empty() && + !check_status(env, + cuOptSetInitialPrimalSolution(to_settings(settings_handle), + problem_state.initial_primal_solution.data(), + problem_state.initial_primal_solution.size()), + "cuOptSetInitialPrimalSolution")) { + return 0; + } + if (!problem_state.initial_dual_solution.empty() && + !check_status(env, + cuOptSetInitialDualSolution(to_settings(settings_handle), + problem_state.initial_dual_solution.data(), + problem_state.initial_dual_solution.size()), + "cuOptSetInitialDualSolution")) { + return 0; + } + } + cuOptSolution solution = nullptr; + if (!check_status(env, + cuOptSolve(to_problem(problem_handle), to_settings(settings_handle), &solution), + "cuOptSolve")) { + return 0; + } + return from_handle(solution); +} + +extern "C" JNIEXPORT void JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_destroySolution(JNIEnv*, jclass, jlong handle) +{ + if (handle == 0) { return; } + cuOptSolution solution = to_solution(handle); + cuOptDestroySolution(&solution); +} + +extern "C" JNIEXPORT jboolean JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_solutionIsMip(JNIEnv* env, + jclass, + jlong handle) +{ + cuopt_int_t value = 0; + check_status(env, cuOptSolutionIsMIP(to_solution(handle), &value), "cuOptSolutionIsMIP"); + return static_cast(value != 0); +} + +extern "C" JNIEXPORT jint JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getTerminationStatus(JNIEnv* env, + jclass, + jlong handle) +{ + cuopt_int_t value = 0; + check_status(env, cuOptGetTerminationStatus(to_solution(handle), &value), "cuOptGetTerminationStatus"); + return value; +} + +extern "C" JNIEXPORT jint JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getErrorStatus(JNIEnv* env, + jclass, + jlong handle) +{ + cuopt_int_t value = 0; + check_status(env, cuOptGetErrorStatus(to_solution(handle), &value), "cuOptGetErrorStatus"); + return value; +} + +extern "C" JNIEXPORT jstring JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getErrorString(JNIEnv* env, + jclass, + jlong handle) +{ + char buffer[1024] = {}; + if (!check_status(env, cuOptGetErrorString(to_solution(handle), buffer, sizeof(buffer)), "cuOptGetErrorString")) { + return nullptr; + } + return env->NewStringUTF(buffer); +} + +extern "C" JNIEXPORT jdoubleArray JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getPrimalSolution(JNIEnv* env, + jclass, + jlong handle, + jint size) +{ + std::vector values(static_cast(size)); + if (!check_status(env, cuOptGetPrimalSolution(to_solution(handle), values.data()), "cuOptGetPrimalSolution")) { + return nullptr; + } + return to_double_array(env, values); +} + +extern "C" JNIEXPORT jint JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getDualSolutionSize(JNIEnv* env, + jclass, + jlong handle) +{ + auto* solution = to_lp_solution(env, handle, "getDualSolution"); + if (solution == nullptr) { return 0; } + return solution->get_dual_solution_size(); +} + +extern "C" JNIEXPORT jdoubleArray JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getDualSolution(JNIEnv* env, + jclass, + jlong handle, + jint) +{ + auto* solution = to_lp_solution(env, handle, "getDualSolution"); + if (solution == nullptr) { return nullptr; } + try { + return to_double_array(env, solution->get_dual_solution_host()); + } catch (const std::exception& e) { + throw_cuopt_exception( + env, CUOPT_INVALID_ARGUMENT, std::string("getDualSolution failed: ") + e.what()); + return nullptr; + } +} + +extern "C" JNIEXPORT jdoubleArray JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getReducedCosts(JNIEnv* env, + jclass, + jlong handle, + jint) +{ + auto* solution = to_lp_solution(env, handle, "getReducedCost"); + if (solution == nullptr) { return nullptr; } + try { + return to_double_array(env, solution->get_reduced_cost_host()); + } catch (const std::exception& e) { + throw_cuopt_exception( + env, CUOPT_INVALID_ARGUMENT, std::string("getReducedCost failed: ") + e.what()); + return nullptr; + } +} + +extern "C" JNIEXPORT jdouble JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getObjectiveValue(JNIEnv* env, + jclass, + jlong handle) +{ + cuopt_float_t value = 0; + check_status(env, cuOptGetObjectiveValue(to_solution(handle), &value), "cuOptGetObjectiveValue"); + return value; +} + +extern "C" JNIEXPORT jdouble JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getDualObjectiveValue(JNIEnv* env, + jclass, + jlong handle) +{ + auto* solution = to_lp_solution(env, handle, "getDualObjective"); + if (solution == nullptr) { return 0; } + try { + return solution->get_dual_objective_value(0); + } catch (const std::exception& e) { + throw_cuopt_exception( + env, CUOPT_INVALID_ARGUMENT, std::string("getDualObjective failed: ") + e.what()); + return 0; + } +} + +extern "C" JNIEXPORT jdouble JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getSolveTime(JNIEnv* env, + jclass, + jlong handle) +{ + cuopt_float_t value = 0; + check_status(env, cuOptGetSolveTime(to_solution(handle), &value), "cuOptGetSolveTime"); + return value; +} + +extern "C" JNIEXPORT jdouble JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getMipGap(JNIEnv* env, + jclass, + jlong handle) +{ + cuopt_float_t value = 0; + check_status(env, cuOptGetMIPGap(to_solution(handle), &value), "cuOptGetMIPGap"); + return value; +} + +extern "C" JNIEXPORT jdouble JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getSolutionBound(JNIEnv* env, + jclass, + jlong handle) +{ + cuopt_float_t value = 0; + check_status(env, cuOptGetSolutionBound(to_solution(handle), &value), "cuOptGetSolutionBound"); + return value; +} + +extern "C" JNIEXPORT jdoubleArray JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getLpStats(JNIEnv* env, jclass, jlong handle) +{ + cuopt_float_t primal = 0; + cuopt_float_t dual = 0; + cuopt_float_t gap = 0; + cuopt_int_t iterations = 0; + cuopt_int_t solved_by = 0; + if (!check_status(env, + cuOptGetLPSolverStats(to_solution(handle), &primal, &dual, &gap, &iterations, &solved_by), + "cuOptGetLPSolverStats")) { + return nullptr; + } + return to_double_array(env, {primal, dual, gap, static_cast(iterations), static_cast(solved_by)}); +} + +extern "C" JNIEXPORT jdoubleArray JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getMipStats(JNIEnv* env, jclass, jlong handle) +{ + cuopt_float_t presolve = 0; + cuopt_float_t max_constraint = 0; + cuopt_float_t max_int = 0; + cuopt_float_t max_bound = 0; + cuopt_int_t nodes = 0; + cuopt_int_t simplex = 0; + if (!check_status(env, + cuOptGetMIPSolverStats( + to_solution(handle), &presolve, &max_constraint, &max_int, &max_bound, &nodes, &simplex), + "cuOptGetMIPSolverStats")) { + return nullptr; + } + return to_double_array(env, {presolve, max_constraint, max_int, max_bound, static_cast(nodes), static_cast(simplex)}); +} + +extern "C" JNIEXPORT jboolean JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_hasPdlpWarmStartData(JNIEnv* env, + jclass, + jlong handle) +{ + cuopt_int_t value = 0; + check_status(env, cuOptHasPDLPWarmStartData(to_solution(handle), &value), "cuOptHasPDLPWarmStartData"); + return static_cast(value != 0); +} + +extern "C" JNIEXPORT jdoubleArray JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getPdlpWarmStartVector(JNIEnv* env, + jclass, + jlong handle, + jint field_id) +{ + cuopt_int_t size = 0; + if (!check_status(env, + cuOptGetPDLPWarmStartVectorSize(to_solution(handle), field_id, &size), + "cuOptGetPDLPWarmStartVectorSize")) { + return nullptr; + } + std::vector values(static_cast(size)); + if (size > 0 && + !check_status(env, + cuOptGetPDLPWarmStartVector(to_solution(handle), field_id, values.data()), + "cuOptGetPDLPWarmStartVector")) { + return nullptr; + } + return to_double_array(env, values); +} + +extern "C" JNIEXPORT jdouble JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getPdlpWarmStartScalar(JNIEnv* env, + jclass, + jlong handle, + jint field_id) +{ + cuopt_float_t value = 0; + check_status(env, + cuOptGetPDLPWarmStartScalar(to_solution(handle), field_id, &value), + "cuOptGetPDLPWarmStartScalar"); + return value; +} + +extern "C" JNIEXPORT jint JNICALL +Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getPdlpWarmStartInteger(JNIEnv* env, + jclass, + jlong handle, + jint field_id) +{ + cuopt_int_t value = 0; + check_status(env, + cuOptGetPDLPWarmStartInteger(to_solution(handle), field_id, &value), + "cuOptGetPDLPWarmStartInteger"); + return value; +} diff --git a/java/cuopt/src/test/java/com/nvidia/cuopt/linearprogramming/NativeIntegrationTest.java b/java/cuopt/src/test/java/com/nvidia/cuopt/linearprogramming/NativeIntegrationTest.java new file mode 100644 index 0000000000..70fe31ba7d --- /dev/null +++ b/java/cuopt/src/test/java/com/nvidia/cuopt/linearprogramming/NativeIntegrationTest.java @@ -0,0 +1,255 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.linearprogramming; + +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; +import org.junit.jupiter.api.Assumptions; +import org.junit.jupiter.api.Test; + +final class NativeIntegrationTest { + private static void assumeNativeLibrary() { + String nativeDir = System.getProperty("cuopt.native.dir"); + Assumptions.assumeTrue(nativeDir != null && !nativeDir.isBlank(), "cuopt.native.dir is unset"); + Assumptions.assumeTrue( + Files.exists(Path.of(nativeDir, System.mapLibraryName("cuopt_jni"))), + "libcuopt_jni is not built"); + } + + @Test + void solverParameterNamesAreAvailable() { + assumeNativeLibrary(); + assertTrue(SolverSettings.getSolverParameterNames().contains(CuOptConstants.CUOPT_TIME_LIMIT)); + } + + @Test + void settingsExposeTypedValuesAndParameterFileRoundTrip() throws Exception { + assumeNativeLibrary(); + Path file = Files.createTempFile("cuopt-java-settings-", ".cfg"); + try (SolverSettings settings = new SolverSettings()) { + settings.setParameter(CuOptConstants.CUOPT_LOG_TO_CONSOLE, false); + settings.setParameter(CuOptConstants.CUOPT_TIME_LIMIT, 12.5); + settings.setOptimalityTolerance(1.0e-6); + assertEquals(Boolean.FALSE, settings.getTypedParameter(CuOptConstants.CUOPT_LOG_TO_CONSOLE)); + assertEquals(12.5, (Double) settings.getTypedParameter(CuOptConstants.CUOPT_TIME_LIMIT), 1e-12); + assertEquals( + 1.0e-6, + (Double) settings.getTypedParameter(CuOptConstants.CUOPT_ABSOLUTE_PRIMAL_TOLERANCE), + 1e-12); + assertEquals( + 12.5, + Double.parseDouble(settings.getParameterAsString(CuOptConstants.CUOPT_TIME_LIMIT)), + 1e-12); + assertTrue(settings.toDict().containsKey("tolerances")); + MipSolutionCallback callback = (solution, objective, bound, userData) -> {}; + settings.setMipCallback(callback, "test-user-data", 2); + assertTrue(settings.getMipCallbacks().contains(callback)); + assertDoesNotThrow(() -> settings.dumpParametersToFile(file.toString(), true)); + settings.loadParametersFromFile(file.toString()); + } finally { + Files.deleteIfExists(file); + } + } + + @Test + void emptyDataModelCanBeClosed() { + assumeNativeLibrary(); + assumeCudaDriverAvailable(); + try (DataModel ignored = new DataModel()) { + // Lifecycle regression test for JNI-owned empty problems. + } + } + + @Test + void mutableDataModelExposesPythonMetadataAndQuadraticFields() { + assumeNativeLibrary(); + assumeCudaDriverAvailable(); + try (DataModel model = new DataModel()) { + model.setCsrConstraintMatrix( + new double[] {1.0, 2.0}, new int[] {0, 1}, new int[] {0, 2}) + .setObjectiveCoefficients(new double[] {3.0, 4.0}) + .setObjectiveScalingFactor(2.0) + .setObjectiveOffset(5.0) + .setVariableLowerBounds(new double[] {0.0, 0.0}) + .setVariableUpperBounds(new double[] {10.0, 10.0}) + .setVariableTypes(new byte[] {'C', 'C'}) + .setConstraintBounds(new double[] {7.0}) + .setRowTypes(new byte[] {'L'}) + .setVariableNames(new String[] {"x", "y"}) + .setRowNames(new String[] {"c"}) + .setObjectiveName("obj") + .setProblemName("model") + .setQuadraticObjectiveMatrix( + new double[] {1.0, 2.0}, new int[] {0, 1}, new int[] {0, 1, 2}); + model + .setInitialPrimalSolution(new double[] {1.0, 2.0}) + .setInitialDualSolution(new double[] {3.0}); + + assertEquals(2.0, model.getObjectiveScalingFactor()); + assertEquals("model", model.getProblemName()); + assertEquals("obj", model.getObjectiveName()); + assertArrayEquals(new String[] {"x", "y"}, model.getVariableNames()); + assertArrayEquals(new String[] {"c"}, model.getRowNames()); + assertArrayEquals(new byte[] {'L'}, model.getAsciiRowTypes()); + assertArrayEquals(new double[0], model.getConstraintLowerBounds()); + assertArrayEquals(new double[0], model.getConstraintUpperBounds()); + assertArrayEquals(new double[] {1.0, 2.0}, model.getQuadraticObjectiveValues()); + assertArrayEquals(new int[] {0, 1}, model.getQuadraticObjectiveIndices()); + assertArrayEquals(new int[] {0, 1, 2}, model.getQuadraticObjectiveOffsets()); + assertEquals(ProblemCategory.LP, model.getProblemCategory()); + assertArrayEquals(new double[] {1.0, 2.0}, model.getInitialPrimalSolution()); + assertArrayEquals(new double[] {3.0}, model.getInitialDualSolution()); + assertTrue(model.toDict().containsKey("objective_data")); + + model.addQuadraticConstraint( + "qc", new double[] {1.0}, new int[] {0}, 4.0, + new double[] {2.0}, new int[] {0}, new int[] {0}, ConstraintSense.LE); + assertEquals(1, model.getQuadraticConstraints().size()); + assertEquals("qc", model.getQuadraticConstraints().get(0).getRowName()); + model.clearQuadraticConstraints(); + assertTrue(model.getQuadraticConstraints().isEmpty()); + } + } + + @Test + void solvesSmallLpAndReportsStats() { + assumeNativeLibrary(); + assumeCudaDriverAvailable(); + try (DataModel model = tinyLp(); + SolverSettings settings = new SolverSettings().setMethod(SolverMethod.PDLP); + Solution solution = model.solve(settings)) { + assertFalse(solution.isMip()); + assertEquals(TerminationStatus.OPTIMAL, solution.getTerminationStatus()); + assertEquals(1.0, solution.getPrimalObjective(), 1e-3); + double[] primal = solution.getPrimalSolution(); + assertEquals(1.0, primal[0] + primal[1], 1e-3); + assertDoesNotThrow(solution::getLpStats); + assertDoesNotThrow(solution::getPdlpWarmStartData); + assertThrows(IllegalStateException.class, solution::getMipStats); + } + } + + @Test + void solvesProblemApiMilpAndLifecycleCloseIsIdempotent() { + assumeNativeLibrary(); + assumeCudaDriverAvailable(); + Problem problem = new Problem("integer"); + Variable x = problem.addVariable(0, 10, 1.0, VariableType.INTEGER, "x"); + problem.addConstraint(LinearExpression.of(x).ge(1.0)); + + try (SolverSettings settings = new SolverSettings().setParameter(CuOptConstants.CUOPT_TIME_LIMIT, 10.0); + Solution solution = problem.solve(settings)) { + assertTrue(solution.isMip()); + assertEquals(TerminationStatus.OPTIMAL, solution.getTerminationStatus()); + assertEquals(1.0, x.getValue(), 1e-6); + assertDoesNotThrow(solution::getMipStats); + assertThrows(IllegalStateException.class, solution::getDualSolution); + solution.close(); + solution.close(); + } + } + + @Test + void solvesSmallQp() { + assumeNativeLibrary(); + assumeCudaDriverAvailable(); + try (DataModel model = tinyLp()) { + Problem shell = new Problem(); + Variable x0 = shell.addVariable(); + Variable x1 = shell.addVariable(); + model.setQuadraticObjective( + QuadraticExpression.of(x0, x0, 1.0).plus(x1, x1, 4.0)); + try (SolverSettings settings = new SolverSettings().setParameter(CuOptConstants.CUOPT_ITERATION_LIMIT, 50); + Solution solution = model.solve(settings)) { + assertFalse(solution.isMip()); + assertDoesNotThrow(solution::getPrimalSolution); + } + } + } + + @Test + void rejectsMissingFileThroughCuOptException() { + assumeNativeLibrary(); + CuOptException exception = + assertThrows(CuOptException.class, () -> DataModel.read("missing-file-does-not-exist.mps")); + assertEquals(CuOptConstants.CUOPT_MPS_FILE_ERROR, exception.getStatusCode()); + } + + @Test + void writesAndReadsMpsThroughReadAndParseMps() throws Exception { + assumeNativeLibrary(); + assumeCudaDriverAvailable(); + Path file = Files.createTempFile("cuopt-java-roundtrip-", ".mps"); + try { + try (DataModel source = tinyLp()) { + source.writeMPS(file.toString()); + } + try (DataModel read = DataModel.read(file.toString()); + DataModel parsed = DataModel.parseMps(file.toString()); + Problem problem = Problem.read(file.toString(), false)) { + assertEquals(2, read.getNumVariables()); + assertEquals(1, read.getNumConstraints()); + assertEquals(read.getNumVariables(), parsed.getNumVariables()); + assertEquals(read.getNumConstraints(), parsed.getNumConstraints()); + assertEquals(read.getNumVariables(), problem.getNumVariables()); + assertEquals(read.getNumConstraints(), problem.getNumConstraints()); + } + } finally { + Files.deleteIfExists(file); + } + } + + @Test + void batchSolveCompatibilityReturnsAllSolutions() { + assumeNativeLibrary(); + assumeCudaDriverAvailable(); + try (DataModel first = tinyLp(); + DataModel second = tinyLp(); + SolverSettings settings = new SolverSettings().setMethod(SolverMethod.PDLP); + BatchSolveResult result = BatchSolve.solve(List.of(first, second), settings)) { + assertEquals(2, result.getSolutions().size()); + assertTrue(result.getSolveTime() >= 0.0); + assertEquals(TerminationStatus.OPTIMAL, result.getSolutions().get(0).getTerminationStatus()); + assertEquals(TerminationStatus.OPTIMAL, result.getSolutions().get(1).getTerminationStatus()); + } + } + + private static DataModel tinyLp() { + CsrMatrix matrix = new CsrMatrix(new int[] {0, 2}, new int[] {0, 1}, new double[] {1.0, 1.0}); + return DataModel.createProblem( + 1, + 2, + ObjectiveSense.MINIMIZE, + 0.0, + new double[] {1.0, 1.0}, + matrix, + new byte[] {(byte) 'G'}, + new double[] {1.0}, + new double[] {0.0, 0.0}, + new double[] {Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY}, + new byte[] {(byte) 'C', (byte) 'C'}); + } + + private static void assumeCudaDriverAvailable() { + try { + Process process = new ProcessBuilder("nvidia-smi").start(); + boolean exited = process.waitFor() == 0; + Assumptions.assumeTrue(exited, "CUDA driver is unavailable"); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + Assumptions.assumeTrue(false, "CUDA driver check was interrupted"); + } catch (Exception e) { + Assumptions.assumeTrue(false, "CUDA driver check failed: " + e.getMessage()); + } + } +} diff --git a/java/cuopt/src/test/java/com/nvidia/cuopt/linearprogramming/ProblemModelingTest.java b/java/cuopt/src/test/java/com/nvidia/cuopt/linearprogramming/ProblemModelingTest.java new file mode 100644 index 0000000000..8bc941764a --- /dev/null +++ b/java/cuopt/src/test/java/com/nvidia/cuopt/linearprogramming/ProblemModelingTest.java @@ -0,0 +1,95 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.linearprogramming; + +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.Map; +import org.junit.jupiter.api.Test; + +final class ProblemModelingTest { + @Test + void buildsLinearModelAndCsr() { + Problem problem = new Problem("Simple MIP"); + Variable x = problem.addVariable(0, Double.POSITIVE_INFINITY, 0, VariableType.INTEGER, "x"); + Variable y = problem.addVariable(10, 50, 0, VariableType.INTEGER, "y"); + + assertEquals(0, x.getIndex()); + assertEquals(1, y.getIndex()); + assertTrue(problem.isMip()); + + problem.addConstraint(LinearExpression.of(x, 2).plus(y, 4).ge(230), "c1"); + problem.addConstraint(LinearExpression.of(x, 3).plus(y, 2).constant(10).le(200), "c2"); + problem.setObjective(LinearExpression.of(x, 5).plus(y, 3).constant(50), ObjectiveSense.MAXIMIZE); + + CsrMatrix csr = problem.getCSR(); + assertArrayEquals(new int[] {0, 2, 4}, csr.getRowOffsets()); + assertArrayEquals(new int[] {0, 1, 0, 1}, csr.getColumnIndices()); + assertArrayEquals(new double[] {2.0, 4.0, 3.0, 2.0}, csr.getValues()); + + assertEquals(2, problem.getNumVariables()); + assertEquals(2, problem.getNumConstraints()); + assertEquals(230, problem.getConstraint(0).getRHS()); + assertEquals(190, problem.getConstraint(1).getRHS()); + } + + @Test + void duplicateLinearTermsAreMergedForSlack() { + Problem problem = new Problem(); + Variable x = problem.addVariable(); + Constraint constraint = problem.addConstraint(LinearExpression.of(x, 5).plus(x, 7).le(18)); + + x.setValue(1.0); + + assertEquals(12.0, constraint.getCoefficient(x)); + assertEquals(6.0, constraint.computeSlack()); + assertFalse(problem.isMip()); + } + + @Test + void updateRelaxAndQuadraticInspectionMatchPythonModelingContracts() { + Problem problem = new Problem("model"); + Variable x = problem.addVariable(0.0, 5.0, 1.0, VariableType.INTEGER, "x"); + Variable y = problem.addVariable(0.0, 5.0, 2.0, VariableType.CONTINUOUS, "y"); + Constraint constraint = + problem.addConstraint(LinearExpression.of(x, 2.0).plus(y).le(7.0), "c"); + + problem.updateConstraint(constraint, Map.of(x, 1.0), 8.0); + assertEquals(1.0, constraint.getCoefficient(x)); + assertEquals(8.0, constraint.getRHS()); + + problem.updateObjective(Map.of(x, 3.0, y, 4.0), 5.0, ObjectiveSense.MAXIMIZE); + assertEquals(ObjectiveSense.MAXIMIZE, problem.getObjectiveSense()); + assertEquals(5.0, problem.getObjectiveConstant()); + assertEquals(3.0, x.getObjectiveCoefficient()); + assertEquals(4.0, y.getObjectiveCoefficient()); + + QuadraticExpression quadratic = QuadraticExpression.of(x, x, 2.0).plus(y, y, 3.0); + problem.setObjective(quadratic, ObjectiveSense.MINIMIZE); + CsrMatrix qcsr = problem.getQCSR(); + assertArrayEquals(new int[] {0, 1, 2}, qcsr.getRowOffsets()); + assertArrayEquals(new int[] {0, 1}, qcsr.getColumnIndices()); + assertArrayEquals(new double[] {2.0, 3.0}, qcsr.getValues()); + assertEquals(2, quadratic.getCoefficients().size()); + assertEquals(2.0, quadratic.getCoefficient(0)); + + Constraint quadraticConstraint = + problem.addConstraint(QuadraticExpression.of(x, x, 1.0).plus(y, y, 1.0).le(10.0), "qc"); + x.setValue(1.0); + y.setValue(2.0); + assertEquals(1, quadraticConstraint.getIndex()); + assertEquals(5.0, quadraticConstraint.computeSlack()); + assertEquals(1, problem.getQuadraticConstraints().size()); + + Problem relaxed = problem.relax(); + assertFalse(relaxed.isMip()); + assertEquals(VariableType.CONTINUOUS, relaxed.getVariable(0).getVariableType()); + assertEquals("x", relaxed.getVariable(0).getVariableName()); + assertEquals("y", relaxed.getVariable(1).getVariableName()); + } +} diff --git a/java/cuopt/src/test/java/com/nvidia/cuopt/linearprogramming/PythonParityTest.java b/java/cuopt/src/test/java/com/nvidia/cuopt/linearprogramming/PythonParityTest.java new file mode 100644 index 0000000000..0177d1aece --- /dev/null +++ b/java/cuopt/src/test/java/com/nvidia/cuopt/linearprogramming/PythonParityTest.java @@ -0,0 +1,1367 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.linearprogramming; + +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.io.IOException; +import java.net.URISyntaxException; +import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Stream; +import org.junit.jupiter.api.Assumptions; +import org.junit.jupiter.api.DynamicTest; +import org.junit.jupiter.api.TestFactory; + +final class PythonParityTest { + private static final double MODEL_TOLERANCE = 0.0; + private static final double SOLVE_TOLERANCE = 1.0e-4; + private static ProcessResult pythonProbe; + + @TestFactory + Stream pythonAndJavaBindingsMatch() { + return cases().stream() + .map( + testCase -> + DynamicTest.dynamicTest(testCase.name, () -> assertMatchesPython(testCase))); + } + + private static void assertMatchesPython(CaseSpec testCase) + throws IOException, InterruptedException, URISyntaxException { + assumeNativeLibrary(); + assumeCudaDriverAvailable(); + assumePythonCuOptAvailable(); + + PythonResult pythonResult = runPython(testCase); + try (DataModel model = testCase.createDataModel()) { + assertModelMatchesPython(testCase, model, pythonResult); + + try (SolverSettings settings = createSettings(testCase); + Solution solution = model.solve(settings)) { + JavaResult javaResult = JavaResult.from(solution); + assertSolutionMatchesPython(testCase, javaResult, pythonResult); + } + } + } + + private static void assertModelMatchesPython( + CaseSpec testCase, DataModel javaModel, PythonResult pythonResult) { + assertEquals( + javaModel.getNumVariables(), + pythonResult.intValue("model.num_variables"), + testCase.name + " num variables"); + assertEquals( + javaModel.getNumConstraints(), + pythonResult.intValue("model.num_constraints"), + testCase.name + " num constraints"); + assertEquals( + javaModel.getNumNonZeros(), + pythonResult.intValue("model.num_nonzeros"), + testCase.name + " num nonzeros"); + assertEquals( + javaModel.getObjectiveSense().nativeValue(), + pythonResult.intValue("model.objective_sense"), + testCase.name + " objective sense"); + assertEquals( + javaModel.getObjectiveOffset(), + pythonResult.doubleValue("model.objective_offset"), + MODEL_TOLERANCE, + testCase.name + " objective offset"); + assertEquals( + javaModel.getObjectiveScalingFactor(), + pythonResult.doubleValue("model.objective_scaling_factor"), + MODEL_TOLERANCE, + testCase.name + " objective scaling factor"); + assertDoubleArrayEquals( + testCase.name + " objective coefficients", + javaModel.getObjectiveCoefficients(), + pythonResult.doubleArray("model.objective_coefficients"), + MODEL_TOLERANCE); + + CsrMatrix matrix = javaModel.getConstraintMatrix(); + assertDoubleArrayEquals( + testCase.name + " CSR values", + matrix.getValues(), + pythonResult.doubleArray("model.csr_values"), + MODEL_TOLERANCE); + assertArrayEquals( + matrix.getColumnIndices(), + pythonResult.intArray("model.csr_column_indices"), + testCase.name + " CSR column indices"); + assertArrayEquals( + matrix.getRowOffsets(), + pythonResult.intArray("model.csr_row_offsets"), + testCase.name + " CSR row offsets"); + + assertDoubleArrayEquals( + testCase.name + " variable lower bounds", + javaModel.getVariableLowerBounds(), + pythonResult.doubleArray("model.variable_lower_bounds"), + MODEL_TOLERANCE); + assertDoubleArrayEquals( + testCase.name + " variable upper bounds", + javaModel.getVariableUpperBounds(), + pythonResult.doubleArray("model.variable_upper_bounds"), + MODEL_TOLERANCE); + assertEquals( + byteArrayAsCsv(javaModel.getVariableTypes()), + pythonResult.stringValue("model.variable_types"), + testCase.name + " variable types"); + assertEquals( + stringArrayAsCsv(javaModel.getVariableNames()), + pythonResult.stringValue("model.variable_names"), + testCase.name + " variable names"); + assertEquals( + stringArrayAsCsv(javaModel.getRowNames()), + pythonResult.stringValue("model.row_names"), + testCase.name + " row names"); + assertEquals( + javaModel.getObjectiveName(), + pythonResult.stringValue("model.objective_name"), + testCase.name + " objective name"); + assertEquals( + javaModel.getProblemName(), + pythonResult.stringValue("model.problem_name"), + testCase.name + " problem name"); + + if (testCase.hasQuadraticObjective()) { + assertDoubleArrayEquals( + testCase.name + " quadratic objective values", + javaModel.getQuadraticObjectiveValues(), + pythonResult.doubleArray("model.quadratic_objective_values"), + MODEL_TOLERANCE); + assertArrayEquals( + javaModel.getQuadraticObjectiveIndices(), + pythonResult.intArray("model.quadratic_objective_column_indices"), + testCase.name + " quadratic objective column indices"); + assertArrayEquals( + javaModel.getQuadraticObjectiveOffsets(), + pythonResult.intArray("model.quadratic_objective_row_offsets"), + testCase.name + " quadratic objective row offsets"); + } + + List quadraticConstraints = javaModel.getQuadraticConstraints(); + assertEquals( + quadraticConstraints.size(), + pythonResult.intValue("model.quadratic_constraint_count"), + testCase.name + " quadratic constraint count"); + for (int i = 0; i < quadraticConstraints.size(); i++) { + QuadraticConstraint constraint = quadraticConstraints.get(i); + String prefix = "model.quadratic_constraint." + i; + assertEquals( + constraint.getRowIndex(), + pythonResult.intValue(prefix + ".row_index"), + testCase.name + " quadratic constraint row index"); + assertEquals( + constraint.getRowName(), + pythonResult.stringValue(prefix + ".row_name"), + testCase.name + " quadratic constraint row name"); + assertEquals( + (char) constraint.getSense().nativeValue(), + pythonResult.stringValue(prefix + ".sense").charAt(0), + testCase.name + " quadratic constraint sense"); + assertDoubleArrayEquals( + testCase.name + " quadratic constraint linear values", + constraint.getLinearValues(), + pythonResult.doubleArray(prefix + ".linear_values"), + MODEL_TOLERANCE); + assertArrayEquals( + constraint.getLinearIndices(), + pythonResult.intArray(prefix + ".linear_indices"), + testCase.name + " quadratic constraint linear indices"); + assertDoubleEquals( + testCase.name + " quadratic constraint rhs", + constraint.getRHS(), + pythonResult.doubleValue(prefix + ".rhs"), + MODEL_TOLERANCE); + assertArrayEquals( + constraint.getRows(), + pythonResult.intArray(prefix + ".rows"), + testCase.name + " quadratic constraint rows"); + assertArrayEquals( + constraint.getColumns(), + pythonResult.intArray(prefix + ".columns"), + testCase.name + " quadratic constraint columns"); + assertDoubleArrayEquals( + testCase.name + " quadratic constraint values", + constraint.getValues(), + pythonResult.doubleArray(prefix + ".values"), + MODEL_TOLERANCE); + } + + if (testCase.isRanged()) { + assertDoubleArrayEquals( + testCase.name + " constraint lower bounds", + javaModel.getConstraintLowerBounds(), + pythonResult.doubleArray("model.constraint_lower_bounds"), + MODEL_TOLERANCE); + assertDoubleArrayEquals( + testCase.name + " constraint upper bounds", + javaModel.getConstraintUpperBounds(), + pythonResult.doubleArray("model.constraint_upper_bounds"), + MODEL_TOLERANCE); + } else { + assertDoubleArrayEquals( + testCase.name + " rhs", + javaModel.getConstraintRhs(), + pythonResult.doubleArray("model.rhs"), + MODEL_TOLERANCE); + assertEquals( + byteArrayAsCsv(javaModel.getConstraintSense()), + pythonResult.stringValue("model.constraint_sense"), + testCase.name + " constraint sense"); + } + } + + private static void assertSolutionMatchesPython( + CaseSpec testCase, JavaResult javaResult, PythonResult pythonResult) { + assertEquals( + javaResult.isMip, + pythonResult.booleanValue("solution.is_mip"), + testCase.name + " solution category"); + assertEquals( + javaResult.status.nativeValue(), + pythonResult.intValue("solution.status"), + testCase.name + " termination status"); + assertEquals( + javaResult.errorStatus, + pythonResult.intValue("solution.error_status"), + testCase.name + " error status"); + assertEquals( + javaResult.errorMessage, + pythonResult.stringValue("solution.error_message"), + testCase.name + " error message"); + assertNonNegativeIfAvailable(testCase.name + " Java solve time", javaResult.solveTime); + assertNonNegativeIfAvailable( + testCase.name + " Python solve time", pythonResult.doubleValue("solution.solve_time")); + assertEquals( + javaResult.dualUnavailable, + pythonResult.booleanValue("solution.dual_unavailable"), + testCase.name + " dual availability"); + assertEquals( + javaResult.dualObjectiveUnavailable, + pythonResult.booleanValue("solution.dual_objective_unavailable"), + testCase.name + " dual objective availability"); + assertEquals( + javaResult.reducedCostUnavailable, + pythonResult.booleanValue("solution.reduced_cost_unavailable"), + testCase.name + " reduced-cost availability"); + assertEquals( + javaResult.lpStatsUnavailable, + pythonResult.booleanValue("solution.lp_stats_unavailable"), + testCase.name + " LP stats availability"); + assertEquals( + javaResult.mipStatsUnavailable, + pythonResult.booleanValue("solution.mip_stats_unavailable"), + testCase.name + " MIP stats availability"); + + if (!testCase.expectSolutionValues) { + return; + } + + assertDoubleArrayEquals( + testCase.name + " primal solution", + javaResult.primal, + pythonResult.doubleArray("solution.primal"), + testCase.solutionTolerance); + assertDoubleEquals( + testCase.name + " objective", + javaResult.objective, + pythonResult.doubleValue("solution.objective"), + testCase.solutionTolerance); + + if (!javaResult.dualUnavailable) { + assertDoubleArrayEquals( + testCase.name + " dual solution", + javaResult.dual, + pythonResult.doubleArray("solution.dual"), + testCase.solutionTolerance); + } + if (!javaResult.dualObjectiveUnavailable) { + assertDoubleEquals( + testCase.name + " dual objective", + javaResult.dualObjective, + pythonResult.doubleValue("solution.dual_objective"), + testCase.solutionTolerance); + } + if (!javaResult.reducedCostUnavailable) { + assertDoubleArrayEquals( + testCase.name + " reduced cost", + javaResult.reducedCost, + pythonResult.doubleArray("solution.reduced_cost"), + testCase.solutionTolerance); + } + if (!javaResult.lpStatsUnavailable) { + assertDoubleEquals( + testCase.name + " LP primal residual", + javaResult.lpPrimalResidual, + pythonResult.doubleValue("solution.lp_primal_residual"), + testCase.solutionTolerance); + assertDoubleEquals( + testCase.name + " LP dual residual", + javaResult.lpDualResidual, + pythonResult.doubleValue("solution.lp_dual_residual"), + testCase.solutionTolerance); + assertDoubleEquals( + testCase.name + " LP gap", + javaResult.lpGap, + pythonResult.doubleValue("solution.lp_gap"), + testCase.solutionTolerance); + assertEquals( + javaResult.lpIterations, + pythonResult.intValue("solution.lp_iterations"), + testCase.name + " LP iterations"); + assertEquals( + javaResult.lpSolvedBy, + pythonResult.intValue("solution.solved_by"), + testCase.name + " LP solved-by method"); + } + if (!javaResult.mipStatsUnavailable) { + assertDoubleEquals( + testCase.name + " MIP gap", + javaResult.mipGap, + pythonResult.doubleValue("solution.mip_gap"), + testCase.solutionTolerance); + assertDoubleEquals( + testCase.name + " solution bound", + javaResult.solutionBound, + pythonResult.doubleValue("solution.solution_bound"), + testCase.solutionTolerance); + assertNonNegativeIfAvailable( + testCase.name + " Java MIP presolve time", javaResult.mipPresolveTime); + assertNonNegativeIfAvailable( + testCase.name + " Python MIP presolve time", + pythonResult.doubleValue("solution.mip_presolve_time")); + assertDoubleEquals( + testCase.name + " max constraint violation", + javaResult.maxConstraintViolation, + pythonResult.doubleValue("solution.max_constraint_violation"), + testCase.solutionTolerance); + assertDoubleEquals( + testCase.name + " max integer violation", + javaResult.maxIntViolation, + pythonResult.doubleValue("solution.max_int_violation"), + testCase.solutionTolerance); + assertDoubleEquals( + testCase.name + " max variable bound violation", + javaResult.maxVariableBoundViolation, + pythonResult.doubleValue("solution.max_variable_bound_violation"), + testCase.solutionTolerance); + assertEquals( + javaResult.numNodes, + pythonResult.intValue("solution.num_nodes"), + testCase.name + " MIP node count"); + assertEquals( + javaResult.numSimplexIterations, + pythonResult.intValue("solution.num_simplex_iterations"), + testCase.name + " MIP simplex iterations"); + } + } + + private static SolverSettings createSettings(CaseSpec testCase) { + SolverSettings settings = new SolverSettings(); + settings.setParameter(CuOptConstants.CUOPT_LOG_TO_CONSOLE, false); + settings.setParameter(CuOptConstants.CUOPT_TIME_LIMIT, 30.0); + settings.setParameter(CuOptConstants.CUOPT_RANDOM_SEED, 1); + if (testCase.hasIntegerVariables()) { + settings.setParameter( + CuOptConstants.CUOPT_MIP_DETERMINISM_MODE, CuOptConstants.CUOPT_MODE_DETERMINISTIC); + settings.setParameter(CuOptConstants.CUOPT_MIP_ABSOLUTE_GAP, 1.0e-8); + settings.setParameter(CuOptConstants.CUOPT_MIP_RELATIVE_GAP, 1.0e-8); + } else if (testCase.hasQuadraticObjective()) { + settings.setParameter(CuOptConstants.CUOPT_ITERATION_LIMIT, 50); + } else { + settings.setMethod(SolverMethod.PDLP); + settings.setPdlpSolverMode(PDLPSolverMode.STABLE1); + settings.setParameter(CuOptConstants.CUOPT_ABSOLUTE_PRIMAL_TOLERANCE, 1.0e-7); + settings.setParameter(CuOptConstants.CUOPT_RELATIVE_PRIMAL_TOLERANCE, 1.0e-7); + settings.setParameter(CuOptConstants.CUOPT_ABSOLUTE_DUAL_TOLERANCE, 1.0e-7); + settings.setParameter(CuOptConstants.CUOPT_RELATIVE_DUAL_TOLERANCE, 1.0e-7); + settings.setParameter(CuOptConstants.CUOPT_ABSOLUTE_GAP_TOLERANCE, 1.0e-7); + settings.setParameter(CuOptConstants.CUOPT_RELATIVE_GAP_TOLERANCE, 1.0e-7); + } + return settings; + } + + private static PythonResult runPython(CaseSpec testCase) + throws IOException, InterruptedException, URISyntaxException { + Path caseFile = Files.createTempFile("cuopt-java-python-parity-", ".json"); + try { + Files.writeString(caseFile, testCase.toJson(), StandardCharsets.UTF_8); + ProcessResult result = + runPythonProcess(List.of(pythonHelperPath().toString(), caseFile.toString())); + assertEquals(0, result.exitCode, "Python oracle failed:\n" + result.output); + return new PythonResult(result.output); + } finally { + Files.deleteIfExists(caseFile); + } + } + + private static void assumeNativeLibrary() { + String nativeDir = System.getProperty("cuopt.native.dir"); + Assumptions.assumeTrue(nativeDir != null && !nativeDir.isBlank(), "cuopt.native.dir is unset"); + Assumptions.assumeTrue( + Files.exists(Path.of(nativeDir, System.mapLibraryName("cuopt_jni"))), + "libcuopt_jni is not built"); + } + + private static void assumeCudaDriverAvailable() { + try { + Process process = new ProcessBuilder("nvidia-smi").redirectErrorStream(true).start(); + boolean exited = process.waitFor() == 0; + Assumptions.assumeTrue(exited, "CUDA driver is unavailable"); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + Assumptions.assumeTrue(false, "CUDA driver check was interrupted"); + } catch (Exception e) { + Assumptions.assumeTrue(false, "CUDA driver check failed: " + e.getMessage()); + } + } + + private static void assumePythonCuOptAvailable() + throws IOException, InterruptedException, URISyntaxException { + if (pythonProbe == null) { + pythonProbe = runPythonProcess(List.of(pythonHelperPath().toString(), "--probe")); + } + Assumptions.assumeTrue( + pythonProbe.exitCode == 0, "Python cuOpt import failed:\n" + pythonProbe.output); + } + + private static ProcessResult runPythonProcess(List arguments) + throws IOException, InterruptedException { + List command = new ArrayList<>(); + command.add(pythonExecutable()); + command.addAll(arguments); + ProcessBuilder builder = new ProcessBuilder(command); + builder.redirectErrorStream(true); + builder.environment().put("CUOPT_EXTRA_TIMESTAMPS", "false"); + Process process = builder.start(); + String output = new String(process.getInputStream().readAllBytes(), StandardCharsets.UTF_8); + int exitCode = process.waitFor(); + return new ProcessResult(exitCode, output); + } + + private static String pythonExecutable() { + String property = System.getProperty("cuopt.python"); + if (property != null && !property.isBlank()) { + return property; + } + String environment = System.getenv("PYTHON"); + if (environment != null && !environment.isBlank()) { + return environment; + } + return "python3"; + } + + private static Path pythonHelperPath() throws URISyntaxException { + URL resource = PythonParityTest.class.getResource("/python_binding_parity.py"); + assertNotNull(resource, "python_binding_parity.py test resource is missing"); + return Path.of(resource.toURI()); + } + + private static void assertDoubleArrayEquals( + String message, double[] actual, double[] expected, double tolerance) { + assertEquals(expected.length, actual.length, message + " length"); + for (int i = 0; i < expected.length; i++) { + assertDoubleEquals(message + "[" + i + "]", actual[i], expected[i], tolerance); + } + } + + private static void assertDoubleEquals( + String message, double actual, double expected, double tolerance) { + if (Double.isNaN(actual) || Double.isNaN(expected)) { + assertTrue( + Double.isNaN(actual) && Double.isNaN(expected), + message + " expected both values to be NaN, actual=" + actual + ", expected=" + expected); + return; + } + if (Double.isInfinite(actual) || Double.isInfinite(expected)) { + assertTrue( + Double.compare(actual, expected) == 0, + message + " expected matching infinities, actual=" + actual + ", expected=" + expected); + return; + } + assertEquals(expected, actual, tolerance, message); + } + + private static void assertNonNegativeIfAvailable(String message, double value) { + assertTrue( + Double.isNaN(value) || value >= 0.0, + message + " should be NaN when unavailable or non-negative when available"); + } + + private static String byteArrayAsCsv(byte[] values) { + StringBuilder builder = new StringBuilder(); + for (int i = 0; i < values.length; i++) { + if (i > 0) { + builder.append(','); + } + builder.append((char) values[i]); + } + return builder.toString(); + } + + private static String stringArrayAsCsv(String[] values) { + return String.join(",", values); + } + + private static List cases() { + return List.of( + new CaseSpec( + "lp_min_ge_unique_solution", + 1, + 2, + ObjectiveSense.MINIMIZE, + 0.25, + new double[] {1.0, 2.0}, + new int[] {0, 2}, + new int[] {0, 1}, + new double[] {1.0, 1.0}, + new byte[] {(byte) 'G'}, + new double[] {3.0}, + null, + null, + new double[] {0.0, 0.0}, + new double[] {10.0, 10.0}, + new byte[] {(byte) 'C', (byte) 'C'}, + true, + SOLVE_TOLERANCE), + new CaseSpec( + "lp_max_le_unique_solution", + 3, + 2, + ObjectiveSense.MAXIMIZE, + -1.0, + new double[] {3.0, 2.0}, + new int[] {0, 2, 3, 4}, + new int[] {0, 1, 0, 1}, + new double[] {1.0, 1.0, 1.0, 1.0}, + new byte[] {(byte) 'L', (byte) 'L', (byte) 'L'}, + new double[] {4.0, 2.0, 3.0}, + null, + null, + new double[] {0.0, 0.0}, + new double[] {10.0, 10.0}, + new byte[] {(byte) 'C', (byte) 'C'}, + true, + SOLVE_TOLERANCE), + new CaseSpec( + "lp_equal_with_offset", + 1, + 2, + ObjectiveSense.MINIMIZE, + 7.0, + new double[] {0.0, 1.0}, + new int[] {0, 2}, + new int[] {0, 1}, + new double[] {1.0, 1.0}, + new byte[] {(byte) 'E'}, + new double[] {5.0}, + null, + null, + new double[] {0.0, 0.0}, + new double[] {5.0, 5.0}, + new byte[] {(byte) 'C', (byte) 'C'}, + true, + SOLVE_TOLERANCE), + new CaseSpec( + "lp_ranged_bounds", + 2, + 2, + ObjectiveSense.MINIMIZE, + 0.0, + new double[] {0.2, 1.0}, + new int[] {0, 2, 4}, + new int[] {0, 1, 0, 1}, + new double[] {1.0, 1.0, 2.0, 1.0}, + null, + null, + new double[] {1.0, 2.0}, + new double[] {3.0, 4.0}, + new double[] {0.0, 0.0}, + new double[] {10.0, 10.0}, + new byte[] {(byte) 'C', (byte) 'C'}, + true, + SOLVE_TOLERANCE), + new CaseSpec( + "lp_mixed_bounds_negative_coefficients", + 1, + 2, + ObjectiveSense.MINIMIZE, + -2.0, + new double[] {-1.0, 2.0}, + new int[] {0, 2}, + new int[] {0, 1}, + new double[] {1.0, 1.0}, + new byte[] {(byte) 'E'}, + new double[] {1.0}, + null, + null, + new double[] {-2.0, -1.0}, + new double[] {2.0, 3.0}, + new byte[] {(byte) 'C', (byte) 'C'}, + true, + SOLVE_TOLERANCE), + new CaseSpec( + "lp_max_ranged_bounds", + 1, + 2, + ObjectiveSense.MAXIMIZE, + 0.0, + new double[] {2.0, 1.0}, + new int[] {0, 2}, + new int[] {0, 1}, + new double[] {1.0, 1.0}, + null, + null, + new double[] {0.0}, + new double[] {3.0}, + new double[] {0.0, 0.0}, + new double[] {2.0, 2.0}, + new byte[] {(byte) 'C', (byte) 'C'}, + true, + SOLVE_TOLERANCE), + new CaseSpec( + "milp_integer_unique_solution", + 1, + 2, + ObjectiveSense.MINIMIZE, + 0.0, + new double[] {1.0, 2.0}, + new int[] {0, 2}, + new int[] {0, 1}, + new double[] {1.0, 1.0}, + new byte[] {(byte) 'G'}, + new double[] {2.5}, + null, + null, + new double[] {0.0, 0.0}, + new double[] {10.0, 10.0}, + new byte[] {(byte) 'I', (byte) 'I'}, + true, + SOLVE_TOLERANCE), + new CaseSpec( + "milp_mixed_integer_continuous_max", + 1, + 2, + ObjectiveSense.MAXIMIZE, + 0.0, + new double[] {5.0, 1.0}, + new int[] {0, 2}, + new int[] {0, 1}, + new double[] {1.0, 1.0}, + new byte[] {(byte) 'L'}, + new double[] {2.5}, + null, + null, + new double[] {0.0, 0.0}, + new double[] {3.0, 10.0}, + new byte[] {(byte) 'I', (byte) 'C'}, + true, + SOLVE_TOLERANCE), + new CaseSpec( + "qp_diagonal_objective", + 1, + 2, + ObjectiveSense.MINIMIZE, + 0.0, + new double[] {-8.0, -16.0}, + new int[] {0, 2}, + new int[] {0, 1}, + new double[] {1.0, 1.0}, + null, + null, + new double[] {5.0}, + new double[] {1.0e20}, + new double[] {0.0, 0.0}, + new double[] {10.0, 10.0}, + new byte[] {(byte) 'C', (byte) 'C'}, + true, + 1.0e-3) + .withQuadraticObjective( + new int[] {0, 1, 2}, new int[] {0, 1}, new double[] {1.0, 4.0}) + .withMetadata( + 2.0, + new String[] {"x0", "long_variable_1"}, + new String[] {"constraint_0"}, + "qp_objective", + "qp_model") + .withQuadraticConstraint( + "qc0", + (byte) 'L', + 100.0, + new double[] {1.0}, + new int[] {0}, + new double[] {1.0}, + new int[] {0}, + new int[] {0}), + new CaseSpec( + "lp_infeasible_status", + 2, + 1, + ObjectiveSense.MINIMIZE, + 0.0, + new double[] {1.0}, + new int[] {0, 1, 2}, + new int[] {0, 0}, + new double[] {1.0, 1.0}, + new byte[] {(byte) 'G', (byte) 'L'}, + new double[] {1.0, 0.0}, + null, + null, + new double[] {0.0}, + new double[] {10.0}, + new byte[] {(byte) 'C'}, + false, + SOLVE_TOLERANCE)); + } + + private static final class CaseSpec { + private final String name; + private final int numConstraints; + private final int numVariables; + private final ObjectiveSense objectiveSense; + private final double objectiveOffset; + private final double[] objectiveCoefficients; + private final int[] rowOffsets; + private final int[] columnIndices; + private final double[] values; + private final byte[] constraintSense; + private final double[] rhs; + private final double[] constraintLowerBounds; + private final double[] constraintUpperBounds; + private final double[] variableLowerBounds; + private final double[] variableUpperBounds; + private final byte[] variableTypes; + private final boolean expectSolutionValues; + private final double solutionTolerance; + private double objectiveScalingFactor = 1.0; + private String[] variableNames = new String[0]; + private String[] rowNames = new String[0]; + private String objectiveName = ""; + private String problemName = ""; + private String quadraticConstraintName; + private byte quadraticConstraintSense; + private double quadraticConstraintRhs; + private double[] quadraticConstraintLinearValues; + private int[] quadraticConstraintLinearIndices; + private double[] quadraticConstraintValues; + private int[] quadraticConstraintRows; + private int[] quadraticConstraintColumns; + private int[] quadraticObjectiveRowOffsets; + private int[] quadraticObjectiveColumnIndices; + private double[] quadraticObjectiveValues; + + private CaseSpec( + String name, + int numConstraints, + int numVariables, + ObjectiveSense objectiveSense, + double objectiveOffset, + double[] objectiveCoefficients, + int[] rowOffsets, + int[] columnIndices, + double[] values, + byte[] constraintSense, + double[] rhs, + double[] constraintLowerBounds, + double[] constraintUpperBounds, + double[] variableLowerBounds, + double[] variableUpperBounds, + byte[] variableTypes, + boolean expectSolutionValues, + double solutionTolerance) { + this.name = name; + this.numConstraints = numConstraints; + this.numVariables = numVariables; + this.objectiveSense = objectiveSense; + this.objectiveOffset = objectiveOffset; + this.objectiveCoefficients = + Arrays.copyOf(objectiveCoefficients, objectiveCoefficients.length); + this.rowOffsets = Arrays.copyOf(rowOffsets, rowOffsets.length); + this.columnIndices = Arrays.copyOf(columnIndices, columnIndices.length); + this.values = Arrays.copyOf(values, values.length); + this.constraintSense = + constraintSense == null ? null : Arrays.copyOf(constraintSense, constraintSense.length); + this.rhs = rhs == null ? null : Arrays.copyOf(rhs, rhs.length); + this.constraintLowerBounds = + constraintLowerBounds == null + ? null + : Arrays.copyOf(constraintLowerBounds, constraintLowerBounds.length); + this.constraintUpperBounds = + constraintUpperBounds == null + ? null + : Arrays.copyOf(constraintUpperBounds, constraintUpperBounds.length); + this.variableLowerBounds = Arrays.copyOf(variableLowerBounds, variableLowerBounds.length); + this.variableUpperBounds = Arrays.copyOf(variableUpperBounds, variableUpperBounds.length); + this.variableTypes = Arrays.copyOf(variableTypes, variableTypes.length); + this.expectSolutionValues = expectSolutionValues; + this.solutionTolerance = solutionTolerance; + } + + private DataModel createDataModel() { + CsrMatrix matrix = new CsrMatrix(rowOffsets, columnIndices, values); + DataModel model; + if (isRanged()) { + model = + DataModel.createRangedProblem( + numConstraints, + numVariables, + objectiveSense, + objectiveOffset, + objectiveCoefficients, + matrix, + constraintLowerBounds, + constraintUpperBounds, + variableLowerBounds, + variableUpperBounds, + variableTypes); + } else { + model = + DataModel.createProblem( + numConstraints, + numVariables, + objectiveSense, + objectiveOffset, + objectiveCoefficients, + matrix, + constraintSense, + rhs, + variableLowerBounds, + variableUpperBounds, + variableTypes); + } + if (hasQuadraticObjective()) { + model.setQuadraticObjectiveMatrix( + quadraticObjectiveValues, + quadraticObjectiveColumnIndices, + quadraticObjectiveRowOffsets); + } + model + .setObjectiveScalingFactor(objectiveScalingFactor) + .setVariableNames(variableNames) + .setRowNames(rowNames) + .setObjectiveName(objectiveName) + .setProblemName(problemName); + if (hasQuadraticConstraint()) { + model.addQuadraticConstraint( + quadraticConstraintName, + quadraticConstraintLinearValues, + quadraticConstraintLinearIndices, + quadraticConstraintRhs, + quadraticConstraintValues, + quadraticConstraintRows, + quadraticConstraintColumns, + ConstraintSense.fromNative(quadraticConstraintSense)); + } + return model; + } + + private boolean isRanged() { + return constraintLowerBounds != null; + } + + private boolean hasQuadraticObjective() { + return quadraticObjectiveValues != null; + } + + private boolean hasQuadraticConstraint() { + return quadraticConstraintValues != null; + } + + private boolean hasIntegerVariables() { + for (byte type : variableTypes) { + if (type == (byte) 'I' || type == (byte) 'S') { + return true; + } + } + return false; + } + + private CaseSpec withQuadraticObjective( + int[] rowOffsets, int[] columnIndices, double[] values) { + this.quadraticObjectiveRowOffsets = Arrays.copyOf(rowOffsets, rowOffsets.length); + this.quadraticObjectiveColumnIndices = Arrays.copyOf(columnIndices, columnIndices.length); + this.quadraticObjectiveValues = Arrays.copyOf(values, values.length); + return this; + } + + private CaseSpec withMetadata( + double scalingFactor, + String[] variableNames, + String[] rowNames, + String objectiveName, + String problemName) { + this.objectiveScalingFactor = scalingFactor; + this.variableNames = Arrays.copyOf(variableNames, variableNames.length); + this.rowNames = Arrays.copyOf(rowNames, rowNames.length); + this.objectiveName = objectiveName; + this.problemName = problemName; + return this; + } + + private CaseSpec withQuadraticConstraint( + String name, + byte sense, + double rhs, + double[] linearValues, + int[] linearIndices, + double[] values, + int[] rows, + int[] columns) { + this.quadraticConstraintName = name; + this.quadraticConstraintSense = sense; + this.quadraticConstraintRhs = rhs; + this.quadraticConstraintLinearValues = Arrays.copyOf(linearValues, linearValues.length); + this.quadraticConstraintLinearIndices = Arrays.copyOf(linearIndices, linearIndices.length); + this.quadraticConstraintValues = Arrays.copyOf(values, values.length); + this.quadraticConstraintRows = Arrays.copyOf(rows, rows.length); + this.quadraticConstraintColumns = Arrays.copyOf(columns, columns.length); + return this; + } + + private QuadraticExpression createQuadraticObjective() { + Problem shell = new Problem(); + Variable[] variables = new Variable[numVariables]; + for (int i = 0; i < numVariables; i++) { + variables[i] = shell.addVariable(); + } + + QuadraticExpression expression = new QuadraticExpression(); + for (int row = 0; row < quadraticObjectiveRowOffsets.length - 1; row++) { + for (int offset = quadraticObjectiveRowOffsets[row]; + offset < quadraticObjectiveRowOffsets[row + 1]; + offset++) { + expression = + expression.plus( + variables[row], + variables[quadraticObjectiveColumnIndices[offset]], + quadraticObjectiveValues[offset]); + } + } + return expression; + } + + private String toJson() { + StringBuilder builder = new StringBuilder(); + builder.append('{'); + appendField(builder, "name", name); + appendField(builder, "num_constraints", numConstraints); + appendField(builder, "num_variables", numVariables); + appendField(builder, "objective_sense", objectiveSense.nativeValue()); + appendField(builder, "objective_offset", objectiveOffset); + appendField(builder, "objective_scaling_factor", objectiveScalingFactor); + appendField(builder, "objective_coefficients", objectiveCoefficients); + appendField(builder, "csr_row_offsets", rowOffsets); + appendField(builder, "csr_column_indices", columnIndices); + appendField(builder, "csr_values", values); + if (hasQuadraticObjective()) { + appendField(builder, "quadratic_objective_row_offsets", quadraticObjectiveRowOffsets); + appendField(builder, "quadratic_objective_column_indices", quadraticObjectiveColumnIndices); + appendField(builder, "quadratic_objective_values", quadraticObjectiveValues); + } + if (hasQuadraticConstraint()) { + appendField(builder, "quadratic_constraint_name", quadraticConstraintName); + appendField(builder, "quadratic_constraint_sense", String.valueOf((char) quadraticConstraintSense)); + appendField(builder, "quadratic_constraint_rhs", quadraticConstraintRhs); + appendField(builder, "quadratic_constraint_linear_values", quadraticConstraintLinearValues); + appendField(builder, "quadratic_constraint_linear_indices", quadraticConstraintLinearIndices); + appendField(builder, "quadratic_constraint_values", quadraticConstraintValues); + appendField(builder, "quadratic_constraint_rows", quadraticConstraintRows); + appendField(builder, "quadratic_constraint_columns", quadraticConstraintColumns); + } + if (isRanged()) { + appendField(builder, "constraint_lower_bounds", constraintLowerBounds); + appendField(builder, "constraint_upper_bounds", constraintUpperBounds); + } else { + appendField(builder, "constraint_sense", constraintSense); + appendField(builder, "rhs", rhs); + } + appendField(builder, "variable_lower_bounds", variableLowerBounds); + appendField(builder, "variable_upper_bounds", variableUpperBounds); + appendField(builder, "variable_types", variableTypes); + if (variableNames.length > 0) { + appendField(builder, "variable_names", variableNames); + } + if (rowNames.length > 0) { + appendField(builder, "row_names", rowNames); + } + if (!objectiveName.isEmpty()) { + appendField(builder, "objective_name", objectiveName); + } + if (!problemName.isEmpty()) { + appendField(builder, "problem_name", problemName); + } + builder.append('}'); + return builder.toString(); + } + } + + private static final class JavaResult { + private final boolean isMip; + private final TerminationStatus status; + private final int errorStatus; + private final String errorMessage; + private final double solveTime; + private final double objective; + private final double dualObjective; + private final double[] primal; + private final double[] dual; + private final double[] reducedCost; + private final boolean dualUnavailable; + private final boolean dualObjectiveUnavailable; + private final boolean reducedCostUnavailable; + private final boolean lpStatsUnavailable; + private final boolean mipStatsUnavailable; + private final double lpPrimalResidual; + private final double lpDualResidual; + private final double lpGap; + private final int lpIterations; + private final int lpSolvedBy; + private final double mipGap; + private final double solutionBound; + private final double mipPresolveTime; + private final double maxConstraintViolation; + private final double maxIntViolation; + private final double maxVariableBoundViolation; + private final int numNodes; + private final int numSimplexIterations; + + private JavaResult( + boolean isMip, + TerminationStatus status, + int errorStatus, + String errorMessage, + double solveTime, + double objective, + double dualObjective, + double[] primal, + double[] dual, + double[] reducedCost, + boolean dualUnavailable, + boolean dualObjectiveUnavailable, + boolean reducedCostUnavailable, + boolean lpStatsUnavailable, + boolean mipStatsUnavailable, + double lpPrimalResidual, + double lpDualResidual, + double lpGap, + int lpIterations, + int lpSolvedBy, + double mipGap, + double solutionBound, + double mipPresolveTime, + double maxConstraintViolation, + double maxIntViolation, + double maxVariableBoundViolation, + int numNodes, + int numSimplexIterations) { + this.isMip = isMip; + this.status = status; + this.errorStatus = errorStatus; + this.errorMessage = errorMessage; + this.solveTime = solveTime; + this.objective = objective; + this.dualObjective = dualObjective; + this.primal = Arrays.copyOf(primal, primal.length); + this.dual = Arrays.copyOf(dual, dual.length); + this.reducedCost = Arrays.copyOf(reducedCost, reducedCost.length); + this.dualUnavailable = dualUnavailable; + this.dualObjectiveUnavailable = dualObjectiveUnavailable; + this.reducedCostUnavailable = reducedCostUnavailable; + this.lpStatsUnavailable = lpStatsUnavailable; + this.mipStatsUnavailable = mipStatsUnavailable; + this.lpPrimalResidual = lpPrimalResidual; + this.lpDualResidual = lpDualResidual; + this.lpGap = lpGap; + this.lpIterations = lpIterations; + this.lpSolvedBy = lpSolvedBy; + this.mipGap = mipGap; + this.solutionBound = solutionBound; + this.mipPresolveTime = mipPresolveTime; + this.maxConstraintViolation = maxConstraintViolation; + this.maxIntViolation = maxIntViolation; + this.maxVariableBoundViolation = maxVariableBoundViolation; + this.numNodes = numNodes; + this.numSimplexIterations = numSimplexIterations; + } + + private static JavaResult from(Solution solution) { + boolean dualUnavailable = false; + boolean dualObjectiveUnavailable = false; + boolean reducedCostUnavailable = false; + boolean lpStatsUnavailable = false; + boolean mipStatsUnavailable = false; + double[] dual = new double[0]; + double[] reducedCost = new double[0]; + double dualObjective = 0.0; + double lpPrimalResidual = 0.0; + double lpDualResidual = 0.0; + double lpGap = 0.0; + int lpIterations = 0; + int lpSolvedBy = SolverMethod.UNSET.nativeValue(); + double mipGap = 0.0; + double solutionBound = 0.0; + double mipPresolveTime = 0.0; + double maxConstraintViolation = 0.0; + double maxIntViolation = 0.0; + double maxVariableBoundViolation = 0.0; + int numNodes = 0; + int numSimplexIterations = 0; + + try { + dual = solution.getDualSolution(); + } catch (IllegalStateException e) { + dualUnavailable = true; + } + try { + dualObjective = solution.getDualObjective(); + } catch (IllegalStateException e) { + dualObjectiveUnavailable = true; + } + try { + reducedCost = solution.getReducedCost(); + } catch (IllegalStateException e) { + reducedCostUnavailable = true; + } + try { + LPStats lpStats = solution.getLpStats(); + lpPrimalResidual = lpStats.getPrimalResidual(); + lpDualResidual = lpStats.getDualResidual(); + lpGap = lpStats.getGap(); + lpIterations = lpStats.getNumIterations(); + lpSolvedBy = lpStats.getSolvedBy().nativeValue(); + } catch (IllegalStateException e) { + lpStatsUnavailable = true; + } + try { + MIPStats mipStats = solution.getMipStats(); + mipGap = solution.getMipGap(); + solutionBound = solution.getSolutionBound(); + mipPresolveTime = mipStats.getPresolveTime(); + maxConstraintViolation = mipStats.getMaxConstraintViolation(); + maxIntViolation = mipStats.getMaxIntViolation(); + maxVariableBoundViolation = mipStats.getMaxVariableBoundViolation(); + numNodes = mipStats.getNumNodes(); + numSimplexIterations = mipStats.getNumSimplexIterations(); + } catch (IllegalStateException e) { + mipStatsUnavailable = true; + } + + if (solution.isMip()) { + assertThrows(IllegalStateException.class, solution::getDualSolution); + assertThrows(IllegalStateException.class, solution::getDualObjective); + assertThrows(IllegalStateException.class, solution::getReducedCost); + assertFalse(mipStatsUnavailable); + assertTrue(lpStatsUnavailable); + } else { + assertThrows(IllegalStateException.class, solution::getMipStats); + assertFalse(dualUnavailable); + assertFalse(reducedCostUnavailable); + assertFalse(lpStatsUnavailable); + assertTrue(mipStatsUnavailable); + } + + return new JavaResult( + solution.isMip(), + solution.getTerminationStatus(), + solution.getErrorStatus(), + solution.getErrorMessage(), + solution.getSolveTime(), + solution.getPrimalObjective(), + dualObjective, + solution.getPrimalSolution(), + dual, + reducedCost, + dualUnavailable, + dualObjectiveUnavailable, + reducedCostUnavailable, + lpStatsUnavailable, + mipStatsUnavailable, + lpPrimalResidual, + lpDualResidual, + lpGap, + lpIterations, + lpSolvedBy, + mipGap, + solutionBound, + mipPresolveTime, + maxConstraintViolation, + maxIntViolation, + maxVariableBoundViolation, + numNodes, + numSimplexIterations); + } + } + + private static final class PythonResult { + private final Map values = new LinkedHashMap<>(); + + private PythonResult(String output) { + for (String line : output.split("\\R")) { + if (!line.startsWith("CUOPT_COMPARE ")) { + continue; + } + String result = line.substring("CUOPT_COMPARE ".length()); + int equals = result.indexOf('='); + if (equals > 0) { + values.put(result.substring(0, equals), result.substring(equals + 1)); + } + } + } + + private String stringValue(String key) { + String value = values.get(key); + assertNotNull(value, "Python result is missing " + key); + return value; + } + + private int intValue(String key) { + return Integer.parseInt(stringValue(key)); + } + + private boolean booleanValue(String key) { + return Boolean.parseBoolean(stringValue(key)); + } + + private double doubleValue(String key) { + return parseDouble(stringValue(key)); + } + + private int[] intArray(String key) { + String value = stringValue(key); + if (value.isEmpty()) { + return new int[0]; + } + String[] parts = value.split(","); + int[] result = new int[parts.length]; + for (int i = 0; i < parts.length; i++) { + result[i] = Integer.parseInt(parts[i]); + } + return result; + } + + private double[] doubleArray(String key) { + String value = stringValue(key); + if (value.isEmpty()) { + return new double[0]; + } + String[] parts = value.split(","); + double[] result = new double[parts.length]; + for (int i = 0; i < parts.length; i++) { + result[i] = parseDouble(parts[i]); + } + return result; + } + + private static double parseDouble(String value) { + if ("nan".equalsIgnoreCase(value)) { + return Double.NaN; + } + if ("inf".equalsIgnoreCase(value) || "+inf".equalsIgnoreCase(value)) { + return Double.POSITIVE_INFINITY; + } + if ("-inf".equalsIgnoreCase(value)) { + return Double.NEGATIVE_INFINITY; + } + return Double.parseDouble(value); + } + } + + private static final class ProcessResult { + private final int exitCode; + private final String output; + + private ProcessResult(int exitCode, String output) { + this.exitCode = exitCode; + this.output = output; + } + } + + private static void appendField(StringBuilder builder, String name, String value) { + appendSeparator(builder); + builder.append('"').append(name).append("\":\""); + builder.append(value.replace("\\", "\\\\").replace("\"", "\\\"")); + builder.append('"'); + } + + private static void appendField(StringBuilder builder, String name, int value) { + appendSeparator(builder); + builder.append('"').append(name).append("\":").append(value); + } + + private static void appendField(StringBuilder builder, String name, double value) { + appendSeparator(builder); + builder.append('"').append(name).append("\":").append(Double.toString(value)); + } + + private static void appendField(StringBuilder builder, String name, int[] values) { + appendSeparator(builder); + builder.append('"').append(name).append("\":["); + for (int i = 0; i < values.length; i++) { + if (i > 0) { + builder.append(','); + } + builder.append(values[i]); + } + builder.append(']'); + } + + private static void appendField(StringBuilder builder, String name, double[] values) { + appendSeparator(builder); + builder.append('"').append(name).append("\":["); + for (int i = 0; i < values.length; i++) { + if (i > 0) { + builder.append(','); + } + builder.append(Double.toString(values[i])); + } + builder.append(']'); + } + + private static void appendField(StringBuilder builder, String name, byte[] values) { + appendSeparator(builder); + builder.append('"').append(name).append("\":["); + for (int i = 0; i < values.length; i++) { + if (i > 0) { + builder.append(','); + } + builder.append('"').append((char) values[i]).append('"'); + } + builder.append(']'); + } + + private static void appendField(StringBuilder builder, String name, String[] values) { + appendSeparator(builder); + builder.append('"').append(name).append("\":["); + for (int i = 0; i < values.length; i++) { + if (i > 0) { + builder.append(','); + } + builder.append('"') + .append(values[i].replace("\\", "\\\\").replace("\"", "\\\"")) + .append('"'); + } + builder.append(']'); + } + + private static void appendSeparator(StringBuilder builder) { + if (builder.charAt(builder.length() - 1) != '{') { + builder.append(','); + } + } +} diff --git a/java/cuopt/src/test/resources/python_binding_parity.py b/java/cuopt/src/test/resources/python_binding_parity.py new file mode 100644 index 0000000000..95b2dd9a6e --- /dev/null +++ b/java/cuopt/src/test/resources/python_binding_parity.py @@ -0,0 +1,291 @@ +#!/usr/bin/env python3 +# SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +"""Python-side oracle for Java/Python cuOpt binding parity tests.""" + +import argparse +import json +import math +import sys + +import numpy as np + + +PREFIX = "CUOPT_COMPARE " + + +def emit(name, value): + print(f"{PREFIX}{name}={value}") + + +def emit_float(name, value): + value = float(value) + if math.isnan(value): + emit(name, "nan") + elif math.isinf(value): + emit(name, "inf" if value > 0 else "-inf") + else: + emit(name, f"{value:.17g}") + + +def emit_float_array(name, values): + emit(name, ",".join(f"{float(v):.17g}" for v in values)) + + +def emit_int_array(name, values): + emit(name, ",".join(str(int(v)) for v in values)) + + +def emit_char_array(name, values): + chars = [] + for value in values: + if isinstance(value, bytes): + chars.append(value.decode("ascii")) + elif isinstance(value, np.bytes_): + chars.append(bytes(value).decode("ascii")) + else: + chars.append(str(value)) + emit(name, ",".join(chars)) + + +def as_float_array(values): + return np.array(values, dtype=np.float64) + + +def as_int_array(values): + return np.array(values, dtype=np.int32) + + +def as_char_array(values): + return np.array(values, dtype="xY0pSEZ(-HPihxw2d~?WOdj^b4iD zW33n&fvBe@0`~{AcjSspSAEk;XHCz~gmD#kar1`n)3KKs3S-mQe%A1+mQN6EMd`~N z`C0-;!}vJAu1{k@^zYTcTaxr6*(07}m zymj1m8iYjNsk#N@qN!R%X9L<%Roy!F<6VK>jY>b~x^h*OyM~)OZs98(U*oopZ}6>- z?;r(IAv(%NV(K`E1sw$xSxF%b8~AFyKmjD~{QN|pCWKbhusKMfMTxXI(JpO)#0EbFdD*fgBvk72+b_q zF$!!C9gRa!@n>Ie2(I{sD}Be^Vwhj`e1oLowzQo&cDUfCV3UcP8|ulyp-o+3-3?1! zD@kwKxW{dHyWHaKVh4+!b^U;44H~r<2E*k2*2sk`wvGNnAhO6T*;B8S%>Wd@p5_Y5 zoFAG`;CnDA+uHD>hgpGRVX@cxpt@>fvY_q?f&TSy1h?Q~)h?)>o}OY~ua*s0#c|Pb zFUUek;J{{pud6D*(Sqf8Jf>Y_ny*$W>?)o?&igiV-bk&?(7Xm;M-{6Y?h71h)Khc;Yj`Ju-sp2~uOo{bI?)<{8z2Z^ z4_~lJe%Xg%GCNI9V`P;huo-IIB6J0Qf>egF3m@PxXEW%)5ey)zK;uIUa#XV+>aZc< zIz}jq(Cam%Fv?gR<@Y2dHT^Wln$|JOj&rpeEicid;Y6#3lmFoepU0i}h#w+26~yXe z&QzfP;@HY@;2F9ZtKHe*ktgWMrKTBD1^W>`gtVcAP;-^0$|?`Z(6e z?ZfOr%rbqFL5ua1G4I+O1kd6Niatw#^f#CSv-l2|j>5ua^Z33_ z*HvS?X5qR8$HEPPqmlNL*waBIQ0u;yBk6GKJ6$h|+jRH5?Lfv!s01EPxtF@G9yr0s z>wD616FrO_-wTushoRmM z$*N!Dl^q z&cu{kzoYmo7lpL!Olq7@OJyMCyj0fG*YtmbZ}~L;Fb=cEAf>lcAZI=TLN&3FCqKxO ztA@dQl!3o6Q-F~m<5J-ptTo3Z(|X3In)4}A3KMw&YkXG-x{9ahu*EBRY=crY(Zb?? De9PLI literal 0 HcmV?d00001 diff --git a/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Constraint.class b/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Constraint.class new file mode 100644 index 0000000000000000000000000000000000000000..fe5b8ee3f7b8511a4b6638e2f7f5c5f34ac46c41 GIT binary patch literal 5055 zcmb7IYj+!072P9^HIh8>D~@YBNlQc0$Z`^eyd2`#P3i}6<2XqjQfSL#B8{C%WJ!@m zt^{({2CSuDEr(QjmC<|H)tZM;2UpROPWOkEi9alEh7XLS~;# z;u(BOUO$~g8=h^)bNGzRo|hj!+m6rS^Ro6rJHCJy+hOC2^7xX0m)bFiFU#XA23}5L zC%&2_;Mc_DMFU??;z4{v9E{jJK&&E-sd>r6s4Zn3-)b8`ZG&M%BudE!WA0(T=x*cJXdY z0=8A`LdDi_q!oyXVxi)eEvMklixthI<*OAsIjKP}SWCp|nZ0H$TbaB?{_}2`Zm2`@ zR`$AvM6PP(FI)L4H^xpn1;-uNu#{@$=(}Rkicurq$)U?6I#JB={7ylft1ex!%a^Px zc}2aL6?$by-u*@0z3R}z%;t`x&q+I!?ovxWHp|fF&h^rw-0WVo-MasCDmlHWp=Rlc zbL)&J*Jx^pf{j;#1wAz*LF?v9BicmjZm^-v@nxL0%)8XaIjf`sZs6NIo_v%i8jg{1 z3zbr*Rug877>}Kqr$SRhRA*ncl(SsBQAHXSTFOkL-RLG+(a(g(Kyf;hn%q1W5N6*Az95iu69z#f*7{)#m`*Fa) zEfe3xSrZu?H1ItWm+(Oo-^UM3{187f@M9A{!B0)RCVPH{pBwmviQ9PG#4qu>fnS;U zHQq4s8(H}+?oiz7?2S1$@h0w=cuRgCZlMR&;w*MN_A(yVFxi4#AcT8~!^8yv{2ksl z@ebZ*>9&Ac5BP@2p1*R<&a!ueg6-YXyt(T!n4#7!w^-J2xP_w{i<`BrS{1()Ea_9n zTEJ)$1W%Vz9n@5J?dGcGh!tZj%a_FY1=g(e(?q6v*zxcM z=0#>S1mmxSk^Lolm{S$xf6K^S8+hO|?%BY2)~UE8)KMoSEA+vsOf8jMwxhUeOY=4t zH#*CujjpIYaVN-8--eTFxsw20wJLM=3K8{!8aCelfirU7*1pO(J!=acPNto*aLlyU zd~5pW!3i4A+u33v$I{-zPj?`Wh?F~L5h-SlJyOqVWJ#-aRh2b<8|&WP_IrJd}K_mkWMA=+aB z?J@qcPthI=Xpc!hC2bAkc-W_%;V90vrQd=6CMRChVrp@hf;PPkKD35YIL#GFQrI~1 zMuYJ~O^ks@FyR}I^C$^sEWMrCttTw0R?`gUutMnbb_Jfrl+J|nB&K|{0Fg%x?0J{d2uA}S2u2NOFw?|) zvoUmsn|QC`QJf8oBb<40@31rO?Rh!M*qsb{X#`#x zftcrTJ^+g`@x9d z63TKA8#T7rBmux8uKL*< zXWFHg$D{z_jg9C!lap5ncQ+!rz(fg7QzD5*BE_aet~Do;Xe3f05%(TMP6sDQXee)fLZJ%pomtl~Wl-FROtbK+)Rqh&$Gtu%QrYe-@xfgW*K5Z50j&?oj{0{voNRk6kpDHj>0 z%cfV$yT|r{>l{s|R_t4Ov;Go%?_(>JYETePL;Uo&nJfy{r^$bk-DOC^S+lH$2#QBvVYjDS#D7L(zNP@H<2S-wS?glh&z1c!L%Me$bUqY&)!Vq%YVHiK>XS>H<)e7IJR+3e22A+Rk z#V(D0+4HK+I)h$vUCWmhi+BCo_6#9LOZj!~9ynHGycKwfI&IW01a9B2TbH=+wfTo_ zXs0?YDH3KEK`ck&Z15iopSBr`eG^jSte#N@~+;uE94K>bPjh@72tE7mx=(18^31Jx6u zRmU5$9`R396h)R!BgoM@fQgV_o_0}DY~p9AKT3!5Qo1Evi&`v%OJEXjhQVJGXpCZ} zA0bhme0nRoI6Cq@h9*a+=9EE&0EfOqd{BAtRh0ek_n%LY+#UMnF*M*59lujtRLamN zG5V=310?hyo%Pd;J#tn`Hx=*}l_Er##tqRN(+XXzg_yaYo4 literal 0 HcmV?d00001 diff --git a/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/CsrMatrix.class b/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/CsrMatrix.class new file mode 100644 index 0000000000000000000000000000000000000000..8876eaf55abc130847b86744ae2e70f14d3c025b GIT binary patch literal 1305 zcmb7CZBNrs6n^ejRyI1oA&QDv5p^4bil~cXOvun=$&iHU62qrU*KNhVEL}U{*Z3DS zkzh2L-~CbQx$Ssc`o(m+J?Hd3=RD7I@9#f91^~(^XE1^L89czlG&0DGr6AIxh?ZrP z#<7xtj8z$$j7JO^&;7L1YV{1i$B@{oGGukv3T&t9G)>*0Vye%rKm>`sEy`Y+j_JQ* zNay#e^lTLx3{u5y8Vpl4(=px#_P*i0ay3`yR)c${$cIJA@0iqXwWhna=Jd^` z$u&K2yS`=-o_k%-ZF}6dO{c9@dfqnoJ@asbh}C_rf86HXu#b$ajA^R24S)B71}R?< zDyFGixhy12rN&T;*hOll&(*(odb~xHXD-P$kN$-?Yvc;j?QUs6dG8g`!_*%G>M$B zgrb~qC47@7^p?Shd5+c@%8qHLMDG{H6R_g)^58oXR4bNBQ6v>tRwx=fMymJ?sR1q0 z;4`v6A%Dn?pCJ9~E1{FPO6vmk22GR5{YjcNM{^cwl17uBW0oGE7)`@9T&IlYhAdea z37&~C5=@hX2VvM>0!uP7GH!&wn^b1Fh54a`GJ!;cEOASUzhM4_3W<J(GZXK|f~8S# XJ{G)qM*rgE)F`+V17^4v+Pw4+fllp? literal 0 HcmV?d00001 diff --git a/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/CuOptConstants.class b/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/CuOptConstants.class new file mode 100644 index 0000000000000000000000000000000000000000..712ced93121ee933d2f69bcdd96362413783bc5f GIT binary patch literal 9640 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 literal 0 HcmV?d00001 diff --git a/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/CuOptException.class b/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/CuOptException.class new file mode 100644 index 0000000000000000000000000000000000000000..57975a130fdcb373d7f469fac6d38ee533123881 GIT binary patch literal 573 zcmb7>O-sW-5Qg7v)5fN$t=87Bi{9EI2Jzsb;-x4Qf})k)w`qtg`6AgAf0P$N5j^+< z{88d;TKqsS?qPRkcIKIPXW!mmUI83o(}0Gx3W{jyXzN&KFjC27mJXt+%fN;VF zdBV`{4DDM!DqpoDhx=om2<0z=n!FJy z!=dd&ffdfgRB+45qF7o!)$=4yA}`@VKy+)6UBvSA&T(TYqOi}P2X2~jFK7SK!cg;E zIr^r**y+*>j8T*&j(aAQrshxPzM`1Wv0pnGgxo?35AC|$)J6Ceno{Q4AfAi*v=wmlCM@Z s$Fkg7Mm@(ju(H5gbgH{j?-7N2G71C&=}^H&4m9Tp)ItH3PL literal 0 HcmV?d00001 diff --git a/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/DataModel$NativeHandle.class b/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/DataModel$NativeHandle.class new file mode 100644 index 0000000000000000000000000000000000000000..4ff87972e6d9d7b7dc2f16504c7e869f7b409a45 GIT binary patch literal 953 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 J@OIR7_cw1$?bQGP literal 0 HcmV?d00001 diff --git a/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/LinearExpression.class b/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/LinearExpression.class new file mode 100644 index 0000000000000000000000000000000000000000..bdb481d0ee596b196092aea811512cdfe536d9ea GIT binary patch literal 8253 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 mxK@K#;zIs!R@rnlO{_4LACY56-SPu` z2@*o0LSn%O@KJ~}PKu~y7Rbsy<9p}abMJ|N{`&p{zzaC@n8WrQs(7NqQyp45v~{p_ zunjyjup?lOB6l2m6Zcg4u7KDVSoY=RUKotyNU9+2snC zZ^9%P{B^q;B>qu2aL4T06}ZFK6XlOQ_p%$iQQDHF$}1J9__aW}b++H`36%E8q1J&4 z+@r)lccW9?U7&Fg_N8~NHcOV`_ljM14*H?*1QRt-(&;DRD0V#ZWi*PyVI+ND1w-es zdwdehc>I#86X_*-vcee`t_|Jz_=XL|R-5@I^N0WNqA{)Av}1Leyq+=Z$O6k;X=VyF zXv@kpm*dR*Nti@^_pQ>)FJ2G7dm$&%L<74f=CNSH)L~JFTRPNGH*p(v0sB8J5vc3F zjwk8UyYmaT9}9569ysSs9hk8hOZt@|89-~m==<2bw{SSwp!QTWWmRHBk5n`s+!dSTW^U@ezi z%#zn~$q#eMr7U?fm%N@!E@#Qxx#SIO{@Gc3Fx|QGDYJ7sm%NorHnQZMT=Jt-;_+{E C-^_CW literal 0 HcmV?d00001 diff --git a/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/MipCallbackSolution.class b/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/MipCallbackSolution.class new file mode 100644 index 0000000000000000000000000000000000000000..c5401f43e0515de7cda156361797092d534ca24c GIT binary patch literal 709 zcmbVJTWb?R7(KJu?6&FV()8-JRbP@6TzqMTiXaVw5bZ-HF9l(;UE|crPT1}S`m40i zQt_cbz#k=^*{mYPCt3Ep&3Dds=9?cszuy4Z!;>03Y}RlGcNbB`J!|g!c;Mrqz`~i) zd8SMv;2ie_8fJ7FN12+%L#gvvK(Oe&P>IT3GUy!l``w{{dtgp@*c_-NewR;1ar$14 zG%M|aiKHINRN1^Ny4fdnCh&X^nMs(;)QOT|l$&W5YT{)&P0cu!lZi^k;afF5kXnyq z^!cciwlAr+2zm>oSXnx8znjU7pmAOrA#ZYh@*E{)6)Ashr6GOW5+U9pDij z2k@~FU=cNe-T%`m(6Y3lmb}MYm;eQFU-JVlT8FRFRGxDiUSy`{haUxeF7*vBglBvh zk5A^HWyLURSv~X>a0Lix>&!kdcj;Gq*ATs(ottlPu2AW9uHas2E_&*;4Sr3m zkgdu3Hqpc~Tc)>>oh6FMPIDNy**%}NSL8swcgYF-?Xa(Go)7T~;7UPk<*~6O79?IP YNy3t(N&@%GE%3%);OZandeOD<3pNspNdN!< literal 0 HcmV?d00001 diff --git a/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/MipSetSolutionCallback.class b/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/MipSetSolutionCallback.class new file mode 100644 index 0000000000000000000000000000000000000000..3f55614bc67c76a21b4fbf68395760ce0b3023d9 GIT binary patch literal 336 zcma)&!Ab)$5QhJ$bywSq*W#g9dof3moF}TmR+Ns>W$HHK3i(vDz}rh zu+qtQQCV?@Ll=A#xNRk~E9vgp+M4y-VceWBs(cFCEW{eZWoD`$+X27sg@nm-a#33I zB3r4gxpU4(?o(|E(_f($$?3k$_R&QXURj$gx;-x9KYGH&-;E0bVUX_x(2#I~Vg3zp Ox_=9lxfYo?1HJ*5x@T+v literal 0 HcmV?d00001 diff --git a/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/MipSolutionCallback.class b/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/MipSolutionCallback.class new file mode 100644 index 0000000000000000000000000000000000000000..284051ffab0873633d76dd5ca7bfac0bb4202a1e GIT binary patch literal 277 zcmZvXF-rqM5QX2wc&D+k)XLU0Zl^^m@dyZtkU$!%xy>3T?#&*X-TXKUe}F$q+!F*5 zo0(yF@0&LtpKtE~Zg5iLxWd44cSZCneNBw+W|zLstaCs5}eMm~en`nMOGLt`+LitD-mp Fz5vfiPuTzf literal 0 HcmV?d00001 diff --git a/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/NativeCuOpt.class b/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/NativeCuOpt.class new file mode 100644 index 0000000000000000000000000000000000000000..2d8d1d74bdac70d3e2bb46fc862cd5c1d0b387b3 GIT binary patch literal 5582 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 XRe?EpHYS@@ zAKmp)!B0^tvMI5#__#8A@B7K7ijN$HqPePV8zpDfHj8>8YZa=FX_XY}T1+c6)R;_H z+ovLC$#hJ;P=}1K8MdA`6bd(nd2w^l-`HW?S;vY>wb*%1MWGM|+xN%No`PO+t{N3b zw;i4`o%M@)xf7|-Zt1G_t&l)Rs0)UfUqQ|aQVTX_vW`*Cn)eX@kYhPWYPnF(I7o@F z0kJ5V*33%2eJ0B1Pw1s(b6Izc%Xgh@&a!!*wzyiOgGh7pb~oeLZZ;3fnx&jE)k<3- z?ftrv@CDW956Pt7jqb}=i6&>ekDA@z=J zH4{T zMe1GC3snO-#q)+UAy>0!SS*dTR&?rQ8zwSRRYzMh3~35`ptY6IHm}P{EobThlGQGiFXEd0-&=w&_mY^EGqq66rIh zEv=UNBbdPLxC>w>hFc}IwFdlIt7_+r3nr^0wndJktNNO*(qXEq^cI~}X(uIB+QsH& zHoMup!e$Sfy=?Ze+0W)x8dhn9jYbDlI>_b_e~z+Av3ZRSD0JjSDn+5u{{frEE3;-y zRA zi~KS*pQn1%_*W^U#%)_)hx)x-!83PI?5JT55XnaHe@HY)VI~n?n0XXEs1!Ze6g>zP zJvbFTXcaw}6+OrmJ@^$pC>A|f7Cnd-J-8M<=oUQ~7d=QvA0>q;fPI5V`Hs428%96V zo{^#**r2W&b!!Jj@6is4zDG-VgyYo`J;L#639oQ^wS-SNeOjVdIDReBC!BsQ?yr%m z#nl=OXwg880$Ma!qo5WK)hMLJ!!;Vz;*lDKwP>tHLq8*oE;<4`O+&DU$OFZ)U?b4$ z4g|dqVUHs0<5+c;j#7q>(N%n1rxSFGPSP^HNvkwQWjY1XorcKH(5EP%quA{iTs+bQ z;y8Ntm<~mFOh}jTn38VcF)1G5F)cm9V`99*V`_ZDV{&?h$Mp0Gj|uV%k10}x$0P-W z$20|n$3%sM$5hqhW3nP*jOmJD?-R&OkVSvfb`j^wZxp$a?B1YQ62!!kASIRrA+aRL zh$TTpEEy8tAu$lDkARnL$&g>z{tb#JL#nU?Vk97JP}mU0pHboo;%H~&9I~IFemak+ zFG5He#B&*PejCipAlfV7Xb$(gfV;nem5W$$6EnBz8tM4T!5WmObAl07-2MtU8^bvS z&Q3S-d_-}axf{GGhqC&+l#{oWoedLh)(Z^9_2bbt_&m{ID$>AB{r=s4L_+ z(SUQQF`R=2XI*am=WY1jMj#5MrFgDGH~tGL{=5{=w1#ZOA{D4s3&@1^+5Qas9T3;qWwehO7puliI& zep~?RPY_bQBtB#gL>_SX7`saCwPRs7O*!Q2WrQjlD{?IJ?o>34g$^ z@C--@A=D4xqY$$uq7Qv3NZy$_OL6ek_&XW@7Zv@bOrxq2JOfNe!1O?F*F% zhTPE}L-}b)p)!5WkZ&{(7z!;N(a*&W5%i|xfiQ3RASTaJM~6H<;6_?JcP{i(9=@Xv z=Gg7)sR_ldv>D!OqbYR!;F!-iQMOeW>x6pgigctS2kTV7CzAA~PErRO9(>&O;NpUZ zd#HP8pvkaevxAtcVbIh4X*k-IB97X|XyakihTTVvk%&u{o~@xuc8=bq?3E53 gis=3oC}1fIxJ+aqv`q49=2^xnX_siqq){#Z1`K@IzyJUM literal 0 HcmV?d00001 diff --git a/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Problem$MatrixBuild.class b/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Problem$MatrixBuild.class new file mode 100644 index 0000000000000000000000000000000000000000..be8d2b5dcbffba118b66ff2541f551e83d1e2525 GIT binary patch literal 1150 zcmbtTU2hUW6g{(S`RZC))LQCyr3%}^`V}>yX;MIA6KqW|ec@?XRyxhHOJ)}$KgJ*7 z1JU@3hn6cmhs(b7yOQ^M!s}YKK)#6bD-27M z>zeNcq2$5~1BS)M5g&4E5DM37h#;i2R8w?49uB0#uyf{mYo?mh0+nsz%h=Pn>39LL zYON|mOde8wtyQO%wuC3bZHA|XnfRwYol#e5Ra^Dq0fS!iJ5(prpn2>KdTmF(;%%2s zvJKzn?g5uV#V3b)cqmB9{A5tofp9wv#;)f%vgYz2aOm>MEW%z&pICeO--xLHC>uy)-hhE~30Ma1 z;+}y;EGcx~Ko;j29?f9Hzs!c*7n#rHWYqokkzJAJGgf(O+rUs*PYL9lZDNW)ct;-a> zMGSMaubc0|%#ATLb90QCSt=cWfIh~YnbUJR;rJMdca#{zC0bVzC-%?KwJ%6%U$LNl z!;1DDdF=;Q=>Fk^6gga>i0C76EJ8}279k}p79k}~$5p}x2~_z8N!L!AxJFsm=~TlF S+>G`$T&6uuxk;>%n$=&guPO@w literal 0 HcmV?d00001 diff --git a/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Problem.class b/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Problem.class new file mode 100644 index 0000000000000000000000000000000000000000..11b297761bfd7843090d010f84102f5791333ac0 GIT binary patch literal 30615 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 L_>x?cMbG^YX>;uF literal 0 HcmV?d00001 diff --git a/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/QuadraticExpression$QuadraticTerm.class b/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/QuadraticExpression$QuadraticTerm.class new file mode 100644 index 0000000000000000000000000000000000000000..1951d7b09bd4504983f7ab9e80c30138397e7efd GIT binary patch literal 1080 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 b=R)`t?&DwiX4Hx+_$2@9+sev+IXeFj`s`#n literal 0 HcmV?d00001 diff --git a/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Solution$NativeHandle.class b/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Solution$NativeHandle.class new file mode 100644 index 0000000000000000000000000000000000000000..5787f990c176580aeeee643f4915b1f05bb44b2d GIT binary patch literal 949 zcmbV~!EVz)5QhIvLY=ryQ_?0tDI`FFG?f}|Ad0v|RBaU!i9jWe8)ubnacr};BX|!k z@Bn}WLIMg!Ai5?cw^+IC%`nhp;FLDicr+Z#6Ak?c#}up`e88xGOA@|8DG zd^nWupwac5D3qSNGL70`m{sC&B$ep+!evO;w8nflqW{In^LRI zPk8J5e8d^DZ4rc9UJx3%YQaL;f{9s%iY_-CP71aiM+~?_>`>f!Vhdl(p?6P6RT)%m z#|uPX18N3VE!2@`xN+R)G0Y#0@AUSC9n!p`)V;`cWAoSkV+2E~);fZ8Lq+~>Xy4ZV zffC!_j5jy~Xp1nZ+8`2MpnM0iT zq3P)<`Wqs@#RA@q=~jF%p`RM}vIR<>{sVuIz{@fGISM-Xf|+_Q5g+4=)CYVZ{6|6` iki5@RBg%h|D3PW!)Ski;&W`tG(xhL<$iZb4vGf~RQr1QQ literal 0 HcmV?d00001 diff --git a/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Solution.class b/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Solution.class new file mode 100644 index 0000000000000000000000000000000000000000..4ee3c6256a1c78c8812820fc60de88ae11ad5419 GIT binary patch literal 6972 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 literal 0 HcmV?d00001 diff --git a/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/SolverMethod.class b/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/SolverMethod.class new file mode 100644 index 0000000000000000000000000000000000000000..cc387da7bf8067549f7f59a6d5e86c538dc39f75 GIT binary patch literal 1694 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 H^k4c9IL-gS literal 0 HcmV?d00001 diff --git a/java/cuopt/target/generated-sources/cuopt/com/nvidia/cuopt/linearprogramming/CuOptConstants.java b/java/cuopt/target/generated-sources/cuopt/com/nvidia/cuopt/linearprogramming/CuOptConstants.java new file mode 100644 index 0000000000..9a5788b21b --- /dev/null +++ b/java/cuopt/target/generated-sources/cuopt/com/nvidia/cuopt/linearprogramming/CuOptConstants.java @@ -0,0 +1,151 @@ +package com.nvidia.cuopt.linearprogramming; + +public final class CuOptConstants { + private CuOptConstants() {} + + public static final int CUOPT_INSTANTIATE_FLOAT = 0; + public static final int CUOPT_INSTANTIATE_DOUBLE = 1; + public static final int CUOPT_INSTANTIATE_INT32 = 1; + public static final int CUOPT_INSTANTIATE_INT64 = 0; + public static final String CUOPT_ABSOLUTE_DUAL_TOLERANCE = "absolute_dual_tolerance"; + public static final String CUOPT_RELATIVE_DUAL_TOLERANCE = "relative_dual_tolerance"; + public static final String CUOPT_ABSOLUTE_PRIMAL_TOLERANCE = "absolute_primal_tolerance"; + public static final String CUOPT_RELATIVE_PRIMAL_TOLERANCE = "relative_primal_tolerance"; + public static final String CUOPT_ABSOLUTE_GAP_TOLERANCE = "absolute_gap_tolerance"; + public static final String CUOPT_RELATIVE_GAP_TOLERANCE = "relative_gap_tolerance"; + public static final String CUOPT_INFEASIBILITY_DETECTION = "infeasibility_detection"; + public static final String CUOPT_STRICT_INFEASIBILITY = "strict_infeasibility"; + public static final String CUOPT_PRIMAL_INFEASIBLE_TOLERANCE = "primal_infeasible_tolerance"; + public static final String CUOPT_DUAL_INFEASIBLE_TOLERANCE = "dual_infeasible_tolerance"; + public static final String CUOPT_ITERATION_LIMIT = "iteration_limit"; + public static final String CUOPT_TIME_LIMIT = "time_limit"; + public static final String CUOPT_WORK_LIMIT = "work_limit"; + public static final String CUOPT_NODE_LIMIT = "node_limit"; + public static final String CUOPT_PDLP_SOLVER_MODE = "pdlp_solver_mode"; + public static final String CUOPT_METHOD = "method"; + public static final String CUOPT_PER_CONSTRAINT_RESIDUAL = "per_constraint_residual"; + public static final String CUOPT_SAVE_BEST_PRIMAL_SO_FAR = "save_best_primal_so_far"; + public static final String CUOPT_FIRST_PRIMAL_FEASIBLE = "first_primal_feasible"; + public static final String CUOPT_LOG_FILE = "log_file"; + public static final String CUOPT_LOG_TO_CONSOLE = "log_to_console"; + public static final String CUOPT_CROSSOVER = "crossover"; + public static final String CUOPT_FOLDING = "folding"; + public static final String CUOPT_AUGMENTED = "augmented"; + public static final String CUOPT_DUALIZE = "dualize"; + public static final String CUOPT_ORDERING = "ordering"; + public static final String CUOPT_BARRIER_DUAL_INITIAL_POINT = "barrier_dual_initial_point"; + public static final String CUOPT_BARRIER_ITERATIVE_REFINEMENT = "barrier_iterative_refinement"; + public static final String CUOPT_BARRIER_STEP_SCALE = "barrier_step_scale"; + public static final String CUOPT_ELIMINATE_DENSE_COLUMNS = "eliminate_dense_columns"; + public static final String CUOPT_CUDSS_DETERMINISTIC = "cudss_deterministic"; + public static final String CUOPT_PRESOLVE = "presolve"; + public static final String CUOPT_MIP_PROBING = "mip_probing"; + public static final String CUOPT_DUAL_POSTSOLVE = "dual_postsolve"; + public static final String CUOPT_MIP_DETERMINISM_MODE = "mip_determinism_mode"; + public static final String CUOPT_MIP_ABSOLUTE_TOLERANCE = "mip_absolute_tolerance"; + public static final String CUOPT_MIP_RELATIVE_TOLERANCE = "mip_relative_tolerance"; + public static final String CUOPT_MIP_INTEGRALITY_TOLERANCE = "mip_integrality_tolerance"; + public static final String CUOPT_MIP_ABSOLUTE_GAP = "mip_absolute_gap"; + public static final String CUOPT_MIP_RELATIVE_GAP = "mip_relative_gap"; + public static final String CUOPT_MIP_HEURISTICS_ONLY = "mip_heuristics_only"; + public static final String CUOPT_MIP_SCALING = "mip_scaling"; + public static final String CUOPT_MIP_PRESOLVE = "mip_presolve"; + public static final String CUOPT_MIP_SYMMETRY = "mip_symmetry"; + public static final String CUOPT_MIP_RELIABILITY_BRANCHING = "mip_reliability_branching"; + public static final String CUOPT_MIP_CUT_PASSES = "mip_cut_passes"; + public static final String CUOPT_MIP_MIXED_INTEGER_ROUNDING_CUTS = "mip_mixed_integer_rounding_cuts"; + public static final String CUOPT_MIP_MIXED_INTEGER_GOMORY_CUTS = "mip_mixed_integer_gomory_cuts"; + public static final String CUOPT_MIP_KNAPSACK_CUTS = "mip_knapsack_cuts"; + public static final String CUOPT_MIP_FLOW_COVER_CUTS = "mip_flow_cover_cuts"; + public static final String CUOPT_MIP_IMPLIED_BOUND_CUTS = "mip_implied_bound_cuts"; + public static final String CUOPT_MIP_CLIQUE_CUTS = "mip_clique_cuts"; + public static final String CUOPT_MIP_STRONG_CHVATAL_GOMORY_CUTS = "mip_strong_chvatal_gomory_cuts"; + public static final String CUOPT_MIP_REDUCED_COST_STRENGTHENING = "mip_reduced_cost_strengthening"; + public static final String CUOPT_MIP_OBJECTIVE_STEP = "mip_objective_step"; + public static final String CUOPT_MIP_CUT_CHANGE_THRESHOLD = "mip_cut_change_threshold"; + public static final String CUOPT_MIP_CUT_MIN_ORTHOGONALITY = "mip_cut_min_orthogonality"; + public static final String CUOPT_MIP_BATCH_PDLP_STRONG_BRANCHING = "mip_batch_pdlp_strong_branching"; + public static final String CUOPT_MIP_BATCH_PDLP_RELIABILITY_BRANCHING = "mip_batch_pdlp_reliability_branching"; + public static final String CUOPT_SOLUTION_FILE = "solution_file"; + public static final String CUOPT_NUM_CPU_THREADS = "num_cpu_threads"; + public static final String CUOPT_NUM_GPUS = "num_gpus"; + public static final String CUOPT_USER_PROBLEM_FILE = "user_problem_file"; + public static final String CUOPT_PRESOLVE_FILE = "presolve_file"; + public static final String CUOPT_RANDOM_SEED = "random_seed"; + public static final String CUOPT_PDLP_PRECISION = "pdlp_precision"; + public static final String CUOPT_MIP_SEMICONTINUOUS_BIG_M = "mip_semi_continuous_big_m"; + public static final String CUOPT_MIP_HYPER_HEURISTIC_POPULATION_SIZE = "mip_hyper_heuristic_population_size"; + public static final String CUOPT_MIP_HYPER_HEURISTIC_NUM_CPUFJ_THREADS = "mip_hyper_heuristic_num_cpufj_threads"; + public static final String CUOPT_MIP_HYPER_HEURISTIC_PRESOLVE_TIME_RATIO = "mip_hyper_heuristic_presolve_time_ratio"; + public static final String CUOPT_MIP_HYPER_HEURISTIC_PRESOLVE_MAX_TIME = "mip_hyper_heuristic_presolve_max_time"; + public static final String CUOPT_MIP_HYPER_HEURISTIC_ROOT_LP_TIME_RATIO = "mip_hyper_heuristic_root_lp_time_ratio"; + public static final String CUOPT_MIP_HYPER_HEURISTIC_ROOT_LP_MAX_TIME = "mip_hyper_heuristic_root_lp_max_time"; + public static final String CUOPT_MIP_HYPER_HEURISTIC_RINS_TIME_LIMIT = "mip_hyper_heuristic_rins_time_limit"; + public static final String CUOPT_MIP_HYPER_HEURISTIC_RINS_MAX_TIME_LIMIT = "mip_hyper_heuristic_rins_max_time_limit"; + public static final String CUOPT_MIP_HYPER_HEURISTIC_RINS_FIX_RATE = "mip_hyper_heuristic_rins_fix_rate"; + public static final String CUOPT_MIP_HYPER_HEURISTIC_STAGNATION_TRIGGER = "mip_hyper_heuristic_stagnation_trigger"; + public static final String CUOPT_MIP_HYPER_HEURISTIC_ENABLED_RECOMBINERS = "mip_hyper_heuristic_enabled_recombiners"; + public static final String CUOPT_MIP_HYPER_HEURISTIC_RELAXED_LP_TIME_LIMIT = "mip_hyper_heuristic_relaxed_lp_time_limit"; + public static final String CUOPT_MIP_HYPER_DIVING_LINE_SEARCH = "mip_hyper_diving_line_search"; + public static final String CUOPT_MIP_HYPER_DIVING_PSEUDOCOST = "mip_hyper_diving_pseudocost"; + public static final String CUOPT_MIP_HYPER_DIVING_GUIDED = "mip_hyper_diving_guided"; + public static final String CUOPT_MIP_HYPER_DIVING_COEFFICIENT = "mip_hyper_diving_coefficient"; + public static final String CUOPT_MIP_HYPER_DIVING_MIN_NODE_DEPTH = "mip_hyper_diving_min_node_depth"; + public static final String CUOPT_MIP_HYPER_DIVING_NODE_LIMIT = "mip_hyper_diving_node_limit"; + public static final String CUOPT_MIP_HYPER_DIVING_ITERATION_LIMIT_FACTOR = "mip_hyper_diving_iteration_limit_factor"; + public static final String CUOPT_MIP_HYPER_DIVING_BACKTRACK_LIMIT = "mip_hyper_diving_backtrack_limit"; + public static final String CUOPT_MIP_HYPER_DIVING_SHOW_TYPE = "mip_hyper_diving_show_type"; + public static final int CUOPT_MODE_OPPORTUNISTIC = 0; + public static final int CUOPT_MODE_DETERMINISTIC = 1; + public static final int CUOPT_TERMINATION_STATUS_NO_TERMINATION = 0; + public static final int CUOPT_TERMINATION_STATUS_OPTIMAL = 1; + public static final int CUOPT_TERMINATION_STATUS_INFEASIBLE = 2; + public static final int CUOPT_TERMINATION_STATUS_UNBOUNDED = 3; + public static final int CUOPT_TERMINATION_STATUS_ITERATION_LIMIT = 4; + public static final int CUOPT_TERMINATION_STATUS_TIME_LIMIT = 5; + public static final int CUOPT_TERMINATION_STATUS_NUMERICAL_ERROR = 6; + public static final int CUOPT_TERMINATION_STATUS_PRIMAL_FEASIBLE = 7; + public static final int CUOPT_TERMINATION_STATUS_FEASIBLE_FOUND = 8; + public static final int CUOPT_TERMINATION_STATUS_CONCURRENT_LIMIT = 9; + public static final int CUOPT_TERMINATION_STATUS_WORK_LIMIT = 10; + public static final int CUOPT_TERMINATION_STATUS_UNBOUNDED_OR_INFEASIBLE = 11; + public static final int CUOPT_MINIMIZE = 1; + public static final int CUOPT_MAXIMIZE = -1; + public static final byte CUOPT_LESS_THAN = (byte) 'L'; + public static final byte CUOPT_GREATER_THAN = (byte) 'G'; + public static final byte CUOPT_EQUAL = (byte) 'E'; + public static final byte CUOPT_CONTINUOUS = (byte) 'C'; + public static final byte CUOPT_INTEGER = (byte) 'I'; + public static final byte CUOPT_SEMI_CONTINUOUS = (byte) 'S'; + public static final int CUOPT_PDLP_SOLVER_MODE_STABLE1 = 0; + public static final int CUOPT_PDLP_SOLVER_MODE_STABLE2 = 1; + public static final int CUOPT_PDLP_SOLVER_MODE_METHODICAL1 = 2; + public static final int CUOPT_PDLP_SOLVER_MODE_FAST1 = 3; + public static final int CUOPT_PDLP_SOLVER_MODE_STABLE3 = 4; + public static final int CUOPT_METHOD_CONCURRENT = 0; + public static final int CUOPT_METHOD_PDLP = 1; + public static final int CUOPT_METHOD_DUAL_SIMPLEX = 2; + public static final int CUOPT_METHOD_BARRIER = 3; + public static final int CUOPT_METHOD_UNSET = 4; + public static final int CUOPT_PDLP_DEFAULT_PRECISION = -1; + public static final int CUOPT_PDLP_SINGLE_PRECISION = 0; + public static final int CUOPT_PDLP_DOUBLE_PRECISION = 1; + public static final int CUOPT_PDLP_MIXED_PRECISION = 2; + public static final int CUOPT_FILE_FORMAT_MPS = 0; + public static final int CUOPT_SUCCESS = 0; + public static final int CUOPT_INVALID_ARGUMENT = 1; + public static final int CUOPT_MPS_FILE_ERROR = 2; + public static final int CUOPT_MPS_PARSE_ERROR = 3; + public static final int CUOPT_VALIDATION_ERROR = 4; + public static final int CUOPT_OUT_OF_MEMORY = 5; + public static final int CUOPT_RUNTIME_ERROR = 6; + public static final int CUOPT_PRESOLVE_DEFAULT = -1; + public static final int CUOPT_PRESOLVE_OFF = 0; + public static final int CUOPT_PRESOLVE_PAPILO = 1; + public static final int CUOPT_PRESOLVE_PSLP = 2; + public static final int CUOPT_MIP_SCALING_OFF = 0; + public static final int CUOPT_MIP_SCALING_ON = 1; + public static final int CUOPT_MIP_SCALING_NO_OBJECTIVE = 2; + public static final int CUOPT_BARRIER_ITERATIVE_REFINEMENT_OFF = 0; + public static final int CUOPT_BARRIER_ITERATIVE_REFINEMENT_ON = 1; +} diff --git a/java/cuopt/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/java/cuopt/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000000..f2f5884bd4 --- /dev/null +++ b/java/cuopt/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,34 @@ +com/nvidia/cuopt/linearprogramming/SolverSettings$NativeHandle.class +com/nvidia/cuopt/linearprogramming/LinearExpression.class +com/nvidia/cuopt/linearprogramming/Constraint.class +com/nvidia/cuopt/linearprogramming/BatchSolve.class +com/nvidia/cuopt/linearprogramming/SolverSettings.class +com/nvidia/cuopt/linearprogramming/Solution.class +com/nvidia/cuopt/linearprogramming/SolverMethod.class +com/nvidia/cuopt/linearprogramming/QuadraticExpression$QuadraticTerm.class +com/nvidia/cuopt/linearprogramming/LPStats.class +com/nvidia/cuopt/linearprogramming/ObjectiveSense.class +com/nvidia/cuopt/linearprogramming/CuOptConstants.class +com/nvidia/cuopt/linearprogramming/VariableType.class +com/nvidia/cuopt/linearprogramming/DataModel.class +com/nvidia/cuopt/linearprogramming/QuadraticExpression.class +com/nvidia/cuopt/linearprogramming/QuadraticConstraint.class +com/nvidia/cuopt/linearprogramming/Variable.class +com/nvidia/cuopt/linearprogramming/MIPStats.class +com/nvidia/cuopt/linearprogramming/MipCallbackSolution.class +com/nvidia/cuopt/linearprogramming/CuOptException.class +com/nvidia/cuopt/linearprogramming/ConstraintSense.class +com/nvidia/cuopt/linearprogramming/PDLPSolverMode.class +com/nvidia/cuopt/linearprogramming/PDLPWarmStartData.class +com/nvidia/cuopt/linearprogramming/TerminationStatus.class +com/nvidia/cuopt/linearprogramming/ProblemCategory.class +com/nvidia/cuopt/linearprogramming/Solution$NativeHandle.class +com/nvidia/cuopt/linearprogramming/BatchSolveResult.class +com/nvidia/cuopt/linearprogramming/NativeCuOpt.class +com/nvidia/cuopt/linearprogramming/CsrMatrix.class +com/nvidia/cuopt/linearprogramming/MipSetSolutionCallback.class +com/nvidia/cuopt/linearprogramming/DataModel$NativeHandle.class +com/nvidia/cuopt/linearprogramming/Problem$1.class +com/nvidia/cuopt/linearprogramming/MipSolutionCallback.class +com/nvidia/cuopt/linearprogramming/Problem$MatrixBuild.class +com/nvidia/cuopt/linearprogramming/Problem.class diff --git a/java/cuopt/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/java/cuopt/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000000..259b513caa --- /dev/null +++ b/java/cuopt/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,28 @@ +/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/BatchSolve.java +/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/BatchSolveResult.java +/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Constraint.java +/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/ConstraintSense.java +/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/CsrMatrix.java +/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/CuOptException.java +/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/DataModel.java +/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/LPStats.java +/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/LinearExpression.java +/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MIPStats.java +/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MipCallbackSolution.java +/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MipSetSolutionCallback.java +/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MipSolutionCallback.java +/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/NativeCuOpt.java +/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/ObjectiveSense.java +/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/PDLPSolverMode.java +/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/PDLPWarmStartData.java +/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Problem.java +/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/ProblemCategory.java +/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/QuadraticConstraint.java +/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/QuadraticExpression.java +/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Solution.java +/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/SolverMethod.java +/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/SolverSettings.java +/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/TerminationStatus.java +/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Variable.java +/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/VariableType.java +/home/cbrissette/cuopt/java/cuopt/target/generated-sources/cuopt/com/nvidia/cuopt/linearprogramming/CuOptConstants.java diff --git a/java/cuopt/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/java/cuopt/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst new file mode 100644 index 0000000000..7f7832c62b --- /dev/null +++ b/java/cuopt/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst @@ -0,0 +1,7 @@ +com/nvidia/cuopt/linearprogramming/NativeIntegrationTest.class +com/nvidia/cuopt/linearprogramming/PythonParityTest$ProcessResult.class +com/nvidia/cuopt/linearprogramming/PythonParityTest$JavaResult.class +com/nvidia/cuopt/linearprogramming/ProblemModelingTest.class +com/nvidia/cuopt/linearprogramming/PythonParityTest$CaseSpec.class +com/nvidia/cuopt/linearprogramming/PythonParityTest.class +com/nvidia/cuopt/linearprogramming/PythonParityTest$PythonResult.class diff --git a/java/cuopt/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/java/cuopt/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000000..5e18263b3a --- /dev/null +++ b/java/cuopt/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst @@ -0,0 +1,3 @@ +/home/cbrissette/cuopt/java/cuopt/src/test/java/com/nvidia/cuopt/linearprogramming/NativeIntegrationTest.java +/home/cbrissette/cuopt/java/cuopt/src/test/java/com/nvidia/cuopt/linearprogramming/ProblemModelingTest.java +/home/cbrissette/cuopt/java/cuopt/src/test/java/com/nvidia/cuopt/linearprogramming/PythonParityTest.java diff --git a/java/cuopt/target/surefire-reports/2026-07-07T10-51-16_754-jvmRun1.dumpstream b/java/cuopt/target/surefire-reports/2026-07-07T10-51-16_754-jvmRun1.dumpstream new file mode 100644 index 0000000000..0410112a47 --- /dev/null +++ b/java/cuopt/target/surefire-reports/2026-07-07T10-51-16_754-jvmRun1.dumpstream @@ -0,0 +1,345 @@ +# Created at 2026-07-07T10:51:18.319 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Error parsing input file: {"MPS_PARSER_ERROR_TYPE": "ValidationError", "msg": "Error opening input file! Given path: missing-file-does-not-exist.mps"}'. + +# Created at 2026-07-07T10:51:18.320 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Setting parameter method to 1'. + +# Created at 2026-07-07T10:51:18.320 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'cuOpt version: 26.8.0, git hash: c58e6fe8, host arch: x86_64, device archs: 86-real'. + +# Created at 2026-07-07T10:51:18.320 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'CPU: 13th Gen Intel(R) Core(TM) i7-13800H, threads (physical/logical): 10/20, RAM: 10.68 GiB'. + +# Created at 2026-07-07T10:51:18.321 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'CUDA 13.2, device: NVIDIA RTX A1000 6GB Laptop GPU (ID 0), VRAM: 6.00 GiB'. + +# Created at 2026-07-07T10:51:18.341 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'CUDA device UUID: fb968757-0d05-4cc2-229b-dc9fe8668e48'. + +# Created at 2026-07-07T10:51:18.341 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Solving a problem with 1 constraints, 2 variables (0 integers), and 2 nonzeros'. + +# Created at 2026-07-07T10:51:18.341 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Problem scaling:'. + +# Created at 2026-07-07T10:51:18.341 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Objective coefficents range: [1e+00, 1e+00]'. + +# Created at 2026-07-07T10:51:18.342 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Constraint matrix coefficients range: [1e+00, 1e+00]'. + +# Created at 2026-07-07T10:51:18.342 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Constraint rhs / bounds range: [0e+00, 1e+00]'. + +# Created at 2026-07-07T10:51:18.436 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Variable bounds range: [0e+00, 0e+00]'. + +# Created at 2026-07-07T10:51:18.437 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Using PSLP presolver'. + +# Created at 2026-07-07T10:51:18.437 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'PSLP Presolved problem: 0 constraints, 0 variables, 0 non-zeros'. + +# Created at 2026-07-07T10:51:18.437 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Presolve completely solved the problem'. + +# Created at 2026-07-07T10:51:18.437 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'PSLP presolve time: 0.10s'. + +# Created at 2026-07-07T10:51:18.438 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Status: Optimal Objective: 1.000000'. + +# Created at 2026-07-07T10:51:18.439 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'cuOpt version: 26.8.0, git hash: c58e6fe8, host arch: x86_64, device archs: 86-real'. + +# Created at 2026-07-07T10:51:18.439 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'CPU: 13th Gen Intel(R) Core(TM) i7-13800H, threads (physical/logical): 10/20, RAM: 10.59 GiB'. + +# Created at 2026-07-07T10:51:18.439 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'CUDA 13.2, device: NVIDIA RTX A1000 6GB Laptop GPU (ID 0), VRAM: 6.00 GiB'. + +# Created at 2026-07-07T10:51:18.440 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'CUDA device UUID: fb968757-0d05-4cc2-229b-dc9fe8668e48'. + +# Created at 2026-07-07T10:51:18.440 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Solving a problem with 1 constraints, 2 variables (0 integers), and 2 nonzeros'. + +# Created at 2026-07-07T10:51:18.441 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Problem scaling:'. + +# Created at 2026-07-07T10:51:18.441 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Objective coefficents range: [1e+00, 1e+00]'. + +# Created at 2026-07-07T10:51:18.441 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Constraint matrix coefficients range: [1e+00, 1e+00]'. + +# Created at 2026-07-07T10:51:18.441 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Constraint rhs / bounds range: [0e+00, 1e+00]'. + +# Created at 2026-07-07T10:51:18.443 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Variable bounds range: [0e+00, 0e+00]'. + +# Created at 2026-07-07T10:51:18.443 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Using PSLP presolver'. + +# Created at 2026-07-07T10:51:18.443 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'PSLP Presolved problem: 0 constraints, 0 variables, 0 non-zeros'. + +# Created at 2026-07-07T10:51:18.443 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Presolve completely solved the problem'. + +# Created at 2026-07-07T10:51:18.443 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'PSLP presolve time: 0.00s'. + +# Created at 2026-07-07T10:51:18.445 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Status: Optimal Objective: 1.000000'. + +# Created at 2026-07-07T10:51:18.539 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Setting parameter iteration_limit to 50'. + +# Created at 2026-07-07T10:51:18.540 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'cuOpt version: 26.8.0, git hash: c58e6fe8, host arch: x86_64, device archs: 86-real'. + +# Created at 2026-07-07T10:51:18.540 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'CPU: 13th Gen Intel(R) Core(TM) i7-13800H, threads (physical/logical): 10/20, RAM: 10.59 GiB'. + +# Created at 2026-07-07T10:51:18.540 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'CUDA 13.2, device: NVIDIA RTX A1000 6GB Laptop GPU (ID 0), VRAM: 6.00 GiB'. + +# Created at 2026-07-07T10:51:18.541 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'CUDA device UUID: fb968757-0d05-4cc2-229b-dc9fe8668e48'. + +# Created at 2026-07-07T10:51:18.544 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Problem has a quadratic objective. Solving with barrier.'. + +# Created at 2026-07-07T10:51:18.544 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Presolved problem: 1 constraints 3 variables 3 nonzeros'. + +# Created at 2026-07-07T10:51:18.544 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Skipping Ruiz equilibration (row norm ratio 1.0 < 100)'. + +# Created at 2026-07-07T10:51:18.545 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Barrier solver started at 0.00 seconds'. + +# Created at 2026-07-07T10:51:18.545 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Barrier solver: 1 constraints, 3 variables, 3 nonzeros'. + +# Created at 2026-07-07T10:51:18.550 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Quadratic objective matrix : 2 nonzeros'. + +# Created at 2026-07-07T10:51:18.550 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Density estimator time : 0.00s'. + +# Created at 2026-07-07T10:51:18.571 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Linear system : ADAT'. + +# Created at 2026-07-07T10:51:20.846 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'cuDSS Version : 0.7.1'. + +# Created at 2026-07-07T10:51:20.884 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'cuDSS Threading layer : libcudss_mtlayer_gomp.so.0'. + +# Created at 2026-07-07T10:51:20.884 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'ADAT time : 0.02s'. + +# Created at 2026-07-07T10:51:20.884 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'ADAT nonzeros : 1.00e+00'. + +# Created at 2026-07-07T10:51:20.901 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'ADAT density : 1.00'. + +# Created at 2026-07-07T10:51:20.927 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Reordering time : 0.02s'. + +# Created at 2026-07-07T10:51:20.927 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Symbolic factorization time : 0.03s'. + +# Created at 2026-07-07T10:51:20.927 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Total symbolic time : 0.04s'. + +# Created at 2026-07-07T10:51:20.981 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Symbolic nonzeros in factor : 5.00e-01'. + +# Created at 2026-07-07T10:51:20.982 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream ' Objective Infeasibility Time'. + +# Created at 2026-07-07T10:51:20.982 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Iter Primal Dual Primal Dual Compl. Elapsed'. + +# Created at 2026-07-07T10:51:21.005 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream ' 0 +6.049112426036e+02 -5.832189349112e+02 5.35e+00 3.86e+01 1.80e-01 2.4'. + +# Created at 2026-07-07T10:51:21.010 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream ' 1 +4.469460257991e+01 -3.485280616596e+01 5.35e-01 3.86e+00 4.58e-01 2.5'. + +# Created at 2026-07-07T10:51:21.015 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream ' 2 +8.367439798893e+00 -3.492279228860e+00 5.35e-02 3.86e-01 4.30e-01 2.5'. + +# Created at 2026-07-07T10:51:21.019 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream ' 3 +2.503548924546e+00 +6.142256097856e-01 5.35e-03 3.86e-02 2.19e-01 2.5'. + +# Created at 2026-07-07T10:51:21.023 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream ' 4 +1.871082024496e+00 +1.567052140041e+00 9.06e-04 6.54e-03 4.55e-02 2.5'. + +# Created at 2026-07-07T10:51:21.027 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream ' 5 +1.806936125983e+00 +1.772196769365e+00 9.76e-05 7.04e-04 5.81e-03 2.5'. + +# Created at 2026-07-07T10:51:21.032 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream ' 6 +1.800675069041e+00 +1.797202839171e+00 9.78e-06 7.06e-05 5.78e-04 2.5'. + +# Created at 2026-07-07T10:51:21.036 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream ' 7 +1.800067297846e+00 +1.799720448966e+00 9.78e-07 7.06e-06 5.76e-05 2.5'. + +# Created at 2026-07-07T10:51:21.040 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream ' 8 +1.800006727679e+00 +1.799972046957e+00 9.78e-08 7.06e-07 5.76e-06 2.5'. + +# Created at 2026-07-07T10:51:21.045 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream ' 9 +1.800000672747e+00 +1.799997204717e+00 9.78e-09 7.06e-08 5.76e-07 2.5'. + +# Created at 2026-07-07T10:51:21.050 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream ' 10 +1.800000067274e+00 +1.799999720472e+00 9.78e-10 7.06e-09 5.76e-08 2.5'. + +# Created at 2026-07-07T10:51:21.051 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream ' 11 +1.800000006727e+00 +1.799999972047e+00 9.78e-11 7.06e-10 5.76e-09 2.5'. + +# Created at 2026-07-07T10:51:21.051 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Optimal solution found in 11 iterations and 2.510s'. + +# Created at 2026-07-07T10:51:21.051 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Objective +1.80000001e+00'. + +# Created at 2026-07-07T10:51:21.051 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Primal infeasibility (abs/rel): 1.96e-10/9.78e-11'. + +# Created at 2026-07-07T10:51:21.051 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Dual infeasibility (abs/rel): 1.41e-09/7.06e-10'. + +# Created at 2026-07-07T10:51:21.054 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Complementarity gap (abs/rel): 1.61e-08/5.76e-09'. + +# Created at 2026-07-07T10:51:21.054 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Unscaled Primal infeasibility (abs/rel): 1.96e-10/9.78e-11'. + +# Created at 2026-07-07T10:51:21.054 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Post-solve Primal infeasibility (abs/rel): 1.96e-10/9.78e-11'. + +# Created at 2026-07-07T10:51:21.058 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Barrier finished in 2.51 seconds'. + +# Created at 2026-07-07T10:51:21.118 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Setting parameter method to 1'. + +# Created at 2026-07-07T10:51:21.118 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'cuOpt version: 26.8.0, git hash: c58e6fe8, host arch: x86_64, device archs: 86-real'. + +# Created at 2026-07-07T10:51:21.118 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'CPU: 13th Gen Intel(R) Core(TM) i7-13800H, threads (physical/logical): 10/20, RAM: 10.45 GiB'. + +# Created at 2026-07-07T10:51:21.119 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'CUDA 13.2, device: NVIDIA RTX A1000 6GB Laptop GPU (ID 0), VRAM: 6.00 GiB'. + +# Created at 2026-07-07T10:51:21.120 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'CUDA device UUID: fb968757-0d05-4cc2-229b-dc9fe8668e48'. + +# Created at 2026-07-07T10:51:21.120 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Solving a problem with 1 constraints, 2 variables (0 integers), and 2 nonzeros'. + +# Created at 2026-07-07T10:51:21.120 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Problem scaling:'. + +# Created at 2026-07-07T10:51:21.120 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Objective coefficents range: [1e+00, 1e+00]'. + +# Created at 2026-07-07T10:51:21.121 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Constraint matrix coefficients range: [1e+00, 1e+00]'. + +# Created at 2026-07-07T10:51:21.121 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Constraint rhs / bounds range: [0e+00, 1e+00]'. + +# Created at 2026-07-07T10:51:21.122 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Variable bounds range: [0e+00, 0e+00]'. + +# Created at 2026-07-07T10:51:21.122 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Using PSLP presolver'. + +# Created at 2026-07-07T10:51:21.122 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'PSLP Presolved problem: 0 constraints, 0 variables, 0 non-zeros'. + +# Created at 2026-07-07T10:51:21.123 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Presolve completely solved the problem'. + +# Created at 2026-07-07T10:51:21.123 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'PSLP presolve time: 0.00s'. + +# Created at 2026-07-07T10:51:21.133 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Status: Optimal Objective: 1.000000'. + +# Created at 2026-07-07T10:51:21.192 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Setting parameter time_limit to 1.000000e+01'. + +# Created at 2026-07-07T10:51:21.193 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'cuOpt version: 26.8.0, git hash: c58e6fe8, host arch: x86_64, device archs: 86-real'. + +# Created at 2026-07-07T10:51:21.193 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'CPU: 13th Gen Intel(R) Core(TM) i7-13800H, threads (physical/logical): 10/20, RAM: 10.44 GiB'. + +# Created at 2026-07-07T10:51:21.194 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'CUDA 13.2, device: NVIDIA RTX A1000 6GB Laptop GPU (ID 0), VRAM: 6.00 GiB'. + +# Created at 2026-07-07T10:51:21.194 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'CUDA device UUID: fb968757-0d05-4cc2-229b-dc9fe8668e48'. + +# Created at 2026-07-07T10:51:21.196 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Solving a problem with 1 constraints, 1 variables (1 integers), and 1 nonzeros'. + +# Created at 2026-07-07T10:51:21.196 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Problem scaling:'. + +# Created at 2026-07-07T10:51:21.196 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Objective coefficents range: [1e+00, 1e+00]'. + +# Created at 2026-07-07T10:51:21.196 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Constraint matrix coefficients range: [1e+00, 1e+00]'. + +# Created at 2026-07-07T10:51:21.196 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Constraint rhs / bounds range: [0e+00, 1e+00]'. + +# Created at 2026-07-07T10:51:21.209 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Variable bounds range: [0e+00, 1e+01]'. + +# Created at 2026-07-07T10:51:21.244 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'MIP row scaling completed'. + +# Created at 2026-07-07T10:51:21.262 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'New solution from early primal heuristics (CPUFJ). Objective +1.000000e+00. Time 0.03'. + +# Created at 2026-07-07T10:51:21.262 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Original problem: 1 constraints, 1 variables, 1 nonzeros'. + +# Created at 2026-07-07T10:51:21.266 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Calling Papilo presolver (git hash 741a2b9c)'. + +# Created at 2026-07-07T10:51:21.266 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Presolve status: reduced the problem'. + +# Created at 2026-07-07T10:51:21.266 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Presolve removed: 1 constraints, 1 variables, 1 nonzeros'. + +# Created at 2026-07-07T10:51:21.267 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Presolved problem: 0 constraints, 0 variables (0 integer), 0 nonzeros'. + +# Created at 2026-07-07T10:51:21.267 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Optimal solution found during presolve'. + +# Created at 2026-07-07T10:51:21.290 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Papilo presolve time: 0.07'. + +# Created at 2026-07-07T10:51:21.293 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Best feasible: 1.000000'. + +# Created at 2026-07-07T10:51:21.303 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Solution objective: 1.000000 , relative_mip_gap 0.000000 solution_bound 1.000000 presolve_time 0.073746 total_solve_time 0.000000 max constraint violation 0.000000 max int violation 0.000000 max var bounds violation 0.000000 nodes 0 simplex_iterations 0'. + +# Created at 2026-07-07T10:51:39.577 +Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'PSLP declares problem as infeasible.'. + diff --git a/java/cuopt/target/surefire-reports/TEST-com.nvidia.cuopt.linearprogramming.NativeIntegrationTest.xml b/java/cuopt/target/surefire-reports/TEST-com.nvidia.cuopt.linearprogramming.NativeIntegrationTest.xml new file mode 100644 index 0000000000..e0aa4aac49 --- /dev/null +++ b/java/cuopt/target/surefire-reports/TEST-com.nvidia.cuopt.linearprogramming.NativeIntegrationTest.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/java/cuopt/target/surefire-reports/TEST-com.nvidia.cuopt.linearprogramming.ProblemModelingTest.xml b/java/cuopt/target/surefire-reports/TEST-com.nvidia.cuopt.linearprogramming.ProblemModelingTest.xml new file mode 100644 index 0000000000..8a989c0ad0 --- /dev/null +++ b/java/cuopt/target/surefire-reports/TEST-com.nvidia.cuopt.linearprogramming.ProblemModelingTest.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/java/cuopt/target/surefire-reports/TEST-com.nvidia.cuopt.linearprogramming.PythonParityTest.xml b/java/cuopt/target/surefire-reports/TEST-com.nvidia.cuopt.linearprogramming.PythonParityTest.xml new file mode 100644 index 0000000000..6ab7c8ad17 --- /dev/null +++ b/java/cuopt/target/surefire-reports/TEST-com.nvidia.cuopt.linearprogramming.PythonParityTest.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/java/cuopt/target/surefire-reports/com.nvidia.cuopt.linearprogramming.NativeIntegrationTest.txt b/java/cuopt/target/surefire-reports/com.nvidia.cuopt.linearprogramming.NativeIntegrationTest.txt new file mode 100644 index 0000000000..7bebc78cfb --- /dev/null +++ b/java/cuopt/target/surefire-reports/com.nvidia.cuopt.linearprogramming.NativeIntegrationTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: com.nvidia.cuopt.linearprogramming.NativeIntegrationTest +------------------------------------------------------------------------------- +Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.125 s -- in com.nvidia.cuopt.linearprogramming.NativeIntegrationTest diff --git a/java/cuopt/target/surefire-reports/com.nvidia.cuopt.linearprogramming.ProblemModelingTest.txt b/java/cuopt/target/surefire-reports/com.nvidia.cuopt.linearprogramming.ProblemModelingTest.txt new file mode 100644 index 0000000000..d023fc040a --- /dev/null +++ b/java/cuopt/target/surefire-reports/com.nvidia.cuopt.linearprogramming.ProblemModelingTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: com.nvidia.cuopt.linearprogramming.ProblemModelingTest +------------------------------------------------------------------------------- +Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.035 s -- in com.nvidia.cuopt.linearprogramming.ProblemModelingTest diff --git a/java/cuopt/target/surefire-reports/com.nvidia.cuopt.linearprogramming.PythonParityTest.txt b/java/cuopt/target/surefire-reports/com.nvidia.cuopt.linearprogramming.PythonParityTest.txt new file mode 100644 index 0000000000..0e446162f0 --- /dev/null +++ b/java/cuopt/target/surefire-reports/com.nvidia.cuopt.linearprogramming.PythonParityTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: com.nvidia.cuopt.linearprogramming.PythonParityTest +------------------------------------------------------------------------------- +Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 18.00 s -- in com.nvidia.cuopt.linearprogramming.PythonParityTest diff --git a/java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/NativeIntegrationTest.class b/java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/NativeIntegrationTest.class new file mode 100644 index 0000000000000000000000000000000000000000..bf64b10f1ec52abee8add9fb5cd27dda7bcaeb4a GIT binary patch literal 18609 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 literal 0 HcmV?d00001 diff --git a/java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/PythonParityTest$CaseSpec.class b/java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/PythonParityTest$CaseSpec.class new file mode 100644 index 0000000000000000000000000000000000000000..8ba66aea0e32d46675e036765b81f3cc781d7808 GIT binary patch literal 9779 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 literal 0 HcmV?d00001 diff --git a/java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/PythonParityTest$JavaResult.class b/java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/PythonParityTest$JavaResult.class new file mode 100644 index 0000000000000000000000000000000000000000..977c505c454b007fbadc41159de586f738c20173 GIT binary patch literal 5946 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 V@-kRLX^dqo5W3Vjhcf1|_5rF$oMZq1 literal 0 HcmV?d00001 diff --git a/java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/PythonParityTest$PythonResult.class b/java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/PythonParityTest$PythonResult.class new file mode 100644 index 0000000000000000000000000000000000000000..78233c44960d6038f1a9de49e161f3fc68ce30de GIT binary patch literal 3423 zcmbtXTWlO>75--T-fC72x3zCZjZdxK!#6d61~{O6qSobQ}*etPx!WdLu$g%q}9T*IjpVi>Q(HoPT?2UBRoLrF}?`C&P{RSs{H z!y|Gyy#WR$4Nn$>U zx2tDgd}aHXdabffVKYh^7Bsv=fjV#4Wz$#C*gs>;8@X~|*|`CubWlOvs8w`~pzN6n z_N~4>6m4z8Ddt84&vJ?fZ#?Ot4)u`bSV511OxukDJH{1=ygNnxjs2Em4wmO8O>fMY zw0V;5cMFC+Zg`g5R}NLr^viZ2Z$odZ9iTDuOxduBMd_nrn;JO<(-u$k;e}w@bw(=B z^*+Zjy}WJszQlgGzu?a0oOx@?GIE8oTMBaWwc(XKx9Ayja|D=+Gz`o?+V-rU-3{jj)ee+1@r-Ia|TlNa(F-tNdvo;gEBp2xKAhUAZ^;rk+)X{-=DY)Z0 zr%A9`bLzO^Pct(*?nWDpJv^f0-FT0JhWyE);ju^ZLj%LTBS*73&LXely?CFF_v3LL z=kNi!`k;mn>G&`{qT{3Zn1YRKS;(Wqt{X7jMrpt#<)-{b6(3LH6FNSLZVjK(@o9WU z$051-td7s2SHtIZd_mfK07rFv5np0lI~Bwo!_n~s@~iB;5|X&(JW6_ZMAOc2y6@G} zc$KB0$r-aiKHvL)Xr=dUvb+<1$+oED?wSOu#g~*HNIIRef@#*2Z8}A{pf<9t&M!|! zl_VQV-;P@EHOrYY9~+Xfp#&doYU`^lS$~}zqy%k*)q9}Y((AdDkfzfs6-N42~mfE$e#4+)SCh zm1D^YOfP4YtXwbqnHN};V;hpq%?k$IV6bf4Yf^9{uu2=3No%^!>OLnhi>Alo3hR;E zRoCRYY&UE?;q}T^v;3oTrGTA-iDSdr7&l!C3-jakmTJ8M=x zC=u*qMj>!LeyYAsGW5IdY?+CAqB=#DM^UjIH=HTk^tVQm)p@JHt76QmhhqyRvxaze zN2`&_ii*5p+oR0EK@Hzfuh+w6=d6qD75oD66-q8BLs~&~vDd=QpgulONOh#z4{{1`L5D~X>V$2WWFb}u3A#ywDR z0$J?Az0e5sFz@c+Eg@ka4se#MH}XtD7uQ*cYj`aZ8n$U@)NqiMf-7j|=4I@?%$G6Q zUZe2fGh`s&etip7M{slvEq*EWOlSHI@@;VE z@}*Rli0@Bi5<8bKAk!ka$RzeK7DML}U%I({2`$Xu?Rd>%`cAny4?W$wa=K+Peb>t7 zb&Ks6u~kwh%3Uj~72-1L#D9qFzt|$K;Pv7vI$55(6H16kj|_!bL6`v*qP{7v)7ueh mieVIE;e3+016y5;nLCO7{6ET9@HKpu`8Ii;q@G9lTl^oIOe_ij literal 0 HcmV?d00001 diff --git a/java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/PythonParityTest.class b/java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/PythonParityTest.class new file mode 100644 index 0000000000000000000000000000000000000000..f33a2bc47dfef8881ed8cbc4c478e0ce91dd9b19 GIT binary patch literal 29441 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 0 else "-inf") + else: + emit(name, f"{value:.17g}") + + +def emit_float_array(name, values): + emit(name, ",".join(f"{float(v):.17g}" for v in values)) + + +def emit_int_array(name, values): + emit(name, ",".join(str(int(v)) for v in values)) + + +def emit_char_array(name, values): + chars = [] + for value in values: + if isinstance(value, bytes): + chars.append(value.decode("ascii")) + elif isinstance(value, np.bytes_): + chars.append(bytes(value).decode("ascii")) + else: + chars.append(str(value)) + emit(name, ",".join(chars)) + + +def as_float_array(values): + return np.array(values, dtype=np.float64) + + +def as_int_array(values): + return np.array(values, dtype=np.int32) + + +def as_char_array(values): + return np.array(values, dtype=" Date: Tue, 7 Jul 2026 15:22:27 -0400 Subject: [PATCH 2/5] removing some logs etc. --- java/cuopt/API_PARITY.md | 273 ----- java/cuopt/hs_err_pid101.log | 1600 ---------------------------- java/cuopt/hs_err_pid1440122.log | 1711 ----------------------------- java/cuopt/hs_err_pid1449708.log | 1716 ------------------------------ 4 files changed, 5300 deletions(-) delete mode 100644 java/cuopt/API_PARITY.md delete mode 100644 java/cuopt/hs_err_pid101.log delete mode 100644 java/cuopt/hs_err_pid1440122.log delete mode 100644 java/cuopt/hs_err_pid1449708.log diff --git a/java/cuopt/API_PARITY.md b/java/cuopt/API_PARITY.md deleted file mode 100644 index b558c4e2b0..0000000000 --- a/java/cuopt/API_PARITY.md +++ /dev/null @@ -1,273 +0,0 @@ - - -# Java/Python cuOpt binding parity plan - -This document tracks what it would mean for the Java bindings to be at parity -with the Python bindings and for tests to check behavioral parity. - -## Scope choices - -There are two materially different interpretations of "Python binding parity": - -1. **Full `cuopt` Python package parity.** This includes: - - `cuopt.linear_programming` - - `cuopt.routing` - - `cuopt.distance_engine` - - public helper functions exported by those packages - - The current Java source tree only has `com.nvidia.cuopt.linearprogramming`. - Full package parity would require new Java routing and distance-engine - packages plus new JNI/native wrappers for those C++ APIs. - -2. **Linear-programming package parity.** This covers the APIs currently closest - to the Java module: - - `cuopt.linear_programming.DataModel` - - `cuopt.linear_programming.Problem` - - `cuopt.linear_programming.SolverSettings` - - `cuopt.linear_programming.Solve` - - `cuopt.linear_programming.BatchSolve` - - `cuopt.linear_programming.Solution` - - `cuopt.linear_programming.Read` - - `cuopt.linear_programming.ParseMps` - - This is the realistic first parity target for the current Java module. - -## Current Java binding scope - -The Java module currently exposes LP/MILP/QP functionality through: - -- `DataModel` -- `Problem` -- `Variable` -- `Constraint` -- `LinearExpression` -- `QuadraticExpression` -- `SolverSettings` -- `Solution` -- `LPStats` -- `MIPStats` -- `PDLPWarmStartData` -- MIP callback interfaces - -It is backed by `java/cuopt/src/main/native/cuopt_jni.cpp` and the C LP API in -`cpp/include/cuopt/linear_programming/cuopt_c.h`. - -## Existing parity tests - -`PythonParityTest` currently verifies a representative set of LP/MILP solve -flows against Python cuOpt: - -- `lp_min_ge_unique_solution` -- `lp_max_le_unique_solution` -- `lp_equal_with_offset` -- `lp_ranged_bounds` -- `lp_mixed_bounds_negative_coefficients` -- `lp_max_ranged_bounds` -- `milp_integer_unique_solution` -- `milp_mixed_integer_continuous_max` -- `qp_diagonal_objective` -- `lp_infeasible_status` - -These are useful regression tests with model, solve, solution, LP-stat, -MIP-stat, and QP coverage, but they do not prove every Python binding function -has a Java equivalent or matching behavior. - -## Linear-programming API gap matrix - -### `DataModel` - -| Python API | Java status | Test status | -| --- | --- | --- | -| `__init__` plus incremental setters | Supported by the public no-argument `DataModel` constructor and fluent setters. | Native contract coverage. | -| `set_maximize` / `get_sense` | Supported via `ObjectiveSense` at creation and `getObjectiveSense`. | Covered by parity cases. | -| `set_csr_constraint_matrix` / matrix getters | Supported through `CsrMatrix` at creation and `getConstraintMatrix`. | Covered by parity cases. | -| `set_constraint_bounds`, `set_row_types`, RHS/row-type getters | Supported at creation plus `getConstraintRhs`, `getConstraintSense`. | Covered by parity cases. | -| `set_constraint_lower_bounds`, `set_constraint_upper_bounds`, bound getters | Supported through ranged factory plus getters. | Covered by ranged parity case. | -| `set_objective_coefficients`, `set_objective_offset`, getters | Supported at creation plus getters. | Covered by parity cases. | -| `set_objective_scaling_factor`, `get_objective_scaling_factor` | Supported by mutable Java `DataModel`. | Python oracle compares the scaling factor. | -| `set_quadratic_objective_matrix`, quadratic objective matrix getters | Supported alongside the expression-based quadratic setter. | Python oracle compares Q values, indices, and offsets. | -| `add_quadratic_constraint`, `clear_quadratic_constraints`, `get_quadratic_constraints` | Supported with a public `QuadraticConstraint` host representation. | Native contract coverage includes add/get/clear and row names. | -| `set_variable_lower_bounds`, `set_variable_upper_bounds`, bound getters | Supported at creation plus getters. | Covered by parity cases. | -| `set_variable_types`, `get_variable_types` | Supported at creation plus getter. | Covered by parity cases. | -| `set_variable_names`, `get_variable_names` | Supported by Java `DataModel`. | Python oracle compares names, including multi-character names. | -| `set_row_names`, `get_row_names` | Supported by Java `DataModel`. | Python oracle compares names. | -| `set_objective_name`, `get_objective_name` | Supported by Java `DataModel`. | Python oracle compares the objective name. | -| `set_problem_name`, `get_problem_name` | Supported by Java `DataModel`. | Python oracle compares the problem name. | -| `set_initial_primal_solution`, `set_initial_dual_solution`, getters | Supported on both `DataModel` and `SolverSettings`. | Native contract coverage verifies defensive copies and dimensions. | -| `get_ascii_row_types` | Supported as `getAsciiRowTypes`; `getRowTypes` and `getSense` aliases are also available. | Native contract coverage. | -| `writeMPS` | Supported as `writeMPS`. | Native MPS write/read/ParseMps/Problem.read round-trip coverage. | - -### `SolverSettings` - -| Python API | Java status | Test status | -| --- | --- | --- | -| `get_solver_parameter_names` | Supported. | Smoke-tested. | -| `get_solver_setting` | Supported as `SolverSettings.getSolverSetting`; Java also exposes a typed `getParameter`. | Native settings coverage. | -| `set_parameter`, `get_parameter` | Supported. | Lightly covered; not full parameter sweep. | -| `set_optimality_tolerance` | Supported as `setOptimalityTolerance`. | Native settings contract coverage. | -| `set_pdlp_warm_start_data` | Supported. | Not parity-tested end-to-end. | -| `get_pdlp_warm_start_data` on settings | Supported. | Java contract coverage; solution warm-start extraction is exercised by LP smoke tests. | -| `set_mip_callback` | Supported with Java callback interfaces. | Native registration/list contract coverage; callback invocation remains runtime-only. | -| `get_mip_callbacks` | Supported as an immutable Java view. | Java contract coverage through callback registration state. | -| `dump_parameters_to_file`, `load_parameters_from_file`, `toDict` | Supported through JNI/C API parameter-file bindings. | Native settings round-trip coverage. | - -### `Solution` - -| Python API | Java status | Test status | -| --- | --- | --- | -| `get_primal_solution` | Supported. | Covered by parity cases except infeasible solution values. | -| `get_dual_solution` | Supported for LP. | Covered for LP availability and values. | -| `get_reduced_cost` | Supported for LP. | Covered for LP availability and values. | -| `get_primal_objective` | Supported as `getPrimalObjective`. | Covered by parity cases. | -| `get_dual_objective` | Supported as `getDualObjective`. | Covered for non-MIP parity cases. | -| `get_termination_status` | Supported. | Covered by parity cases. | -| `get_termination_reason` | Supported as `getTerminationReason`. | Covered by the parity status assertions. | -| `get_error_status`, `get_error_message` | Supported. | Covered by parity cases. | -| `get_solve_time` | Supported. | Covered as non-negative when available, with `NaN` allowed when unavailable. Exact parity is not expected because Java and Python solve independently. | -| `get_solved_by`, `get_solved_by_pdlp` | Supported as `getSolvedBy` and deprecated-compatible `getSolvedByPdlp`. | LP parity compares solved-by method; helper is covered by API compilation. | -| `get_vars` | Supported as an immutable name-to-primal-value map when variable names are present. | Metadata/QP parity case covers the name-preserving path. | -| `get_lp_stats` | Supported through `LPStats`. | Availability and field parity are covered for LP/QP-style parity cases. | -| `get_milp_stats` | Supported through `MIPStats`, plus `getMipGap` and `getSolutionBound`. | Availability and field parity are covered, except elapsed presolve time is checked as non-negative when available, with `NaN` allowed when unavailable. | -| `get_pdlp_warm_start_data` | Supported. | LP smoke coverage plus field accessors; full field-by-field cross-language comparison remains runtime-only. | -| `get_problem_category` | Supported as `ProblemCategory`, while retaining `isMip`. | LP/MIP/QP parity compares category behavior. | - -### `Problem`, `Variable`, `LinearExpression`, `QuadraticExpression`, `Constraint` - -| Python API area | Java status | Test status | -| --- | --- | --- | -| Variable bounds, objective coefficient, type, name, value, MIP start | Mostly supported. | Lightly covered by modeling tests; no full parity oracle. | -| Linear expression arithmetic and comparisons | Java uses fluent methods instead of Python operator overloads. | Lightly covered. | -| Quadratic expression arithmetic and comparisons | Java has a smaller fluent API. Python operator coverage is broader. | QP smoke and Java-vs-Python diagonal-QP parity coverage exist. Broader quadratic expression/operator behavior remains open. | -| Constraint sense, RHS, coefficient, slack | Supported, including quadratic slack evaluation. | Pure-Java modeling coverage. | -| Problem add variable/constraint/objective, solve, read/write, getters | Supported for the LP/MILP/QP surface listed here. | Pure-Java, native, and parity coverage. | -| Problem update APIs: `update`, `updateConstraint`, `updateObjective`, `reset_solved_values` | Supported with fluent Java modeling equivalents. | Pure-Java modeling coverage. | -| Problem incumbent/warm-start helpers | Supported, including incumbent lookup and warm-start aliases. | Pure-Java/API contract coverage. | -| Problem `getQCSR`, `getQcsr`, `getQuadraticConstraints` | Supported. | Pure-Java quadratic modeling coverage. | -| Problem `relax` | Supported and preserves names/bounds/objective while converting variables to continuous. | Pure-Java modeling coverage. | -| Python operator overloads | Not one-to-one in Java by language design. | Should be mapped to equivalent fluent-method behavior, not copied literally. | - -### Top-level solver and parser APIs - -| Python API | Java status | Test status | -| --- | --- | --- | -| `Solve` | Supported as `DataModel.solve` and `Problem.solve`. | Covered by smoke and parity cases. | -| `BatchSolve` | Supported as a sequential Java compatibility entry point returning `BatchSolveResult`. | Native integration coverage. | -| `Read` | Supported as `DataModel.read` and `Problem.read`, including fixed-format dispatch. | Missing-file and generated-MPS round-trip coverage; successful execution requires native build/runtime. | -| `ParseMps` with fixed-MPS flag | Supported as `DataModel.parseMps` and `Problem.readMPS`. | Generated-MPS round-trip coverage; successful execution requires native build/runtime. | -| `toDict` | Supported as `DataModel.toDict`. | Native metadata/data-model coverage. | - -## Non-linear-programming package gaps - -### Routing - -Python exposes routing APIs through `cuopt.routing`, including: - -- `DataModel` -- `SolverSettings` -- `Solve` -- `BatchSolve` -- `Assignment` -- `SolutionStatus` -- `Objective` -- `DatasetDistribution` -- routing utility functions - -There is no Java routing package in the current source tree. Full parity here -requires new Java classes, JNI wrappers, and routing-specific parity tests. - -### Distance engine - -Python exposes `cuopt.distance_engine.WaypointMatrix` with: - -- `compute_cost_matrix` -- `compute_waypoint_sequence` -- `compute_shortest_path_costs` - -There is no Java distance-engine package in the current source tree. Full -parity here requires new Java classes, JNI wrappers, and distance-engine parity -tests. - -## Recommended implementation phases - -### Phase 1: Exhaustive tests for existing Java LP APIs - -No new Java binding APIs. Expand tests so every currently exposed Java -LP/MILP/QP binding method has either: - -- a Python behavior comparison, when Python has a true equivalent; or -- a Java-only contract test, when the method is Java-specific plumbing such as - lifecycle closing. - -Remaining targets: - -- parity-test `writeMPS`/`read` round trips on generated tiny models; -- parity-test `SolverSettings.getParameter` after string/int/float/bool set; -- parity-test PDLP warm-start data presence and field shapes; -- parity-test MIP callbacks with a tiny deterministic MILP if stable enough. - -Already covered by the expanded parity harness: - -- `DataModel.getNumNonZeros`; -- `Solution.getDualObjective`; -- `Solution.getErrorStatus` and `getErrorMessage`; -- `getSolveTime` behavior on both sides, allowing `NaN` when unavailable; -- deterministic `LPStats` fields, with `NaN` parity handled explicitly; -- deterministic `MIPStats` fields, with presolve time checked as non-negative - when available; -- a diagonal QP solve path. - -### Phase 2: Fill missing LP/MILP/QP binding APIs — implemented - -The current Java module now includes the following APIs mapped to the current -C API or existing JNI layer: - -- mutable `DataModel` construction and all LP/MIP/QP setters/getters; -- quadratic objective matrix and quadratic-constraint accessors; -- `BatchSolve` compatibility entry point; -- `Read`/`ParseMps` fixed-format entry points; -- solution category, termination-reason, solved-by, and variable-map helpers; -- problem update, relaxation, incumbent, QCSR, and warm-start helpers; -- parameter dump/load/to-map equivalents. - -The remaining validation work is successful parser round-trip execution and -stable callback/warm-start end-to-end checks on a CUDA-enabled build. - -### Phase 3: Decide how to handle Python-only modeling conveniences - -Python operator overloads do not translate directly to Java. The parity target -should be equivalent behavior through Java idioms: - -- fluent `plus`, `minus`, `times`, `le`, `ge`, `eq` methods; -- builder/factory APIs instead of Python's mutable empty `DataModel`, if that - remains the chosen Java style. - -Each intentional Java design difference should be documented in the matrix and -covered by behavior tests. - -### Phase 4: Routing and distance-engine parity, if full package parity is required - -This is a separate project-sized effort: - -- design Java package names and API style; -- add native wrappers for routing and distance-engine C++ APIs; -- port Python routing/distance model construction tests to Java; -- add Java-vs-Python oracle tests like `PythonParityTest`; -- decide which Python utility functions are public API versus examples/helpers. - -## Definition of done for "every binding function" - -A binding function is considered covered only when one of these is true: - -1. **Parity-covered:** Java exposes equivalent behavior and a test compares it - against Python on the same input. -2. **Contract-covered:** Java exposes behavior that has no Python equivalent, - and a Java-only test checks the Java contract. -3. **Intentionally unsupported:** The function is listed in this matrix with a - reason, and there is no silent gap. - -The LP/MILP/QP API surface is substantially covered, but the suite is not at -the full-package definition of done until parser round trips and the optional -callback/warm-start runtime checks run in a CUDA-enabled environment. diff --git a/java/cuopt/hs_err_pid101.log b/java/cuopt/hs_err_pid101.log deleted file mode 100644 index 2c0b1ea5b8..0000000000 --- a/java/cuopt/hs_err_pid101.log +++ /dev/null @@ -1,1600 +0,0 @@ -# -# A fatal error has been detected by the Java Runtime Environment: -# -# SIGBUS (0x7) at pc=0x00007f41ff060c00, pid=101, tid=102 -# -# JRE version: OpenJDK Runtime Environment (11.0.24+8) (build 11.0.24+8-post-Ubuntu-1ubuntu322.04) -# Java VM: OpenJDK 64-Bit Server VM (11.0.24+8-post-Ubuntu-1ubuntu322.04, mixed mode, sharing, tiered, compressed oops, g1 gc, linux-amd64) -# Problematic frame: -# C [libcuopt.so+0x59fc00] cuopt::linear_programming::problem_and_stream_view_t::~problem_and_stream_view_t()+0x30 -# -# Core dump will be written. Default location: Core dumps may be processed with "/wsl-capture-crash %t %E %p %s" (or dumping to /home/cbrissette/cuopt/java/cuopt/core.101) -# -# If you would like to submit a bug report, please visit: -# https://bugs.launchpad.net/ubuntu/+source/openjdk-lts -# The crash happened outside the Java Virtual Machine in native code. -# See problematic frame for where to report the bug. -# - ---------------- S U M M A R Y ------------ - -Command Line: /home/cbrissette/cuopt/java/cuopt/target/surefire/surefirebooter-20260707090606534_3.jar /home/cbrissette/cuopt/java/cuopt/target/surefire 2026-07-07T09-06-06_415-jvmRun1 surefire-20260707090606534_1tmp surefire_0-20260707090606534_2tmp - -Host: 13th Gen Intel(R) Core(TM) i7-13800H, 20 cores, 15G, Ubuntu 22.04.5 LTS -Time: Tue Jul 7 09:06:07 2026 EDT elapsed time: 0.528521 seconds (0d 0h 0m 0s) - ---------------- T H R E A D --------------- - -Current thread (0x00007f428c016000): JavaThread "main" [_thread_in_native, id=102, stack(0x00007f4291069000,0x00007f4291169000)] - -Stack: [0x00007f4291069000,0x00007f4291169000], sp=0x00007f4291164910, free space=1006k -Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code) -C [libcuopt.so+0x59fc00] cuopt::linear_programming::problem_and_stream_view_t::~problem_and_stream_view_t()+0x30 - -Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) -j com.nvidia.cuopt.linearprogramming.NativeCuOpt.destroyProblem(J)V+0 -j com.nvidia.cuopt.linearprogramming.DataModel$NativeHandle.run()V+13 -J 707 c1 jdk.internal.ref.CleanerImpl$PhantomCleanableRef.performCleanup()V java.base@11.0.24 (10 bytes) @ 0x00007f4275060974 [0x00007f4275060840+0x0000000000000134] -J 706 c1 jdk.internal.ref.PhantomCleanable.clean()V java.base@11.0.24 (16 bytes) @ 0x00007f427505f73c [0x00007f427505f560+0x00000000000001dc] -j com.nvidia.cuopt.linearprogramming.DataModel.close()V+4 -j com.nvidia.cuopt.linearprogramming.NativeIntegrationTest.mutableDataModelExposesPythonMetadataAndQuadraticFields()V+576 -v ~StubRoutines::call_stub -j jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+0 java.base@11.0.24 -j jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+100 java.base@11.0.24 -j jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+6 java.base@11.0.24 -j java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+59 java.base@11.0.24 -j org.junit.platform.commons.util.ReflectionUtils.invokeMethod(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+42 -j org.junit.jupiter.engine.execution.MethodInvocation.proceed()Ljava/lang/Object;+16 -j org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed()Ljava/lang/Object;+8 -j org.junit.jupiter.engine.extension.TimeoutExtension.intercept(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/TimeoutDuration;Lorg/junit/jupiter/engine/extension/TimeoutExtension$TimeoutProvider;)Ljava/lang/Object;+28 -j org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/TimeoutExtension$TimeoutProvider;)Ljava/lang/Object;+31 -j org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)V+9 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda$189.apply(Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)V+5 -j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(Lorg/junit/jupiter/engine/execution/InterceptingExecutableInvoker$ReflectiveInterceptorCall$VoidMethodInterceptorCall;Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)Ljava/lang/Void;+6 -j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall$$Lambda$190.apply(Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)Ljava/lang/Object;+9 -j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(Lorg/junit/jupiter/engine/execution/InterceptingExecutableInvoker$ReflectiveInterceptorCall;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;)Ljava/lang/Object;+6 -j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$$Lambda$389.apply(Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;)Ljava/lang/Object;+14 -j org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed()Ljava/lang/Object;+12 -j org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;)Ljava/lang/Object;+1 -j org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/engine/execution/InvocationInterceptorChain$InterceptorCall;Ljava/util/List;)Ljava/lang/Object;+24 -j org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/engine/execution/InvocationInterceptorChain$InterceptorCall;)Ljava/lang/Object;+31 -j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/engine/execution/InterceptingExecutableInvoker$ReflectiveInterceptorCall;)Ljava/lang/Object;+15 -j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(Ljava/lang/reflect/Method;Ljava/lang/Object;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/engine/execution/InterceptingExecutableInvoker$ReflectiveInterceptorCall;)Ljava/lang/Object;+55 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$8(Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)V+28 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda$410.execute()V+12 -j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)V+21 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;+44 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;+6 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6()V+79 -j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$308.execute()V+4 -j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+15 -j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$307.invoke(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+5 -j org.junit.platform.engine.support.hierarchical.Node.around(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$Invocation;)V+2 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9()V+14 -j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$306.execute()V+4 -j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively()V+31 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.execute()V+55 -j org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService$$Lambda$312.accept(Ljava/lang/Object;)V+4 -j java.util.ArrayList.forEach(Ljava/util/function/Consumer;)V+46 java.base@11.0.24 -j org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(Ljava/util/List;)V+6 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6()V+116 -j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$308.execute()V+4 -j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+15 -j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$307.invoke(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+5 -j org.junit.platform.engine.support.hierarchical.Node.around(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$Invocation;)V+2 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9()V+14 -j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$306.execute()V+4 -j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively()V+31 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.execute()V+55 -j org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService$$Lambda$312.accept(Ljava/lang/Object;)V+4 -j java.util.ArrayList.forEach(Ljava/util/function/Consumer;)V+46 java.base@11.0.24 -j org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(Ljava/util/List;)V+6 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6()V+116 -j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$308.execute()V+4 -j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+15 -j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$307.invoke(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+5 -j org.junit.platform.engine.support.hierarchical.Node.around(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$Invocation;)V+2 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9()V+14 -j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$306.execute()V+4 -j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively()V+31 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.execute()V+55 -j org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(Lorg/junit/platform/engine/support/hierarchical/HierarchicalTestExecutorService$TestTask;)Ljava/util/concurrent/Future;+1 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute()Ljava/util/concurrent/Future;+74 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(Lorg/junit/platform/engine/ExecutionRequest;)V+31 -j org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(Lorg/junit/platform/engine/TestDescriptor;Lorg/junit/platform/engine/EngineExecutionListener;Lorg/junit/platform/engine/ConfigurationParameters;Lorg/junit/platform/engine/TestEngine;)V+24 -j org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(Lorg/junit/platform/launcher/core/LauncherDiscoveryResult;Lorg/junit/platform/engine/EngineExecutionListener;)V+115 -j org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(Lorg/junit/platform/launcher/core/InternalTestPlan;Lorg/junit/platform/engine/EngineExecutionListener;Lorg/junit/platform/launcher/TestExecutionListener;)V+55 -j org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(Lorg/junit/platform/launcher/core/InternalTestPlan;Lorg/junit/platform/launcher/TestExecutionListener;)V+6 -j org.junit.platform.launcher.core.EngineExecutionOrchestrator$$Lambda$259.accept(Ljava/lang/Object;)V+12 -j org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(Lorg/junit/platform/engine/ConfigurationParameters;Lorg/junit/platform/launcher/core/ListenerRegistry;Ljava/util/function/Consumer;)V+51 -j org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(Lorg/junit/platform/launcher/core/InternalTestPlan;[Lorg/junit/platform/launcher/TestExecutionListener;)V+23 -j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/launcher/core/InternalTestPlan;[Lorg/junit/platform/launcher/TestExecutionListener;)V+6 -j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;[Lorg/junit/platform/launcher/TestExecutionListener;)V+34 -j org.junit.platform.launcher.core.DelegatingLauncher.execute(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;[Lorg/junit/platform/launcher/TestExecutionListener;)V+6 -j org.apache.maven.surefire.junitplatform.LazyLauncher.execute(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;[Lorg/junit/platform/launcher/TestExecutionListener;)V+6 -j org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.execute(Lorg/apache/maven/surefire/api/util/TestsToRun;Lorg/apache/maven/surefire/junitplatform/RunListenerAdapter;)V+70 -j org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(Lorg/apache/maven/surefire/api/util/TestsToRun;Lorg/apache/maven/surefire/junitplatform/RunListenerAdapter;)V+3 -j org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(Ljava/lang/Object;)Lorg/apache/maven/surefire/api/suite/RunResult;+95 -j org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess()V+8 -j org.apache.maven.surefire.booter.ForkedBooter.execute()V+1 -j org.apache.maven.surefire.booter.ForkedBooter.run(Lorg/apache/maven/surefire/booter/ForkedBooter;[Ljava/lang/String;)V+27 -j org.apache.maven.surefire.booter.ForkedBooter.main([Ljava/lang/String;)V+10 -v ~StubRoutines::call_stub - -siginfo: si_signo: 7 (SIGBUS), si_code: 128 (SI_KERNEL), si_addr: 0x0000000000000000 - -Register to memory mapping: - -RAX=0x0 is NULL -RBX=0x00007f428cc1eee0 points into unknown readable memory: 0x0000000700000000 | 00 00 00 00 07 00 00 00 -RCX=0x0000000000000060 is an unknown value -RDX=0x00007f428c000090 points into unknown readable memory: 0x00007f428d0868b0 | b0 68 08 8d 42 7f 00 00 -RSP=0x00007f4291164910 is pointing into the stack for thread: 0x00007f428c016000 -RBP=0x696c2f5345474153 is an unknown value -RSI=0x0 is NULL -RDI=0x0 is NULL -R8 ={method} {0x00007f425fc1b9a8} 'destroyProblem' '(J)V' in 'com/nvidia/cuopt/linearprogramming/NativeCuOpt' -R9 =0x0 is NULL -R10=0x00007f41feb23e08: in /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so at 0x00007f41feac1000 -R11=0x00007f41ff060cb0: cuOptDestroyProblem+0x0000000000000000 in /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so at 0x00007f41feac1000 -R12=0x00007f429286c6d0: __pthread_key_create+0x0000000000000000 in /lib/x86_64-linux-gnu/libc.so.6 at 0x00007f42927d6000 -R13={method} {0x00007f425fc1b9a8} 'destroyProblem' '(J)V' in 'com/nvidia/cuopt/linearprogramming/NativeCuOpt' -R14=0x00007f4291164a18 is pointing into the stack for thread: 0x00007f428c016000 -R15=0x00007f428c016000 is a thread - - -Registers: -RAX=0x0000000000000000, RBX=0x00007f428cc1eee0, RCX=0x0000000000000060, RDX=0x00007f428c000090 -RSP=0x00007f4291164910, RBP=0x696c2f5345474153, RSI=0x0000000000000000, RDI=0x0000000000000000 -R8 =0x00007f425fc1b9a8, R9 =0x0000000000000000, R10=0x00007f41feb23e08, R11=0x00007f41ff060cb0 -R12=0x00007f429286c6d0, R13=0x00007f425fc1b9a8, R14=0x00007f4291164a18, R15=0x00007f428c016000 -RIP=0x00007f41ff060c00, EFLAGS=0x0000000000010206, CSGSFS=0x002b000000000033, ERR=0x0000000000000000 - TRAPNO=0x000000000000000c - -Top of Stack: (sp=0x00007f4291164910) -0x00007f4291164910: 00007f4291164a18 00007f4291164958 -0x00007f4291164920: 00007f428cc1eee0 00007f41ff060cce -0x00007f4291164930: 00007f428cc1eee0 00007f428cc1eee0 -0x00007f4291164940: 00007f42911649f0 00007f425e361ff8 - -Instructions: (pc=0x00007f41ff060c00) -0x00007f41ff060b00: 00 eb d6 0f 1f 44 00 00 48 8b 07 ff 90 38 01 00 -0x00007f41ff060b10: 00 eb c6 0f 1f 44 00 00 48 8b 07 ff 90 30 01 00 -0x00007f41ff060b20: 00 eb b6 0f 1f 44 00 00 b8 01 00 00 00 5b c3 48 -0x00007f41ff060b30: 89 c7 48 89 d0 e9 33 3a d0 ff 66 0f 1f 44 00 00 -0x00007f41ff060b40: 48 85 d2 74 3b 48 85 ff 74 36 80 3f 00 75 31 48 -0x00007f41ff060b50: 8b 7f 10 48 85 ff 74 28 53 48 89 d3 83 fe 0c 74 -0x00007f41ff060b60: 4f 83 fe 10 74 3a 83 fe 0b 75 25 48 8b 07 ff 90 -0x00007f41ff060b70: 40 01 00 00 89 03 31 c0 5b c3 66 0f 1f 44 00 00 -0x00007f41ff060b80: b8 01 00 00 00 c3 66 2e 0f 1f 84 00 00 00 00 00 -0x00007f41ff060b90: b8 01 00 00 00 5b c3 66 0f 1f 84 00 00 00 00 00 -0x00007f41ff060ba0: 48 8b 07 ff 90 68 01 00 00 eb c9 0f 1f 44 00 00 -0x00007f41ff060bb0: 48 8b 07 ff 90 48 01 00 00 eb b9 48 89 c7 48 89 -0x00007f41ff060bc0: d0 e9 c8 39 d0 ff 66 2e 0f 1f 84 00 00 00 00 00 -0x00007f41ff060bd0: 55 53 48 89 fb 48 83 ec 08 48 8b 7f 08 48 85 ff -0x00007f41ff060be0: 74 06 48 8b 07 ff 50 08 48 8b 7b 10 48 85 ff 74 -0x00007f41ff060bf0: 06 48 8b 07 ff 50 08 48 8b 6b 50 48 85 ed 74 47 -0x00007f41ff060c00: 48 8b 45 00 48 8d 15 a5 da e1 ff 48 8b 40 08 48 -0x00007f41ff060c10: 39 d0 0f 85 88 00 00 00 48 8b 05 99 70 c4 00 48 -0x00007f41ff060c20: 8d 7d 48 48 83 c0 10 48 89 45 00 e8 d0 e0 e1 ff -0x00007f41ff060c30: 48 8d 7d 30 e8 e7 df e1 ff be 60 00 00 00 48 89 -0x00007f41ff060c40: ef ff 15 21 e1 c3 00 48 8b 7b 48 48 85 ff 74 0b -0x00007f41ff060c50: be 08 00 00 00 ff 15 0d e1 c3 00 48 8b 7b 30 48 -0x00007f41ff060c60: 85 ff 74 0d 48 8b 73 40 48 29 fe ff 15 f7 e0 c3 -0x00007f41ff060c70: 00 48 8b 7b 18 48 85 ff 74 16 48 8b 73 28 48 83 -0x00007f41ff060c80: c4 08 5b 5d 48 29 fe ff 25 db e0 c3 00 0f 1f 00 -0x00007f41ff060c90: 48 83 c4 08 5b 5d c3 66 0f 1f 84 00 00 00 00 00 -0x00007f41ff060ca0: 48 89 ef ff d0 eb a0 66 0f 1f 84 00 00 00 00 00 -0x00007f41ff060cb0: 48 85 ff 74 3b 55 53 48 89 fb 48 83 ec 08 48 8b -0x00007f41ff060cc0: 2f 48 85 ed 74 1d 48 89 ef e8 02 ff ff ff be 58 -0x00007f41ff060cd0: 00 00 00 48 89 ef ff 15 8c e0 c3 00 48 c7 03 00 -0x00007f41ff060ce0: 00 00 00 48 83 c4 08 5b 5d c3 66 0f 1f 44 00 00 -0x00007f41ff060cf0: c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 - - -Stack slot to memory mapping: -stack at sp + 0 slots: 0x00007f4291164a18 is pointing into the stack for thread: 0x00007f428c016000 -stack at sp + 1 slots: 0x00007f4291164958 is pointing into the stack for thread: 0x00007f428c016000 -stack at sp + 2 slots: 0x00007f428cc1eee0 points into unknown readable memory: 0x0000000700000000 | 00 00 00 00 07 00 00 00 -stack at sp + 3 slots: 0x00007f41ff060cce: cuOptDestroyProblem+0x000000000000001e in /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so at 0x00007f41feac1000 -stack at sp + 4 slots: 0x00007f428cc1eee0 points into unknown readable memory: 0x0000000700000000 | 00 00 00 00 07 00 00 00 -stack at sp + 5 slots: 0x00007f428cc1eee0 points into unknown readable memory: 0x0000000700000000 | 00 00 00 00 07 00 00 00 -stack at sp + 6 slots: 0x00007f42911649f0 is pointing into the stack for thread: 0x00007f428c016000 -stack at sp + 7 slots: 0x00007f425e361ff8: Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_destroyProblem+0x0000000000000098 in /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so at 0x00007f425e340000 - - ---------------- P R O C E S S --------------- - -Threads class SMR info: -_java_thread_list=0x00007f428c6b7b30, length=17, elements={ -0x00007f428c016000, 0x00007f428c253800, 0x00007f428c255800, 0x00007f428c25d800, -0x00007f428c25f800, 0x00007f428c262000, 0x00007f428c264000, 0x00007f428c266000, -0x00007f423409d800, 0x00007f428c299000, 0x00007f428c3f1800, 0x00007f428c3fe800, -0x00007f42300cd000, 0x00007f423819d000, 0x00007f423819f000, 0x00007f428c6b4000, -0x00007f428c6b6000 -} - -Java Threads: ( => current thread ) -=>0x00007f428c016000 JavaThread "main" [_thread_in_native, id=102, stack(0x00007f4291069000,0x00007f4291169000)] - 0x00007f428c253800 JavaThread "Reference Handler" daemon [_thread_blocked, id=111, stack(0x00007f425f27b000,0x00007f425f37b000)] - 0x00007f428c255800 JavaThread "Finalizer" daemon [_thread_blocked, id=112, stack(0x00007f425f17b000,0x00007f425f27b000)] - 0x00007f428c25d800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=113, stack(0x00007f425f07b000,0x00007f425f17b000)] - 0x00007f428c25f800 JavaThread "Service Thread" daemon [_thread_blocked, id=114, stack(0x00007f425ef7b000,0x00007f425f07b000)] - 0x00007f428c262000 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=115, stack(0x00007f425ee7b000,0x00007f425ef7b000)] - 0x00007f428c264000 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=117, stack(0x00007f425ed7b000,0x00007f425ee7b000)] - 0x00007f428c266000 JavaThread "Sweeper thread" daemon [_thread_blocked, id=118, stack(0x00007f425ec7b000,0x00007f425ed7b000)] - 0x00007f423409d800 JavaThread "C1 CompilerThread1" daemon [_thread_blocked, id=119, stack(0x00007f425eb7b000,0x00007f425ec7b000)] - 0x00007f428c299000 JavaThread "Common-Cleaner" daemon [_thread_blocked, id=121, stack(0x00007f425e97a000,0x00007f425ea7a000)] - 0x00007f428c3f1800 JavaThread "surefire-forkedjvm-stream-flusher" daemon [_thread_blocked, id=122, stack(0x00007f425e87a000,0x00007f425e97a000)] - 0x00007f428c3fe800 JavaThread "surefire-forkedjvm-command-thread" daemon [_thread_in_native, id=123, stack(0x00007f425e77a000,0x00007f425e87a000)] - 0x00007f42300cd000 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=124, stack(0x00007f425e67a000,0x00007f425e77a000)] - 0x00007f423819d000 JavaThread "C1 CompilerThread2" daemon [_thread_blocked, id=125, stack(0x00007f425e57a000,0x00007f425e67a000)] - 0x00007f423819f000 JavaThread "C1 CompilerThread3" daemon [_thread_blocked, id=126, stack(0x00007f425e47a000,0x00007f425e57a000)] - 0x00007f428c6b4000 JavaThread "process reaper" daemon [_thread_blocked, id=128, stack(0x00007f4264024000,0x00007f4264046000)] - 0x00007f428c6b6000 JavaThread "Cleaner-0" daemon [_thread_blocked, id=129, stack(0x00007f425e37a000,0x00007f425e47a000)] - -Other Threads: - 0x00007f428c250800 VMThread "VM Thread" [stack: 0x00007f425f37c000,0x00007f425f47c000] [id=110] - 0x00007f428c296800 WatcherThread [stack: 0x00007f425ea7b000,0x00007f425eb7b000] [id=120] - 0x00007f428c030000 GCTaskThread "GC Thread#0" [stack: 0x00007f4290d2f000,0x00007f4290e2f000] [id=103] - 0x00007f428c08d800 ConcurrentGCThread "G1 Main Marker" [stack: 0x00007f42742d7000,0x00007f42743d7000] [id=104] - 0x00007f428c08f800 ConcurrentGCThread "G1 Conc#0" [stack: 0x00007f42741d6000,0x00007f42742d6000] [id=105] - 0x00007f428c1ab000 ConcurrentGCThread "G1 Refine#0" [stack: 0x00007f425fdff000,0x00007f425feff000] [id=108] - 0x00007f428c1ac800 ConcurrentGCThread "G1 Young RemSet Sampling" [stack: 0x00007f425fcfe000,0x00007f425fdfe000] [id=109] - -Threads with active compile tasks: - -VM state:not at safepoint (normal execution) - -VM Mutex/Monitor currently owned by a thread: None - -Heap address: 0x0000000709200000, size: 3950 MB, Compressed Oops mode: Zero based, Oop shift amount: 3 -Narrow klass base: 0x0000000800000000, Narrow klass shift: 3 -Compressed class space size: 1073741824 Address: 0x0000000840000000 - -Heap: - garbage-first heap total 256000K, used 21200K [0x0000000709200000, 0x0000000800000000) - region size 1024K, 22 young (22528K), 0 survivors (0K) - Metaspace used 6868K, capacity 8529K, committed 8704K, reserved 1056768K - class space used 842K, capacity 1167K, committed 1280K, reserved 1048576K -Heap Regions: E=young(eden), S=young(survivor), O=old, HS=humongous(starts), HC=humongous(continues), CS=collection set, F=free, A=archive, TAMS=top-at-mark-start (previous, next) -| 0|0x0000000709200000, 0x0000000709200000, 0x0000000709300000| 0%| F| |TAMS 0x0000000709200000, 0x0000000709200000| Untracked -| 1|0x0000000709300000, 0x0000000709300000, 0x0000000709400000| 0%| F| |TAMS 0x0000000709300000, 0x0000000709300000| Untracked -| 2|0x0000000709400000, 0x0000000709400000, 0x0000000709500000| 0%| F| |TAMS 0x0000000709400000, 0x0000000709400000| Untracked -| 3|0x0000000709500000, 0x0000000709500000, 0x0000000709600000| 0%| F| |TAMS 0x0000000709500000, 0x0000000709500000| Untracked -| 4|0x0000000709600000, 0x0000000709600000, 0x0000000709700000| 0%| F| |TAMS 0x0000000709600000, 0x0000000709600000| Untracked -| 5|0x0000000709700000, 0x0000000709700000, 0x0000000709800000| 0%| F| |TAMS 0x0000000709700000, 0x0000000709700000| Untracked -| 6|0x0000000709800000, 0x0000000709800000, 0x0000000709900000| 0%| F| |TAMS 0x0000000709800000, 0x0000000709800000| Untracked -| 7|0x0000000709900000, 0x0000000709900000, 0x0000000709a00000| 0%| F| |TAMS 0x0000000709900000, 0x0000000709900000| Untracked -| 8|0x0000000709a00000, 0x0000000709a00000, 0x0000000709b00000| 0%| F| |TAMS 0x0000000709a00000, 0x0000000709a00000| Untracked -| 9|0x0000000709b00000, 0x0000000709b00000, 0x0000000709c00000| 0%| F| |TAMS 0x0000000709b00000, 0x0000000709b00000| Untracked -| 10|0x0000000709c00000, 0x0000000709c00000, 0x0000000709d00000| 0%| F| |TAMS 0x0000000709c00000, 0x0000000709c00000| Untracked -| 11|0x0000000709d00000, 0x0000000709d00000, 0x0000000709e00000| 0%| F| |TAMS 0x0000000709d00000, 0x0000000709d00000| Untracked -| 12|0x0000000709e00000, 0x0000000709e00000, 0x0000000709f00000| 0%| F| |TAMS 0x0000000709e00000, 0x0000000709e00000| Untracked -| 13|0x0000000709f00000, 0x0000000709f00000, 0x000000070a000000| 0%| F| |TAMS 0x0000000709f00000, 0x0000000709f00000| Untracked -| 14|0x000000070a000000, 0x000000070a000000, 0x000000070a100000| 0%| F| |TAMS 0x000000070a000000, 0x000000070a000000| Untracked -| 15|0x000000070a100000, 0x000000070a100000, 0x000000070a200000| 0%| F| |TAMS 0x000000070a100000, 0x000000070a100000| Untracked -| 16|0x000000070a200000, 0x000000070a200000, 0x000000070a300000| 0%| F| |TAMS 0x000000070a200000, 0x000000070a200000| Untracked -| 17|0x000000070a300000, 0x000000070a300000, 0x000000070a400000| 0%| F| |TAMS 0x000000070a300000, 0x000000070a300000| Untracked -| 18|0x000000070a400000, 0x000000070a400000, 0x000000070a500000| 0%| F| |TAMS 0x000000070a400000, 0x000000070a400000| Untracked -| 19|0x000000070a500000, 0x000000070a500000, 0x000000070a600000| 0%| F| |TAMS 0x000000070a500000, 0x000000070a500000| Untracked -| 20|0x000000070a600000, 0x000000070a600000, 0x000000070a700000| 0%| F| |TAMS 0x000000070a600000, 0x000000070a600000| Untracked -| 21|0x000000070a700000, 0x000000070a700000, 0x000000070a800000| 0%| F| |TAMS 0x000000070a700000, 0x000000070a700000| Untracked -| 22|0x000000070a800000, 0x000000070a800000, 0x000000070a900000| 0%| F| |TAMS 0x000000070a800000, 0x000000070a800000| Untracked -| 23|0x000000070a900000, 0x000000070a900000, 0x000000070aa00000| 0%| F| |TAMS 0x000000070a900000, 0x000000070a900000| Untracked -| 24|0x000000070aa00000, 0x000000070aa00000, 0x000000070ab00000| 0%| F| |TAMS 0x000000070aa00000, 0x000000070aa00000| Untracked -| 25|0x000000070ab00000, 0x000000070ab00000, 0x000000070ac00000| 0%| F| |TAMS 0x000000070ab00000, 0x000000070ab00000| Untracked -| 26|0x000000070ac00000, 0x000000070ac00000, 0x000000070ad00000| 0%| F| |TAMS 0x000000070ac00000, 0x000000070ac00000| Untracked -| 27|0x000000070ad00000, 0x000000070ad00000, 0x000000070ae00000| 0%| F| |TAMS 0x000000070ad00000, 0x000000070ad00000| Untracked -| 28|0x000000070ae00000, 0x000000070ae00000, 0x000000070af00000| 0%| F| |TAMS 0x000000070ae00000, 0x000000070ae00000| Untracked -| 29|0x000000070af00000, 0x000000070af00000, 0x000000070b000000| 0%| F| |TAMS 0x000000070af00000, 0x000000070af00000| Untracked -| 30|0x000000070b000000, 0x000000070b000000, 0x000000070b100000| 0%| F| |TAMS 0x000000070b000000, 0x000000070b000000| Untracked -| 31|0x000000070b100000, 0x000000070b100000, 0x000000070b200000| 0%| F| |TAMS 0x000000070b100000, 0x000000070b100000| Untracked -| 32|0x000000070b200000, 0x000000070b200000, 0x000000070b300000| 0%| F| |TAMS 0x000000070b200000, 0x000000070b200000| Untracked -| 33|0x000000070b300000, 0x000000070b300000, 0x000000070b400000| 0%| F| |TAMS 0x000000070b300000, 0x000000070b300000| Untracked -| 34|0x000000070b400000, 0x000000070b400000, 0x000000070b500000| 0%| F| |TAMS 0x000000070b400000, 0x000000070b400000| Untracked -| 35|0x000000070b500000, 0x000000070b500000, 0x000000070b600000| 0%| F| |TAMS 0x000000070b500000, 0x000000070b500000| Untracked -| 36|0x000000070b600000, 0x000000070b600000, 0x000000070b700000| 0%| F| |TAMS 0x000000070b600000, 0x000000070b600000| Untracked -| 37|0x000000070b700000, 0x000000070b700000, 0x000000070b800000| 0%| F| |TAMS 0x000000070b700000, 0x000000070b700000| Untracked -| 38|0x000000070b800000, 0x000000070b800000, 0x000000070b900000| 0%| F| |TAMS 0x000000070b800000, 0x000000070b800000| Untracked -| 39|0x000000070b900000, 0x000000070b900000, 0x000000070ba00000| 0%| F| |TAMS 0x000000070b900000, 0x000000070b900000| Untracked -| 40|0x000000070ba00000, 0x000000070ba00000, 0x000000070bb00000| 0%| F| |TAMS 0x000000070ba00000, 0x000000070ba00000| Untracked -| 41|0x000000070bb00000, 0x000000070bb00000, 0x000000070bc00000| 0%| F| |TAMS 0x000000070bb00000, 0x000000070bb00000| Untracked -| 42|0x000000070bc00000, 0x000000070bc00000, 0x000000070bd00000| 0%| F| |TAMS 0x000000070bc00000, 0x000000070bc00000| Untracked -| 43|0x000000070bd00000, 0x000000070bd00000, 0x000000070be00000| 0%| F| |TAMS 0x000000070bd00000, 0x000000070bd00000| Untracked -| 44|0x000000070be00000, 0x000000070be00000, 0x000000070bf00000| 0%| F| |TAMS 0x000000070be00000, 0x000000070be00000| Untracked -| 45|0x000000070bf00000, 0x000000070bf00000, 0x000000070c000000| 0%| F| |TAMS 0x000000070bf00000, 0x000000070bf00000| Untracked -| 46|0x000000070c000000, 0x000000070c000000, 0x000000070c100000| 0%| F| |TAMS 0x000000070c000000, 0x000000070c000000| Untracked -| 47|0x000000070c100000, 0x000000070c100000, 0x000000070c200000| 0%| F| |TAMS 0x000000070c100000, 0x000000070c100000| Untracked -| 48|0x000000070c200000, 0x000000070c200000, 0x000000070c300000| 0%| F| |TAMS 0x000000070c200000, 0x000000070c200000| Untracked -| 49|0x000000070c300000, 0x000000070c300000, 0x000000070c400000| 0%| F| |TAMS 0x000000070c300000, 0x000000070c300000| Untracked -| 50|0x000000070c400000, 0x000000070c400000, 0x000000070c500000| 0%| F| |TAMS 0x000000070c400000, 0x000000070c400000| Untracked -| 51|0x000000070c500000, 0x000000070c500000, 0x000000070c600000| 0%| F| |TAMS 0x000000070c500000, 0x000000070c500000| Untracked -| 52|0x000000070c600000, 0x000000070c600000, 0x000000070c700000| 0%| F| |TAMS 0x000000070c600000, 0x000000070c600000| Untracked -| 53|0x000000070c700000, 0x000000070c700000, 0x000000070c800000| 0%| F| |TAMS 0x000000070c700000, 0x000000070c700000| Untracked -| 54|0x000000070c800000, 0x000000070c800000, 0x000000070c900000| 0%| F| |TAMS 0x000000070c800000, 0x000000070c800000| Untracked -| 55|0x000000070c900000, 0x000000070c900000, 0x000000070ca00000| 0%| F| |TAMS 0x000000070c900000, 0x000000070c900000| Untracked -| 56|0x000000070ca00000, 0x000000070ca00000, 0x000000070cb00000| 0%| F| |TAMS 0x000000070ca00000, 0x000000070ca00000| Untracked -| 57|0x000000070cb00000, 0x000000070cb00000, 0x000000070cc00000| 0%| F| |TAMS 0x000000070cb00000, 0x000000070cb00000| Untracked -| 58|0x000000070cc00000, 0x000000070cc00000, 0x000000070cd00000| 0%| F| |TAMS 0x000000070cc00000, 0x000000070cc00000| Untracked -| 59|0x000000070cd00000, 0x000000070cd00000, 0x000000070ce00000| 0%| F| |TAMS 0x000000070cd00000, 0x000000070cd00000| Untracked -| 60|0x000000070ce00000, 0x000000070ce00000, 0x000000070cf00000| 0%| F| |TAMS 0x000000070ce00000, 0x000000070ce00000| Untracked -| 61|0x000000070cf00000, 0x000000070cf00000, 0x000000070d000000| 0%| F| |TAMS 0x000000070cf00000, 0x000000070cf00000| Untracked -| 62|0x000000070d000000, 0x000000070d000000, 0x000000070d100000| 0%| F| |TAMS 0x000000070d000000, 0x000000070d000000| Untracked -| 63|0x000000070d100000, 0x000000070d100000, 0x000000070d200000| 0%| F| |TAMS 0x000000070d100000, 0x000000070d100000| Untracked -| 64|0x000000070d200000, 0x000000070d200000, 0x000000070d300000| 0%| F| |TAMS 0x000000070d200000, 0x000000070d200000| Untracked -| 65|0x000000070d300000, 0x000000070d300000, 0x000000070d400000| 0%| F| |TAMS 0x000000070d300000, 0x000000070d300000| Untracked -| 66|0x000000070d400000, 0x000000070d400000, 0x000000070d500000| 0%| F| |TAMS 0x000000070d400000, 0x000000070d400000| Untracked -| 67|0x000000070d500000, 0x000000070d500000, 0x000000070d600000| 0%| F| |TAMS 0x000000070d500000, 0x000000070d500000| Untracked -| 68|0x000000070d600000, 0x000000070d600000, 0x000000070d700000| 0%| F| |TAMS 0x000000070d600000, 0x000000070d600000| Untracked -| 69|0x000000070d700000, 0x000000070d700000, 0x000000070d800000| 0%| F| |TAMS 0x000000070d700000, 0x000000070d700000| Untracked -| 70|0x000000070d800000, 0x000000070d800000, 0x000000070d900000| 0%| F| |TAMS 0x000000070d800000, 0x000000070d800000| Untracked -| 71|0x000000070d900000, 0x000000070d900000, 0x000000070da00000| 0%| F| |TAMS 0x000000070d900000, 0x000000070d900000| Untracked -| 72|0x000000070da00000, 0x000000070da00000, 0x000000070db00000| 0%| F| |TAMS 0x000000070da00000, 0x000000070da00000| Untracked -| 73|0x000000070db00000, 0x000000070db00000, 0x000000070dc00000| 0%| F| |TAMS 0x000000070db00000, 0x000000070db00000| Untracked -| 74|0x000000070dc00000, 0x000000070dc00000, 0x000000070dd00000| 0%| F| |TAMS 0x000000070dc00000, 0x000000070dc00000| Untracked -| 75|0x000000070dd00000, 0x000000070dd00000, 0x000000070de00000| 0%| F| |TAMS 0x000000070dd00000, 0x000000070dd00000| Untracked -| 76|0x000000070de00000, 0x000000070de00000, 0x000000070df00000| 0%| F| |TAMS 0x000000070de00000, 0x000000070de00000| Untracked -| 77|0x000000070df00000, 0x000000070df00000, 0x000000070e000000| 0%| F| |TAMS 0x000000070df00000, 0x000000070df00000| Untracked -| 78|0x000000070e000000, 0x000000070e000000, 0x000000070e100000| 0%| F| |TAMS 0x000000070e000000, 0x000000070e000000| Untracked -| 79|0x000000070e100000, 0x000000070e100000, 0x000000070e200000| 0%| F| |TAMS 0x000000070e100000, 0x000000070e100000| Untracked -| 80|0x000000070e200000, 0x000000070e200000, 0x000000070e300000| 0%| F| |TAMS 0x000000070e200000, 0x000000070e200000| Untracked -| 81|0x000000070e300000, 0x000000070e300000, 0x000000070e400000| 0%| F| |TAMS 0x000000070e300000, 0x000000070e300000| Untracked -| 82|0x000000070e400000, 0x000000070e400000, 0x000000070e500000| 0%| F| |TAMS 0x000000070e400000, 0x000000070e400000| Untracked -| 83|0x000000070e500000, 0x000000070e500000, 0x000000070e600000| 0%| F| |TAMS 0x000000070e500000, 0x000000070e500000| Untracked -| 84|0x000000070e600000, 0x000000070e600000, 0x000000070e700000| 0%| F| |TAMS 0x000000070e600000, 0x000000070e600000| Untracked -| 85|0x000000070e700000, 0x000000070e700000, 0x000000070e800000| 0%| F| |TAMS 0x000000070e700000, 0x000000070e700000| Untracked -| 86|0x000000070e800000, 0x000000070e800000, 0x000000070e900000| 0%| F| |TAMS 0x000000070e800000, 0x000000070e800000| Untracked -| 87|0x000000070e900000, 0x000000070e900000, 0x000000070ea00000| 0%| F| |TAMS 0x000000070e900000, 0x000000070e900000| Untracked -| 88|0x000000070ea00000, 0x000000070ea00000, 0x000000070eb00000| 0%| F| |TAMS 0x000000070ea00000, 0x000000070ea00000| Untracked -| 89|0x000000070eb00000, 0x000000070eb00000, 0x000000070ec00000| 0%| F| |TAMS 0x000000070eb00000, 0x000000070eb00000| Untracked -| 90|0x000000070ec00000, 0x000000070ec00000, 0x000000070ed00000| 0%| F| |TAMS 0x000000070ec00000, 0x000000070ec00000| Untracked -| 91|0x000000070ed00000, 0x000000070ed00000, 0x000000070ee00000| 0%| F| |TAMS 0x000000070ed00000, 0x000000070ed00000| Untracked -| 92|0x000000070ee00000, 0x000000070ee00000, 0x000000070ef00000| 0%| F| |TAMS 0x000000070ee00000, 0x000000070ee00000| Untracked -| 93|0x000000070ef00000, 0x000000070ef00000, 0x000000070f000000| 0%| F| |TAMS 0x000000070ef00000, 0x000000070ef00000| Untracked -| 94|0x000000070f000000, 0x000000070f000000, 0x000000070f100000| 0%| F| |TAMS 0x000000070f000000, 0x000000070f000000| Untracked -| 95|0x000000070f100000, 0x000000070f100000, 0x000000070f200000| 0%| F| |TAMS 0x000000070f100000, 0x000000070f100000| Untracked -| 96|0x000000070f200000, 0x000000070f200000, 0x000000070f300000| 0%| F| |TAMS 0x000000070f200000, 0x000000070f200000| Untracked -| 97|0x000000070f300000, 0x000000070f300000, 0x000000070f400000| 0%| F| |TAMS 0x000000070f300000, 0x000000070f300000| Untracked -| 98|0x000000070f400000, 0x000000070f400000, 0x000000070f500000| 0%| F| |TAMS 0x000000070f400000, 0x000000070f400000| Untracked -| 99|0x000000070f500000, 0x000000070f500000, 0x000000070f600000| 0%| F| |TAMS 0x000000070f500000, 0x000000070f500000| Untracked -| 100|0x000000070f600000, 0x000000070f600000, 0x000000070f700000| 0%| F| |TAMS 0x000000070f600000, 0x000000070f600000| Untracked -| 101|0x000000070f700000, 0x000000070f700000, 0x000000070f800000| 0%| F| |TAMS 0x000000070f700000, 0x000000070f700000| Untracked -| 102|0x000000070f800000, 0x000000070f800000, 0x000000070f900000| 0%| F| |TAMS 0x000000070f800000, 0x000000070f800000| Untracked -| 103|0x000000070f900000, 0x000000070f900000, 0x000000070fa00000| 0%| F| |TAMS 0x000000070f900000, 0x000000070f900000| Untracked -| 104|0x000000070fa00000, 0x000000070fa00000, 0x000000070fb00000| 0%| F| |TAMS 0x000000070fa00000, 0x000000070fa00000| Untracked -| 105|0x000000070fb00000, 0x000000070fb00000, 0x000000070fc00000| 0%| F| |TAMS 0x000000070fb00000, 0x000000070fb00000| Untracked -| 106|0x000000070fc00000, 0x000000070fc00000, 0x000000070fd00000| 0%| F| |TAMS 0x000000070fc00000, 0x000000070fc00000| Untracked -| 107|0x000000070fd00000, 0x000000070fd00000, 0x000000070fe00000| 0%| F| |TAMS 0x000000070fd00000, 0x000000070fd00000| Untracked -| 108|0x000000070fe00000, 0x000000070fe00000, 0x000000070ff00000| 0%| F| |TAMS 0x000000070fe00000, 0x000000070fe00000| Untracked -| 109|0x000000070ff00000, 0x000000070ff00000, 0x0000000710000000| 0%| F| |TAMS 0x000000070ff00000, 0x000000070ff00000| Untracked -| 110|0x0000000710000000, 0x0000000710000000, 0x0000000710100000| 0%| F| |TAMS 0x0000000710000000, 0x0000000710000000| Untracked -| 111|0x0000000710100000, 0x0000000710100000, 0x0000000710200000| 0%| F| |TAMS 0x0000000710100000, 0x0000000710100000| Untracked -| 112|0x0000000710200000, 0x0000000710200000, 0x0000000710300000| 0%| F| |TAMS 0x0000000710200000, 0x0000000710200000| Untracked -| 113|0x0000000710300000, 0x0000000710300000, 0x0000000710400000| 0%| F| |TAMS 0x0000000710300000, 0x0000000710300000| Untracked -| 114|0x0000000710400000, 0x0000000710400000, 0x0000000710500000| 0%| F| |TAMS 0x0000000710400000, 0x0000000710400000| Untracked -| 115|0x0000000710500000, 0x0000000710500000, 0x0000000710600000| 0%| F| |TAMS 0x0000000710500000, 0x0000000710500000| Untracked -| 116|0x0000000710600000, 0x0000000710600000, 0x0000000710700000| 0%| F| |TAMS 0x0000000710600000, 0x0000000710600000| Untracked -| 117|0x0000000710700000, 0x0000000710700000, 0x0000000710800000| 0%| F| |TAMS 0x0000000710700000, 0x0000000710700000| Untracked -| 118|0x0000000710800000, 0x0000000710800000, 0x0000000710900000| 0%| F| |TAMS 0x0000000710800000, 0x0000000710800000| Untracked -| 119|0x0000000710900000, 0x0000000710900000, 0x0000000710a00000| 0%| F| |TAMS 0x0000000710900000, 0x0000000710900000| Untracked -| 120|0x0000000710a00000, 0x0000000710a00000, 0x0000000710b00000| 0%| F| |TAMS 0x0000000710a00000, 0x0000000710a00000| Untracked -| 121|0x0000000710b00000, 0x0000000710b00000, 0x0000000710c00000| 0%| F| |TAMS 0x0000000710b00000, 0x0000000710b00000| Untracked -| 122|0x0000000710c00000, 0x0000000710c00000, 0x0000000710d00000| 0%| F| |TAMS 0x0000000710c00000, 0x0000000710c00000| Untracked -| 123|0x0000000710d00000, 0x0000000710d00000, 0x0000000710e00000| 0%| F| |TAMS 0x0000000710d00000, 0x0000000710d00000| Untracked -| 124|0x0000000710e00000, 0x0000000710e00000, 0x0000000710f00000| 0%| F| |TAMS 0x0000000710e00000, 0x0000000710e00000| Untracked -| 125|0x0000000710f00000, 0x0000000710f00000, 0x0000000711000000| 0%| F| |TAMS 0x0000000710f00000, 0x0000000710f00000| Untracked -| 126|0x0000000711000000, 0x0000000711000000, 0x0000000711100000| 0%| F| |TAMS 0x0000000711000000, 0x0000000711000000| Untracked -| 127|0x0000000711100000, 0x0000000711100000, 0x0000000711200000| 0%| F| |TAMS 0x0000000711100000, 0x0000000711100000| Untracked -| 128|0x0000000711200000, 0x0000000711200000, 0x0000000711300000| 0%| F| |TAMS 0x0000000711200000, 0x0000000711200000| Untracked -| 129|0x0000000711300000, 0x0000000711300000, 0x0000000711400000| 0%| F| |TAMS 0x0000000711300000, 0x0000000711300000| Untracked -| 130|0x0000000711400000, 0x0000000711400000, 0x0000000711500000| 0%| F| |TAMS 0x0000000711400000, 0x0000000711400000| Untracked -| 131|0x0000000711500000, 0x0000000711500000, 0x0000000711600000| 0%| F| |TAMS 0x0000000711500000, 0x0000000711500000| Untracked -| 132|0x0000000711600000, 0x0000000711600000, 0x0000000711700000| 0%| F| |TAMS 0x0000000711600000, 0x0000000711600000| Untracked -| 133|0x0000000711700000, 0x0000000711700000, 0x0000000711800000| 0%| F| |TAMS 0x0000000711700000, 0x0000000711700000| Untracked -| 134|0x0000000711800000, 0x0000000711800000, 0x0000000711900000| 0%| F| |TAMS 0x0000000711800000, 0x0000000711800000| Untracked -| 135|0x0000000711900000, 0x0000000711900000, 0x0000000711a00000| 0%| F| |TAMS 0x0000000711900000, 0x0000000711900000| Untracked -| 136|0x0000000711a00000, 0x0000000711a00000, 0x0000000711b00000| 0%| F| |TAMS 0x0000000711a00000, 0x0000000711a00000| Untracked -| 137|0x0000000711b00000, 0x0000000711b00000, 0x0000000711c00000| 0%| F| |TAMS 0x0000000711b00000, 0x0000000711b00000| Untracked -| 138|0x0000000711c00000, 0x0000000711c00000, 0x0000000711d00000| 0%| F| |TAMS 0x0000000711c00000, 0x0000000711c00000| Untracked -| 139|0x0000000711d00000, 0x0000000711d00000, 0x0000000711e00000| 0%| F| |TAMS 0x0000000711d00000, 0x0000000711d00000| Untracked -| 140|0x0000000711e00000, 0x0000000711e00000, 0x0000000711f00000| 0%| F| |TAMS 0x0000000711e00000, 0x0000000711e00000| Untracked -| 141|0x0000000711f00000, 0x0000000711f00000, 0x0000000712000000| 0%| F| |TAMS 0x0000000711f00000, 0x0000000711f00000| Untracked -| 142|0x0000000712000000, 0x0000000712000000, 0x0000000712100000| 0%| F| |TAMS 0x0000000712000000, 0x0000000712000000| Untracked -| 143|0x0000000712100000, 0x0000000712100000, 0x0000000712200000| 0%| F| |TAMS 0x0000000712100000, 0x0000000712100000| Untracked -| 144|0x0000000712200000, 0x0000000712200000, 0x0000000712300000| 0%| F| |TAMS 0x0000000712200000, 0x0000000712200000| Untracked -| 145|0x0000000712300000, 0x0000000712300000, 0x0000000712400000| 0%| F| |TAMS 0x0000000712300000, 0x0000000712300000| Untracked -| 146|0x0000000712400000, 0x0000000712400000, 0x0000000712500000| 0%| F| |TAMS 0x0000000712400000, 0x0000000712400000| Untracked -| 147|0x0000000712500000, 0x0000000712500000, 0x0000000712600000| 0%| F| |TAMS 0x0000000712500000, 0x0000000712500000| Untracked -| 148|0x0000000712600000, 0x0000000712600000, 0x0000000712700000| 0%| F| |TAMS 0x0000000712600000, 0x0000000712600000| Untracked -| 149|0x0000000712700000, 0x0000000712700000, 0x0000000712800000| 0%| F| |TAMS 0x0000000712700000, 0x0000000712700000| Untracked -| 150|0x0000000712800000, 0x0000000712800000, 0x0000000712900000| 0%| F| |TAMS 0x0000000712800000, 0x0000000712800000| Untracked -| 151|0x0000000712900000, 0x0000000712900000, 0x0000000712a00000| 0%| F| |TAMS 0x0000000712900000, 0x0000000712900000| Untracked -| 152|0x0000000712a00000, 0x0000000712a00000, 0x0000000712b00000| 0%| F| |TAMS 0x0000000712a00000, 0x0000000712a00000| Untracked -| 153|0x0000000712b00000, 0x0000000712b00000, 0x0000000712c00000| 0%| F| |TAMS 0x0000000712b00000, 0x0000000712b00000| Untracked -| 154|0x0000000712c00000, 0x0000000712c00000, 0x0000000712d00000| 0%| F| |TAMS 0x0000000712c00000, 0x0000000712c00000| Untracked -| 155|0x0000000712d00000, 0x0000000712d00000, 0x0000000712e00000| 0%| F| |TAMS 0x0000000712d00000, 0x0000000712d00000| Untracked -| 156|0x0000000712e00000, 0x0000000712e00000, 0x0000000712f00000| 0%| F| |TAMS 0x0000000712e00000, 0x0000000712e00000| Untracked -| 157|0x0000000712f00000, 0x0000000712f00000, 0x0000000713000000| 0%| F| |TAMS 0x0000000712f00000, 0x0000000712f00000| Untracked -| 158|0x0000000713000000, 0x0000000713000000, 0x0000000713100000| 0%| F| |TAMS 0x0000000713000000, 0x0000000713000000| Untracked -| 159|0x0000000713100000, 0x0000000713100000, 0x0000000713200000| 0%| F| |TAMS 0x0000000713100000, 0x0000000713100000| Untracked -| 160|0x0000000713200000, 0x0000000713200000, 0x0000000713300000| 0%| F| |TAMS 0x0000000713200000, 0x0000000713200000| Untracked -| 161|0x0000000713300000, 0x0000000713300000, 0x0000000713400000| 0%| F| |TAMS 0x0000000713300000, 0x0000000713300000| Untracked -| 162|0x0000000713400000, 0x0000000713400000, 0x0000000713500000| 0%| F| |TAMS 0x0000000713400000, 0x0000000713400000| Untracked -| 163|0x0000000713500000, 0x0000000713500000, 0x0000000713600000| 0%| F| |TAMS 0x0000000713500000, 0x0000000713500000| Untracked -| 164|0x0000000713600000, 0x0000000713600000, 0x0000000713700000| 0%| F| |TAMS 0x0000000713600000, 0x0000000713600000| Untracked -| 165|0x0000000713700000, 0x0000000713700000, 0x0000000713800000| 0%| F| |TAMS 0x0000000713700000, 0x0000000713700000| Untracked -| 166|0x0000000713800000, 0x0000000713800000, 0x0000000713900000| 0%| F| |TAMS 0x0000000713800000, 0x0000000713800000| Untracked -| 167|0x0000000713900000, 0x0000000713900000, 0x0000000713a00000| 0%| F| |TAMS 0x0000000713900000, 0x0000000713900000| Untracked -| 168|0x0000000713a00000, 0x0000000713a00000, 0x0000000713b00000| 0%| F| |TAMS 0x0000000713a00000, 0x0000000713a00000| Untracked -| 169|0x0000000713b00000, 0x0000000713b00000, 0x0000000713c00000| 0%| F| |TAMS 0x0000000713b00000, 0x0000000713b00000| Untracked -| 170|0x0000000713c00000, 0x0000000713c00000, 0x0000000713d00000| 0%| F| |TAMS 0x0000000713c00000, 0x0000000713c00000| Untracked -| 171|0x0000000713d00000, 0x0000000713d00000, 0x0000000713e00000| 0%| F| |TAMS 0x0000000713d00000, 0x0000000713d00000| Untracked -| 172|0x0000000713e00000, 0x0000000713e00000, 0x0000000713f00000| 0%| F| |TAMS 0x0000000713e00000, 0x0000000713e00000| Untracked -| 173|0x0000000713f00000, 0x0000000713f00000, 0x0000000714000000| 0%| F| |TAMS 0x0000000713f00000, 0x0000000713f00000| Untracked -| 174|0x0000000714000000, 0x0000000714000000, 0x0000000714100000| 0%| F| |TAMS 0x0000000714000000, 0x0000000714000000| Untracked -| 175|0x0000000714100000, 0x0000000714100000, 0x0000000714200000| 0%| F| |TAMS 0x0000000714100000, 0x0000000714100000| Untracked -| 176|0x0000000714200000, 0x0000000714200000, 0x0000000714300000| 0%| F| |TAMS 0x0000000714200000, 0x0000000714200000| Untracked -| 177|0x0000000714300000, 0x0000000714300000, 0x0000000714400000| 0%| F| |TAMS 0x0000000714300000, 0x0000000714300000| Untracked -| 178|0x0000000714400000, 0x0000000714400000, 0x0000000714500000| 0%| F| |TAMS 0x0000000714400000, 0x0000000714400000| Untracked -| 179|0x0000000714500000, 0x0000000714500000, 0x0000000714600000| 0%| F| |TAMS 0x0000000714500000, 0x0000000714500000| Untracked -| 180|0x0000000714600000, 0x0000000714600000, 0x0000000714700000| 0%| F| |TAMS 0x0000000714600000, 0x0000000714600000| Untracked -| 181|0x0000000714700000, 0x0000000714700000, 0x0000000714800000| 0%| F| |TAMS 0x0000000714700000, 0x0000000714700000| Untracked -| 182|0x0000000714800000, 0x0000000714800000, 0x0000000714900000| 0%| F| |TAMS 0x0000000714800000, 0x0000000714800000| Untracked -| 183|0x0000000714900000, 0x0000000714900000, 0x0000000714a00000| 0%| F| |TAMS 0x0000000714900000, 0x0000000714900000| Untracked -| 184|0x0000000714a00000, 0x0000000714a00000, 0x0000000714b00000| 0%| F| |TAMS 0x0000000714a00000, 0x0000000714a00000| Untracked -| 185|0x0000000714b00000, 0x0000000714b00000, 0x0000000714c00000| 0%| F| |TAMS 0x0000000714b00000, 0x0000000714b00000| Untracked -| 186|0x0000000714c00000, 0x0000000714c00000, 0x0000000714d00000| 0%| F| |TAMS 0x0000000714c00000, 0x0000000714c00000| Untracked -| 187|0x0000000714d00000, 0x0000000714d00000, 0x0000000714e00000| 0%| F| |TAMS 0x0000000714d00000, 0x0000000714d00000| Untracked -| 188|0x0000000714e00000, 0x0000000714e00000, 0x0000000714f00000| 0%| F| |TAMS 0x0000000714e00000, 0x0000000714e00000| Untracked -| 189|0x0000000714f00000, 0x0000000714f00000, 0x0000000715000000| 0%| F| |TAMS 0x0000000714f00000, 0x0000000714f00000| Untracked -| 190|0x0000000715000000, 0x0000000715000000, 0x0000000715100000| 0%| F| |TAMS 0x0000000715000000, 0x0000000715000000| Untracked -| 191|0x0000000715100000, 0x0000000715100000, 0x0000000715200000| 0%| F| |TAMS 0x0000000715100000, 0x0000000715100000| Untracked -| 192|0x0000000715200000, 0x0000000715200000, 0x0000000715300000| 0%| F| |TAMS 0x0000000715200000, 0x0000000715200000| Untracked -| 193|0x0000000715300000, 0x0000000715300000, 0x0000000715400000| 0%| F| |TAMS 0x0000000715300000, 0x0000000715300000| Untracked -| 194|0x0000000715400000, 0x0000000715400000, 0x0000000715500000| 0%| F| |TAMS 0x0000000715400000, 0x0000000715400000| Untracked -| 195|0x0000000715500000, 0x0000000715500000, 0x0000000715600000| 0%| F| |TAMS 0x0000000715500000, 0x0000000715500000| Untracked -| 196|0x0000000715600000, 0x0000000715600000, 0x0000000715700000| 0%| F| |TAMS 0x0000000715600000, 0x0000000715600000| Untracked -| 197|0x0000000715700000, 0x0000000715700000, 0x0000000715800000| 0%| F| |TAMS 0x0000000715700000, 0x0000000715700000| Untracked -| 198|0x0000000715800000, 0x0000000715800000, 0x0000000715900000| 0%| F| |TAMS 0x0000000715800000, 0x0000000715800000| Untracked -| 199|0x0000000715900000, 0x0000000715900000, 0x0000000715a00000| 0%| F| |TAMS 0x0000000715900000, 0x0000000715900000| Untracked -| 200|0x0000000715a00000, 0x0000000715a00000, 0x0000000715b00000| 0%| F| |TAMS 0x0000000715a00000, 0x0000000715a00000| Untracked -| 201|0x0000000715b00000, 0x0000000715b00000, 0x0000000715c00000| 0%| F| |TAMS 0x0000000715b00000, 0x0000000715b00000| Untracked -| 202|0x0000000715c00000, 0x0000000715c00000, 0x0000000715d00000| 0%| F| |TAMS 0x0000000715c00000, 0x0000000715c00000| Untracked -| 203|0x0000000715d00000, 0x0000000715d00000, 0x0000000715e00000| 0%| F| |TAMS 0x0000000715d00000, 0x0000000715d00000| Untracked -| 204|0x0000000715e00000, 0x0000000715e00000, 0x0000000715f00000| 0%| F| |TAMS 0x0000000715e00000, 0x0000000715e00000| Untracked -| 205|0x0000000715f00000, 0x0000000715f00000, 0x0000000716000000| 0%| F| |TAMS 0x0000000715f00000, 0x0000000715f00000| Untracked -| 206|0x0000000716000000, 0x0000000716000000, 0x0000000716100000| 0%| F| |TAMS 0x0000000716000000, 0x0000000716000000| Untracked -| 207|0x0000000716100000, 0x0000000716100000, 0x0000000716200000| 0%| F| |TAMS 0x0000000716100000, 0x0000000716100000| Untracked -| 208|0x0000000716200000, 0x0000000716200000, 0x0000000716300000| 0%| F| |TAMS 0x0000000716200000, 0x0000000716200000| Untracked -| 209|0x0000000716300000, 0x0000000716300000, 0x0000000716400000| 0%| F| |TAMS 0x0000000716300000, 0x0000000716300000| Untracked -| 210|0x0000000716400000, 0x0000000716400000, 0x0000000716500000| 0%| F| |TAMS 0x0000000716400000, 0x0000000716400000| Untracked -| 211|0x0000000716500000, 0x0000000716500000, 0x0000000716600000| 0%| F| |TAMS 0x0000000716500000, 0x0000000716500000| Untracked -| 212|0x0000000716600000, 0x0000000716600000, 0x0000000716700000| 0%| F| |TAMS 0x0000000716600000, 0x0000000716600000| Untracked -| 213|0x0000000716700000, 0x0000000716700000, 0x0000000716800000| 0%| F| |TAMS 0x0000000716700000, 0x0000000716700000| Untracked -| 214|0x0000000716800000, 0x0000000716800000, 0x0000000716900000| 0%| F| |TAMS 0x0000000716800000, 0x0000000716800000| Untracked -| 215|0x0000000716900000, 0x0000000716900000, 0x0000000716a00000| 0%| F| |TAMS 0x0000000716900000, 0x0000000716900000| Untracked -| 216|0x0000000716a00000, 0x0000000716a00000, 0x0000000716b00000| 0%| F| |TAMS 0x0000000716a00000, 0x0000000716a00000| Untracked -| 217|0x0000000716b00000, 0x0000000716b00000, 0x0000000716c00000| 0%| F| |TAMS 0x0000000716b00000, 0x0000000716b00000| Untracked -| 218|0x0000000716c00000, 0x0000000716c00000, 0x0000000716d00000| 0%| F| |TAMS 0x0000000716c00000, 0x0000000716c00000| Untracked -| 219|0x0000000716d00000, 0x0000000716d00000, 0x0000000716e00000| 0%| F| |TAMS 0x0000000716d00000, 0x0000000716d00000| Untracked -| 220|0x0000000716e00000, 0x0000000716e00000, 0x0000000716f00000| 0%| F| |TAMS 0x0000000716e00000, 0x0000000716e00000| Untracked -| 221|0x0000000716f00000, 0x0000000716f00000, 0x0000000717000000| 0%| F| |TAMS 0x0000000716f00000, 0x0000000716f00000| Untracked -| 222|0x0000000717000000, 0x0000000717000000, 0x0000000717100000| 0%| F| |TAMS 0x0000000717000000, 0x0000000717000000| Untracked -| 223|0x0000000717100000, 0x0000000717100000, 0x0000000717200000| 0%| F| |TAMS 0x0000000717100000, 0x0000000717100000| Untracked -| 224|0x0000000717200000, 0x0000000717200000, 0x0000000717300000| 0%| F| |TAMS 0x0000000717200000, 0x0000000717200000| Untracked -| 225|0x0000000717300000, 0x0000000717300000, 0x0000000717400000| 0%| F| |TAMS 0x0000000717300000, 0x0000000717300000| Untracked -| 226|0x0000000717400000, 0x0000000717500000, 0x0000000717500000|100%| E| |TAMS 0x0000000717400000, 0x0000000717400000| Complete -| 227|0x0000000717500000, 0x0000000717600000, 0x0000000717600000|100%| E|CS|TAMS 0x0000000717500000, 0x0000000717500000| Complete -| 228|0x0000000717600000, 0x0000000717700000, 0x0000000717700000|100%| E|CS|TAMS 0x0000000717600000, 0x0000000717600000| Complete -| 229|0x0000000717700000, 0x0000000717800000, 0x0000000717800000|100%| E|CS|TAMS 0x0000000717700000, 0x0000000717700000| Complete -| 230|0x0000000717800000, 0x0000000717900000, 0x0000000717900000|100%| E|CS|TAMS 0x0000000717800000, 0x0000000717800000| Complete -| 231|0x0000000717900000, 0x0000000717a00000, 0x0000000717a00000|100%| E|CS|TAMS 0x0000000717900000, 0x0000000717900000| Complete -| 232|0x0000000717a00000, 0x0000000717b00000, 0x0000000717b00000|100%| E|CS|TAMS 0x0000000717a00000, 0x0000000717a00000| Complete -| 233|0x0000000717b00000, 0x0000000717c00000, 0x0000000717c00000|100%| E|CS|TAMS 0x0000000717b00000, 0x0000000717b00000| Complete -| 234|0x0000000717c00000, 0x0000000717d00000, 0x0000000717d00000|100%| E|CS|TAMS 0x0000000717c00000, 0x0000000717c00000| Complete -| 235|0x0000000717d00000, 0x0000000717e00000, 0x0000000717e00000|100%| E|CS|TAMS 0x0000000717d00000, 0x0000000717d00000| Complete -| 236|0x0000000717e00000, 0x0000000717f00000, 0x0000000717f00000|100%| E|CS|TAMS 0x0000000717e00000, 0x0000000717e00000| Complete -| 237|0x0000000717f00000, 0x0000000718000000, 0x0000000718000000|100%| E|CS|TAMS 0x0000000717f00000, 0x0000000717f00000| Complete -| 238|0x0000000718000000, 0x0000000718100000, 0x0000000718100000|100%| E|CS|TAMS 0x0000000718000000, 0x0000000718000000| Complete -| 239|0x0000000718100000, 0x0000000718200000, 0x0000000718200000|100%| E|CS|TAMS 0x0000000718100000, 0x0000000718100000| Complete -| 240|0x0000000718200000, 0x0000000718300000, 0x0000000718300000|100%| E|CS|TAMS 0x0000000718200000, 0x0000000718200000| Complete -| 241|0x0000000718300000, 0x0000000718400000, 0x0000000718400000|100%| E|CS|TAMS 0x0000000718300000, 0x0000000718300000| Complete -| 242|0x0000000718400000, 0x0000000718500000, 0x0000000718500000|100%| E|CS|TAMS 0x0000000718400000, 0x0000000718400000| Complete -| 243|0x0000000718500000, 0x0000000718600000, 0x0000000718600000|100%| E|CS|TAMS 0x0000000718500000, 0x0000000718500000| Complete -| 244|0x0000000718600000, 0x0000000718700000, 0x0000000718700000|100%| E|CS|TAMS 0x0000000718600000, 0x0000000718600000| Complete -| 245|0x0000000718700000, 0x0000000718800000, 0x0000000718800000|100%| E| |TAMS 0x0000000718700000, 0x0000000718700000| Complete -| 246|0x0000000718800000, 0x0000000718900000, 0x0000000718900000|100%| E|CS|TAMS 0x0000000718800000, 0x0000000718800000| Complete -| 247|0x0000000718900000, 0x0000000718a00000, 0x0000000718a00000|100%| E|CS|TAMS 0x0000000718900000, 0x0000000718900000| Complete -|2924|0x00000007bfe00000, 0x00000007bfe48000, 0x00000007bff00000| 28%|OA| |TAMS 0x00000007bfe00000, 0x00000007bfe00000| Untracked -|2925|0x00000007bff00000, 0x00000007bff6c000, 0x00000007c0000000| 42%|CA| |TAMS 0x00000007bff00000, 0x00000007bff00000| Untracked - -Card table byte_map: [0x00007f426f092000,0x00007f426f849000] _byte_map_base: 0x00007f426b849000 - -Marking Bits (Prev, Next): (CMBitMap*) 0x00007f428c07d618, (CMBitMap*) 0x00007f428c07d650 - Prev Bits: [0x00007f426ab23000, 0x00007f426e8db000) - Next Bits: [0x00007f4266d6b000, 0x00007f426ab23000) - -Polling page: 0x00007f4291023000 - -Metaspace: - -Usage: - Non-class: 7.19 MB capacity, 5.88 MB ( 82%) used, 1.25 MB ( 17%) free+waste, 57.19 KB ( <1%) overhead. - Class: 1.14 MB capacity, 842.99 KB ( 72%) used, 292.76 KB ( 25%) free+waste, 31.25 KB ( 3%) overhead. - Both: 8.33 MB capacity, 6.71 MB ( 81%) used, 1.54 MB ( 18%) free+waste, 88.44 KB ( 1%) overhead. - -Virtual space: - Non-class space: 8.00 MB reserved, 7.25 MB ( 91%) committed - Class space: 1.00 GB reserved, 1.25 MB ( <1%) committed - Both: 1.01 GB reserved, 8.50 MB ( <1%) committed - -Chunk freelists: - Non-Class: 0 bytes - Class: 0 bytes - Both: 0 bytes - -MaxMetaspaceSize: unlimited -CompressedClassSpaceSize: 1.00 GB -Initial GC threshold: 20.80 MB -Current GC threshold: 20.80 MB -CDS: on - -CodeHeap 'non-profiled nmethods': size=119172Kb used=344Kb max_used=344Kb free=118827Kb - bounds [0x00007f427c36e000, 0x00007f427c5de000, 0x00007f42837cf000] -CodeHeap 'profiled nmethods': size=119168Kb used=2640Kb max_used=2640Kb free=116527Kb - bounds [0x00007f4274f0e000, 0x00007f42751ae000, 0x00007f427c36e000] -CodeHeap 'non-nmethods': size=7420Kb used=2847Kb max_used=2856Kb free=4572Kb - bounds [0x00007f42747cf000, 0x00007f4274a9f000, 0x00007f4274f0e000] - total_blobs=1683 nmethods=1267 adapters=326 - compilation: enabled - stopped_count=0, restarted_count=0 - full_count=0 - -Compilation events (20 events): -Event: 0.373 Thread 0x00007f428c262000 nmethod 1248 0x00007f427c3c2390 code [0x00007f427c3c2540, 0x00007f427c3c26f8] -Event: 0.374 Thread 0x00007f42300cd000 nmethod 1250 0x00007f427c3c2890 code [0x00007f427c3c2a20, 0x00007f427c3c2ab8] -Event: 0.375 Thread 0x00007f428c264000 1251 3 java.lang.String::hashCode (49 bytes) -Event: 0.376 Thread 0x00007f428c264000 nmethod 1251 0x00007f427519cc10 code [0x00007f427519ce00, 0x00007f427519d220] -Event: 0.378 Thread 0x00007f423409d800 1252 3 java.lang.invoke.LambdaForm::editor (5 bytes) -Event: 0.378 Thread 0x00007f423819d000 1253 3 java.lang.invoke.LambdaFormEditor::lambdaFormEditor (12 bytes) -Event: 0.378 Thread 0x00007f423819f000 1254 3 java.lang.invoke.LambdaFormEditor:: (10 bytes) -Event: 0.378 Thread 0x00007f428c264000 1255 3 java.lang.invoke.LambdaFormEditor$Transform::inRange (36 bytes) -Event: 0.378 Thread 0x00007f423409d800 nmethod 1252 0x00007f427519d390 code [0x00007f427519d560, 0x00007f427519d8a0] -Event: 0.378 Thread 0x00007f423409d800 1256 3 java.lang.invoke.LambdaFormEditor$Transform:: (28 bytes) -Event: 0.378 Thread 0x00007f423819d000 nmethod 1253 0x00007f427519da10 code [0x00007f427519dbe0, 0x00007f427519dea0] -Event: 0.379 Thread 0x00007f423819f000 nmethod 1254 0x00007f427519e010 code [0x00007f427519e1c0, 0x00007f427519e390] -Event: 0.379 Thread 0x00007f423819f000 1257 3 java.lang.invoke.LambdaFormEditor::getInCache (186 bytes) -Event: 0.379 Thread 0x00007f428c264000 nmethod 1255 0x00007f427519e490 code [0x00007f427519e640, 0x00007f427519e790] -Event: 0.379 Thread 0x00007f423409d800 nmethod 1256 0x00007f427519e810 code [0x00007f427519e9e0, 0x00007f427519ece0] -Event: 0.379 Thread 0x00007f423819f000 nmethod 1257 0x00007f427519ee90 code [0x00007f427519f120, 0x00007f42751a0180] -Event: 0.380 Thread 0x00007f428c264000 1266 3 java.lang.AbstractStringBuilder::checkRange (60 bytes) -Event: 0.381 Thread 0x00007f428c264000 nmethod 1266 0x00007f42751a0510 code [0x00007f42751a07e0, 0x00007f42751a1370] -Event: 0.384 Thread 0x00007f423819d000 1267 3 java.lang.CharacterData::of (120 bytes) -Event: 0.384 Thread 0x00007f423819d000 nmethod 1267 0x00007f42751a1790 code [0x00007f42751a19a0, 0x00007f42751a2030] - -GC Heap History (0 events): -No events - -Deoptimization events (20 events): -Event: 0.291 Thread 0x00007f428c016000 DEOPT PACKING pc=0x00007f427c3a7458 sp=0x00007f4291165ce0 -Event: 0.291 Thread 0x00007f428c016000 DEOPT UNPACKING pc=0x00007f4274818ea5 sp=0x00007f4291165c98 mode 2 -Event: 0.318 Thread 0x00007f428c016000 DEOPT PACKING pc=0x00007f4274f9c288 sp=0x00007f4291164760 -Event: 0.318 Thread 0x00007f428c016000 DEOPT UNPACKING pc=0x00007f427481964a sp=0x00007f4291163c98 mode 0 -Event: 0.347 Thread 0x00007f428c016000 Uncommon trap: trap_request=0xffffff4d fr.pc=0x00007f427c3a8844 relative=0x0000000000000284 -Event: 0.347 Thread 0x00007f428c016000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f427c3a8844 method=java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object; @ 86 c2 -Event: 0.347 Thread 0x00007f428c016000 DEOPT PACKING pc=0x00007f427c3a8844 sp=0x00007f4291165a50 -Event: 0.347 Thread 0x00007f428c016000 DEOPT UNPACKING pc=0x00007f4274818ea5 sp=0x00007f42911659e8 mode 2 -Event: 0.372 Thread 0x00007f428c016000 Uncommon trap: trap_request=0xffffff4d fr.pc=0x00007f427c382b64 relative=0x0000000000000044 -Event: 0.372 Thread 0x00007f428c016000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f427c382b64 method=java.lang.CharacterData.of(I)Ljava/lang/CharacterData; @ 4 c2 -Event: 0.372 Thread 0x00007f428c016000 DEOPT PACKING pc=0x00007f427c382b64 sp=0x00007f4291163f60 -Event: 0.372 Thread 0x00007f428c016000 DEOPT UNPACKING pc=0x00007f4274818ea5 sp=0x00007f4291163f18 mode 2 -Event: 0.373 Thread 0x00007f428c016000 Uncommon trap: trap_request=0xffffff4d fr.pc=0x00007f427c37ab88 relative=0x0000000000000068 -Event: 0.373 Thread 0x00007f428c016000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f427c37ab88 method=java.lang.String.isLatin1()Z @ 10 c2 -Event: 0.373 Thread 0x00007f428c016000 DEOPT PACKING pc=0x00007f427c37ab88 sp=0x00007f42911635e0 -Event: 0.373 Thread 0x00007f428c016000 DEOPT UNPACKING pc=0x00007f4274818ea5 sp=0x00007f4291163590 mode 2 -Event: 0.374 Thread 0x00007f428c016000 Uncommon trap: trap_request=0xffffff4d fr.pc=0x00007f427c37a234 relative=0x0000000000000194 -Event: 0.374 Thread 0x00007f428c016000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f427c37a234 method=java.lang.String.isLatin1()Z @ 10 c2 -Event: 0.374 Thread 0x00007f428c016000 DEOPT PACKING pc=0x00007f427c37a234 sp=0x00007f4291164800 -Event: 0.374 Thread 0x00007f428c016000 DEOPT UNPACKING pc=0x00007f4274818ea5 sp=0x00007f4291164748 mode 2 - -Classes redefined (0 events): -No events - -Internal exceptions (20 events): -Event: 0.291 Thread 0x00007f428c016000 Exception (0x0000000717a69c98) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 839] -Event: 0.291 Thread 0x00007f428c016000 Exception (0x0000000717a6c698) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 839] -Event: 0.306 Thread 0x00007f428c016000 Exception (0x000000071790e3a0) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.306 Thread 0x00007f428c016000 Exception (0x0000000717911160) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 839] -Event: 0.308 Thread 0x00007f428c016000 Exception (0x00000007179351f8) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.315 Thread 0x00007f428c016000 Exception (0x00000007179d63e0) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.319 Thread 0x00007f428c016000 Exception (0x0000000717822090) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.321 Thread 0x00007f428c016000 Exception (0x000000071783aed8) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.327 Thread 0x00007f428c016000 Exception (0x00000007178f6698) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.332 Thread 0x00007f428c016000 Exception (0x00000007177791e0) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.357 Thread 0x00007f428c016000 Exception (0x00000007176f6f90) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.360 Thread 0x00007f428c016000 Exception (0x0000000717505960) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.362 Thread 0x00007f428c016000 Exception (0x0000000717517950) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.362 Thread 0x00007f428c016000 Exception (0x000000071751b0a8) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 839] -Event: 0.378 Thread 0x00007f428c016000 Exception (0x00000007175fcd48) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.379 Thread 0x00007f428c016000 Exception (0x0000000717409868) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.380 Thread 0x00007f428c016000 Exception (0x00000007174108c0) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.380 Thread 0x00007f428c016000 Exception (0x0000000717414a88) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.380 Thread 0x00007f428c016000 Exception (0x0000000717418470) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.512 Thread 0x00007f428c016000 Exception (0x0000000717436098) thrown at [./src/hotspot/share/prims/jni.cpp, line 617] - -Events (20 events): -Event: 0.383 loading class java/util/concurrent/CompletableFuture$UniHandle done -Event: 0.383 loading class java/lang/ProcessBuilder$NullInputStream -Event: 0.383 loading class java/lang/ProcessBuilder$NullInputStream done -Event: 0.383 loading class java/io/FileOutputStream$1 -Event: 0.383 loading class java/io/FileOutputStream$1 done -Event: 0.383 loading class java/lang/ProcessBuilder$NullOutputStream -Event: 0.383 loading class java/lang/ProcessBuilder$NullOutputStream done -Event: 0.383 loading class jdk/internal/ref/CleanerImpl$InnocuousThreadFactory -Event: 0.383 loading class jdk/internal/ref/CleanerImpl$InnocuousThreadFactory done -Event: 0.384 Thread 0x00007f428c6b6000 Thread added: 0x00007f428c6b6000 -Event: 0.384 Protecting memory [0x00007f425e37a000,0x00007f425e37e000] with protection modes 0 -Event: 0.384 loading class com/nvidia/cuopt/linearprogramming/NativeCuOpt -Event: 0.384 loading class com/nvidia/cuopt/linearprogramming/NativeCuOpt done -Event: 0.384 Executing VM operation: RevokeBias -Event: 0.384 Executing VM operation: RevokeBias done -Event: 0.506 Loaded shared library /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so -Event: 0.512 loading class com/nvidia/cuopt/linearprogramming/DataModel$NativeHandle -Event: 0.512 loading class com/nvidia/cuopt/linearprogramming/DataModel$NativeHandle done -Event: 0.512 loading class com/nvidia/cuopt/linearprogramming/CuOptException -Event: 0.512 loading class com/nvidia/cuopt/linearprogramming/CuOptException done - - -Dynamic libraries: -709200000-718a00000 rw-p 00000000 00:00 0 -718a00000-7bfe00000 ---p 00000000 00:00 0 -7bfe00000-7bfe48000 rw-p 00b14000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa -7bfe48000-7bff00000 rw-p 00000000 00:00 0 -7bff00000-7bff6c000 rw-p 00aa8000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa -7bff6c000-7c0000000 rw-p 00000000 00:00 0 -7c0000000-800000000 ---p 00000000 00:00 0 -800000000-800002000 rwxp 00001000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa -800002000-8003ce000 rw-p 00003000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa -8003ce000-800aa6000 r--p 003cf000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa -800aa6000-800aa7000 rw-p 00aa7000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa -840000000-840140000 rw-p 00000000 00:00 0 -840140000-880000000 ---p 00000000 00:00 0 -5555bb482000-5555bb483000 r--p 00000000 08:20 294880 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -5555bb483000-5555bb484000 r-xp 00001000 08:20 294880 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -5555bb484000-5555bb485000 r--p 00002000 08:20 294880 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -5555bb485000-5555bb486000 r--p 00002000 08:20 294880 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -5555bb486000-5555bb487000 rw-p 00003000 08:20 294880 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -5555bb894000-5555bb8b5000 rw-p 00000000 00:00 0 [heap] -7f41cb603000-7f41cbe00000 rw-p 00000000 00:00 0 -7f41cbe00000-7f41e327c000 r-xp 00000000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 -7f41e327c000-7f41e347c000 ---p 1747c000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 -7f41e347c000-7f41e3734000 r--p 1747c000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 -7f41e3734000-7f41e3dc8000 rw-p 17734000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 -7f41e3dc8000-7f41e97e0000 rw-p 00000000 00:00 0 -7f41e97e0000-7f41e99df000 ---p 1d9e0000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 -7f41e99df000-7f41ea4d5000 r--p 17ddf000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 -7f41ea4d5000-7f41ea6d4000 ---p 1e6d5000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 -7f41ea6d4000-7f41f02b7000 rw-p 188d4000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 -7f41f0400000-7f41f445e000 r-xp 00000000 08:20 101383 /home/cbrissette/cuopt/.cuopt_env/lib/libcudss.so.0.7.1 -7f41f445e000-7f41f465e000 ---p 0405e000 08:20 101383 /home/cbrissette/cuopt/.cuopt_env/lib/libcudss.so.0.7.1 -7f41f465e000-7f41f4668000 r--p 0405e000 08:20 101383 /home/cbrissette/cuopt/.cuopt_env/lib/libcudss.so.0.7.1 -7f41f4668000-7f41f466e000 rw-p 04068000 08:20 101383 /home/cbrissette/cuopt/.cuopt_env/lib/libcudss.so.0.7.1 -7f41f466e000-7f41f467e000 rw-p 00000000 00:00 0 -7f41f467e000-7f41f4680000 rw-p 042ac000 08:20 101383 /home/cbrissette/cuopt/.cuopt_env/lib/libcudss.so.0.7.1 -7f41f4800000-7f41fe76c000 r-xp 00000000 08:20 100411 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcusparse.so.12.7.10.1 -7f41fe76c000-7f41fe96c000 ---p 09f6c000 08:20 100411 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcusparse.so.12.7.10.1 -7f41fe96c000-7f41fe97b000 r--p 09f6c000 08:20 100411 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcusparse.so.12.7.10.1 -7f41fe97b000-7f41fe999000 rw-p 09f7b000 08:20 100411 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcusparse.so.12.7.10.1 -7f41fe999000-7f41fe9be000 rw-p 00000000 00:00 0 -7f41feac1000-7f41fed51000 r--p 00000000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so -7f41fed51000-7f41ff960000 r-xp 00290000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so -7f41ff960000-7f41ffc88000 r--p 00e9f000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so -7f41ffc88000-7f41ffca9000 r--p 011c7000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so -7f41ffca9000-7f41ffcb0000 rw-p 011e8000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so -7f41ffcb0000-7f4200e30000 rw-p 00000000 00:00 0 -7f4200e30000-7f4200e31000 ---p 0236f000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so -7f4200e31000-7f4204000000 rw-p 011ef000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so -7f4204000000-7f4204021000 rw-p 00000000 00:00 0 -7f4204021000-7f4208000000 ---p 00000000 00:00 0 -7f420873b000-7f4208a00000 rw-p 00000000 00:00 0 -7f4208a00000-7f420bd9d000 r-xp 00000000 08:20 101544 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublas.so.13.4.0.1 -7f420bd9d000-7f420bf9d000 ---p 0339d000 08:20 101544 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublas.so.13.4.0.1 -7f420bf9d000-7f420bfa9000 r--p 0339d000 08:20 101544 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublas.so.13.4.0.1 -7f420bfa9000-7f420bfb0000 rw-p 033a9000 08:20 101544 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublas.so.13.4.0.1 -7f420bfb0000-7f420bfd4000 rw-p 00000000 00:00 0 -7f420c000000-7f420c021000 rw-p 00000000 00:00 0 -7f420c021000-7f4210000000 ---p 00000000 00:00 0 -7f4210000000-7f4210021000 rw-p 00000000 00:00 0 -7f4210021000-7f4214000000 ---p 00000000 00:00 0 -7f4214000000-7f4214257000 rw-p 00000000 00:00 0 -7f4214257000-7f4218000000 ---p 00000000 00:00 0 -7f4218000000-7f4218021000 rw-p 00000000 00:00 0 -7f4218021000-7f421c000000 ---p 00000000 00:00 0 -7f421c000000-7f421c021000 rw-p 00000000 00:00 0 -7f421c021000-7f4220000000 ---p 00000000 00:00 0 -7f4220000000-7f4220021000 rw-p 00000000 00:00 0 -7f4220021000-7f4224000000 ---p 00000000 00:00 0 -7f4224000000-7f4224021000 rw-p 00000000 00:00 0 -7f4224021000-7f4228000000 ---p 00000000 00:00 0 -7f4228000000-7f4228021000 rw-p 00000000 00:00 0 -7f4228021000-7f422c000000 ---p 00000000 00:00 0 -7f422c000000-7f422c021000 rw-p 00000000 00:00 0 -7f422c021000-7f4230000000 ---p 00000000 00:00 0 -7f4230000000-7f423014e000 rw-p 00000000 00:00 0 -7f423014e000-7f4234000000 ---p 00000000 00:00 0 -7f4234000000-7f42343d1000 rw-p 00000000 00:00 0 -7f42343d1000-7f4238000000 ---p 00000000 00:00 0 -7f4238000000-7f423821f000 rw-p 00000000 00:00 0 -7f423821f000-7f423c000000 ---p 00000000 00:00 0 -7f423c000000-7f423c021000 rw-p 00000000 00:00 0 -7f423c021000-7f4240000000 ---p 00000000 00:00 0 -7f4240000000-7f4240021000 rw-p 00000000 00:00 0 -7f4240021000-7f4244000000 ---p 00000000 00:00 0 -7f4244000000-7f4244021000 rw-p 00000000 00:00 0 -7f4244021000-7f4248000000 ---p 00000000 00:00 0 -7f4248000000-7f4248021000 rw-p 00000000 00:00 0 -7f4248021000-7f424c000000 ---p 00000000 00:00 0 -7f424c000000-7f424c021000 rw-p 00000000 00:00 0 -7f424c021000-7f4250000000 ---p 00000000 00:00 0 -7f4250000000-7f4250021000 rw-p 00000000 00:00 0 -7f4250021000-7f4254000000 ---p 00000000 00:00 0 -7f4254000000-7f4254021000 rw-p 00000000 00:00 0 -7f4254021000-7f4258000000 ---p 00000000 00:00 0 -7f4258000000-7f4258021000 rw-p 00000000 00:00 0 -7f4258021000-7f425c000000 ---p 00000000 00:00 0 -7f425c000000-7f425c200000 rw-p 00000000 00:00 0 -7f425c200000-7f425c228000 r-xp 00000000 00:22 1688849861009770 /usr/lib/wsl/lib/libcuda.so.1 -7f425c228000-7f425c428000 ---p 00028000 00:22 1688849861009770 /usr/lib/wsl/lib/libcuda.so.1 -7f425c428000-7f425c429000 r--p 00028000 00:22 1688849861009770 /usr/lib/wsl/lib/libcuda.so.1 -7f425c429000-7f425c42b000 rw-p 00029000 00:22 1688849861009770 /usr/lib/wsl/lib/libcuda.so.1 -7f425c4d7000-7f425c527000 rw-p 00000000 00:00 0 -7f425c527000-7f425c52d000 r--p 00000000 08:20 194064 /home/cbrissette/cuopt/.cuopt_env/lib/libtbbmalloc.so.2.18 -7f425c52d000-7f425c544000 r-xp 00006000 08:20 194064 /home/cbrissette/cuopt/.cuopt_env/lib/libtbbmalloc.so.2.18 -7f425c544000-7f425c549000 r--p 0001d000 08:20 194064 /home/cbrissette/cuopt/.cuopt_env/lib/libtbbmalloc.so.2.18 -7f425c549000-7f425c54a000 r--p 00021000 08:20 194064 /home/cbrissette/cuopt/.cuopt_env/lib/libtbbmalloc.so.2.18 -7f425c54a000-7f425c54c000 rw-p 00022000 08:20 194064 /home/cbrissette/cuopt/.cuopt_env/lib/libtbbmalloc.so.2.18 -7f425c54c000-7f425c56d000 rw-p 00000000 00:00 0 -7f425c56d000-7f425c56e000 r--p 00000000 08:20 177053 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_utf8_for_code_point.so.2601.0.0 -7f425c56e000-7f425c56f000 r-xp 00001000 08:20 177053 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_utf8_for_code_point.so.2601.0.0 -7f425c56f000-7f425c570000 r--p 00002000 08:20 177053 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_utf8_for_code_point.so.2601.0.0 -7f425c570000-7f425c571000 r--p 00002000 08:20 177053 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_utf8_for_code_point.so.2601.0.0 -7f425c571000-7f425c572000 rw-p 00003000 08:20 177053 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_utf8_for_code_point.so.2601.0.0 -7f425c572000-7f425c573000 r--p 00000000 08:20 176909 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_decode_rust_punycode.so.2601.0.0 -7f425c573000-7f425c574000 r-xp 00001000 08:20 176909 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_decode_rust_punycode.so.2601.0.0 -7f425c574000-7f425c575000 r--p 00002000 08:20 176909 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_decode_rust_punycode.so.2601.0.0 -7f425c575000-7f425c576000 r--p 00002000 08:20 176909 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_decode_rust_punycode.so.2601.0.0 -7f425c576000-7f425c577000 rw-p 00003000 08:20 176909 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_decode_rust_punycode.so.2601.0.0 -7f425c577000-7f425c578000 r--p 00000000 08:20 176160 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_rust.so.2601.0.0 -7f425c578000-7f425c57c000 r-xp 00001000 08:20 176160 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_rust.so.2601.0.0 -7f425c57c000-7f425c57d000 r--p 00005000 08:20 176160 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_rust.so.2601.0.0 -7f425c57d000-7f425c57e000 r--p 00005000 08:20 176160 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_rust.so.2601.0.0 -7f425c57e000-7f425c57f000 rw-p 00006000 08:20 176160 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_rust.so.2601.0.0 -7f425c57f000-7f425c581000 r--p 00000000 08:20 175645 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_internal.so.2601.0.0 -7f425c581000-7f425c583000 r-xp 00002000 08:20 175645 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_internal.so.2601.0.0 -7f425c583000-7f425c584000 r--p 00004000 08:20 175645 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_internal.so.2601.0.0 -7f425c584000-7f425c585000 r--p 00004000 08:20 175645 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_internal.so.2601.0.0 -7f425c585000-7f425c586000 rw-p 00005000 08:20 175645 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_internal.so.2601.0.0 -7f425c586000-7f425c588000 r--p 00000000 08:20 176073 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_internal.so.2601.0.0 -7f425c588000-7f425c594000 r-xp 00002000 08:20 176073 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_internal.so.2601.0.0 -7f425c594000-7f425c596000 r--p 0000e000 08:20 176073 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_internal.so.2601.0.0 -7f425c596000-7f425c597000 r--p 00010000 08:20 176073 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_internal.so.2601.0.0 -7f425c597000-7f425c598000 rw-p 00011000 08:20 176073 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_internal.so.2601.0.0 -7f425c598000-7f425c599000 r--p 00000000 08:20 174727 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_program_name.so.2601.0.0 -7f425c599000-7f425c59a000 r-xp 00001000 08:20 174727 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_program_name.so.2601.0.0 -7f425c59a000-7f425c59b000 r--p 00002000 08:20 174727 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_program_name.so.2601.0.0 -7f425c59b000-7f425c59c000 r--p 00002000 08:20 174727 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_program_name.so.2601.0.0 -7f425c59c000-7f425c59d000 rw-p 00003000 08:20 174727 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_program_name.so.2601.0.0 -7f425c59d000-7f425c59f000 r--p 00000000 08:20 174492 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_debugging_internal.so.2601.0.0 -7f425c59f000-7f425c5a0000 r-xp 00002000 08:20 174492 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_debugging_internal.so.2601.0.0 -7f425c5a0000-7f425c5a1000 r--p 00003000 08:20 174492 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_debugging_internal.so.2601.0.0 -7f425c5a1000-7f425c5a2000 r--p 00003000 08:20 174492 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_debugging_internal.so.2601.0.0 -7f425c5a2000-7f425c5a3000 rw-p 00004000 08:20 174492 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_debugging_internal.so.2601.0.0 -7f425c5a3000-7f425c5a4000 r--p 00000000 08:20 172719 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_borrowed_fixup_buffer.so.2601.0.0 -7f425c5a4000-7f425c5a5000 r-xp 00001000 08:20 172719 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_borrowed_fixup_buffer.so.2601.0.0 -7f425c5a5000-7f425c5a6000 r--p 00002000 08:20 172719 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_borrowed_fixup_buffer.so.2601.0.0 -7f425c5a6000-7f425c5a7000 r--p 00002000 08:20 172719 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_borrowed_fixup_buffer.so.2601.0.0 -7f425c5a7000-7f425c5a8000 rw-p 00003000 08:20 172719 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_borrowed_fixup_buffer.so.2601.0.0 -7f425c5a8000-7f425c5c0000 rw-p 00000000 00:00 0 -7f425c5c0000-7f425c5c2000 r--p 00000000 08:20 177931 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc32c.so.2601.0.0 -7f425c5c2000-7f425c5c3000 r-xp 00002000 08:20 177931 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc32c.so.2601.0.0 -7f425c5c3000-7f425c5c4000 r--p 00003000 08:20 177931 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc32c.so.2601.0.0 -7f425c5c4000-7f425c5c5000 r--p 00003000 08:20 177931 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc32c.so.2601.0.0 -7f425c5c5000-7f425c5c6000 rw-p 00004000 08:20 177931 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc32c.so.2601.0.0 -7f425c5c6000-7f425c5c7000 r--p 00000000 08:20 177959 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_sink.so.2601.0.0 -7f425c5c7000-7f425c5c8000 r-xp 00001000 08:20 177959 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_sink.so.2601.0.0 -7f425c5c8000-7f425c5c9000 r--p 00002000 08:20 177959 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_sink.so.2601.0.0 -7f425c5c9000-7f425c5ca000 r--p 00002000 08:20 177959 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_sink.so.2601.0.0 -7f425c5ca000-7f425c5cb000 rw-p 00003000 08:20 177959 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_sink.so.2601.0.0 -7f425c5cb000-7f425c5cd000 r--p 00000000 08:20 175392 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_symbolize.so.2601.0.0 -7f425c5cd000-7f425c5d0000 r-xp 00002000 08:20 175392 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_symbolize.so.2601.0.0 -7f425c5d0000-7f425c5d1000 r--p 00005000 08:20 175392 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_symbolize.so.2601.0.0 -7f425c5d1000-7f425c5d2000 r--p 00006000 08:20 175392 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_symbolize.so.2601.0.0 -7f425c5d2000-7f425c5d3000 rw-p 00007000 08:20 175392 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_symbolize.so.2601.0.0 -7f425c5d3000-7f425c5d4000 r--p 00000000 08:20 176368 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_private_handle_accessor.so.2601.0.0 -7f425c5d4000-7f425c5d5000 r-xp 00001000 08:20 176368 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_private_handle_accessor.so.2601.0.0 -7f425c5d5000-7f425c5d6000 r--p 00002000 08:20 176368 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_private_handle_accessor.so.2601.0.0 -7f425c5d6000-7f425c5d7000 r--p 00002000 08:20 176368 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_private_handle_accessor.so.2601.0.0 -7f425c5d7000-7f425c5d8000 rw-p 00003000 08:20 176368 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_private_handle_accessor.so.2601.0.0 -7f425c5d8000-7f425c5da000 r--p 00000000 08:20 176315 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_config.so.2601.0.0 -7f425c5da000-7f425c5dc000 r-xp 00002000 08:20 176315 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_config.so.2601.0.0 -7f425c5dc000-7f425c5dd000 r--p 00004000 08:20 176315 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_config.so.2601.0.0 -7f425c5dd000-7f425c5de000 r--p 00004000 08:20 176315 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_config.so.2601.0.0 -7f425c5de000-7f425c5df000 rw-p 00005000 08:20 176315 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_config.so.2601.0.0 -7f425c5df000-7f425c5e0000 r--p 00000000 08:20 174103 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag_internal.so.2601.0.0 -7f425c5e0000-7f425c5e1000 r-xp 00001000 08:20 174103 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag_internal.so.2601.0.0 -7f425c5e1000-7f425c5e2000 r--p 00002000 08:20 174103 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag_internal.so.2601.0.0 -7f425c5e2000-7f425c5e3000 r--p 00002000 08:20 174103 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag_internal.so.2601.0.0 -7f425c5e3000-7f425c5e4000 rw-p 00003000 08:20 174103 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag_internal.so.2601.0.0 -7f425c5e4000-7f425c5e5000 r--p 00000000 08:20 175648 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag.so.2601.0.0 -7f425c5e5000-7f425c5e6000 r-xp 00001000 08:20 175648 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag.so.2601.0.0 -7f425c5e6000-7f425c5e7000 r--p 00002000 08:20 175648 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag.so.2601.0.0 -7f425c5e7000-7f425c5e8000 r--p 00002000 08:20 175648 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag.so.2601.0.0 -7f425c5e8000-7f425c5e9000 rw-p 00003000 08:20 175648 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag.so.2601.0.0 -7f425c5e9000-7f425c5ea000 r--p 00000000 08:20 172450 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_platform.so.2601.0.0 -7f425c5ea000-7f425c5eb000 r-xp 00001000 08:20 172450 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_platform.so.2601.0.0 -7f425c5eb000-7f425c5ed000 r--p 00002000 08:20 172450 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_platform.so.2601.0.0 -7f425c5ed000-7f425c5ee000 r--p 00003000 08:20 172450 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_platform.so.2601.0.0 -7f425c5ee000-7f425c5ef000 rw-p 00004000 08:20 172450 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_platform.so.2601.0.0 -7f425c5ef000-7f425c5f0000 r--p 00000000 08:20 178131 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes.so.2601.0.0 -7f425c5f0000-7f425c5f1000 r-xp 00001000 08:20 178131 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes.so.2601.0.0 -7f425c5f1000-7f425c5f2000 r--p 00002000 08:20 178131 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes.so.2601.0.0 -7f425c5f2000-7f425c5f3000 r--p 00002000 08:20 178131 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes.so.2601.0.0 -7f425c5f3000-7f425c5f4000 rw-p 00003000 08:20 178131 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes.so.2601.0.0 -7f425c5f4000-7f425c5f5000 r--p 00000000 08:20 176601 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_seed_gen_exception.so.2601.0.0 -7f425c5f5000-7f425c5f6000 r-xp 00001000 08:20 176601 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_seed_gen_exception.so.2601.0.0 -7f425c5f6000-7f425c5f7000 r--p 00002000 08:20 176601 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_seed_gen_exception.so.2601.0.0 -7f425c5f7000-7f425c5f8000 r--p 00002000 08:20 176601 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_seed_gen_exception.so.2601.0.0 -7f425c5f8000-7f425c5f9000 rw-p 00003000 08:20 176601 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_seed_gen_exception.so.2601.0.0 -7f425c5f9000-7f425c5fa000 r--p 00000000 08:20 178171 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_seed_material.so.2601.0.0 -7f425c5fa000-7f425c5fb000 r-xp 00001000 08:20 178171 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_seed_material.so.2601.0.0 -7f425c5fb000-7f425c5fc000 r--p 00002000 08:20 178171 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_seed_material.so.2601.0.0 -7f425c5fc000-7f425c5fd000 r--p 00002000 08:20 178171 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_seed_material.so.2601.0.0 -7f425c5fd000-7f425c5fe000 rw-p 00003000 08:20 178171 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_seed_material.so.2601.0.0 -7f425c5fe000-7f425c5ff000 r--p 00000000 08:20 175910 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_city.so.2601.0.0 -7f425c5ff000-7f425c600000 r-xp 00001000 08:20 175910 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_city.so.2601.0.0 -7f425c600000-7f425c601000 r--p 00002000 08:20 175910 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_city.so.2601.0.0 -7f425c601000-7f425c602000 r--p 00002000 08:20 175910 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_city.so.2601.0.0 -7f425c602000-7f425c603000 rw-p 00003000 08:20 175910 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_city.so.2601.0.0 -7f425c603000-7f425c605000 r--p 00000000 08:20 174503 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hashtablez_sampler.so.2601.0.0 -7f425c605000-7f425c606000 r-xp 00002000 08:20 174503 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hashtablez_sampler.so.2601.0.0 -7f425c606000-7f425c607000 r--p 00003000 08:20 174503 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hashtablez_sampler.so.2601.0.0 -7f425c607000-7f425c608000 r--p 00003000 08:20 174503 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hashtablez_sampler.so.2601.0.0 -7f425c608000-7f425c609000 rw-p 00004000 08:20 174503 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hashtablez_sampler.so.2601.0.0 -7f425c609000-7f425c60b000 r--p 00000000 08:20 176334 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_int128.so.2601.0.0 -7f425c60b000-7f425c60d000 r-xp 00002000 08:20 176334 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_int128.so.2601.0.0 -7f425c60d000-7f425c60e000 r--p 00004000 08:20 176334 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_int128.so.2601.0.0 -7f425c60e000-7f425c60f000 r--p 00004000 08:20 176334 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_int128.so.2601.0.0 -7f425c60f000-7f425c610000 rw-p 00005000 08:20 176334 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_int128.so.2601.0.0 -7f425c610000-7f425c611000 r--p 00000000 08:20 173674 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_fnmatch.so.2601.0.0 -7f425c611000-7f425c612000 r-xp 00001000 08:20 173674 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_fnmatch.so.2601.0.0 -7f425c612000-7f425c613000 r--p 00002000 08:20 173674 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_fnmatch.so.2601.0.0 -7f425c613000-7f425c614000 r--p 00002000 08:20 173674 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_fnmatch.so.2601.0.0 -7f425c614000-7f425c615000 rw-p 00003000 08:20 173674 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_fnmatch.so.2601.0.0 -7f425c615000-7f425c617000 r--p 00000000 08:20 176024 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_malloc_internal.so.2601.0.0 -7f425c617000-7f425c619000 r-xp 00002000 08:20 176024 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_malloc_internal.so.2601.0.0 -7f425c619000-7f425c61a000 r--p 00004000 08:20 176024 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_malloc_internal.so.2601.0.0 -7f425c61a000-7f425c61b000 r--p 00004000 08:20 176024 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_malloc_internal.so.2601.0.0 -7f425c61b000-7f425c61c000 rw-p 00005000 08:20 176024 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_malloc_internal.so.2601.0.0 -7f425c61c000-7f425c61d000 r--p 00000000 08:20 178559 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_tracing_internal.so.2601.0.0 -7f425c61d000-7f425c61e000 r-xp 00001000 08:20 178559 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_tracing_internal.so.2601.0.0 -7f425c61e000-7f425c61f000 r--p 00002000 08:20 178559 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_tracing_internal.so.2601.0.0 -7f425c61f000-7f425c620000 r--p 00002000 08:20 178559 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_tracing_internal.so.2601.0.0 -7f425c620000-7f425c621000 rw-p 00003000 08:20 178559 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_tracing_internal.so.2601.0.0 -7f425c621000-7f425c622000 r--p 00000000 08:20 173445 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_exponential_biased.so.2601.0.0 -7f425c622000-7f425c623000 r-xp 00001000 08:20 173445 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_exponential_biased.so.2601.0.0 -7f425c623000-7f425c624000 r--p 00002000 08:20 173445 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_exponential_biased.so.2601.0.0 -7f425c624000-7f425c625000 r--p 00002000 08:20 173445 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_exponential_biased.so.2601.0.0 -7f425c625000-7f425c626000 rw-p 00003000 08:20 173445 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_exponential_biased.so.2601.0.0 -7f425c626000-7f425c627000 r--p 00000000 08:20 173659 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_stacktrace.so.2601.0.0 -7f425c627000-7f425c629000 r-xp 00001000 08:20 173659 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_stacktrace.so.2601.0.0 -7f425c629000-7f425c62a000 r--p 00003000 08:20 173659 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_stacktrace.so.2601.0.0 -7f425c62a000-7f425c62b000 r--p 00003000 08:20 173659 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_stacktrace.so.2601.0.0 -7f425c62b000-7f425c62c000 rw-p 00004000 08:20 173659 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_stacktrace.so.2601.0.0 -7f425c62c000-7f425c62e000 r--p 00000000 08:20 177928 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_handle.so.2601.0.0 -7f425c62e000-7f425c62f000 r-xp 00002000 08:20 177928 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_handle.so.2601.0.0 -7f425c62f000-7f425c630000 r--p 00003000 08:20 177928 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_handle.so.2601.0.0 -7f425c630000-7f425c631000 r--p 00003000 08:20 177928 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_handle.so.2601.0.0 -7f425c631000-7f425c632000 rw-p 00004000 08:20 177928 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_handle.so.2601.0.0 -7f425c632000-7f425c634000 r--p 00000000 08:20 175778 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_cord_state.so.2601.0.0 -7f425c634000-7f425c638000 r-xp 00002000 08:20 175778 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_cord_state.so.2601.0.0 -7f425c638000-7f425c639000 r--p 00006000 08:20 175778 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_cord_state.so.2601.0.0 -7f425c639000-7f425c63a000 r--p 00006000 08:20 175778 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_cord_state.so.2601.0.0 -7f425c63a000-7f425c63b000 rw-p 00007000 08:20 175778 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_cord_state.so.2601.0.0 -7f425c63b000-7f425c63c000 r--p 00000000 08:20 177417 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_logging_internal.so.2601.0.0 -7f425c63c000-7f425c63d000 r-xp 00001000 08:20 177417 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_logging_internal.so.2601.0.0 -7f425c63d000-7f425c63e000 r--p 00002000 08:20 177417 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_logging_internal.so.2601.0.0 -7f425c63e000-7f425c63f000 r--p 00002000 08:20 177417 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_logging_internal.so.2601.0.0 -7f425c63f000-7f425c640000 rw-p 00003000 08:20 177417 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_logging_internal.so.2601.0.0 -7f425c640000-7f425c642000 r--p 00000000 08:20 173916 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_base.so.2601.0.0 -7f425c642000-7f425c643000 r-xp 00002000 08:20 173916 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_base.so.2601.0.0 -7f425c643000-7f425c644000 r--p 00003000 08:20 173916 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_base.so.2601.0.0 -7f425c644000-7f425c645000 r--p 00003000 08:20 173916 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_base.so.2601.0.0 -7f425c645000-7f425c646000 rw-p 00004000 08:20 173916 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_base.so.2601.0.0 -7f425c646000-7f425c648000 r--p 00000000 08:20 177853 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings_internal.so.2601.0.0 -7f425c648000-7f425c649000 r-xp 00002000 08:20 177853 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings_internal.so.2601.0.0 -7f425c649000-7f425c64a000 r--p 00003000 08:20 177853 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings_internal.so.2601.0.0 -7f425c64a000-7f425c64b000 r--p 00003000 08:20 177853 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings_internal.so.2601.0.0 -7f425c64b000-7f425c64c000 rw-p 00004000 08:20 177853 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings_internal.so.2601.0.0 -7f425c64c000-7f425c64d000 r--p 00000000 08:20 174472 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_proto.so.2601.0.0 -7f425c64d000-7f425c64e000 r-xp 00001000 08:20 174472 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_proto.so.2601.0.0 -7f425c64e000-7f425c64f000 r--p 00002000 08:20 174472 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_proto.so.2601.0.0 -7f425c64f000-7f425c650000 r--p 00002000 08:20 174472 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_proto.so.2601.0.0 -7f425c650000-7f425c651000 rw-p 00003000 08:20 174472 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_proto.so.2601.0.0 -7f425c651000-7f425c652000 r--p 00000000 08:20 177006 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_globals.so.2601.0.0 -7f425c652000-7f425c653000 r-xp 00001000 08:20 177006 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_globals.so.2601.0.0 -7f425c653000-7f425c654000 r--p 00002000 08:20 177006 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_globals.so.2601.0.0 -7f425c654000-7f425c655000 r--p 00002000 08:20 177006 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_globals.so.2601.0.0 -7f425c655000-7f425c656000 rw-p 00003000 08:20 177006 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_globals.so.2601.0.0 -7f425c656000-7f425c658000 r--p 00000000 08:20 172473 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_log_sink_set.so.2601.0.0 -7f425c658000-7f425c659000 r-xp 00002000 08:20 172473 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_log_sink_set.so.2601.0.0 -7f425c659000-7f425c65a000 r--p 00003000 08:20 172473 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_log_sink_set.so.2601.0.0 -7f425c65a000-7f425c65b000 r--p 00003000 08:20 172473 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_log_sink_set.so.2601.0.0 -7f425c65b000-7f425c65c000 rw-p 00004000 08:20 172473 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_log_sink_set.so.2601.0.0 -7f425c65c000-7f425c65d000 r--p 00000000 08:20 173223 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strerror.so.2601.0.0 -7f425c65d000-7f425c65e000 r-xp 00001000 08:20 173223 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strerror.so.2601.0.0 -7f425c65e000-7f425c65f000 r--p 00002000 08:20 173223 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strerror.so.2601.0.0 -7f425c65f000-7f425c660000 r--p 00002000 08:20 173223 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strerror.so.2601.0.0 -7f425c660000-7f425c661000 rw-p 00003000 08:20 173223 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strerror.so.2601.0.0 -7f425c661000-7f425c662000 r--p 00000000 08:20 175668 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_structured_proto.so.2601.0.0 -7f425c662000-7f425c663000 r-xp 00001000 08:20 175668 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_structured_proto.so.2601.0.0 -7f425c663000-7f425c664000 r--p 00002000 08:20 175668 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_structured_proto.so.2601.0.0 -7f425c664000-7f425c665000 r--p 00002000 08:20 175668 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_structured_proto.so.2601.0.0 -7f425c665000-7f425c666000 rw-p 00003000 08:20 175668 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_structured_proto.so.2601.0.0 -7f425c666000-7f425c668000 r--p 00000000 08:20 173934 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_format.so.2601.0.0 -7f425c668000-7f425c669000 r-xp 00002000 08:20 173934 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_format.so.2601.0.0 -7f425c669000-7f425c66a000 r--p 00003000 08:20 173934 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_format.so.2601.0.0 -7f425c66a000-7f425c66b000 r--p 00003000 08:20 173934 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_format.so.2601.0.0 -7f425c66b000-7f425c66c000 rw-p 00004000 08:20 173934 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_format.so.2601.0.0 -7f425c66c000-7f425c66d000 r--p 00000000 08:20 172814 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_examine_stack.so.2601.0.0 -7f425c66d000-7f425c66e000 r-xp 00001000 08:20 172814 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_examine_stack.so.2601.0.0 -7f425c66e000-7f425c66f000 r--p 00002000 08:20 172814 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_examine_stack.so.2601.0.0 -7f425c66f000-7f425c670000 r--p 00002000 08:20 172814 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_examine_stack.so.2601.0.0 -7f425c670000-7f425c671000 rw-p 00003000 08:20 172814 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_examine_stack.so.2601.0.0 -7f425c671000-7f425c672000 r--p 00000000 08:20 176086 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_leak_check.so.2601.0.0 -7f425c672000-7f425c673000 r-xp 00001000 08:20 176086 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_leak_check.so.2601.0.0 -7f425c673000-7f425c674000 r--p 00002000 08:20 176086 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_leak_check.so.2601.0.0 -7f425c674000-7f425c675000 r--p 00002000 08:20 176086 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_leak_check.so.2601.0.0 -7f425c675000-7f425c676000 rw-p 00003000 08:20 176086 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_leak_check.so.2601.0.0 -7f425c676000-7f425c679000 r--p 00000000 08:20 172840 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_reflection.so.2601.0.0 -7f425c679000-7f425c67f000 r-xp 00003000 08:20 172840 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_reflection.so.2601.0.0 -7f425c67f000-7f425c681000 r--p 00009000 08:20 172840 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_reflection.so.2601.0.0 -7f425c681000-7f425c682000 r--p 0000a000 08:20 172840 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_reflection.so.2601.0.0 -7f425c682000-7f425c683000 rw-p 0000b000 08:20 172840 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_reflection.so.2601.0.0 -7f425c683000-7f425c687000 r--p 00000000 08:20 173480 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_marshalling.so.2601.0.0 -7f425c687000-7f425c68c000 r-xp 00004000 08:20 173480 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_marshalling.so.2601.0.0 -7f425c68c000-7f425c68d000 r--p 00009000 08:20 173480 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_marshalling.so.2601.0.0 -7f425c68d000-7f425c68e000 r--p 0000a000 08:20 173480 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_marshalling.so.2601.0.0 -7f425c68e000-7f425c68f000 rw-p 0000b000 08:20 173480 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_marshalling.so.2601.0.0 -7f425c68f000-7f425c693000 r--p 00000000 08:20 176110 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_internal.so.2601.0.0 -7f425c693000-7f425c696000 r-xp 00004000 08:20 176110 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_internal.so.2601.0.0 -7f425c696000-7f425c698000 r--p 00007000 08:20 176110 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_internal.so.2601.0.0 -7f425c698000-7f425c699000 r--p 00008000 08:20 176110 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_internal.so.2601.0.0 -7f425c699000-7f425c69a000 rw-p 00009000 08:20 176110 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_internal.so.2601.0.0 -7f425c69a000-7f425c69b000 r--p 00000000 08:20 176919 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_slow.so.2601.0.0 -7f425c69b000-7f425c69c000 r-xp 00001000 08:20 176919 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_slow.so.2601.0.0 -7f425c69c000-7f425c69e000 r--p 00002000 08:20 176919 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_slow.so.2601.0.0 -7f425c69e000-7f425c69f000 r--p 00003000 08:20 176919 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_slow.so.2601.0.0 -7f425c69f000-7f425c6a0000 rw-p 00004000 08:20 176919 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_slow.so.2601.0.0 -7f425c6a0000-7f425c6a1000 r--p 00000000 08:20 172885 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes_impl.so.2601.0.0 -7f425c6a1000-7f425c6a2000 r-xp 00001000 08:20 172885 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes_impl.so.2601.0.0 -7f425c6a2000-7f425c6a3000 r--p 00002000 08:20 172885 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes_impl.so.2601.0.0 -7f425c6a3000-7f425c6a4000 r--p 00002000 08:20 172885 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes_impl.so.2601.0.0 -7f425c6a4000-7f425c6a5000 rw-p 00003000 08:20 172885 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes_impl.so.2601.0.0 -7f425c6a5000-7f425c6a6000 r--p 00000000 08:20 173464 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen.so.2601.0.0 -7f425c6a6000-7f425c6a7000 r-xp 00001000 08:20 173464 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen.so.2601.0.0 -7f425c6a7000-7f425c6a8000 r--p 00002000 08:20 173464 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen.so.2601.0.0 -7f425c6a8000-7f425c6a9000 r--p 00002000 08:20 173464 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen.so.2601.0.0 -7f425c6a9000-7f425c6aa000 rw-p 00003000 08:20 173464 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen.so.2601.0.0 -7f425c6aa000-7f425c6ac000 r--p 00000000 08:20 178082 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_kernel_timeout_internal.so.2601.0.0 -7f425c6ac000-7f425c6ad000 r-xp 00002000 08:20 178082 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_kernel_timeout_internal.so.2601.0.0 -7f425c6ad000-7f425c6ae000 r--p 00003000 08:20 178082 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_kernel_timeout_internal.so.2601.0.0 -7f425c6ae000-7f425c6af000 r--p 00003000 08:20 178082 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_kernel_timeout_internal.so.2601.0.0 -7f425c6af000-7f425c6b0000 rw-p 00004000 08:20 178082 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_kernel_timeout_internal.so.2601.0.0 -7f425c6b0000-7f425c6b2000 r--p 00000000 08:20 175359 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_entropy_pool.so.2601.0.0 -7f425c6b2000-7f425c6b3000 r-xp 00002000 08:20 175359 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_entropy_pool.so.2601.0.0 -7f425c6b3000-7f425c6b4000 r--p 00003000 08:20 175359 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_entropy_pool.so.2601.0.0 -7f425c6b4000-7f425c6b5000 r--p 00003000 08:20 175359 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_entropy_pool.so.2601.0.0 -7f425c6b5000-7f425c6b6000 rw-p 00004000 08:20 175359 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_entropy_pool.so.2601.0.0 -7f425c6b6000-7f425c6b8000 r--p 00000000 08:20 178507 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_globals.so.2601.0.0 -7f425c6b8000-7f425c6b9000 r-xp 00002000 08:20 178507 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_globals.so.2601.0.0 -7f425c6b9000-7f425c6ba000 r--p 00003000 08:20 178507 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_globals.so.2601.0.0 -7f425c6ba000-7f425c6bb000 r--p 00003000 08:20 178507 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_globals.so.2601.0.0 -7f425c6bb000-7f425c6bc000 rw-p 00004000 08:20 178507 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_globals.so.2601.0.0 -7f425c6bc000-7f425c7ab000 r--p 00000000 08:20 320733 /home/cbrissette/cuopt/.cuopt_env/lib/libcrypto.so.3 -7f425c7ab000-7f425cb0f000 r-xp 000ef000 08:20 320733 /home/cbrissette/cuopt/.cuopt_env/lib/libcrypto.so.3 -7f425cb0f000-7f425cc46000 r--p 00453000 08:20 320733 /home/cbrissette/cuopt/.cuopt_env/lib/libcrypto.so.3 -7f425cc46000-7f425ccc8000 r--p 00589000 08:20 320733 /home/cbrissette/cuopt/.cuopt_env/lib/libcrypto.so.3 -7f425ccc8000-7f425cccb000 rw-p 0060b000 08:20 320733 /home/cbrissette/cuopt/.cuopt_env/lib/libcrypto.so.3 -7f425cccb000-7f425ccce000 rw-p 00000000 00:00 0 -7f425ccce000-7f425ccf2000 r--p 00000000 08:20 167892 /home/cbrissette/cuopt/.cuopt_env/lib/libssl.so.3 -7f425ccf2000-7f425cd8d000 r-xp 00024000 08:20 167892 /home/cbrissette/cuopt/.cuopt_env/lib/libssl.so.3 -7f425cd8d000-7f425cdbd000 r--p 000bf000 08:20 167892 /home/cbrissette/cuopt/.cuopt_env/lib/libssl.so.3 -7f425cdbd000-7f425cdc7000 r--p 000ef000 08:20 167892 /home/cbrissette/cuopt/.cuopt_env/lib/libssl.so.3 -7f425cdc7000-7f425cdcb000 rw-p 000f9000 08:20 167892 /home/cbrissette/cuopt/.cuopt_env/lib/libssl.so.3 -7f425cdcb000-7f425cde3000 r--p 00000000 08:20 192153 /home/cbrissette/cuopt/.cuopt_env/lib/libre2.so.11 -7f425cde3000-7f425ce29000 r-xp 00018000 08:20 192153 /home/cbrissette/cuopt/.cuopt_env/lib/libre2.so.11 -7f425ce29000-7f425ce42000 r--p 0005e000 08:20 192153 /home/cbrissette/cuopt/.cuopt_env/lib/libre2.so.11 -7f425ce42000-7f425ce47000 r--p 00076000 08:20 192153 /home/cbrissette/cuopt/.cuopt_env/lib/libre2.so.11 -7f425ce47000-7f425ce48000 rw-p 0007b000 08:20 192153 /home/cbrissette/cuopt/.cuopt_env/lib/libre2.so.11 -7f425ce48000-7f425ce56000 r--p 00000000 08:20 84539 /home/cbrissette/cuopt/.cuopt_env/lib/libcares.so.2.19.5 -7f425ce56000-7f425ce81000 r-xp 0000e000 08:20 84539 /home/cbrissette/cuopt/.cuopt_env/lib/libcares.so.2.19.5 -7f425ce81000-7f425ce8c000 r--p 00039000 08:20 84539 /home/cbrissette/cuopt/.cuopt_env/lib/libcares.so.2.19.5 -7f425ce8c000-7f425ce8e000 r--p 00043000 08:20 84539 /home/cbrissette/cuopt/.cuopt_env/lib/libcares.so.2.19.5 -7f425ce8e000-7f425ce8f000 rw-p 00045000 08:20 84539 /home/cbrissette/cuopt/.cuopt_env/lib/libcares.so.2.19.5 -7f425ce8f000-7f425ce90000 r--p 00000000 08:20 139113 /home/cbrissette/cuopt/.cuopt_env/lib/libaddress_sorting.so.52.0.0 -7f425ce90000-7f425ce91000 r-xp 00001000 08:20 139113 /home/cbrissette/cuopt/.cuopt_env/lib/libaddress_sorting.so.52.0.0 -7f425ce91000-7f425ce92000 r--p 00002000 08:20 139113 /home/cbrissette/cuopt/.cuopt_env/lib/libaddress_sorting.so.52.0.0 -7f425ce92000-7f425ce93000 r--p 00002000 08:20 139113 /home/cbrissette/cuopt/.cuopt_env/lib/libaddress_sorting.so.52.0.0 -7f425ce93000-7f425ce94000 rw-p 00003000 08:20 139113 /home/cbrissette/cuopt/.cuopt_env/lib/libaddress_sorting.so.52.0.0 -7f425ce94000-7f425ce97000 r--p 00000000 08:20 175772 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_throw_delegate.so.2601.0.0 -7f425ce97000-7f425ce98000 r-xp 00003000 08:20 175772 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_throw_delegate.so.2601.0.0 -7f425ce98000-7f425ce99000 r--p 00004000 08:20 175772 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_throw_delegate.so.2601.0.0 -7f425ce99000-7f425ce9a000 r--p 00004000 08:20 175772 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_throw_delegate.so.2601.0.0 -7f425ce9a000-7f425ce9b000 rw-p 00005000 08:20 175772 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_throw_delegate.so.2601.0.0 -7f425ce9b000-7f425ce9c000 r--p 00000000 08:20 174707 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_spinlock_wait.so.2601.0.0 -7f425ce9c000-7f425ce9d000 r-xp 00001000 08:20 174707 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_spinlock_wait.so.2601.0.0 -7f425ce9d000-7f425ce9e000 r--p 00002000 08:20 174707 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_spinlock_wait.so.2601.0.0 -7f425ce9e000-7f425ce9f000 r--p 00002000 08:20 174707 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_spinlock_wait.so.2601.0.0 -7f425ce9f000-7f425cea0000 rw-p 00003000 08:20 174707 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_spinlock_wait.so.2601.0.0 -7f425cea0000-7f425cea1000 r--p 00000000 08:20 172795 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hash.so.2601.0.0 -7f425cea1000-7f425cea2000 r-xp 00001000 08:20 172795 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hash.so.2601.0.0 -7f425cea2000-7f425cea3000 r--p 00002000 08:20 172795 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hash.so.2601.0.0 -7f425cea3000-7f425cea4000 r--p 00002000 08:20 172795 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hash.so.2601.0.0 -7f425cea4000-7f425cea5000 rw-p 00003000 08:20 172795 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hash.so.2601.0.0 -7f425cea5000-7f425ceac000 r--p 00000000 08:20 172948 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time_zone.so.2601.0.0 -7f425ceac000-7f425cec0000 r-xp 00007000 08:20 172948 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time_zone.so.2601.0.0 -7f425cec0000-7f425cec3000 r--p 0001b000 08:20 172948 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time_zone.so.2601.0.0 -7f425cec3000-7f425cec4000 r--p 0001e000 08:20 172948 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time_zone.so.2601.0.0 -7f425cec4000-7f425cec5000 rw-p 0001f000 08:20 172948 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time_zone.so.2601.0.0 -7f425cec5000-7f425cecb000 r--p 00000000 08:20 173780 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time.so.2601.0.0 -7f425cecb000-7f425ced8000 r-xp 00006000 08:20 173780 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time.so.2601.0.0 -7f425ced8000-7f425ceda000 r--p 00013000 08:20 173780 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time.so.2601.0.0 -7f425ceda000-7f425cedb000 r--p 00015000 08:20 173780 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time.so.2601.0.0 -7f425cedb000-7f425cedc000 rw-p 00016000 08:20 173780 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time.so.2601.0.0 -7f425cedc000-7f425cedf000 r--p 00000000 08:20 174438 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord_internal.so.2601.0.0 -7f425cedf000-7f425ceed000 r-xp 00003000 08:20 174438 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord_internal.so.2601.0.0 -7f425ceed000-7f425ceef000 r--p 00011000 08:20 174438 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord_internal.so.2601.0.0 -7f425ceef000-7f425cef0000 r--p 00012000 08:20 174438 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord_internal.so.2601.0.0 -7f425cef0000-7f425cef1000 rw-p 00013000 08:20 174438 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord_internal.so.2601.0.0 -7f425cef1000-7f425cef3000 r--p 00000000 08:20 173725 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_hash_set.so.2601.0.0 -7f425cef3000-7f425cef7000 r-xp 00002000 08:20 173725 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_hash_set.so.2601.0.0 -7f425cef7000-7f425cef8000 r--p 00006000 08:20 173725 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_hash_set.so.2601.0.0 -7f425cef8000-7f425cef9000 r--p 00007000 08:20 173725 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_hash_set.so.2601.0.0 -7f425cef9000-7f425cefa000 rw-p 00008000 08:20 173725 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_hash_set.so.2601.0.0 -7f425cefa000-7f425cefb000 r--p 00000000 08:20 174927 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_conditions.so.2601.0.0 -7f425cefb000-7f425cefc000 r-xp 00001000 08:20 174927 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_conditions.so.2601.0.0 -7f425cefc000-7f425cefd000 r--p 00002000 08:20 174927 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_conditions.so.2601.0.0 -7f425cefd000-7f425cefe000 r--p 00002000 08:20 174927 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_conditions.so.2601.0.0 -7f425cefe000-7f425ceff000 rw-p 00003000 08:20 174927 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_conditions.so.2601.0.0 -7f425ceff000-7f425cf00000 r--p 00000000 08:20 144730 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_validity.so.33.5.0 -7f425cf00000-7f425cf01000 r-xp 00001000 08:20 144730 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_validity.so.33.5.0 -7f425cf01000-7f425cf02000 r--p 00002000 08:20 144730 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_validity.so.33.5.0 -7f425cf02000-7f425cf03000 r--p 00002000 08:20 144730 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_validity.so.33.5.0 -7f425cf03000-7f425cf04000 rw-p 00003000 08:20 144730 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_validity.so.33.5.0 -7f425cf04000-7f425cf05000 r--p 00000000 08:20 173312 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_die_if_null.so.2601.0.0 -7f425cf05000-7f425cf06000 r-xp 00001000 08:20 173312 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_die_if_null.so.2601.0.0 -7f425cf06000-7f425cf07000 r--p 00002000 08:20 173312 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_die_if_null.so.2601.0.0 -7f425cf07000-7f425cf08000 r--p 00002000 08:20 173312 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_die_if_null.so.2601.0.0 -7f425cf08000-7f425cf09000 rw-p 00003000 08:20 173312 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_die_if_null.so.2601.0.0 -7f425cf09000-7f425cf0f000 r--p 00000000 08:20 178474 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_str_format_internal.so.2601.0.0 -7f425cf0f000-7f425cf25000 r-xp 00006000 08:20 178474 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_str_format_internal.so.2601.0.0 -7f425cf25000-7f425cf28000 r--p 0001c000 08:20 178474 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_str_format_internal.so.2601.0.0 -7f425cf28000-7f425cf29000 r--p 0001f000 08:20 178474 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_str_format_internal.so.2601.0.0 -7f425cf29000-7f425cf2a000 rw-p 00020000 08:20 178474 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_str_format_internal.so.2601.0.0 -7f425cf2a000-7f425cf2e000 r--p 00000000 08:20 178182 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_status.so.2601.0.0 -7f425cf2e000-7f425cf32000 r-xp 00004000 08:20 178182 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_status.so.2601.0.0 -7f425cf32000-7f425cf34000 r--p 00008000 08:20 178182 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_status.so.2601.0.0 -7f425cf34000-7f425cf35000 r--p 00009000 08:20 178182 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_status.so.2601.0.0 -7f425cf35000-7f425cf36000 rw-p 0000a000 08:20 178182 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_status.so.2601.0.0 -7f425cf36000-7f425cf38000 r--p 00000000 08:20 175942 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_statusor.so.2601.0.0 -7f425cf38000-7f425cf39000 r-xp 00002000 08:20 175942 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_statusor.so.2601.0.0 -7f425cf39000-7f425cf3a000 r--p 00003000 08:20 175942 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_statusor.so.2601.0.0 -7f425cf3a000-7f425cf3b000 r--p 00003000 08:20 175942 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_statusor.so.2601.0.0 -7f425cf3b000-7f425cf3c000 rw-p 00004000 08:20 175942 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_statusor.so.2601.0.0 -7f425cf3c000-7f425cf3e000 r--p 00000000 08:20 174394 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_vlog_config_internal.so.2601.0.0 -7f425cf3e000-7f425cf42000 r-xp 00002000 08:20 174394 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_vlog_config_internal.so.2601.0.0 -7f425cf42000-7f425cf43000 r--p 00006000 08:20 174394 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_vlog_config_internal.so.2601.0.0 -7f425cf43000-7f425cf44000 r--p 00006000 08:20 174394 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_vlog_config_internal.so.2601.0.0 -7f425cf44000-7f425cf45000 rw-p 00007000 08:20 174394 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_vlog_config_internal.so.2601.0.0 -7f425cf45000-7f425cf46000 r--p 00000000 08:20 144825 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_range.so.33.5.0 -7f425cf46000-7f425cf47000 r-xp 00001000 08:20 144825 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_range.so.33.5.0 -7f425cf47000-7f425cf48000 r--p 00002000 08:20 144825 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_range.so.33.5.0 -7f425cf48000-7f425cf49000 r--p 00002000 08:20 144825 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_range.so.33.5.0 -7f425cf49000-7f425cf4a000 rw-p 00003000 08:20 144825 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_range.so.33.5.0 -7f425cf4a000-7f425cf51000 r--p 00000000 08:20 173525 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings.so.2601.0.0 -7f425cf51000-7f425cf68000 r-xp 00007000 08:20 173525 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings.so.2601.0.0 -7f425cf68000-7f425cf71000 r--p 0001e000 08:20 173525 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings.so.2601.0.0 -7f425cf71000-7f425cf72000 r--p 00026000 08:20 173525 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings.so.2601.0.0 -7f425cf72000-7f425cf73000 rw-p 00027000 08:20 173525 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings.so.2601.0.0 -7f425cf73000-7f425cf79000 r--p 00000000 08:20 176237 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_synchronization.so.2601.0.0 -7f425cf79000-7f425cf7e000 r-xp 00006000 08:20 176237 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_synchronization.so.2601.0.0 -7f425cf7e000-7f425cf81000 r--p 0000b000 08:20 176237 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_synchronization.so.2601.0.0 -7f425cf81000-7f425cf82000 r--p 0000d000 08:20 176237 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_synchronization.so.2601.0.0 -7f425cf82000-7f425cf83000 rw-p 0000e000 08:20 176237 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_synchronization.so.2601.0.0 -7f425cf83000-7f425cf85000 rw-p 00000000 00:00 0 -7f425cf85000-7f425cf86000 r--p 00000000 08:20 178365 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_functions.so.2601.0.0 -7f425cf86000-7f425cf87000 r-xp 00001000 08:20 178365 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_functions.so.2601.0.0 -7f425cf87000-7f425cf88000 r--p 00002000 08:20 178365 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_functions.so.2601.0.0 -7f425cf88000-7f425cf89000 r--p 00002000 08:20 178365 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_functions.so.2601.0.0 -7f425cf89000-7f425cf8a000 rw-p 00003000 08:20 178365 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_functions.so.2601.0.0 -7f425cf8a000-7f425cf8c000 r--p 00000000 08:20 175257 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_info.so.2601.0.0 -7f425cf8c000-7f425cf8e000 r-xp 00002000 08:20 175257 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_info.so.2601.0.0 -7f425cf8e000-7f425cf8f000 r--p 00004000 08:20 175257 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_info.so.2601.0.0 -7f425cf8f000-7f425cf90000 r--p 00004000 08:20 175257 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_info.so.2601.0.0 -7f425cf90000-7f425cf91000 rw-p 00005000 08:20 175257 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_info.so.2601.0.0 -7f425cf91000-7f425cf97000 r--p 00000000 08:20 177056 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord.so.2601.0.0 -7f425cf97000-7f425cfb0000 r-xp 00006000 08:20 177056 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord.so.2601.0.0 -7f425cfb0000-7f425cfb3000 r--p 0001f000 08:20 177056 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord.so.2601.0.0 -7f425cfb3000-7f425cfb4000 r--p 00021000 08:20 177056 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord.so.2601.0.0 -7f425cfb4000-7f425cfb5000 rw-p 00022000 08:20 177056 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord.so.2601.0.0 -7f425cfb5000-7f425cfc1000 r--p 00000000 08:20 140730 /home/cbrissette/cuopt/.cuopt_env/lib/libgpr.so.52.0.0 -7f425cfc1000-7f425cfce000 r-xp 0000c000 08:20 140730 /home/cbrissette/cuopt/.cuopt_env/lib/libgpr.so.52.0.0 -7f425cfce000-7f425cfd4000 r--p 00019000 08:20 140730 /home/cbrissette/cuopt/.cuopt_env/lib/libgpr.so.52.0.0 -7f425cfd4000-7f425cfd5000 r--p 0001f000 08:20 140730 /home/cbrissette/cuopt/.cuopt_env/lib/libgpr.so.52.0.0 -7f425cfd5000-7f425cfd6000 rw-p 00020000 08:20 140730 /home/cbrissette/cuopt/.cuopt_env/lib/libgpr.so.52.0.0 -7f425cfd6000-7f425d200000 r--p 00000000 08:20 139302 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc.so.52.0.0 -7f425d200000-7f425da4a000 r-xp 0022a000 08:20 139302 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc.so.52.0.0 -7f425da4a000-7f425dcfb000 r--p 00a74000 08:20 139302 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc.so.52.0.0 -7f425dcfb000-7f425dd35000 r--p 00d25000 08:20 139302 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc.so.52.0.0 -7f425dd35000-7f425dd42000 rw-p 00d5f000 08:20 139302 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc.so.52.0.0 -7f425dd42000-7f425dd47000 rw-p 00000000 00:00 0 -7f425dd47000-7f425dddc000 r--p 00000000 08:20 144643 /home/cbrissette/cuopt/.cuopt_env/lib/libprotobuf.so.33.5.0 -7f425dddc000-7f425dfff000 r-xp 00095000 08:20 144643 /home/cbrissette/cuopt/.cuopt_env/lib/libprotobuf.so.33.5.0 -7f425dfff000-7f425e06b000 r--p 002b8000 08:20 144643 /home/cbrissette/cuopt/.cuopt_env/lib/libprotobuf.so.33.5.0 -7f425e06b000-7f425e076000 r--p 00324000 08:20 144643 /home/cbrissette/cuopt/.cuopt_env/lib/libprotobuf.so.33.5.0 -7f425e076000-7f425e07d000 rw-p 0032f000 08:20 144643 /home/cbrissette/cuopt/.cuopt_env/lib/libprotobuf.so.33.5.0 -7f425e07d000-7f425e07e000 rw-p 00000000 00:00 0 -7f425e07e000-7f425e08b000 r--p 00000000 08:20 83455 /home/cbrissette/cuopt/.cuopt_env/lib/libgomp.so.1.0.0 -7f425e08b000-7f425e0c4000 r-xp 0000d000 08:20 83455 /home/cbrissette/cuopt/.cuopt_env/lib/libgomp.so.1.0.0 -7f425e0c4000-7f425e0d2000 r--p 00046000 08:20 83455 /home/cbrissette/cuopt/.cuopt_env/lib/libgomp.so.1.0.0 -7f425e0d2000-7f425e0d3000 r--p 00054000 08:20 83455 /home/cbrissette/cuopt/.cuopt_env/lib/libgomp.so.1.0.0 -7f425e0d3000-7f425e0d4000 rw-p 00055000 08:20 83455 /home/cbrissette/cuopt/.cuopt_env/lib/libgomp.so.1.0.0 -7f425e0d4000-7f425e0de000 r--p 00000000 08:20 198476 /home/cbrissette/cuopt/.cuopt_env/lib/librapids_logger.so -7f425e0de000-7f425e10f000 r-xp 0000a000 08:20 198476 /home/cbrissette/cuopt/.cuopt_env/lib/librapids_logger.so -7f425e10f000-7f425e11c000 r--p 0003b000 08:20 198476 /home/cbrissette/cuopt/.cuopt_env/lib/librapids_logger.so -7f425e11c000-7f425e11f000 r--p 00048000 08:20 198476 /home/cbrissette/cuopt/.cuopt_env/lib/librapids_logger.so -7f425e11f000-7f425e120000 rw-p 0004b000 08:20 198476 /home/cbrissette/cuopt/.cuopt_env/lib/librapids_logger.so -7f425e120000-7f425e13c000 r--p 00000000 08:20 182877 /home/cbrissette/cuopt/.cuopt_env/lib/librmm.so -7f425e13c000-7f425e1fc000 r-xp 0001c000 08:20 182877 /home/cbrissette/cuopt/.cuopt_env/lib/librmm.so -7f425e1fc000-7f425e22c000 r--p 000dc000 08:20 182877 /home/cbrissette/cuopt/.cuopt_env/lib/librmm.so -7f425e22c000-7f425e233000 r--p 0010c000 08:20 182877 /home/cbrissette/cuopt/.cuopt_env/lib/librmm.so -7f425e233000-7f425e234000 rw-p 00113000 08:20 182877 /home/cbrissette/cuopt/.cuopt_env/lib/librmm.so -7f425e234000-7f425e236000 rw-p 00000000 00:00 0 -7f425e236000-7f425e263000 r--p 00000000 08:20 140888 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc++.so.1.78.1 -7f425e263000-7f425e2bc000 r-xp 0002d000 08:20 140888 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc++.so.1.78.1 -7f425e2bc000-7f425e2d8000 r--p 00086000 08:20 140888 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc++.so.1.78.1 -7f425e2d8000-7f425e2dd000 r--p 000a2000 08:20 140888 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc++.so.1.78.1 -7f425e2dd000-7f425e2de000 rw-p 000a7000 08:20 140888 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc++.so.1.78.1 -7f425e2de000-7f425e2ec000 r--p 00000000 08:20 194104 /home/cbrissette/cuopt/.cuopt_env/lib/libtbb.so.12.18 -7f425e2ec000-7f425e319000 r-xp 0000e000 08:20 194104 /home/cbrissette/cuopt/.cuopt_env/lib/libtbb.so.12.18 -7f425e319000-7f425e325000 r--p 0003b000 08:20 194104 /home/cbrissette/cuopt/.cuopt_env/lib/libtbb.so.12.18 -7f425e325000-7f425e327000 r--p 00046000 08:20 194104 /home/cbrissette/cuopt/.cuopt_env/lib/libtbb.so.12.18 -7f425e327000-7f425e32a000 rw-p 00048000 08:20 194104 /home/cbrissette/cuopt/.cuopt_env/lib/libtbb.so.12.18 -7f425e32a000-7f425e340000 rw-p 00000000 00:00 0 -7f425e340000-7f425e352000 r--p 00000000 08:20 78513 /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so -7f425e352000-7f425e36e000 r-xp 00012000 08:20 78513 /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so -7f425e36e000-7f425e377000 r--p 0002e000 08:20 78513 /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so -7f425e377000-7f425e378000 r--p 00037000 08:20 78513 /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so -7f425e378000-7f425e379000 rw-p 00038000 08:20 78513 /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so -7f425e379000-7f425e37a000 rw-p 00000000 00:00 0 -7f425e37a000-7f425e37e000 ---p 00000000 00:00 0 -7f425e37e000-7f425e47a000 rw-p 00000000 00:00 0 -7f425e47a000-7f425e47e000 ---p 00000000 00:00 0 -7f425e47e000-7f425e57a000 rw-p 00000000 00:00 0 -7f425e57a000-7f425e57e000 ---p 00000000 00:00 0 -7f425e57e000-7f425e67a000 rw-p 00000000 00:00 0 -7f425e67a000-7f425e67e000 ---p 00000000 00:00 0 -7f425e67e000-7f425e77a000 rw-p 00000000 00:00 0 -7f425e77a000-7f425e77e000 ---p 00000000 00:00 0 -7f425e77e000-7f425e87a000 rw-p 00000000 00:00 0 -7f425e87a000-7f425e87e000 ---p 00000000 00:00 0 -7f425e87e000-7f425e97a000 rw-p 00000000 00:00 0 -7f425e97a000-7f425e97e000 ---p 00000000 00:00 0 -7f425e97e000-7f425ea7a000 rw-p 00000000 00:00 0 -7f425ea7a000-7f425ea7b000 ---p 00000000 00:00 0 -7f425ea7b000-7f425eb7b000 rw-p 00000000 00:00 0 -7f425eb7b000-7f425eb7f000 ---p 00000000 00:00 0 -7f425eb7f000-7f425ec7b000 rw-p 00000000 00:00 0 -7f425ec7b000-7f425ec7f000 ---p 00000000 00:00 0 -7f425ec7f000-7f425ed7b000 rw-p 00000000 00:00 0 -7f425ed7b000-7f425ed7f000 ---p 00000000 00:00 0 -7f425ed7f000-7f425ee7b000 rw-p 00000000 00:00 0 -7f425ee7b000-7f425ee7f000 ---p 00000000 00:00 0 -7f425ee7f000-7f425ef7b000 rw-p 00000000 00:00 0 -7f425ef7b000-7f425ef7f000 ---p 00000000 00:00 0 -7f425ef7f000-7f425f07b000 rw-p 00000000 00:00 0 -7f425f07b000-7f425f07f000 ---p 00000000 00:00 0 -7f425f07f000-7f425f17b000 rw-p 00000000 00:00 0 -7f425f17b000-7f425f17f000 ---p 00000000 00:00 0 -7f425f17f000-7f425f27b000 rw-p 00000000 00:00 0 -7f425f27b000-7f425f27f000 ---p 00000000 00:00 0 -7f425f27f000-7f425f37b000 rw-p 00000000 00:00 0 -7f425f37b000-7f425f37c000 ---p 00000000 00:00 0 -7f425f37c000-7f425fc3d000 rw-p 00000000 00:00 0 -7f425fc3d000-7f425fcfd000 ---p 00000000 00:00 0 -7f425fcfd000-7f425fcfe000 ---p 00000000 00:00 0 -7f425fcfe000-7f425fdfe000 rw-p 00000000 00:00 0 -7f425fdfe000-7f425fdff000 ---p 00000000 00:00 0 -7f425fdff000-7f4260000000 rw-p 00000000 00:00 0 -7f4260000000-7f4260021000 rw-p 00000000 00:00 0 -7f4260021000-7f4264000000 ---p 00000000 00:00 0 -7f4264003000-7f4264004000 r--p 00000000 08:20 172516 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_nullguard.so.2601.0.0 -7f4264004000-7f4264005000 r-xp 00001000 08:20 172516 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_nullguard.so.2601.0.0 -7f4264005000-7f4264006000 r--p 00002000 08:20 172516 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_nullguard.so.2601.0.0 -7f4264006000-7f4264007000 r--p 00002000 08:20 172516 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_nullguard.so.2601.0.0 -7f4264007000-7f4264008000 rw-p 00003000 08:20 172516 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_nullguard.so.2601.0.0 -7f4264008000-7f426400e000 r--p 00000000 08:20 173104 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_message.so.2601.0.0 -7f426400e000-7f4264012000 r-xp 00006000 08:20 173104 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_message.so.2601.0.0 -7f4264012000-7f4264014000 r--p 0000a000 08:20 173104 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_message.so.2601.0.0 -7f4264014000-7f4264015000 r--p 0000b000 08:20 173104 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_message.so.2601.0.0 -7f4264015000-7f4264016000 rw-p 0000c000 08:20 173104 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_message.so.2601.0.0 -7f4264016000-7f4264019000 r--p 00000000 08:20 175246 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_check_op.so.2601.0.0 -7f4264019000-7f426401c000 r-xp 00003000 08:20 175246 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_check_op.so.2601.0.0 -7f426401c000-7f426401d000 r--p 00006000 08:20 175246 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_check_op.so.2601.0.0 -7f426401d000-7f426401e000 r--p 00006000 08:20 175246 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_check_op.so.2601.0.0 -7f426401e000-7f426401f000 rw-p 00007000 08:20 175246 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_check_op.so.2601.0.0 -7f426401f000-7f4264020000 r--p 00000000 08:20 218634 /usr/lib/x86_64-linux-gnu/libpthread.so.0 -7f4264020000-7f4264021000 r-xp 00001000 08:20 218634 /usr/lib/x86_64-linux-gnu/libpthread.so.0 -7f4264021000-7f4264022000 r--p 00002000 08:20 218634 /usr/lib/x86_64-linux-gnu/libpthread.so.0 -7f4264022000-7f4264023000 r--p 00002000 08:20 218634 /usr/lib/x86_64-linux-gnu/libpthread.so.0 -7f4264023000-7f4264024000 rw-p 00003000 08:20 218634 /usr/lib/x86_64-linux-gnu/libpthread.so.0 -7f4264024000-7f4264028000 ---p 00000000 00:00 0 -7f4264028000-7f4264046000 rw-p 00000000 00:00 0 -7f4264046000-7f426404a000 r--p 00000000 08:20 294964 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnet.so -7f426404a000-7f4264058000 r-xp 00004000 08:20 294964 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnet.so -7f4264058000-7f426405c000 r--p 00012000 08:20 294964 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnet.so -7f426405c000-7f426405d000 r--p 00015000 08:20 294964 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnet.so -7f426405d000-7f426405e000 rw-p 00016000 08:20 294964 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnet.so -7f426405e000-7f426714b000 rw-p 00000000 00:00 0 -7f426714b000-7f4269b1b000 ---p 00000000 00:00 0 -7f4269b1b000-7f4269b23000 rw-p 00000000 00:00 0 -7f4269b23000-7f426ab23000 ---p 00000000 00:00 0 -7f426ab23000-7f426af03000 rw-p 00000000 00:00 0 -7f426af03000-7f426d8d3000 ---p 00000000 00:00 0 -7f426d8d3000-7f426d8db000 rw-p 00000000 00:00 0 -7f426d8db000-7f426e8db000 ---p 00000000 00:00 0 -7f426e8db000-7f426e957000 rw-p 00000000 00:00 0 -7f426e957000-7f426ee91000 ---p 00000000 00:00 0 -7f426ee91000-7f426ee92000 rw-p 00000000 00:00 0 -7f426ee92000-7f426f092000 ---p 00000000 00:00 0 -7f426f092000-7f426f10e000 rw-p 00000000 00:00 0 -7f426f10e000-7f426f648000 ---p 00000000 00:00 0 -7f426f648000-7f426f649000 rw-p 00000000 00:00 0 -7f426f649000-7f426f849000 ---p 00000000 00:00 0 -7f426f849000-7f426f8c5000 rw-p 00000000 00:00 0 -7f426f8c5000-7f426fdff000 ---p 00000000 00:00 0 -7f426fdff000-7f426fe00000 rw-p 00000000 00:00 0 -7f426fe00000-7f4270000000 ---p 00000000 00:00 0 -7f4270000000-7f4270021000 rw-p 00000000 00:00 0 -7f4270021000-7f4274000000 ---p 00000000 00:00 0 -7f427400e000-7f4274015000 r--p 00000000 08:20 294965 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnio.so -7f4274015000-7f427401d000 r-xp 00007000 08:20 294965 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnio.so -7f427401d000-7f4274020000 r--p 0000f000 08:20 294965 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnio.so -7f4274020000-7f4274021000 r--p 00011000 08:20 294965 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnio.so -7f4274021000-7f4274022000 rw-p 00012000 08:20 294965 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnio.so -7f4274022000-7f4274079000 r--p 00000000 08:20 217873 /usr/lib/locale/C.utf8/LC_CTYPE -7f4274079000-7f42741d5000 rw-p 00000000 00:00 0 -7f42741d5000-7f42741d6000 ---p 00000000 00:00 0 -7f42741d6000-7f42742d6000 rw-p 00000000 00:00 0 -7f42742d6000-7f42742d7000 ---p 00000000 00:00 0 -7f42742d7000-7f42747cf000 rw-p 00000000 00:00 0 -7f42747cf000-7f4274a9f000 rwxp 00000000 00:00 0 -7f4274a9f000-7f4274f0e000 ---p 00000000 00:00 0 -7f4274f0e000-7f42751ae000 rwxp 00000000 00:00 0 -7f42751ae000-7f427c36e000 ---p 00000000 00:00 0 -7f427c36e000-7f427c5de000 rwxp 00000000 00:00 0 -7f427c5de000-7f42837cf000 ---p 00000000 00:00 0 -7f42837cf000-7f428c000000 r--s 00000000 08:20 294975 /usr/lib/jvm/java-11-openjdk-amd64/lib/modules -7f428c000000-7f428d088000 rw-p 00000000 00:00 0 -7f428d088000-7f4290000000 ---p 00000000 00:00 0 -7f4290000000-7f4290001000 r--p 00000000 00:00 0 -7f4290001000-7f4290003000 r--p 00000000 08:20 294962 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement_ext.so -7f4290003000-7f4290006000 r-xp 00002000 08:20 294962 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement_ext.so -7f4290006000-7f4290008000 r--p 00005000 08:20 294962 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement_ext.so -7f4290008000-7f4290009000 r--p 00006000 08:20 294962 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement_ext.so -7f4290009000-7f429000a000 rw-p 00007000 08:20 294962 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement_ext.so -7f429000a000-7f429000d000 r--p 00000000 08:20 294960 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement.so -7f429000d000-7f429000e000 r-xp 00003000 08:20 294960 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement.so -7f429000e000-7f429000f000 r--p 00004000 08:20 294960 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement.so -7f429000f000-7f4290010000 r--p 00004000 08:20 294960 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement.so -7f4290010000-7f4290011000 rw-p 00005000 08:20 294960 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement.so -7f4290011000-7f4290012000 r--p 00000000 08:20 217879 /usr/lib/locale/C.utf8/LC_NUMERIC -7f4290012000-7f4290013000 r--p 00000000 08:20 217882 /usr/lib/locale/C.utf8/LC_TIME -7f4290013000-7f4290014000 r--p 00000000 08:20 217872 /usr/lib/locale/C.utf8/LC_COLLATE -7f4290014000-7f4290015000 r--p 00000000 08:20 217877 /usr/lib/locale/C.utf8/LC_MONETARY -7f4290015000-7f4290016000 r--p 00000000 08:20 217876 /usr/lib/locale/C.utf8/LC_MESSAGES/SYS_LC_MESSAGES -7f4290016000-7f4290017000 r--p 00000000 08:20 217880 /usr/lib/locale/C.utf8/LC_PAPER -7f4290017000-7f4290018000 r--p 00000000 08:20 217878 /usr/lib/locale/C.utf8/LC_NAME -7f4290018000-7f4290019000 r--p 00000000 08:20 217871 /usr/lib/locale/C.utf8/LC_ADDRESS -7f4290019000-7f429001a000 r--p 00000000 08:20 217881 /usr/lib/locale/C.utf8/LC_TELEPHONE -7f429001a000-7f4290021000 r--s 00000000 08:20 218904 /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache -7f4290021000-7f4290d2e000 rw-p 00000000 00:00 0 -7f4290d2e000-7f4290d2f000 ---p 00000000 00:00 0 -7f4290d2f000-7f4290e34000 rw-p 00000000 00:00 0 -7f4290e34000-7f4290f18000 ---p 00000000 00:00 0 -7f4290f18000-7f4290f1e000 rw-p 00000000 00:00 0 -7f4290f1e000-7f4291001000 ---p 00000000 00:00 0 -7f4291001000-7f4291007000 rw-p 00000000 00:00 0 -7f4291007000-7f4291010000 ---p 00000000 00:00 0 -7f4291010000-7f4291012000 r--p 00000000 08:20 294974 /usr/lib/jvm/java-11-openjdk-amd64/lib/libzip.so -7f4291012000-7f4291017000 r-xp 00002000 08:20 294974 /usr/lib/jvm/java-11-openjdk-amd64/lib/libzip.so -7f4291017000-7f4291019000 r--p 00007000 08:20 294974 /usr/lib/jvm/java-11-openjdk-amd64/lib/libzip.so -7f4291019000-7f429101a000 r--p 00008000 08:20 294974 /usr/lib/jvm/java-11-openjdk-amd64/lib/libzip.so -7f429101a000-7f429101b000 rw-p 00009000 08:20 294974 /usr/lib/jvm/java-11-openjdk-amd64/lib/libzip.so -7f429101b000-7f4291023000 rw-s 00000000 08:20 78573 /tmp/hsperfdata_cbrissette/101 -7f4291023000-7f4291024000 ---p 00000000 00:00 0 -7f4291024000-7f4291025000 r--p 00000000 00:00 0 -7f4291025000-7f4291033000 r--p 00000000 08:20 294953 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjava.so -7f4291033000-7f4291049000 r-xp 0000e000 08:20 294953 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjava.so -7f4291049000-7f4291050000 r--p 00024000 08:20 294953 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjava.so -7f4291050000-7f4291051000 r--p 0002a000 08:20 294953 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjava.so -7f4291051000-7f4291052000 rw-p 0002b000 08:20 294953 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjava.so -7f4291052000-7f4291053000 rw-p 00000000 00:00 0 -7f4291053000-7f4291058000 r--p 00000000 08:20 294973 /usr/lib/jvm/java-11-openjdk-amd64/lib/libverify.so -7f4291058000-7f429105f000 r-xp 00005000 08:20 294973 /usr/lib/jvm/java-11-openjdk-amd64/lib/libverify.so -7f429105f000-7f4291061000 r--p 0000c000 08:20 294973 /usr/lib/jvm/java-11-openjdk-amd64/lib/libverify.so -7f4291061000-7f4291063000 r--p 0000d000 08:20 294973 /usr/lib/jvm/java-11-openjdk-amd64/lib/libverify.so -7f4291063000-7f4291064000 rw-p 0000f000 08:20 294973 /usr/lib/jvm/java-11-openjdk-amd64/lib/libverify.so -7f4291064000-7f4291065000 r--p 00000000 08:20 218636 /usr/lib/x86_64-linux-gnu/librt.so.1 -7f4291065000-7f4291066000 r-xp 00001000 08:20 218636 /usr/lib/x86_64-linux-gnu/librt.so.1 -7f4291066000-7f4291067000 r--p 00002000 08:20 218636 /usr/lib/x86_64-linux-gnu/librt.so.1 -7f4291067000-7f4291068000 r--p 00002000 08:20 218636 /usr/lib/x86_64-linux-gnu/librt.so.1 -7f4291068000-7f4291069000 rw-p 00003000 08:20 218636 /usr/lib/x86_64-linux-gnu/librt.so.1 -7f4291069000-7f429106d000 ---p 00000000 00:00 0 -7f429106d000-7f4291169000 rw-p 00000000 00:00 0 -7f4291169000-7f429116a000 r--p 00000000 08:20 218624 /usr/lib/x86_64-linux-gnu/libdl.so.2 -7f429116a000-7f429116b000 r-xp 00001000 08:20 218624 /usr/lib/x86_64-linux-gnu/libdl.so.2 -7f429116b000-7f429116c000 r--p 00002000 08:20 218624 /usr/lib/x86_64-linux-gnu/libdl.so.2 -7f429116c000-7f429116d000 r--p 00002000 08:20 218624 /usr/lib/x86_64-linux-gnu/libdl.so.2 -7f429116d000-7f429116e000 rw-p 00003000 08:20 218624 /usr/lib/x86_64-linux-gnu/libdl.so.2 -7f429116e000-7f4291172000 r--p 00000000 08:20 84327 /home/cbrissette/cuopt/.cuopt_env/lib/libgcc_s.so.1 -7f4291172000-7f4291195000 r-xp 00004000 08:20 84327 /home/cbrissette/cuopt/.cuopt_env/lib/libgcc_s.so.1 -7f4291195000-7f4291199000 r--p 00027000 08:20 84327 /home/cbrissette/cuopt/.cuopt_env/lib/libgcc_s.so.1 -7f4291199000-7f429119a000 r--p 0002a000 08:20 84327 /home/cbrissette/cuopt/.cuopt_env/lib/libgcc_s.so.1 -7f429119a000-7f429119b000 rw-p 0002b000 08:20 84327 /home/cbrissette/cuopt/.cuopt_env/lib/libgcc_s.so.1 -7f429119b000-7f42911a9000 r--p 00000000 08:20 218625 /usr/lib/x86_64-linux-gnu/libm.so.6 -7f42911a9000-7f4291225000 r-xp 0000e000 08:20 218625 /usr/lib/x86_64-linux-gnu/libm.so.6 -7f4291225000-7f4291280000 r--p 0008a000 08:20 218625 /usr/lib/x86_64-linux-gnu/libm.so.6 -7f4291280000-7f4291281000 r--p 000e4000 08:20 218625 /usr/lib/x86_64-linux-gnu/libm.so.6 -7f4291281000-7f4291282000 rw-p 000e5000 08:20 218625 /usr/lib/x86_64-linux-gnu/libm.so.6 -7f4291282000-7f429132c000 r--p 00000000 08:20 84948 /home/cbrissette/cuopt/.cuopt_env/lib/libstdc++.so.6.0.34 -7f429132c000-7f429145d000 r-xp 000aa000 08:20 84948 /home/cbrissette/cuopt/.cuopt_env/lib/libstdc++.so.6.0.34 -7f429145d000-7f42914eb000 r--p 001db000 08:20 84948 /home/cbrissette/cuopt/.cuopt_env/lib/libstdc++.so.6.0.34 -7f42914eb000-7f42914fa000 r--p 00268000 08:20 84948 /home/cbrissette/cuopt/.cuopt_env/lib/libstdc++.so.6.0.34 -7f42914fa000-7f42914fd000 rw-p 00277000 08:20 84948 /home/cbrissette/cuopt/.cuopt_env/lib/libstdc++.so.6.0.34 -7f42914fd000-7f4291501000 rw-p 00000000 00:00 0 -7f4291501000-7f4291784000 r--p 00000000 08:20 294978 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so -7f4291784000-7f4292422000 r-xp 00283000 08:20 294978 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so -7f4292422000-7f429267e000 r--p 00f21000 08:20 294978 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so -7f429267e000-7f4292742000 r--p 0117c000 08:20 294978 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so -7f4292742000-7f429277d000 rw-p 01240000 08:20 294978 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so -7f429277d000-7f42927d6000 rw-p 00000000 00:00 0 -7f42927d6000-7f42927fe000 r--p 00000000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 -7f42927fe000-7f4292993000 r-xp 00028000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 -7f4292993000-7f42929eb000 r--p 001bd000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 -7f42929eb000-7f42929ec000 ---p 00215000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 -7f42929ec000-7f42929f0000 r--p 00215000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 -7f42929f0000-7f42929f2000 rw-p 00219000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 -7f42929f2000-7f42929ff000 rw-p 00000000 00:00 0 -7f42929ff000-7f4292a00000 r--p 00000000 08:20 217875 /usr/lib/locale/C.utf8/LC_MEASUREMENT -7f4292a00000-7f4292a02000 r--p 00000000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so -7f4292a02000-7f4292a05000 r-xp 00002000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so -7f4292a05000-7f4292a06000 r--p 00005000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so -7f4292a06000-7f4292a07000 ---p 00006000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so -7f4292a07000-7f4292a08000 r--p 00006000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so -7f4292a08000-7f4292a09000 rw-p 00007000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so -7f4292a09000-7f4292a0c000 r--p 00000000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so -7f4292a0c000-7f4292a16000 r-xp 00003000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so -7f4292a16000-7f4292a19000 r--p 0000d000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so -7f4292a19000-7f4292a1a000 ---p 00010000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so -7f4292a1a000-7f4292a1b000 r--p 00010000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so -7f4292a1b000-7f4292a1c000 rw-p 00011000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so -7f4292a1c000-7f4292a1f000 r--p 00000000 08:20 83514 /home/cbrissette/cuopt/.cuopt_env/lib/libz.so.1.3.2 -7f4292a1f000-7f4292a2f000 r-xp 00003000 08:20 83514 /home/cbrissette/cuopt/.cuopt_env/lib/libz.so.1.3.2 -7f4292a2f000-7f4292a35000 r--p 00013000 08:20 83514 /home/cbrissette/cuopt/.cuopt_env/lib/libz.so.1.3.2 -7f4292a35000-7f4292a36000 r--p 00019000 08:20 83514 /home/cbrissette/cuopt/.cuopt_env/lib/libz.so.1.3.2 -7f4292a36000-7f4292a37000 rw-p 0001a000 08:20 83514 /home/cbrissette/cuopt/.cuopt_env/lib/libz.so.1.3.2 -7f4292a37000-7f4292a39000 rw-p 00000000 00:00 0 -7f4292a39000-7f4292a3b000 r--p 00000000 08:20 218618 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 -7f4292a3b000-7f4292a65000 r-xp 00002000 08:20 218618 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 -7f4292a65000-7f4292a70000 r--p 0002c000 08:20 218618 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 -7f4292a70000-7f4292a71000 r--p 00000000 08:20 217874 /usr/lib/locale/C.utf8/LC_IDENTIFICATION -7f4292a71000-7f4292a73000 r--p 00037000 08:20 218618 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 -7f4292a73000-7f4292a75000 rw-p 00039000 08:20 218618 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 -7ffd47680000-7ffd476a1000 rw-p 00000000 00:00 0 [stack] -7ffd47724000-7ffd47728000 r--p 00000000 00:00 0 [vvar] -7ffd47728000-7ffd4772a000 r-xp 00000000 00:00 0 [vdso] - - -VM Arguments: -java_command: /home/cbrissette/cuopt/java/cuopt/target/surefire/surefirebooter-20260707090606534_3.jar /home/cbrissette/cuopt/java/cuopt/target/surefire 2026-07-07T09-06-06_415-jvmRun1 surefire-20260707090606534_1tmp surefire_0-20260707090606534_2tmp -java_class_path (initial): /home/cbrissette/cuopt/java/cuopt/target/surefire/surefirebooter-20260707090606534_3.jar -Launcher Type: SUN_STANDARD - -[Global flags] - intx CICompilerCount = 12 {product} {ergonomic} - uint ConcGCThreads = 4 {product} {ergonomic} - uint G1ConcRefinementThreads = 15 {product} {ergonomic} - size_t G1HeapRegionSize = 1048576 {product} {ergonomic} - uintx GCDrainStackTargetSize = 64 {product} {ergonomic} - size_t InitialHeapSize = 260046848 {product} {ergonomic} - size_t MarkStackSize = 4194304 {product} {ergonomic} - size_t MaxHeapSize = 4141875200 {product} {ergonomic} - size_t MaxNewSize = 2485125120 {product} {ergonomic} - size_t MinHeapDeltaBytes = 1048576 {product} {ergonomic} - uintx NonNMethodCodeHeapSize = 7594288 {pd product} {ergonomic} - uintx NonProfiledCodeHeapSize = 122031976 {pd product} {ergonomic} - uintx ProfiledCodeHeapSize = 122031976 {pd product} {ergonomic} - uintx ReservedCodeCacheSize = 251658240 {pd product} {ergonomic} - bool SegmentedCodeCache = true {product} {ergonomic} - bool UseCompressedClassPointers = true {lp64_product} {ergonomic} - bool UseCompressedOops = true {lp64_product} {ergonomic} - bool UseG1GC = true {product} {ergonomic} - -Logging: -Log output configuration: - #0: stdout all=warning uptime,level,tags - #1: stderr all=off uptime,level,tags - -Environment Variables: -JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 -PATH=/tmp/cuopt-fake-bin:/home/cbrissette/.codex/tmp/arg0/codex-arg0pFic5k:/home/cbrissette/.vscode-server/bin/034f571df509819cc10b0c8129f66ef77a542f0e/bin/remote-cli:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/wsl/lib:/mnt/c/Program Files/Microsoft VS Code:/mnt/c/Windows/system32:/mnt/c/Windows:/mnt/c/Windows/System32/Wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0/:/mnt/c/Windows/System32/OpenSSH/:/mnt/c/Program Files/dotnet/:/mnt/c/Program Files/Microsoft VS Code/bin:/mnt/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/mnt/c/Program Files/NVIDIA Corporation/Nsight Compute 2025.1.0/:/mnt/c/Program Files/Teleport:/mnt/c/PROGRA~1/cinc/bin/:/mnt/c/Program Files/NVInfo/bin:/mnt/c/Program Files/ai-pim-utils:/mnt/c/WINDOWS/system32:/mnt/c/WINDOWS:/mnt/c/WINDOWS/System32/Wbem:/mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0/:/mnt/c/WINDOWS/System32/OpenSSH/:/mnt/c/Program Files/Teleport Connect/resources/bin:/mnt/c/Users/cbrissette/.local/bin:/mnt/c/Users/cbrissette/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/cbrissette/AppData/Local/Programs/cursor/resources/app/bin:/mnt/c/Users/cbrissette/AppData/Local/Microsoft/WinGet/Packages/astral-sh.uv_Microsoft.Winget.Source_8wekyb3d8bbwe:/mnt/c/Users/cbrissette/AppData/Local/Microsoft/WindowsApps:/snap/bin:/home/cbrissette/ngc-cli:/home/cbrissette/.vscode-server/extensions/openai.chatgpt-26.623.101652-linux-x64/bin/linux-x86_64:/home/cbrissette/ngc-cli -LD_LIBRARY_PATH=/home/cbrissette/cuopt/.cuopt_env/lib:/home/cbrissette/cuopt/java/cuopt/build/native -SHELL=/bin/bash -DISPLAY=:0 -HOSTTYPE=x86_64 -LANG=C.UTF-8 -TERM=xterm-256color - -Signal Handlers: -SIGSEGV: [libjvm.so+0xeaead0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGBUS: [libjvm.so+0xeaead0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGFPE: [libjvm.so+0xeaead0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGPIPE: [libjvm.so+0xbf1430], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGXFSZ: [libjvm.so+0xbf1430], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGILL: [libjvm.so+0xeaead0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGUSR2: [libjvm.so+0xbf12d0], sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO -SIGHUP: [libjvm.so+0xbf1a90], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGINT: [libjvm.so+0xbf1a90], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGTERM: [libjvm.so+0xbf1a90], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGQUIT: [libjvm.so+0xbf1a90], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO - - ---------------- S Y S T E M --------------- - -OS:DISTRIB_ID=Ubuntu -DISTRIB_RELEASE=22.04 -DISTRIB_CODENAME=jammy -DISTRIB_DESCRIPTION="Ubuntu 22.04.5 LTS" -uname:Linux 5.15.153.1-microsoft-standard-WSL2 #1 SMP Fri Mar 29 23:14:13 UTC 2024 x86_64 -OS uptime: 2 days 16:10 hours -libc:glibc 2.35 NPTL 2.35 -rlimit (soft/hard): STACK 8192k/infinity , CORE 0k/infinity , NPROC 63166/63166 , NOFILE 1048576/1048576 , AS infinity/infinity , CPU infinity/infinity , DATA infinity/infinity , FSIZE infinity/infinity , MEMLOCK 65536k/65536k -load average:2.12 3.30 1.64 - -/proc/meminfo: -MemTotal: 16177528 kB -MemFree: 10277360 kB -MemAvailable: 12096500 kB -Buffers: 13244 kB -Cached: 1752444 kB -SwapCached: 57796 kB -Active: 634420 kB -Inactive: 4384876 kB -Active(anon): 14364 kB -Inactive(anon): 3242904 kB -Active(file): 620056 kB -Inactive(file): 1141972 kB -Unevictable: 0 kB -Mlocked: 0 kB -SwapTotal: 4194304 kB -SwapFree: 3716576 kB -Dirty: 3284 kB -Writeback: 0 kB -AnonPages: 3133892 kB -Mapped: 441584 kB -Shmem: 3704 kB -KReclaimable: 389212 kB -Slab: 511028 kB -SReclaimable: 389212 kB -SUnreclaim: 121816 kB -KernelStack: 14784 kB -PageTables: 48828 kB -NFS_Unstable: 0 kB -Bounce: 0 kB -WritebackTmp: 0 kB -CommitLimit: 12283068 kB -Committed_AS: 6477068 kB -VmallocTotal: 34359738367 kB -VmallocUsed: 37536 kB -VmallocChunk: 0 kB -Percpu: 13248 kB -AnonHugePages: 1173504 kB -ShmemHugePages: 0 kB -ShmemPmdMapped: 0 kB -FileHugePages: 0 kB -FilePmdMapped: 0 kB -HugePages_Total: 0 -HugePages_Free: 0 -HugePages_Rsvd: 0 -HugePages_Surp: 0 -Hugepagesize: 2048 kB -Hugetlb: 0 kB -DirectMap4k: 404480 kB -DirectMap2M: 13023232 kB -DirectMap1G: 11534336 kB - -/sys/kernel/mm/transparent_hugepage/enabled: -[always] madvise never -/sys/kernel/mm/transparent_hugepage/defrag (defrag/compaction efforts parameter): -always defer defer+madvise [madvise] never - -Process Memory: -Virtual Size: 8357336K (peak: 15570012K) -Resident Set Size: 303592K (peak: 303592K) (anon: 195140K, file: 108452K, shmem: 0K) -Swapped out: 0K -C-Heap outstanding allocations: 67310K, retained: 3357K -glibc malloc tunables: (default) - -/proc/sys/kernel/threads-max (system-wide limit on the number of threads): -126333 -/proc/sys/vm/max_map_count (maximum number of memory map areas a process may have): -65530 -/proc/sys/kernel/pid_max (system-wide limit on number of process identifiers): -4194304 - -container (cgroup) information: -container_type: cgroupv1 -cpu_cpuset_cpus: 0-19 -cpu_memory_nodes: 0 -active_processor_count: 20 -cpu_quota: no quota -cpu_period: 100000 -cpu_shares: no shares -memory_limit_in_bytes: unlimited -memory_and_swap_limit_in_bytes: unlimited -memory_soft_limit_in_bytes: unlimited -memory_usage_in_bytes: 4899316 k -memory_max_usage_in_bytes: 2211664 k -kernel_memory_usage_in_bytes: 38380 k -kernel_memory_max_usage_in_bytes: unlimited -kernel_memory_limit_in_bytes: 70264 k -maximum number of tasks: not supported -current number of tasks: not supported - -Hyper-V virtualization detected -Steal ticks since vm start: 0 -Steal ticks percentage since vm start: 0.000 - -CPU:total 20 (initial active 20) (16 cores per cpu, 2 threads per core) family 6 model 186 stepping 2 microcode 0xffffffff, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, clmul, erms, 3dnowpref, lzcnt, ht, tsc, tscinvbit, bmi1, bmi2, adx, sha, fma -CPU Model and flags from /proc/cpuinfo: -model name : 13th Gen Intel(R) Core(TM) i7-13800H -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq vmx ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves avx_vnni umip waitpkg gfni vaes vpclmulqdq rdpid movdiri movdir64b fsrm md_clear serialize flush_l1d arch_capabilities -Online cpus: -0-19 -Offline cpus: - -BIOS frequency limitation: - -Frequency switch latency (ns): - -Available cpu frequencies: - -Current governor: - -Core performance/turbo boost: - - -Memory: 4k page, physical 16177528k(10277360k free), swap 4194304k(3716576k free) - -vm_info: OpenJDK 64-Bit Server VM (11.0.24+8-post-Ubuntu-1ubuntu322.04) for linux-amd64 JRE (11.0.24+8-post-Ubuntu-1ubuntu322.04), built on Jul 21 2024 21:19:53 by "unknown" with gcc 11.4.0 - -END. diff --git a/java/cuopt/hs_err_pid1440122.log b/java/cuopt/hs_err_pid1440122.log deleted file mode 100644 index 4887a1081c..0000000000 --- a/java/cuopt/hs_err_pid1440122.log +++ /dev/null @@ -1,1711 +0,0 @@ -# -# A fatal error has been detected by the Java Runtime Environment: -# -# SIGSEGV (0xb) at pc=0x00007f0ec4b533fe, pid=1440122, tid=1440123 -# -# JRE version: OpenJDK Runtime Environment (11.0.24+8) (build 11.0.24+8-post-Ubuntu-1ubuntu322.04) -# Java VM: OpenJDK 64-Bit Server VM (11.0.24+8-post-Ubuntu-1ubuntu322.04, mixed mode, sharing, tiered, compressed oops, g1 gc, linux-amd64) -# Problematic frame: -# C [libc.so.6+0xa53fe] free+0x1e -# -# Core dump will be written. Default location: Core dumps may be processed with "/wsl-capture-crash %t %E %p %s" (or dumping to /home/cbrissette/cuopt/java/cuopt/core.1440122) -# -# If you would like to submit a bug report, please visit: -# https://bugs.launchpad.net/ubuntu/+source/openjdk-lts -# The crash happened outside the Java Virtual Machine in native code. -# See problematic frame for where to report the bug. -# - ---------------- S U M M A R Y ------------ - -Command Line: /home/cbrissette/cuopt/java/cuopt/target/surefire/surefirebooter-20260707090259251_3.jar /home/cbrissette/cuopt/java/cuopt/target/surefire 2026-07-07T09-02-59_150-jvmRun1 surefire-20260707090259251_1tmp surefire_0-20260707090259251_2tmp - -Host: 13th Gen Intel(R) Core(TM) i7-13800H, 20 cores, 15G, Ubuntu 22.04.5 LTS -Time: Tue Jul 7 09:03:03 2026 EDT elapsed time: 3.753493 seconds (0d 0h 0m 3s) - ---------------- T H R E A D --------------- - -Current thread (0x00007f0ebc016000): JavaThread "main" [_thread_in_native, id=1440123, stack(0x00007f0ec3341000,0x00007f0ec3441000)] - -Stack: [0x00007f0ec3341000,0x00007f0ec3441000], sp=0x00007f0ec343c8e0, free space=1006k -Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code) -C [libc.so.6+0xa53fe] free+0x1e - -Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) -j com.nvidia.cuopt.linearprogramming.NativeCuOpt.destroyProblem(J)V+0 -j com.nvidia.cuopt.linearprogramming.DataModel$NativeHandle.run()V+13 -J 716 c1 jdk.internal.ref.CleanerImpl$PhantomCleanableRef.performCleanup()V java.base@11.0.24 (10 bytes) @ 0x00007f0ea5062e74 [0x00007f0ea5062d40+0x0000000000000134] -J 715 c1 jdk.internal.ref.PhantomCleanable.clean()V java.base@11.0.24 (16 bytes) @ 0x00007f0ea50633bc [0x00007f0ea50631e0+0x00000000000001dc] -j com.nvidia.cuopt.linearprogramming.DataModel.close()V+4 -j com.nvidia.cuopt.linearprogramming.NativeIntegrationTest.mutableDataModelExposesPythonMetadataAndQuadraticFields()V+576 -v ~StubRoutines::call_stub -j jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+0 java.base@11.0.24 -j jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+100 java.base@11.0.24 -j jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+6 java.base@11.0.24 -j java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+59 java.base@11.0.24 -j org.junit.platform.commons.util.ReflectionUtils.invokeMethod(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+42 -j org.junit.jupiter.engine.execution.MethodInvocation.proceed()Ljava/lang/Object;+16 -j org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed()Ljava/lang/Object;+8 -j org.junit.jupiter.engine.extension.TimeoutExtension.intercept(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/TimeoutDuration;Lorg/junit/jupiter/engine/extension/TimeoutExtension$TimeoutProvider;)Ljava/lang/Object;+28 -j org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/TimeoutExtension$TimeoutProvider;)Ljava/lang/Object;+31 -j org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)V+9 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda$189.apply(Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)V+5 -j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(Lorg/junit/jupiter/engine/execution/InterceptingExecutableInvoker$ReflectiveInterceptorCall$VoidMethodInterceptorCall;Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)Ljava/lang/Void;+6 -j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall$$Lambda$190.apply(Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)Ljava/lang/Object;+9 -j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(Lorg/junit/jupiter/engine/execution/InterceptingExecutableInvoker$ReflectiveInterceptorCall;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;)Ljava/lang/Object;+6 -j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$$Lambda$378.apply(Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;)Ljava/lang/Object;+14 -j org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed()Ljava/lang/Object;+12 -j org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;)Ljava/lang/Object;+1 -j org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/engine/execution/InvocationInterceptorChain$InterceptorCall;Ljava/util/List;)Ljava/lang/Object;+24 -j org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/engine/execution/InvocationInterceptorChain$InterceptorCall;)Ljava/lang/Object;+31 -j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/engine/execution/InterceptingExecutableInvoker$ReflectiveInterceptorCall;)Ljava/lang/Object;+15 -j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(Ljava/lang/reflect/Method;Ljava/lang/Object;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/engine/execution/InterceptingExecutableInvoker$ReflectiveInterceptorCall;)Ljava/lang/Object;+55 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$8(Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)V+28 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda$399.execute()V+12 -j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)V+21 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;+44 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;+6 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6()V+79 -j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$297.execute()V+4 -j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+15 -j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$296.invoke(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+5 -j org.junit.platform.engine.support.hierarchical.Node.around(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$Invocation;)V+2 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9()V+14 -j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$295.execute()V+4 -j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively()V+31 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.execute()V+55 -j org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService$$Lambda$301.accept(Ljava/lang/Object;)V+4 -j java.util.ArrayList.forEach(Ljava/util/function/Consumer;)V+46 java.base@11.0.24 -j org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(Ljava/util/List;)V+6 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6()V+116 -j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$297.execute()V+4 -j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+15 -j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$296.invoke(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+5 -j org.junit.platform.engine.support.hierarchical.Node.around(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$Invocation;)V+2 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9()V+14 -j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$295.execute()V+4 -j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively()V+31 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.execute()V+55 -j org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService$$Lambda$301.accept(Ljava/lang/Object;)V+4 -j java.util.ArrayList.forEach(Ljava/util/function/Consumer;)V+46 java.base@11.0.24 -j org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(Ljava/util/List;)V+6 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6()V+116 -j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$297.execute()V+4 -j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+15 -j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$296.invoke(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+5 -j org.junit.platform.engine.support.hierarchical.Node.around(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$Invocation;)V+2 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9()V+14 -j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$295.execute()V+4 -j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively()V+31 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.execute()V+55 -j org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(Lorg/junit/platform/engine/support/hierarchical/HierarchicalTestExecutorService$TestTask;)Ljava/util/concurrent/Future;+1 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute()Ljava/util/concurrent/Future;+74 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(Lorg/junit/platform/engine/ExecutionRequest;)V+31 -j org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(Lorg/junit/platform/engine/TestDescriptor;Lorg/junit/platform/engine/EngineExecutionListener;Lorg/junit/platform/engine/ConfigurationParameters;Lorg/junit/platform/engine/TestEngine;)V+24 -j org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(Lorg/junit/platform/launcher/core/LauncherDiscoveryResult;Lorg/junit/platform/engine/EngineExecutionListener;)V+115 -j org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(Lorg/junit/platform/launcher/core/InternalTestPlan;Lorg/junit/platform/engine/EngineExecutionListener;Lorg/junit/platform/launcher/TestExecutionListener;)V+55 -j org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(Lorg/junit/platform/launcher/core/InternalTestPlan;Lorg/junit/platform/launcher/TestExecutionListener;)V+6 -j org.junit.platform.launcher.core.EngineExecutionOrchestrator$$Lambda$243.accept(Ljava/lang/Object;)V+12 -j org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(Lorg/junit/platform/engine/ConfigurationParameters;Lorg/junit/platform/launcher/core/ListenerRegistry;Ljava/util/function/Consumer;)V+51 -j org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(Lorg/junit/platform/launcher/core/InternalTestPlan;[Lorg/junit/platform/launcher/TestExecutionListener;)V+23 -j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/launcher/core/InternalTestPlan;[Lorg/junit/platform/launcher/TestExecutionListener;)V+6 -j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;[Lorg/junit/platform/launcher/TestExecutionListener;)V+34 -j org.junit.platform.launcher.core.DelegatingLauncher.execute(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;[Lorg/junit/platform/launcher/TestExecutionListener;)V+6 -j org.apache.maven.surefire.junitplatform.LazyLauncher.execute(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;[Lorg/junit/platform/launcher/TestExecutionListener;)V+6 -j org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.execute(Lorg/apache/maven/surefire/api/util/TestsToRun;Lorg/apache/maven/surefire/junitplatform/RunListenerAdapter;)V+70 -j org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(Lorg/apache/maven/surefire/api/util/TestsToRun;Lorg/apache/maven/surefire/junitplatform/RunListenerAdapter;)V+3 -j org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(Ljava/lang/Object;)Lorg/apache/maven/surefire/api/suite/RunResult;+95 -j org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess()V+8 -j org.apache.maven.surefire.booter.ForkedBooter.execute()V+1 -j org.apache.maven.surefire.booter.ForkedBooter.run(Lorg/apache/maven/surefire/booter/ForkedBooter;[Ljava/lang/String;)V+27 -j org.apache.maven.surefire.booter.ForkedBooter.main([Ljava/lang/String;)V+10 -v ~StubRoutines::call_stub - -siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr: 0x0000000068005621 - -Register to memory mapping: - -RAX=0x0 is NULL -RBX=0xffffffffffffff80 is an unknown value -RCX=0x0000000000000060 is an unknown value -RDX=0x00007f0ebc000090 points into unknown readable memory: 0x00007f0ebfcca2a0 | a0 a2 cc bf 0e 7f 00 00 -RSP=0x00007f0ec343c8e0 is pointing into the stack for thread: 0x00007f0ebc016000 -RBP=0x0 is NULL -RSI=0x0000000068005619 is an unknown value -RDI=0x0000000068005629 is an unknown value -R8 =0x00007f0ebd02a890 points into unknown readable memory: 0x0000000000000001 | 01 00 00 00 00 00 00 00 -R9 =0x0 is NULL -R10=0x00007f0ebd0599b8 points into unknown readable memory: 0x00007f0e0940bd70 | 70 bd 40 09 0e 7f 00 00 -R11=0x1479aa9a5a30859c is an unknown value -R12=0x00007f0ec4b446d0: __pthread_key_create+0x0000000000000000 in /lib/x86_64-linux-gnu/libc.so.6 at 0x00007f0ec4aae000 -R13=0x0000000000000003 is an unknown value -R14=0x00007f0ec343ca18 is pointing into the stack for thread: 0x00007f0ebc016000 -R15=0x00007f0ebc016000 is a thread - - -Registers: -RAX=0x0000000000000000, RBX=0xffffffffffffff80, RCX=0x0000000000000060, RDX=0x00007f0ebc000090 -RSP=0x00007f0ec343c8e0, RBP=0x0000000000000000, RSI=0x0000000068005619, RDI=0x0000000068005629 -R8 =0x00007f0ebd02a890, R9 =0x0000000000000000, R10=0x00007f0ebd0599b8, R11=0x1479aa9a5a30859c -R12=0x00007f0ec4b446d0, R13=0x0000000000000003, R14=0x00007f0ec343ca18, R15=0x00007f0ebc016000 -RIP=0x00007f0ec4b533fe, EFLAGS=0x0000000000010202, CSGSFS=0x002b000000000033, ERR=0x0000000000000004 - TRAPNO=0x000000000000000e - -Top of Stack: (sp=0x00007f0ec343c8e0) -0x00007f0ec343c8e0: 00007f0ebc016000 00007f0e42e140b2 -0x00007f0ec343c8f0: 00007f0ebdfd3cc0 00007f0ebdfd3cc0 -0x00007f0ec343c900: 0000000000000000 00007f0e43060c5b -0x00007f0ec343c910: 00007f0ebc016000 00007f0ec343c958 - -Instructions: (pc=0x00007f0ec4b533fe) -0x00007f0ec4b532fe: 00 00 48 83 c4 10 31 c0 5b 5d 41 5c c3 0f 1f 44 -0x00007f0ec4b5330e: 00 00 e8 7b bd ff ff 49 89 c4 48 85 c0 0f 85 0d -0x00007f0ec4b5331e: fe ff ff 31 f6 48 89 ef e8 b5 cb ff ff 48 89 ee -0x00007f0ec4b5332e: 48 89 c7 49 89 c4 e8 77 e6 ff ff 48 85 c0 75 2c -0x00007f0ec4b5333e: 4d 85 e4 0f 84 0a fe ff ff 66 0f 1f 84 00 00 00 -0x00007f0ec4b5334e: 00 00 90 4c 89 e7 48 89 ee e8 64 d0 ff ff 48 89 -0x00007f0ec4b5335e: ee 48 89 c7 49 89 c4 e8 46 e6 ff ff 4d 85 e4 0f -0x00007f0ec4b5336e: 84 de fd ff ff e9 ca fd ff ff 48 8d 0d b9 9e 13 -0x00007f0ec4b5337e: 00 ba 10 0d 00 00 48 8d 35 01 43 13 00 48 8d 3d -0x00007f0ec4b5338e: 26 9b 13 00 e8 d9 ba ff ff 66 0f 1f 84 00 00 00 -0x00007f0ec4b5339e: 00 00 4c 89 e7 48 89 44 24 08 e8 53 bf fe ff 48 -0x00007f0ec4b533ae: 8b 44 24 08 e9 9a fd ff ff 66 0f 1f 84 00 00 00 -0x00007f0ec4b533be: 00 00 4c 89 e7 e8 68 be fe ff e9 61 fd ff ff 0f -0x00007f0ec4b533ce: 1f 00 48 8d 3d 49 99 13 00 e8 04 b9 ff ff 0f 1f -0x00007f0ec4b533de: 40 00 f3 0f 1e fa 48 85 ff 0f 84 bb 00 00 00 55 -0x00007f0ec4b533ee: 48 8d 77 f0 53 48 83 ec 18 48 8b 1d 12 4a 17 00 -0x00007f0ec4b533fe: 48 8b 47 f8 64 8b 2b a8 02 75 57 48 8b 15 98 49 -0x00007f0ec4b5340e: 17 00 64 48 83 3a 00 0f 84 95 00 00 00 48 8d 3d -0x00007f0ec4b5341e: 5e 58 17 00 a8 04 74 26 48 8b 15 63 4f 17 00 48 -0x00007f0ec4b5342e: 8d 04 95 00 00 00 00 48 f7 d8 48 85 d2 48 c7 c2 -0x00007f0ec4b5343e: 00 00 00 fc 48 0f 44 c2 48 21 f0 48 8b 38 31 d2 -0x00007f0ec4b5344e: e8 4d d2 ff ff 64 89 2b 48 83 c4 18 5b 5d c3 0f -0x00007f0ec4b5345e: 1f 00 8b 15 42 4f 17 00 85 d2 75 28 48 3b 05 ff -0x00007f0ec4b5346e: 4e 17 00 76 1f 48 3d 00 00 00 02 77 17 48 83 e0 -0x00007f0ec4b5347e: f8 48 8d 14 00 48 89 05 e6 4e 17 00 48 89 15 cf -0x00007f0ec4b5348e: 4e 17 00 90 48 89 f7 e8 c6 ba ff ff 64 89 2b 48 -0x00007f0ec4b5349e: 83 c4 18 5b 5d c3 0f 1f 40 00 c3 0f 1f 80 00 00 -0x00007f0ec4b534ae: 00 00 48 8b 15 f9 48 17 00 48 89 3c 24 64 80 3a -0x00007f0ec4b534be: 00 0f 85 56 ff ff ff 48 89 74 24 08 e8 c1 f4 ff -0x00007f0ec4b534ce: ff 48 8b 3c 24 48 8b 74 24 08 48 8b 47 f8 e9 3a -0x00007f0ec4b534de: ff ff ff 66 66 2e 0f 1f 84 00 00 00 00 00 0f 1f -0x00007f0ec4b534ee: 40 00 f3 0f 1e fa 41 57 41 56 41 55 41 54 55 53 - - -Stack slot to memory mapping: -stack at sp + 0 slots: 0x00007f0ebc016000 is a thread -stack at sp + 1 slots: 0x00007f0e42e140b2: in /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so at 0x00007f0e42ac1000 -stack at sp + 2 slots: 0x00007f0ebdfd3cc0 points into unknown readable memory: 0x00007f0900000000 | 00 00 00 00 09 7f 00 00 -stack at sp + 3 slots: 0x00007f0ebdfd3cc0 points into unknown readable memory: 0x00007f0900000000 | 00 00 00 00 09 7f 00 00 -stack at sp + 4 slots: 0x0 is NULL -stack at sp + 5 slots: 0x00007f0e43060c5b: in /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so at 0x00007f0e42ac1000 -stack at sp + 6 slots: 0x00007f0ebc016000 is a thread -stack at sp + 7 slots: 0x00007f0ec343c958 is pointing into the stack for thread: 0x00007f0ebc016000 - - ---------------- P R O C E S S --------------- - -Threads class SMR info: -_java_thread_list=0x00007f0ebf67c2f0, length=15, elements={ -0x00007f0ebc016000, 0x00007f0ebc253800, 0x00007f0ebc255800, 0x00007f0ebc25d800, -0x00007f0ebc25f800, 0x00007f0ebc262000, 0x00007f0ebc264000, 0x00007f0ebc266000, -0x00007f0ebc299000, 0x00007f0ebc3ed000, 0x00007f0ebc402000, 0x00007f0ebc694800, -0x00007f0ebd095800, 0x00007f0ebdfd1800, 0x00007f0ebe1f1800 -} - -Java Threads: ( => current thread ) -=>0x00007f0ebc016000 JavaThread "main" [_thread_in_native, id=1440123, stack(0x00007f0ec3341000,0x00007f0ec3441000)] - 0x00007f0ebc253800 JavaThread "Reference Handler" daemon [_thread_blocked, id=1440133, stack(0x00007f0e914fe000,0x00007f0e915fe000)] - 0x00007f0ebc255800 JavaThread "Finalizer" daemon [_thread_blocked, id=1440134, stack(0x00007f0e913fe000,0x00007f0e914fe000)] - 0x00007f0ebc25d800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=1440135, stack(0x00007f0e912fe000,0x00007f0e913fe000)] - 0x00007f0ebc25f800 JavaThread "Service Thread" daemon [_thread_blocked, id=1440136, stack(0x00007f0e911fe000,0x00007f0e912fe000)] - 0x00007f0ebc262000 JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=1440137, stack(0x00007f0e910fe000,0x00007f0e911fe000)] - 0x00007f0ebc264000 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=1440138, stack(0x00007f0e90ffe000,0x00007f0e910fe000)] - 0x00007f0ebc266000 JavaThread "Sweeper thread" daemon [_thread_blocked, id=1440139, stack(0x00007f0e90efe000,0x00007f0e90ffe000)] - 0x00007f0ebc299000 JavaThread "Common-Cleaner" daemon [_thread_blocked, id=1440142, stack(0x00007f0e90bfd000,0x00007f0e90cfd000)] - 0x00007f0ebc3ed000 JavaThread "surefire-forkedjvm-stream-flusher" daemon [_thread_blocked, id=1440143, stack(0x00007f0e90afd000,0x00007f0e90bfd000)] - 0x00007f0ebc402000 JavaThread "surefire-forkedjvm-command-thread" daemon [_thread_in_native, id=1440144, stack(0x00007f0e909fd000,0x00007f0e90afd000)] - 0x00007f0ebc694800 JavaThread "Cleaner-0" daemon [_thread_blocked, id=1440146, stack(0x00007f0e907fd000,0x00007f0e908fd000)] - 0x00007f0ebd095800 JavaThread "process reaper" daemon [_thread_blocked, id=1440185, stack(0x00007f0e3509b000,0x00007f0e350bd000)] - 0x00007f0ebdfd1800 JavaThread "Cleaner-1" daemon [_thread_blocked, id=1440195, stack(0x00007f0e908fd000,0x00007f0e909fd000)] - 0x00007f0ebe1f1800 JavaThread "Cleaner-2" daemon [_thread_blocked, id=1440207, stack(0x00007f0e90dfe000,0x00007f0e90efe000)] - -Other Threads: - 0x00007f0ebc250800 VMThread "VM Thread" [stack: 0x00007f0e915ff000,0x00007f0e916ff000] [id=1440131] - 0x00007f0ebc296800 WatcherThread [stack: 0x00007f0e90cfe000,0x00007f0e90dfe000] [id=1440141] - 0x00007f0ebc030000 GCTaskThread "GC Thread#0" [stack: 0x00007f0ec3007000,0x00007f0ec3107000] [id=1440124] - 0x00007f0e84009000 GCTaskThread "GC Thread#1" [stack: 0x00007f0e08063000,0x00007f0e08163000] [id=1440196] - 0x00007f0e8400a800 GCTaskThread "GC Thread#2" [stack: 0x00007f0df5500000,0x00007f0df5600000] [id=1440197] - 0x00007f0e8400c000 GCTaskThread "GC Thread#3" [stack: 0x00007f0df53ff000,0x00007f0df54ff000] [id=1440198] - 0x00007f0e8400d800 GCTaskThread "GC Thread#4" [stack: 0x00007f0df52fe000,0x00007f0df53fe000] [id=1440199] - 0x00007f0e8400f000 GCTaskThread "GC Thread#5" [stack: 0x00007f0df51fd000,0x00007f0df52fd000] [id=1440200] - 0x00007f0ebc08e000 ConcurrentGCThread "G1 Main Marker" [stack: 0x00007f0ec06dc000,0x00007f0ec07dc000] [id=1440125] - 0x00007f0ebc08f800 ConcurrentGCThread "G1 Conc#0" [stack: 0x00007f0ec05db000,0x00007f0ec06db000] [id=1440126] - 0x00007f0ebc1ab000 ConcurrentGCThread "G1 Refine#0" [stack: 0x00007f0e9808d000,0x00007f0e9818d000] [id=1440129] - 0x00007f0ebc1ac800 ConcurrentGCThread "G1 Young RemSet Sampling" [stack: 0x00007f0e91f00000,0x00007f0e92000000] [id=1440130] - -Threads with active compile tasks: -C2 CompilerThread0 3756 1441 ! 4 jdk.internal.loader.URLClassPath$JarLoader::getResource (65 bytes) - -VM state:not at safepoint (normal execution) - -VM Mutex/Monitor currently owned by a thread: None - -Heap address: 0x0000000709200000, size: 3950 MB, Compressed Oops mode: Zero based, Oop shift amount: 3 -Narrow klass base: 0x0000000800000000, Narrow klass shift: 3 -Compressed class space size: 1073741824 Address: 0x0000000840000000 - -Heap: - garbage-first heap total 256000K, used 4347K [0x0000000709200000, 0x0000000800000000) - region size 1024K, 5 young (5120K), 3 survivors (3072K) - Metaspace used 7509K, capacity 9131K, committed 9472K, reserved 1056768K - class space used 905K, capacity 1238K, committed 1280K, reserved 1048576K -Heap Regions: E=young(eden), S=young(survivor), O=old, HS=humongous(starts), HC=humongous(continues), CS=collection set, F=free, A=archive, TAMS=top-at-mark-start (previous, next) -| 0|0x0000000709200000, 0x0000000709200000, 0x0000000709300000| 0%| F| |TAMS 0x0000000709200000, 0x0000000709200000| Untracked -| 1|0x0000000709300000, 0x0000000709300000, 0x0000000709400000| 0%| F| |TAMS 0x0000000709300000, 0x0000000709300000| Untracked -| 2|0x0000000709400000, 0x0000000709400000, 0x0000000709500000| 0%| F| |TAMS 0x0000000709400000, 0x0000000709400000| Untracked -| 3|0x0000000709500000, 0x0000000709500000, 0x0000000709600000| 0%| F| |TAMS 0x0000000709500000, 0x0000000709500000| Untracked -| 4|0x0000000709600000, 0x0000000709600000, 0x0000000709700000| 0%| F| |TAMS 0x0000000709600000, 0x0000000709600000| Untracked -| 5|0x0000000709700000, 0x0000000709700000, 0x0000000709800000| 0%| F| |TAMS 0x0000000709700000, 0x0000000709700000| Untracked -| 6|0x0000000709800000, 0x0000000709800000, 0x0000000709900000| 0%| F| |TAMS 0x0000000709800000, 0x0000000709800000| Untracked -| 7|0x0000000709900000, 0x0000000709900000, 0x0000000709a00000| 0%| F| |TAMS 0x0000000709900000, 0x0000000709900000| Untracked -| 8|0x0000000709a00000, 0x0000000709a00000, 0x0000000709b00000| 0%| F| |TAMS 0x0000000709a00000, 0x0000000709a00000| Untracked -| 9|0x0000000709b00000, 0x0000000709b00000, 0x0000000709c00000| 0%| F| |TAMS 0x0000000709b00000, 0x0000000709b00000| Untracked -| 10|0x0000000709c00000, 0x0000000709c00000, 0x0000000709d00000| 0%| F| |TAMS 0x0000000709c00000, 0x0000000709c00000| Untracked -| 11|0x0000000709d00000, 0x0000000709d00000, 0x0000000709e00000| 0%| F| |TAMS 0x0000000709d00000, 0x0000000709d00000| Untracked -| 12|0x0000000709e00000, 0x0000000709e00000, 0x0000000709f00000| 0%| F| |TAMS 0x0000000709e00000, 0x0000000709e00000| Untracked -| 13|0x0000000709f00000, 0x0000000709f00000, 0x000000070a000000| 0%| F| |TAMS 0x0000000709f00000, 0x0000000709f00000| Untracked -| 14|0x000000070a000000, 0x000000070a000000, 0x000000070a100000| 0%| F| |TAMS 0x000000070a000000, 0x000000070a000000| Untracked -| 15|0x000000070a100000, 0x000000070a100000, 0x000000070a200000| 0%| F| |TAMS 0x000000070a100000, 0x000000070a100000| Untracked -| 16|0x000000070a200000, 0x000000070a200000, 0x000000070a300000| 0%| F| |TAMS 0x000000070a200000, 0x000000070a200000| Untracked -| 17|0x000000070a300000, 0x000000070a300000, 0x000000070a400000| 0%| F| |TAMS 0x000000070a300000, 0x000000070a300000| Untracked -| 18|0x000000070a400000, 0x000000070a400000, 0x000000070a500000| 0%| F| |TAMS 0x000000070a400000, 0x000000070a400000| Untracked -| 19|0x000000070a500000, 0x000000070a500000, 0x000000070a600000| 0%| F| |TAMS 0x000000070a500000, 0x000000070a500000| Untracked -| 20|0x000000070a600000, 0x000000070a600000, 0x000000070a700000| 0%| F| |TAMS 0x000000070a600000, 0x000000070a600000| Untracked -| 21|0x000000070a700000, 0x000000070a700000, 0x000000070a800000| 0%| F| |TAMS 0x000000070a700000, 0x000000070a700000| Untracked -| 22|0x000000070a800000, 0x000000070a800000, 0x000000070a900000| 0%| F| |TAMS 0x000000070a800000, 0x000000070a800000| Untracked -| 23|0x000000070a900000, 0x000000070a900000, 0x000000070aa00000| 0%| F| |TAMS 0x000000070a900000, 0x000000070a900000| Untracked -| 24|0x000000070aa00000, 0x000000070aa00000, 0x000000070ab00000| 0%| F| |TAMS 0x000000070aa00000, 0x000000070aa00000| Untracked -| 25|0x000000070ab00000, 0x000000070ab00000, 0x000000070ac00000| 0%| F| |TAMS 0x000000070ab00000, 0x000000070ab00000| Untracked -| 26|0x000000070ac00000, 0x000000070ac00000, 0x000000070ad00000| 0%| F| |TAMS 0x000000070ac00000, 0x000000070ac00000| Untracked -| 27|0x000000070ad00000, 0x000000070ad00000, 0x000000070ae00000| 0%| F| |TAMS 0x000000070ad00000, 0x000000070ad00000| Untracked -| 28|0x000000070ae00000, 0x000000070ae00000, 0x000000070af00000| 0%| F| |TAMS 0x000000070ae00000, 0x000000070ae00000| Untracked -| 29|0x000000070af00000, 0x000000070af00000, 0x000000070b000000| 0%| F| |TAMS 0x000000070af00000, 0x000000070af00000| Untracked -| 30|0x000000070b000000, 0x000000070b000000, 0x000000070b100000| 0%| F| |TAMS 0x000000070b000000, 0x000000070b000000| Untracked -| 31|0x000000070b100000, 0x000000070b100000, 0x000000070b200000| 0%| F| |TAMS 0x000000070b100000, 0x000000070b100000| Untracked -| 32|0x000000070b200000, 0x000000070b200000, 0x000000070b300000| 0%| F| |TAMS 0x000000070b200000, 0x000000070b200000| Untracked -| 33|0x000000070b300000, 0x000000070b300000, 0x000000070b400000| 0%| F| |TAMS 0x000000070b300000, 0x000000070b300000| Untracked -| 34|0x000000070b400000, 0x000000070b400000, 0x000000070b500000| 0%| F| |TAMS 0x000000070b400000, 0x000000070b400000| Untracked -| 35|0x000000070b500000, 0x000000070b500000, 0x000000070b600000| 0%| F| |TAMS 0x000000070b500000, 0x000000070b500000| Untracked -| 36|0x000000070b600000, 0x000000070b600000, 0x000000070b700000| 0%| F| |TAMS 0x000000070b600000, 0x000000070b600000| Untracked -| 37|0x000000070b700000, 0x000000070b700000, 0x000000070b800000| 0%| F| |TAMS 0x000000070b700000, 0x000000070b700000| Untracked -| 38|0x000000070b800000, 0x000000070b800000, 0x000000070b900000| 0%| F| |TAMS 0x000000070b800000, 0x000000070b800000| Untracked -| 39|0x000000070b900000, 0x000000070b900000, 0x000000070ba00000| 0%| F| |TAMS 0x000000070b900000, 0x000000070b900000| Untracked -| 40|0x000000070ba00000, 0x000000070ba00000, 0x000000070bb00000| 0%| F| |TAMS 0x000000070ba00000, 0x000000070ba00000| Untracked -| 41|0x000000070bb00000, 0x000000070bb00000, 0x000000070bc00000| 0%| F| |TAMS 0x000000070bb00000, 0x000000070bb00000| Untracked -| 42|0x000000070bc00000, 0x000000070bc00000, 0x000000070bd00000| 0%| F| |TAMS 0x000000070bc00000, 0x000000070bc00000| Untracked -| 43|0x000000070bd00000, 0x000000070bd00000, 0x000000070be00000| 0%| F| |TAMS 0x000000070bd00000, 0x000000070bd00000| Untracked -| 44|0x000000070be00000, 0x000000070be00000, 0x000000070bf00000| 0%| F| |TAMS 0x000000070be00000, 0x000000070be00000| Untracked -| 45|0x000000070bf00000, 0x000000070bf00000, 0x000000070c000000| 0%| F| |TAMS 0x000000070bf00000, 0x000000070bf00000| Untracked -| 46|0x000000070c000000, 0x000000070c000000, 0x000000070c100000| 0%| F| |TAMS 0x000000070c000000, 0x000000070c000000| Untracked -| 47|0x000000070c100000, 0x000000070c100000, 0x000000070c200000| 0%| F| |TAMS 0x000000070c100000, 0x000000070c100000| Untracked -| 48|0x000000070c200000, 0x000000070c200000, 0x000000070c300000| 0%| F| |TAMS 0x000000070c200000, 0x000000070c200000| Untracked -| 49|0x000000070c300000, 0x000000070c300000, 0x000000070c400000| 0%| F| |TAMS 0x000000070c300000, 0x000000070c300000| Untracked -| 50|0x000000070c400000, 0x000000070c400000, 0x000000070c500000| 0%| F| |TAMS 0x000000070c400000, 0x000000070c400000| Untracked -| 51|0x000000070c500000, 0x000000070c500000, 0x000000070c600000| 0%| F| |TAMS 0x000000070c500000, 0x000000070c500000| Untracked -| 52|0x000000070c600000, 0x000000070c600000, 0x000000070c700000| 0%| F| |TAMS 0x000000070c600000, 0x000000070c600000| Untracked -| 53|0x000000070c700000, 0x000000070c700000, 0x000000070c800000| 0%| F| |TAMS 0x000000070c700000, 0x000000070c700000| Untracked -| 54|0x000000070c800000, 0x000000070c800000, 0x000000070c900000| 0%| F| |TAMS 0x000000070c800000, 0x000000070c800000| Untracked -| 55|0x000000070c900000, 0x000000070c900000, 0x000000070ca00000| 0%| F| |TAMS 0x000000070c900000, 0x000000070c900000| Untracked -| 56|0x000000070ca00000, 0x000000070ca00000, 0x000000070cb00000| 0%| F| |TAMS 0x000000070ca00000, 0x000000070ca00000| Untracked -| 57|0x000000070cb00000, 0x000000070cb00000, 0x000000070cc00000| 0%| F| |TAMS 0x000000070cb00000, 0x000000070cb00000| Untracked -| 58|0x000000070cc00000, 0x000000070cc00000, 0x000000070cd00000| 0%| F| |TAMS 0x000000070cc00000, 0x000000070cc00000| Untracked -| 59|0x000000070cd00000, 0x000000070cd00000, 0x000000070ce00000| 0%| F| |TAMS 0x000000070cd00000, 0x000000070cd00000| Untracked -| 60|0x000000070ce00000, 0x000000070ce00000, 0x000000070cf00000| 0%| F| |TAMS 0x000000070ce00000, 0x000000070ce00000| Untracked -| 61|0x000000070cf00000, 0x000000070cf00000, 0x000000070d000000| 0%| F| |TAMS 0x000000070cf00000, 0x000000070cf00000| Untracked -| 62|0x000000070d000000, 0x000000070d000000, 0x000000070d100000| 0%| F| |TAMS 0x000000070d000000, 0x000000070d000000| Untracked -| 63|0x000000070d100000, 0x000000070d100000, 0x000000070d200000| 0%| F| |TAMS 0x000000070d100000, 0x000000070d100000| Untracked -| 64|0x000000070d200000, 0x000000070d200000, 0x000000070d300000| 0%| F| |TAMS 0x000000070d200000, 0x000000070d200000| Untracked -| 65|0x000000070d300000, 0x000000070d300000, 0x000000070d400000| 0%| F| |TAMS 0x000000070d300000, 0x000000070d300000| Untracked -| 66|0x000000070d400000, 0x000000070d400000, 0x000000070d500000| 0%| F| |TAMS 0x000000070d400000, 0x000000070d400000| Untracked -| 67|0x000000070d500000, 0x000000070d500000, 0x000000070d600000| 0%| F| |TAMS 0x000000070d500000, 0x000000070d500000| Untracked -| 68|0x000000070d600000, 0x000000070d600000, 0x000000070d700000| 0%| F| |TAMS 0x000000070d600000, 0x000000070d600000| Untracked -| 69|0x000000070d700000, 0x000000070d700000, 0x000000070d800000| 0%| F| |TAMS 0x000000070d700000, 0x000000070d700000| Untracked -| 70|0x000000070d800000, 0x000000070d800000, 0x000000070d900000| 0%| F| |TAMS 0x000000070d800000, 0x000000070d800000| Untracked -| 71|0x000000070d900000, 0x000000070d900000, 0x000000070da00000| 0%| F| |TAMS 0x000000070d900000, 0x000000070d900000| Untracked -| 72|0x000000070da00000, 0x000000070da00000, 0x000000070db00000| 0%| F| |TAMS 0x000000070da00000, 0x000000070da00000| Untracked -| 73|0x000000070db00000, 0x000000070db00000, 0x000000070dc00000| 0%| F| |TAMS 0x000000070db00000, 0x000000070db00000| Untracked -| 74|0x000000070dc00000, 0x000000070dc00000, 0x000000070dd00000| 0%| F| |TAMS 0x000000070dc00000, 0x000000070dc00000| Untracked -| 75|0x000000070dd00000, 0x000000070dd00000, 0x000000070de00000| 0%| F| |TAMS 0x000000070dd00000, 0x000000070dd00000| Untracked -| 76|0x000000070de00000, 0x000000070de00000, 0x000000070df00000| 0%| F| |TAMS 0x000000070de00000, 0x000000070de00000| Untracked -| 77|0x000000070df00000, 0x000000070df00000, 0x000000070e000000| 0%| F| |TAMS 0x000000070df00000, 0x000000070df00000| Untracked -| 78|0x000000070e000000, 0x000000070e000000, 0x000000070e100000| 0%| F| |TAMS 0x000000070e000000, 0x000000070e000000| Untracked -| 79|0x000000070e100000, 0x000000070e100000, 0x000000070e200000| 0%| F| |TAMS 0x000000070e100000, 0x000000070e100000| Untracked -| 80|0x000000070e200000, 0x000000070e200000, 0x000000070e300000| 0%| F| |TAMS 0x000000070e200000, 0x000000070e200000| Untracked -| 81|0x000000070e300000, 0x000000070e300000, 0x000000070e400000| 0%| F| |TAMS 0x000000070e300000, 0x000000070e300000| Untracked -| 82|0x000000070e400000, 0x000000070e400000, 0x000000070e500000| 0%| F| |TAMS 0x000000070e400000, 0x000000070e400000| Untracked -| 83|0x000000070e500000, 0x000000070e500000, 0x000000070e600000| 0%| F| |TAMS 0x000000070e500000, 0x000000070e500000| Untracked -| 84|0x000000070e600000, 0x000000070e600000, 0x000000070e700000| 0%| F| |TAMS 0x000000070e600000, 0x000000070e600000| Untracked -| 85|0x000000070e700000, 0x000000070e700000, 0x000000070e800000| 0%| F| |TAMS 0x000000070e700000, 0x000000070e700000| Untracked -| 86|0x000000070e800000, 0x000000070e800000, 0x000000070e900000| 0%| F| |TAMS 0x000000070e800000, 0x000000070e800000| Untracked -| 87|0x000000070e900000, 0x000000070e900000, 0x000000070ea00000| 0%| F| |TAMS 0x000000070e900000, 0x000000070e900000| Untracked -| 88|0x000000070ea00000, 0x000000070ea00000, 0x000000070eb00000| 0%| F| |TAMS 0x000000070ea00000, 0x000000070ea00000| Untracked -| 89|0x000000070eb00000, 0x000000070eb00000, 0x000000070ec00000| 0%| F| |TAMS 0x000000070eb00000, 0x000000070eb00000| Untracked -| 90|0x000000070ec00000, 0x000000070ec00000, 0x000000070ed00000| 0%| F| |TAMS 0x000000070ec00000, 0x000000070ec00000| Untracked -| 91|0x000000070ed00000, 0x000000070ed00000, 0x000000070ee00000| 0%| F| |TAMS 0x000000070ed00000, 0x000000070ed00000| Untracked -| 92|0x000000070ee00000, 0x000000070ee00000, 0x000000070ef00000| 0%| F| |TAMS 0x000000070ee00000, 0x000000070ee00000| Untracked -| 93|0x000000070ef00000, 0x000000070ef00000, 0x000000070f000000| 0%| F| |TAMS 0x000000070ef00000, 0x000000070ef00000| Untracked -| 94|0x000000070f000000, 0x000000070f000000, 0x000000070f100000| 0%| F| |TAMS 0x000000070f000000, 0x000000070f000000| Untracked -| 95|0x000000070f100000, 0x000000070f100000, 0x000000070f200000| 0%| F| |TAMS 0x000000070f100000, 0x000000070f100000| Untracked -| 96|0x000000070f200000, 0x000000070f200000, 0x000000070f300000| 0%| F| |TAMS 0x000000070f200000, 0x000000070f200000| Untracked -| 97|0x000000070f300000, 0x000000070f300000, 0x000000070f400000| 0%| F| |TAMS 0x000000070f300000, 0x000000070f300000| Untracked -| 98|0x000000070f400000, 0x000000070f400000, 0x000000070f500000| 0%| F| |TAMS 0x000000070f400000, 0x000000070f400000| Untracked -| 99|0x000000070f500000, 0x000000070f500000, 0x000000070f600000| 0%| F| |TAMS 0x000000070f500000, 0x000000070f500000| Untracked -| 100|0x000000070f600000, 0x000000070f600000, 0x000000070f700000| 0%| F| |TAMS 0x000000070f600000, 0x000000070f600000| Untracked -| 101|0x000000070f700000, 0x000000070f700000, 0x000000070f800000| 0%| F| |TAMS 0x000000070f700000, 0x000000070f700000| Untracked -| 102|0x000000070f800000, 0x000000070f800000, 0x000000070f900000| 0%| F| |TAMS 0x000000070f800000, 0x000000070f800000| Untracked -| 103|0x000000070f900000, 0x000000070f900000, 0x000000070fa00000| 0%| F| |TAMS 0x000000070f900000, 0x000000070f900000| Untracked -| 104|0x000000070fa00000, 0x000000070fa00000, 0x000000070fb00000| 0%| F| |TAMS 0x000000070fa00000, 0x000000070fa00000| Untracked -| 105|0x000000070fb00000, 0x000000070fb00000, 0x000000070fc00000| 0%| F| |TAMS 0x000000070fb00000, 0x000000070fb00000| Untracked -| 106|0x000000070fc00000, 0x000000070fc00000, 0x000000070fd00000| 0%| F| |TAMS 0x000000070fc00000, 0x000000070fc00000| Untracked -| 107|0x000000070fd00000, 0x000000070fd00000, 0x000000070fe00000| 0%| F| |TAMS 0x000000070fd00000, 0x000000070fd00000| Untracked -| 108|0x000000070fe00000, 0x000000070fe00000, 0x000000070ff00000| 0%| F| |TAMS 0x000000070fe00000, 0x000000070fe00000| Untracked -| 109|0x000000070ff00000, 0x000000070ff00000, 0x0000000710000000| 0%| F| |TAMS 0x000000070ff00000, 0x000000070ff00000| Untracked -| 110|0x0000000710000000, 0x0000000710000000, 0x0000000710100000| 0%| F| |TAMS 0x0000000710000000, 0x0000000710000000| Untracked -| 111|0x0000000710100000, 0x0000000710100000, 0x0000000710200000| 0%| F| |TAMS 0x0000000710100000, 0x0000000710100000| Untracked -| 112|0x0000000710200000, 0x0000000710200000, 0x0000000710300000| 0%| F| |TAMS 0x0000000710200000, 0x0000000710200000| Untracked -| 113|0x0000000710300000, 0x0000000710300000, 0x0000000710400000| 0%| F| |TAMS 0x0000000710300000, 0x0000000710300000| Untracked -| 114|0x0000000710400000, 0x0000000710400000, 0x0000000710500000| 0%| F| |TAMS 0x0000000710400000, 0x0000000710400000| Untracked -| 115|0x0000000710500000, 0x0000000710500000, 0x0000000710600000| 0%| F| |TAMS 0x0000000710500000, 0x0000000710500000| Untracked -| 116|0x0000000710600000, 0x0000000710600000, 0x0000000710700000| 0%| F| |TAMS 0x0000000710600000, 0x0000000710600000| Untracked -| 117|0x0000000710700000, 0x0000000710700000, 0x0000000710800000| 0%| F| |TAMS 0x0000000710700000, 0x0000000710700000| Untracked -| 118|0x0000000710800000, 0x0000000710800000, 0x0000000710900000| 0%| F| |TAMS 0x0000000710800000, 0x0000000710800000| Untracked -| 119|0x0000000710900000, 0x0000000710900000, 0x0000000710a00000| 0%| F| |TAMS 0x0000000710900000, 0x0000000710900000| Untracked -| 120|0x0000000710a00000, 0x0000000710a00000, 0x0000000710b00000| 0%| F| |TAMS 0x0000000710a00000, 0x0000000710a00000| Untracked -| 121|0x0000000710b00000, 0x0000000710b00000, 0x0000000710c00000| 0%| F| |TAMS 0x0000000710b00000, 0x0000000710b00000| Untracked -| 122|0x0000000710c00000, 0x0000000710c00000, 0x0000000710d00000| 0%| F| |TAMS 0x0000000710c00000, 0x0000000710c00000| Untracked -| 123|0x0000000710d00000, 0x0000000710d00000, 0x0000000710e00000| 0%| F| |TAMS 0x0000000710d00000, 0x0000000710d00000| Untracked -| 124|0x0000000710e00000, 0x0000000710e00000, 0x0000000710f00000| 0%| F| |TAMS 0x0000000710e00000, 0x0000000710e00000| Untracked -| 125|0x0000000710f00000, 0x0000000710f00000, 0x0000000711000000| 0%| F| |TAMS 0x0000000710f00000, 0x0000000710f00000| Untracked -| 126|0x0000000711000000, 0x0000000711000000, 0x0000000711100000| 0%| F| |TAMS 0x0000000711000000, 0x0000000711000000| Untracked -| 127|0x0000000711100000, 0x0000000711100000, 0x0000000711200000| 0%| F| |TAMS 0x0000000711100000, 0x0000000711100000| Untracked -| 128|0x0000000711200000, 0x0000000711200000, 0x0000000711300000| 0%| F| |TAMS 0x0000000711200000, 0x0000000711200000| Untracked -| 129|0x0000000711300000, 0x0000000711300000, 0x0000000711400000| 0%| F| |TAMS 0x0000000711300000, 0x0000000711300000| Untracked -| 130|0x0000000711400000, 0x0000000711400000, 0x0000000711500000| 0%| F| |TAMS 0x0000000711400000, 0x0000000711400000| Untracked -| 131|0x0000000711500000, 0x0000000711500000, 0x0000000711600000| 0%| F| |TAMS 0x0000000711500000, 0x0000000711500000| Untracked -| 132|0x0000000711600000, 0x0000000711600000, 0x0000000711700000| 0%| F| |TAMS 0x0000000711600000, 0x0000000711600000| Untracked -| 133|0x0000000711700000, 0x0000000711700000, 0x0000000711800000| 0%| F| |TAMS 0x0000000711700000, 0x0000000711700000| Untracked -| 134|0x0000000711800000, 0x0000000711800000, 0x0000000711900000| 0%| F| |TAMS 0x0000000711800000, 0x0000000711800000| Untracked -| 135|0x0000000711900000, 0x0000000711900000, 0x0000000711a00000| 0%| F| |TAMS 0x0000000711900000, 0x0000000711900000| Untracked -| 136|0x0000000711a00000, 0x0000000711a00000, 0x0000000711b00000| 0%| F| |TAMS 0x0000000711a00000, 0x0000000711a00000| Untracked -| 137|0x0000000711b00000, 0x0000000711b00000, 0x0000000711c00000| 0%| F| |TAMS 0x0000000711b00000, 0x0000000711b00000| Untracked -| 138|0x0000000711c00000, 0x0000000711c00000, 0x0000000711d00000| 0%| F| |TAMS 0x0000000711c00000, 0x0000000711c00000| Untracked -| 139|0x0000000711d00000, 0x0000000711d00000, 0x0000000711e00000| 0%| F| |TAMS 0x0000000711d00000, 0x0000000711d00000| Untracked -| 140|0x0000000711e00000, 0x0000000711e00000, 0x0000000711f00000| 0%| F| |TAMS 0x0000000711e00000, 0x0000000711e00000| Untracked -| 141|0x0000000711f00000, 0x0000000711f00000, 0x0000000712000000| 0%| F| |TAMS 0x0000000711f00000, 0x0000000711f00000| Untracked -| 142|0x0000000712000000, 0x0000000712000000, 0x0000000712100000| 0%| F| |TAMS 0x0000000712000000, 0x0000000712000000| Untracked -| 143|0x0000000712100000, 0x0000000712100000, 0x0000000712200000| 0%| F| |TAMS 0x0000000712100000, 0x0000000712100000| Untracked -| 144|0x0000000712200000, 0x0000000712200000, 0x0000000712300000| 0%| F| |TAMS 0x0000000712200000, 0x0000000712200000| Untracked -| 145|0x0000000712300000, 0x0000000712300000, 0x0000000712400000| 0%| F| |TAMS 0x0000000712300000, 0x0000000712300000| Untracked -| 146|0x0000000712400000, 0x0000000712400000, 0x0000000712500000| 0%| F| |TAMS 0x0000000712400000, 0x0000000712400000| Untracked -| 147|0x0000000712500000, 0x0000000712500000, 0x0000000712600000| 0%| F| |TAMS 0x0000000712500000, 0x0000000712500000| Untracked -| 148|0x0000000712600000, 0x0000000712600000, 0x0000000712700000| 0%| F| |TAMS 0x0000000712600000, 0x0000000712600000| Untracked -| 149|0x0000000712700000, 0x0000000712700000, 0x0000000712800000| 0%| F| |TAMS 0x0000000712700000, 0x0000000712700000| Untracked -| 150|0x0000000712800000, 0x0000000712800000, 0x0000000712900000| 0%| F| |TAMS 0x0000000712800000, 0x0000000712800000| Untracked -| 151|0x0000000712900000, 0x0000000712900000, 0x0000000712a00000| 0%| F| |TAMS 0x0000000712900000, 0x0000000712900000| Untracked -| 152|0x0000000712a00000, 0x0000000712a00000, 0x0000000712b00000| 0%| F| |TAMS 0x0000000712a00000, 0x0000000712a00000| Untracked -| 153|0x0000000712b00000, 0x0000000712b00000, 0x0000000712c00000| 0%| F| |TAMS 0x0000000712b00000, 0x0000000712b00000| Untracked -| 154|0x0000000712c00000, 0x0000000712c00000, 0x0000000712d00000| 0%| F| |TAMS 0x0000000712c00000, 0x0000000712c00000| Untracked -| 155|0x0000000712d00000, 0x0000000712d00000, 0x0000000712e00000| 0%| F| |TAMS 0x0000000712d00000, 0x0000000712d00000| Untracked -| 156|0x0000000712e00000, 0x0000000712e00000, 0x0000000712f00000| 0%| F| |TAMS 0x0000000712e00000, 0x0000000712e00000| Untracked -| 157|0x0000000712f00000, 0x0000000712f00000, 0x0000000713000000| 0%| F| |TAMS 0x0000000712f00000, 0x0000000712f00000| Untracked -| 158|0x0000000713000000, 0x0000000713000000, 0x0000000713100000| 0%| F| |TAMS 0x0000000713000000, 0x0000000713000000| Untracked -| 159|0x0000000713100000, 0x0000000713100000, 0x0000000713200000| 0%| F| |TAMS 0x0000000713100000, 0x0000000713100000| Untracked -| 160|0x0000000713200000, 0x0000000713200000, 0x0000000713300000| 0%| F| |TAMS 0x0000000713200000, 0x0000000713200000| Untracked -| 161|0x0000000713300000, 0x0000000713300000, 0x0000000713400000| 0%| F| |TAMS 0x0000000713300000, 0x0000000713300000| Untracked -| 162|0x0000000713400000, 0x0000000713400000, 0x0000000713500000| 0%| F| |TAMS 0x0000000713400000, 0x0000000713400000| Untracked -| 163|0x0000000713500000, 0x0000000713500000, 0x0000000713600000| 0%| F| |TAMS 0x0000000713500000, 0x0000000713500000| Untracked -| 164|0x0000000713600000, 0x0000000713600000, 0x0000000713700000| 0%| F| |TAMS 0x0000000713600000, 0x0000000713600000| Untracked -| 165|0x0000000713700000, 0x0000000713700000, 0x0000000713800000| 0%| F| |TAMS 0x0000000713700000, 0x0000000713700000| Untracked -| 166|0x0000000713800000, 0x0000000713800000, 0x0000000713900000| 0%| F| |TAMS 0x0000000713800000, 0x0000000713800000| Untracked -| 167|0x0000000713900000, 0x0000000713900000, 0x0000000713a00000| 0%| F| |TAMS 0x0000000713900000, 0x0000000713900000| Untracked -| 168|0x0000000713a00000, 0x0000000713a00000, 0x0000000713b00000| 0%| F| |TAMS 0x0000000713a00000, 0x0000000713a00000| Untracked -| 169|0x0000000713b00000, 0x0000000713b00000, 0x0000000713c00000| 0%| F| |TAMS 0x0000000713b00000, 0x0000000713b00000| Untracked -| 170|0x0000000713c00000, 0x0000000713c00000, 0x0000000713d00000| 0%| F| |TAMS 0x0000000713c00000, 0x0000000713c00000| Untracked -| 171|0x0000000713d00000, 0x0000000713d00000, 0x0000000713e00000| 0%| F| |TAMS 0x0000000713d00000, 0x0000000713d00000| Untracked -| 172|0x0000000713e00000, 0x0000000713e00000, 0x0000000713f00000| 0%| F| |TAMS 0x0000000713e00000, 0x0000000713e00000| Untracked -| 173|0x0000000713f00000, 0x0000000713f00000, 0x0000000714000000| 0%| F| |TAMS 0x0000000713f00000, 0x0000000713f00000| Untracked -| 174|0x0000000714000000, 0x0000000714000000, 0x0000000714100000| 0%| F| |TAMS 0x0000000714000000, 0x0000000714000000| Untracked -| 175|0x0000000714100000, 0x0000000714100000, 0x0000000714200000| 0%| F| |TAMS 0x0000000714100000, 0x0000000714100000| Untracked -| 176|0x0000000714200000, 0x0000000714200000, 0x0000000714300000| 0%| F| |TAMS 0x0000000714200000, 0x0000000714200000| Untracked -| 177|0x0000000714300000, 0x0000000714300000, 0x0000000714400000| 0%| F| |TAMS 0x0000000714300000, 0x0000000714300000| Untracked -| 178|0x0000000714400000, 0x0000000714400000, 0x0000000714500000| 0%| F| |TAMS 0x0000000714400000, 0x0000000714400000| Untracked -| 179|0x0000000714500000, 0x0000000714500000, 0x0000000714600000| 0%| F| |TAMS 0x0000000714500000, 0x0000000714500000| Untracked -| 180|0x0000000714600000, 0x0000000714600000, 0x0000000714700000| 0%| F| |TAMS 0x0000000714600000, 0x0000000714600000| Untracked -| 181|0x0000000714700000, 0x0000000714700000, 0x0000000714800000| 0%| F| |TAMS 0x0000000714700000, 0x0000000714700000| Untracked -| 182|0x0000000714800000, 0x0000000714800000, 0x0000000714900000| 0%| F| |TAMS 0x0000000714800000, 0x0000000714800000| Untracked -| 183|0x0000000714900000, 0x0000000714900000, 0x0000000714a00000| 0%| F| |TAMS 0x0000000714900000, 0x0000000714900000| Untracked -| 184|0x0000000714a00000, 0x0000000714a00000, 0x0000000714b00000| 0%| F| |TAMS 0x0000000714a00000, 0x0000000714a00000| Untracked -| 185|0x0000000714b00000, 0x0000000714b00000, 0x0000000714c00000| 0%| F| |TAMS 0x0000000714b00000, 0x0000000714b00000| Untracked -| 186|0x0000000714c00000, 0x0000000714c00000, 0x0000000714d00000| 0%| F| |TAMS 0x0000000714c00000, 0x0000000714c00000| Untracked -| 187|0x0000000714d00000, 0x0000000714d00000, 0x0000000714e00000| 0%| F| |TAMS 0x0000000714d00000, 0x0000000714d00000| Untracked -| 188|0x0000000714e00000, 0x0000000714e00000, 0x0000000714f00000| 0%| F| |TAMS 0x0000000714e00000, 0x0000000714e00000| Untracked -| 189|0x0000000714f00000, 0x0000000714f00000, 0x0000000715000000| 0%| F| |TAMS 0x0000000714f00000, 0x0000000714f00000| Untracked -| 190|0x0000000715000000, 0x0000000715000000, 0x0000000715100000| 0%| F| |TAMS 0x0000000715000000, 0x0000000715000000| Untracked -| 191|0x0000000715100000, 0x0000000715100000, 0x0000000715200000| 0%| F| |TAMS 0x0000000715100000, 0x0000000715100000| Untracked -| 192|0x0000000715200000, 0x0000000715200000, 0x0000000715300000| 0%| F| |TAMS 0x0000000715200000, 0x0000000715200000| Untracked -| 193|0x0000000715300000, 0x0000000715300000, 0x0000000715400000| 0%| F| |TAMS 0x0000000715300000, 0x0000000715300000| Untracked -| 194|0x0000000715400000, 0x0000000715400000, 0x0000000715500000| 0%| F| |TAMS 0x0000000715400000, 0x0000000715400000| Untracked -| 195|0x0000000715500000, 0x0000000715500000, 0x0000000715600000| 0%| F| |TAMS 0x0000000715500000, 0x0000000715500000| Untracked -| 196|0x0000000715600000, 0x0000000715600000, 0x0000000715700000| 0%| F| |TAMS 0x0000000715600000, 0x0000000715600000| Untracked -| 197|0x0000000715700000, 0x0000000715700000, 0x0000000715800000| 0%| F| |TAMS 0x0000000715700000, 0x0000000715700000| Untracked -| 198|0x0000000715800000, 0x0000000715800000, 0x0000000715900000| 0%| F| |TAMS 0x0000000715800000, 0x0000000715800000| Untracked -| 199|0x0000000715900000, 0x0000000715900000, 0x0000000715a00000| 0%| F| |TAMS 0x0000000715900000, 0x0000000715900000| Untracked -| 200|0x0000000715a00000, 0x0000000715a00000, 0x0000000715b00000| 0%| F| |TAMS 0x0000000715a00000, 0x0000000715a00000| Untracked -| 201|0x0000000715b00000, 0x0000000715b00000, 0x0000000715c00000| 0%| F| |TAMS 0x0000000715b00000, 0x0000000715b00000| Untracked -| 202|0x0000000715c00000, 0x0000000715c00000, 0x0000000715d00000| 0%| F| |TAMS 0x0000000715c00000, 0x0000000715c00000| Untracked -| 203|0x0000000715d00000, 0x0000000715d00000, 0x0000000715e00000| 0%| F| |TAMS 0x0000000715d00000, 0x0000000715d00000| Untracked -| 204|0x0000000715e00000, 0x0000000715e00000, 0x0000000715f00000| 0%| F| |TAMS 0x0000000715e00000, 0x0000000715e00000| Untracked -| 205|0x0000000715f00000, 0x0000000715f00000, 0x0000000716000000| 0%| F| |TAMS 0x0000000715f00000, 0x0000000715f00000| Untracked -| 206|0x0000000716000000, 0x0000000716000000, 0x0000000716100000| 0%| F| |TAMS 0x0000000716000000, 0x0000000716000000| Untracked -| 207|0x0000000716100000, 0x0000000716100000, 0x0000000716200000| 0%| F| |TAMS 0x0000000716100000, 0x0000000716100000| Untracked -| 208|0x0000000716200000, 0x0000000716200000, 0x0000000716300000| 0%| F| |TAMS 0x0000000716200000, 0x0000000716200000| Untracked -| 209|0x0000000716300000, 0x0000000716300000, 0x0000000716400000| 0%| F| |TAMS 0x0000000716300000, 0x0000000716300000| Untracked -| 210|0x0000000716400000, 0x0000000716400000, 0x0000000716500000| 0%| F| |TAMS 0x0000000716400000, 0x0000000716400000| Untracked -| 211|0x0000000716500000, 0x0000000716500000, 0x0000000716600000| 0%| F| |TAMS 0x0000000716500000, 0x0000000716500000| Untracked -| 212|0x0000000716600000, 0x0000000716600000, 0x0000000716700000| 0%| F| |TAMS 0x0000000716600000, 0x0000000716600000| Untracked -| 213|0x0000000716700000, 0x0000000716700000, 0x0000000716800000| 0%| F| |TAMS 0x0000000716700000, 0x0000000716700000| Untracked -| 214|0x0000000716800000, 0x0000000716800000, 0x0000000716900000| 0%| F| |TAMS 0x0000000716800000, 0x0000000716800000| Untracked -| 215|0x0000000716900000, 0x0000000716900000, 0x0000000716a00000| 0%| F| |TAMS 0x0000000716900000, 0x0000000716900000| Untracked -| 216|0x0000000716a00000, 0x0000000716a00000, 0x0000000716b00000| 0%| F| |TAMS 0x0000000716a00000, 0x0000000716a00000| Untracked -| 217|0x0000000716b00000, 0x0000000716b00000, 0x0000000716c00000| 0%| F| |TAMS 0x0000000716b00000, 0x0000000716b00000| Untracked -| 218|0x0000000716c00000, 0x0000000716c00000, 0x0000000716d00000| 0%| F| |TAMS 0x0000000716c00000, 0x0000000716c00000| Untracked -| 219|0x0000000716d00000, 0x0000000716d00000, 0x0000000716e00000| 0%| F| |TAMS 0x0000000716d00000, 0x0000000716d00000| Untracked -| 220|0x0000000716e00000, 0x0000000716e00000, 0x0000000716f00000| 0%| F| |TAMS 0x0000000716e00000, 0x0000000716e00000| Untracked -| 221|0x0000000716f00000, 0x0000000716f8afa8, 0x0000000717000000| 54%| S|CS|TAMS 0x0000000716f00000, 0x0000000716f00000| Complete -| 222|0x0000000717000000, 0x0000000717100000, 0x0000000717100000|100%| S|CS|TAMS 0x0000000717000000, 0x0000000717000000| Complete -| 223|0x0000000717100000, 0x0000000717200000, 0x0000000717200000|100%| S|CS|TAMS 0x0000000717100000, 0x0000000717100000| Complete -| 224|0x0000000717200000, 0x0000000717200000, 0x0000000717300000| 0%| F| |TAMS 0x0000000717200000, 0x0000000717200000| Untracked -| 225|0x0000000717300000, 0x0000000717300000, 0x0000000717400000| 0%| F| |TAMS 0x0000000717300000, 0x0000000717300000| Untracked -| 226|0x0000000717400000, 0x0000000717400000, 0x0000000717500000| 0%| F| |TAMS 0x0000000717400000, 0x0000000717400000| Untracked -| 227|0x0000000717500000, 0x0000000717500000, 0x0000000717600000| 0%| F| |TAMS 0x0000000717500000, 0x0000000717500000| Untracked -| 228|0x0000000717600000, 0x0000000717600000, 0x0000000717700000| 0%| F| |TAMS 0x0000000717600000, 0x0000000717600000| Untracked -| 229|0x0000000717700000, 0x0000000717700000, 0x0000000717800000| 0%| F| |TAMS 0x0000000717700000, 0x0000000717700000| Untracked -| 230|0x0000000717800000, 0x0000000717800000, 0x0000000717900000| 0%| F| |TAMS 0x0000000717800000, 0x0000000717800000| Untracked -| 231|0x0000000717900000, 0x0000000717900000, 0x0000000717a00000| 0%| F| |TAMS 0x0000000717900000, 0x0000000717900000| Untracked -| 232|0x0000000717a00000, 0x0000000717a00000, 0x0000000717b00000| 0%| F| |TAMS 0x0000000717a00000, 0x0000000717a00000| Untracked -| 233|0x0000000717b00000, 0x0000000717b00000, 0x0000000717c00000| 0%| F| |TAMS 0x0000000717b00000, 0x0000000717b00000| Untracked -| 234|0x0000000717c00000, 0x0000000717c00000, 0x0000000717d00000| 0%| F| |TAMS 0x0000000717c00000, 0x0000000717c00000| Untracked -| 235|0x0000000717d00000, 0x0000000717d00000, 0x0000000717e00000| 0%| F| |TAMS 0x0000000717d00000, 0x0000000717d00000| Untracked -| 236|0x0000000717e00000, 0x0000000717e00000, 0x0000000717f00000| 0%| F| |TAMS 0x0000000717e00000, 0x0000000717e00000| Untracked -| 237|0x0000000717f00000, 0x0000000717f00000, 0x0000000718000000| 0%| F| |TAMS 0x0000000717f00000, 0x0000000717f00000| Untracked -| 238|0x0000000718000000, 0x0000000718000000, 0x0000000718100000| 0%| F| |TAMS 0x0000000718000000, 0x0000000718000000| Untracked -| 239|0x0000000718100000, 0x0000000718100000, 0x0000000718200000| 0%| F| |TAMS 0x0000000718100000, 0x0000000718100000| Untracked -| 240|0x0000000718200000, 0x0000000718200000, 0x0000000718300000| 0%| F| |TAMS 0x0000000718200000, 0x0000000718200000| Untracked -| 241|0x0000000718300000, 0x0000000718300000, 0x0000000718400000| 0%| F| |TAMS 0x0000000718300000, 0x0000000718300000| Untracked -| 242|0x0000000718400000, 0x0000000718400000, 0x0000000718500000| 0%| F| |TAMS 0x0000000718400000, 0x0000000718400000| Untracked -| 243|0x0000000718500000, 0x0000000718500000, 0x0000000718600000| 0%| F| |TAMS 0x0000000718500000, 0x0000000718500000| Untracked -| 244|0x0000000718600000, 0x0000000718600000, 0x0000000718700000| 0%| F| |TAMS 0x0000000718600000, 0x0000000718600000| Untracked -| 245|0x0000000718700000, 0x0000000718700000, 0x0000000718800000| 0%| F| |TAMS 0x0000000718700000, 0x0000000718700000| Untracked -| 246|0x0000000718800000, 0x0000000718880800, 0x0000000718900000| 50%| E| |TAMS 0x0000000718800000, 0x0000000718800000| Complete -| 247|0x0000000718900000, 0x0000000718a00000, 0x0000000718a00000|100%| E|CS|TAMS 0x0000000718900000, 0x0000000718900000| Complete -|2924|0x00000007bfe00000, 0x00000007bfe48000, 0x00000007bff00000| 28%|OA| |TAMS 0x00000007bfe00000, 0x00000007bfe00000| Untracked -|2925|0x00000007bff00000, 0x00000007bff6c000, 0x00000007c0000000| 42%|CA| |TAMS 0x00000007bff00000, 0x00000007bff00000| Untracked - -Card table byte_map: [0x00007f0ec1189000,0x00007f0ec1940000] _byte_map_base: 0x00007f0ebd940000 - -Marking Bits (Prev, Next): (CMBitMap*) 0x00007f0ebc07d798, (CMBitMap*) 0x00007f0ebc07d7d0 - Prev Bits: [0x00007f0e9c248000, 0x00007f0ea0000000) - Next Bits: [0x00007f0e98490000, 0x00007f0e9c248000) - -Polling page: 0x00007f0ec32fb000 - -Metaspace: - -Usage: - Non-class: 7.71 MB capacity, 6.45 MB ( 84%) used, 1.20 MB ( 16%) free+waste, 62.62 KB ( <1%) overhead. - Class: 1.21 MB capacity, 905.91 KB ( 73%) used, 298.34 KB ( 24%) free+waste, 33.75 KB ( 3%) overhead. - Both: 8.92 MB capacity, 7.33 MB ( 82%) used, 1.49 MB ( 17%) free+waste, 96.38 KB ( 1%) overhead. - -Virtual space: - Non-class space: 8.00 MB reserved, 8.00 MB (100%) committed - Class space: 1.00 GB reserved, 1.25 MB ( <1%) committed - Both: 1.01 GB reserved, 9.25 MB ( <1%) committed - -Chunk freelists: - Non-Class: 47.00 KB - Class: 0 bytes - Both: 47.00 KB - -MaxMetaspaceSize: unlimited -CompressedClassSpaceSize: 1.00 GB -Initial GC threshold: 20.80 MB -Current GC threshold: 20.80 MB -CDS: on - -CodeHeap 'non-profiled nmethods': size=119172Kb used=389Kb max_used=389Kb free=118782Kb - bounds [0x00007f0eac36e000, 0x00007f0eac5de000, 0x00007f0eb37cf000] -CodeHeap 'profiled nmethods': size=119168Kb used=2955Kb max_used=2955Kb free=116212Kb - bounds [0x00007f0ea4f0e000, 0x00007f0ea51fe000, 0x00007f0eac36e000] -CodeHeap 'non-nmethods': size=7420Kb used=1170Kb max_used=2308Kb free=6249Kb - bounds [0x00007f0ea47cf000, 0x00007f0ea4a3f000, 0x00007f0ea4f0e000] - total_blobs=1866 nmethods=1441 adapters=337 - compilation: enabled - stopped_count=0, restarted_count=0 - full_count=0 - -Compilation events (20 events): -Event: 3.565 Thread 0x00007f0ebc264000 nmethod 1430 0x00007f0ea51ea410 code [0x00007f0ea51ea5c0, 0x00007f0ea51ea7d0] -Event: 3.580 Thread 0x00007f0ebc262000 nmethod 1423 0x00007f0eac3ccc10 code [0x00007f0eac3ccee0, 0x00007f0eac3ce118] -Event: 3.693 Thread 0x00007f0ebc262000 1433 4 java.util.concurrent.ConcurrentHashMap::setTabAt (20 bytes) -Event: 3.693 Thread 0x00007f0ebc264000 1434 ! 3 java.util.concurrent.ConcurrentHashMap::replaceNode (437 bytes) -Event: 3.694 Thread 0x00007f0ebc262000 nmethod 1433 0x00007f0eac3ce910 code [0x00007f0eac3ceaa0, 0x00007f0eac3cebb8] -Event: 3.694 Thread 0x00007f0ebc264000 nmethod 1434 0x00007f0ea51ea890 code [0x00007f0ea51eac40, 0x00007f0ea51eced0] -Event: 3.695 Thread 0x00007f0ebc264000 1435 ! 3 java.nio.charset.CharsetEncoder::encode (285 bytes) -Event: 3.696 Thread 0x00007f0ebc262000 1438 4 java.nio.StringCharBuffer::get (19 bytes) -Event: 3.696 Thread 0x00007f0ebc264000 nmethod 1435 0x00007f0ea51edd10 code [0x00007f0ea51ee040, 0x00007f0ea51ef3b0] -Event: 3.696 Thread 0x00007f0ebc264000 1436 3 sun.nio.cs.UTF_8$Encoder::encodeLoop (28 bytes) -Event: 3.696 Thread 0x00007f0ebc264000 nmethod 1436 0x00007f0ea51ef990 code [0x00007f0ea51efb80, 0x00007f0ea51eff90] -Event: 3.696 Thread 0x00007f0ebc264000 1437 3 java.util.regex.Pattern::next (33 bytes) -Event: 3.696 Thread 0x00007f0ebc264000 nmethod 1437 0x00007f0ea51f0110 code [0x00007f0ea51f02e0, 0x00007f0ea51f0560] -Event: 3.696 Thread 0x00007f0ebc264000 1439 3 jdk.internal.misc.Unsafe::convEndian (16 bytes) -Event: 3.696 Thread 0x00007f0ebc264000 nmethod 1439 0x00007f0ea51f0690 code [0x00007f0ea51f0840, 0x00007f0ea51f09f0] -Event: 3.696 Thread 0x00007f0ebc264000 1440 3 java.lang.Integer::reverseBytes (26 bytes) -Event: 3.696 Thread 0x00007f0ebc264000 nmethod 1440 0x00007f0ea51f0a90 code [0x00007f0ea51f0c40, 0x00007f0ea51f0d50] -Event: 3.697 Thread 0x00007f0ebc262000 nmethod 1438 0x00007f0eac3cec10 code [0x00007f0eac3cedc0, 0x00007f0eac3cef08] -Event: 3.750 Thread 0x00007f0ebc262000 1442 4 java.io.UnixFileSystem::normalize (75 bytes) -Event: 3.751 Thread 0x00007f0ebc262000 nmethod 1442 0x00007f0eac3cf090 code [0x00007f0eac3cf240, 0x00007f0eac3cf428] - -GC Heap History (2 events): -Event: 3.554 GC heap before -{Heap before GC invocations=0 (full 0): - garbage-first heap total 256000K, used 24272K [0x0000000709200000, 0x0000000800000000) - region size 1024K, 24 young (24576K), 0 survivors (0K) - Metaspace used 7435K, capacity 9061K, committed 9216K, reserved 1056768K - class space used 899K, capacity 1236K, committed 1280K, reserved 1048576K -} -Event: 3.560 GC heap after -{Heap after GC invocations=1 (full 0): - garbage-first heap total 256000K, used 3323K [0x0000000709200000, 0x0000000800000000) - region size 1024K, 3 young (3072K), 3 survivors (3072K) - Metaspace used 7435K, capacity 9061K, committed 9216K, reserved 1056768K - class space used 899K, capacity 1236K, committed 1280K, reserved 1048576K -} - -Deoptimization events (20 events): -Event: 0.395 Thread 0x00007f0ebc016000 DEOPT PACKING pc=0x00007f0eac3a6b44 sp=0x00007f0ec343da50 -Event: 0.395 Thread 0x00007f0ebc016000 DEOPT UNPACKING pc=0x00007f0ea4818ea5 sp=0x00007f0ec343d9e8 mode 2 -Event: 0.415 Thread 0x00007f0ebc016000 Uncommon trap: trap_request=0xffffff4d fr.pc=0x00007f0eac3827e4 relative=0x0000000000000044 -Event: 0.415 Thread 0x00007f0ebc016000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f0eac3827e4 method=java.lang.CharacterData.of(I)Ljava/lang/CharacterData; @ 4 c2 -Event: 0.415 Thread 0x00007f0ebc016000 DEOPT PACKING pc=0x00007f0eac3827e4 sp=0x00007f0ec343bf60 -Event: 0.415 Thread 0x00007f0ebc016000 DEOPT UNPACKING pc=0x00007f0ea4818ea5 sp=0x00007f0ec343bf18 mode 2 -Event: 0.416 Thread 0x00007f0ebc016000 Uncommon trap: trap_request=0xffffff4d fr.pc=0x00007f0eac387b88 relative=0x0000000000000068 -Event: 0.416 Thread 0x00007f0ebc016000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f0eac387b88 method=java.lang.String.isLatin1()Z @ 10 c2 -Event: 0.416 Thread 0x00007f0ebc016000 DEOPT PACKING pc=0x00007f0eac387b88 sp=0x00007f0ec343b5e0 -Event: 0.416 Thread 0x00007f0ebc016000 DEOPT UNPACKING pc=0x00007f0ea4818ea5 sp=0x00007f0ec343b590 mode 2 -Event: 0.417 Thread 0x00007f0ebc016000 Uncommon trap: trap_request=0xffffff4d fr.pc=0x00007f0eac37a134 relative=0x0000000000000194 -Event: 0.417 Thread 0x00007f0ebc016000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f0eac37a134 method=java.lang.String.isLatin1()Z @ 10 c2 -Event: 0.417 Thread 0x00007f0ebc016000 DEOPT PACKING pc=0x00007f0eac37a134 sp=0x00007f0ec343c7b0 -Event: 0.417 Thread 0x00007f0ebc016000 DEOPT UNPACKING pc=0x00007f0ea4818ea5 sp=0x00007f0ec343c6f8 mode 2 -Event: 0.422 Thread 0x00007f0ebc016000 Uncommon trap: trap_request=0xffffff4d fr.pc=0x00007f0eac3a4544 relative=0x00000000000004a4 -Event: 0.422 Thread 0x00007f0ebc016000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f0eac3a4544 method=jdk.internal.org.objectweb.asm.Type.getArgumentsAndReturnSizes(Ljava/lang/String;)I @ 130 c2 -Event: 0.422 Thread 0x00007f0ebc016000 DEOPT PACKING pc=0x00007f0eac3a4544 sp=0x00007f0ec343b810 -Event: 0.422 Thread 0x00007f0ebc016000 DEOPT UNPACKING pc=0x00007f0ea4818ea5 sp=0x00007f0ec343b7c8 mode 2 -Event: 3.750 Thread 0x00007f0ebc016000 DEOPT PACKING pc=0x00007f0ea4fa6920 sp=0x00007f0ec343bb50 -Event: 3.750 Thread 0x00007f0ebc016000 DEOPT UNPACKING pc=0x00007f0ea481964a sp=0x00007f0ec343b088 mode 0 - -Classes redefined (0 events): -No events - -Internal exceptions (20 events): -Event: 0.297 Thread 0x00007f0ebc016000 Exception (0x0000000717bc0278) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.327 Thread 0x00007f0ebc016000 Exception (0x0000000717907c70) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.327 Thread 0x00007f0ebc016000 Exception (0x000000071790b3c8) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 839] -Event: 0.341 Thread 0x00007f0ebc016000 Exception (0x00000007179a9810) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.341 Thread 0x00007f0ebc016000 Exception (0x00000007179ac5d0) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 839] -Event: 0.343 Thread 0x00007f0ebc016000 Exception (0x00000007179d0668) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.354 Thread 0x00007f0ebc016000 Exception (0x000000071786ebe8) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.361 Thread 0x00007f0ebc016000 Exception (0x00000007178c36e0) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.364 Thread 0x00007f0ebc016000 Exception (0x00000007178df5e8) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.373 Thread 0x00007f0ebc016000 Exception (0x000000071779b3c8) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.380 Thread 0x00007f0ebc016000 Exception (0x000000071762c860) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.404 Thread 0x00007f0ebc016000 Exception (0x000000071759d928) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.404 Thread 0x00007f0ebc016000 Exception (0x00000007175abd70) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.405 Thread 0x00007f0ebc016000 Exception (0x00000007175bd858) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 839] -Event: 3.024 Thread 0x00007f0ebc016000 Exception (0x0000000717229790) thrown at [./src/hotspot/share/prims/jni.cpp, line 617] -Event: 3.032 Thread 0x00007f0ebc016000 Exception (0x000000071724bd90) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 3.033 Thread 0x00007f0ebc016000 Exception (0x0000000717258400) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 3.033 Thread 0x00007f0ebc016000 Exception (0x000000071725f458) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 3.034 Thread 0x00007f0ebc016000 Exception (0x0000000717263620) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 3.034 Thread 0x00007f0ebc016000 Exception (0x0000000717267008) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] - -Events (20 events): -Event: 3.692 loading class com/nvidia/cuopt/linearprogramming/BatchSolveResult -Event: 3.692 loading class com/nvidia/cuopt/linearprogramming/BatchSolveResult done -Event: 3.693 Executing VM operation: RevokeBias -Event: 3.693 Executing VM operation: RevokeBias done -Event: 3.693 loading class com/nvidia/cuopt/linearprogramming/Solution -Event: 3.693 loading class com/nvidia/cuopt/linearprogramming/Solution done -Event: 3.748 Executing VM operation: RevokeBias -Event: 3.748 Executing VM operation: RevokeBias done -Event: 3.748 Executing VM operation: RevokeBias -Event: 3.748 Executing VM operation: RevokeBias done -Event: 3.749 Executing VM operation: RevokeBias -Event: 3.749 Executing VM operation: RevokeBias done -Event: 3.750 loading class org/junit/jupiter/api/AssertionFailureBuilder -Event: 3.750 loading class org/junit/jupiter/api/AssertionFailureBuilder done -Event: 3.750 loading class java/util/ArrayDeque$DeqSpliterator -Event: 3.750 loading class java/util/ArrayDeque$DeqSpliterator done -Event: 3.751 loading class org/opentest4j/AssertionFailedError$1 -Event: 3.751 loading class org/opentest4j/AssertionFailedError$1 done -Event: 3.751 loading class org/opentest4j/ValueWrapper -Event: 3.751 loading class org/opentest4j/ValueWrapper done - - -Dynamic libraries: -200000000-200600000 rw-s 00000000 00:01 16549 /dev/zero (deleted) -200600000-203000000 ---p 00000000 00:00 0 -203000000-203200000 rw-s 00000000 00:01 16557 /dev/zero (deleted) -203200000-203400000 rw-s 00000000 00:01 16590 /dev/zero (deleted) -203400000-203600000 ---p 00000000 00:00 0 -203600000-203800000 rw-s 00000000 00:01 16592 /dev/zero (deleted) -203800000-203a00000 rw-s 00000000 00:01 16593 /dev/zero (deleted) -203a00000-203e00000 ---p 00000000 00:00 0 -203e00000-204000000 rw-s 00000000 00:01 16595 /dev/zero (deleted) -204000000-204200000 rw-s 00000000 00:01 16596 /dev/zero (deleted) -204200000-700000000 ---p 00000000 00:00 0 -709200000-718a00000 rw-p 00000000 00:00 0 -718a00000-7bfe00000 ---p 00000000 00:00 0 -7bfe00000-7bfe48000 rw-p 00b14000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa -7bfe48000-7bff00000 rw-p 00000000 00:00 0 -7bff00000-7bff6c000 rw-p 00aa8000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa -7bff6c000-7c0000000 rw-p 00000000 00:00 0 -7c0000000-800000000 ---p 00000000 00:00 0 -800000000-800002000 rwxp 00001000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa -800002000-8003ce000 rw-p 00003000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa -8003ce000-800aa6000 r--p 003cf000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa -800aa6000-800aa7000 rw-p 00aa7000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa -840000000-840140000 rw-p 00000000 00:00 0 -840140000-880000000 ---p 00000000 00:00 0 -900000000-c00000000 ---p 00000000 00:00 0 -55c5acbfd000-55c5acbfe000 r--p 00000000 08:20 294880 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -55c5acbfe000-55c5acbff000 r-xp 00001000 08:20 294880 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -55c5acbff000-55c5acc00000 r--p 00002000 08:20 294880 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -55c5acc00000-55c5acc01000 r--p 00002000 08:20 294880 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -55c5acc01000-55c5acc02000 rw-p 00003000 08:20 294880 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -55c5ae9c3000-55c5ae9e4000 rw-p 00000000 00:00 0 [heap] -7f0dd0000000-7f0dd0021000 rw-p 00000000 00:00 0 -7f0dd0021000-7f0dd4000000 ---p 00000000 00:00 0 -7f0dd8000000-7f0dd8021000 rw-p 00000000 00:00 0 -7f0dd8021000-7f0ddc000000 ---p 00000000 00:00 0 -7f0ddc037000-7f0ddc038000 ---p 00000000 00:00 0 -7f0ddc038000-7f0de0000000 rw-p 00000000 00:00 0 -7f0de0000000-7f0de0021000 rw-p 00000000 00:00 0 -7f0de0021000-7f0de4000000 ---p 00000000 00:00 0 -7f0de4000000-7f0de4021000 rw-p 00000000 00:00 0 -7f0de4021000-7f0de8000000 ---p 00000000 00:00 0 -7f0de8000000-7f0de8021000 rw-p 00000000 00:00 0 -7f0de8021000-7f0dec000000 ---p 00000000 00:00 0 -7f0dec000000-7f0dec021000 rw-p 00000000 00:00 0 -7f0dec021000-7f0df0000000 ---p 00000000 00:00 0 -7f0df0000000-7f0df0021000 rw-p 00000000 00:00 0 -7f0df0021000-7f0df4000000 ---p 00000000 00:00 0 -7f0df4206000-7f0df51fc000 rw-p 00000000 00:00 0 -7f0df51fc000-7f0df51fd000 ---p 00000000 00:00 0 -7f0df51fd000-7f0df52fd000 rw-p 00000000 00:00 0 -7f0df52fd000-7f0df52fe000 ---p 00000000 00:00 0 -7f0df52fe000-7f0df53fe000 rw-p 00000000 00:00 0 -7f0df53fe000-7f0df53ff000 ---p 00000000 00:00 0 -7f0df53ff000-7f0df54ff000 rw-p 00000000 00:00 0 -7f0df54ff000-7f0df5500000 ---p 00000000 00:00 0 -7f0df5500000-7f0df5600000 rw-p 00000000 00:00 0 -7f0df5600000-7f0df8000000 rw-s 00000000 00:01 16556 /dev/zero (deleted) -7f0df8000000-7f0df8021000 rw-p 00000000 00:00 0 -7f0df8021000-7f0dfc000000 ---p 00000000 00:00 0 -7f0dfc07d000-7f0dfc76b000 rw-p 00000000 00:00 0 -7f0dfc76b000-7f0dfc96b000 rw-s 00000000 00:01 16594 /dev/zero (deleted) -7f0dfc96b000-7f0dfcb6b000 rw-s 00000000 00:01 16591 /dev/zero (deleted) -7f0dfcb6b000-7f0dfcd6b000 rw-s 00000000 00:01 16555 /dev/zero (deleted) -7f0dfcd6b000-7f0dfcd6c000 ---p 00000000 00:00 0 -7f0dfcd6c000-7f0dfd7ff000 rw-p 00000000 00:00 0 -7f0dfd7ff000-7f0e03800000 ---p 00000000 00:00 0 -7f0e03800000-7f0e04000000 rw-p 00000000 00:00 0 -7f0e04000000-7f0e04021000 rw-p 00000000 00:00 0 -7f0e04021000-7f0e08000000 ---p 00000000 00:00 0 -7f0e08062000-7f0e08063000 ---p 00000000 00:00 0 -7f0e08063000-7f0e08400000 rw-p 00000000 00:00 0 -7f0e08400000-7f0e0840d000 r-xp 00000000 00:21 1688849861009784 /usr/lib/wsl/drivers/nvdm.inf_amd64_86ce1e7b61a7cb15/libnvdxgdmal.so.1 -7f0e0840d000-7f0e0860d000 ---p 0000d000 00:21 1688849861009784 /usr/lib/wsl/drivers/nvdm.inf_amd64_86ce1e7b61a7cb15/libnvdxgdmal.so.1 -7f0e0860d000-7f0e0860f000 r--p 0000d000 00:21 1688849861009784 /usr/lib/wsl/drivers/nvdm.inf_amd64_86ce1e7b61a7cb15/libnvdxgdmal.so.1 -7f0e0860f000-7f0e08610000 rw-p 0000f000 00:21 1688849861009784 /usr/lib/wsl/drivers/nvdm.inf_amd64_86ce1e7b61a7cb15/libnvdxgdmal.so.1 -7f0e086a2000-7f0e087ff000 rw-p 00000000 00:00 0 -7f0e087ff000-7f0e08800000 ---p 00000000 00:00 0 -7f0e08800000-7f0e09000000 rw-p 00000000 00:00 0 -7f0e09000000-7f0e0a66e000 r-xp 00000000 00:21 1688849861009763 /usr/lib/wsl/drivers/nvdm.inf_amd64_86ce1e7b61a7cb15/libcuda.so.1.1 -7f0e0a66e000-7f0e0a86d000 ---p 0166e000 00:21 1688849861009763 /usr/lib/wsl/drivers/nvdm.inf_amd64_86ce1e7b61a7cb15/libcuda.so.1.1 -7f0e0a86d000-7f0e0abad000 r--p 0166d000 00:21 1688849861009763 /usr/lib/wsl/drivers/nvdm.inf_amd64_86ce1e7b61a7cb15/libcuda.so.1.1 -7f0e0abad000-7f0e0abb4000 rw-p 019ad000 00:21 1688849861009763 /usr/lib/wsl/drivers/nvdm.inf_amd64_86ce1e7b61a7cb15/libcuda.so.1.1 -7f0e0abb4000-7f0e0ac21000 rw-p 00000000 00:00 0 -7f0e0ac6f000-7f0e0b000000 rw-p 00000000 00:00 0 -7f0e0b000000-7f0e0b028000 r-xp 00000000 00:22 1688849861009770 /usr/lib/wsl/lib/libcuda.so.1 -7f0e0b028000-7f0e0b228000 ---p 00028000 00:22 1688849861009770 /usr/lib/wsl/lib/libcuda.so.1 -7f0e0b228000-7f0e0b229000 r--p 00028000 00:22 1688849861009770 /usr/lib/wsl/lib/libcuda.so.1 -7f0e0b229000-7f0e0b22b000 rw-p 00029000 00:22 1688849861009770 /usr/lib/wsl/lib/libcuda.so.1 -7f0e0b22b000-7f0e0b3ee000 rw-p 00000000 00:00 0 -7f0e0b3ee000-7f0e0b4dd000 r--p 00000000 08:20 320733 /home/cbrissette/cuopt/.cuopt_env/lib/libcrypto.so.3 -7f0e0b4dd000-7f0e0b841000 r-xp 000ef000 08:20 320733 /home/cbrissette/cuopt/.cuopt_env/lib/libcrypto.so.3 -7f0e0b841000-7f0e0b978000 r--p 00453000 08:20 320733 /home/cbrissette/cuopt/.cuopt_env/lib/libcrypto.so.3 -7f0e0b978000-7f0e0b9fa000 r--p 00589000 08:20 320733 /home/cbrissette/cuopt/.cuopt_env/lib/libcrypto.so.3 -7f0e0b9fa000-7f0e0b9fd000 rw-p 0060b000 08:20 320733 /home/cbrissette/cuopt/.cuopt_env/lib/libcrypto.so.3 -7f0e0b9fd000-7f0e0ba00000 rw-p 00000000 00:00 0 -7f0e0ba00000-7f0e22e7c000 r-xp 00000000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 -7f0e22e7c000-7f0e2307c000 ---p 1747c000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 -7f0e2307c000-7f0e23334000 r--p 1747c000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 -7f0e23334000-7f0e239c8000 rw-p 17734000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 -7f0e239c8000-7f0e293e0000 rw-p 00000000 00:00 0 -7f0e293e0000-7f0e295df000 ---p 1d9e0000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 -7f0e295df000-7f0e2a0d5000 r--p 17ddf000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 -7f0e2a0d5000-7f0e2a2d4000 ---p 1e6d5000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 -7f0e2a2d4000-7f0e2feb7000 rw-p 188d4000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 -7f0e2fed1000-7f0e2ff52000 rw-p 00000000 00:00 0 -7f0e2ff52000-7f0e2ffb5000 r--p 00000000 00:23 9288674231615732 /usr/lib/wsl/lib/libdxcore.so -7f0e2ffb5000-7f0e30032000 r-xp 00062000 00:23 9288674231615732 /usr/lib/wsl/lib/libdxcore.so -7f0e30032000-7f0e3003a000 r--p 000de000 00:23 9288674231615732 /usr/lib/wsl/lib/libdxcore.so -7f0e3003a000-7f0e3003b000 rw-p 000e5000 00:23 9288674231615732 /usr/lib/wsl/lib/libdxcore.so -7f0e3003b000-7f0e3008f000 rw-p 00000000 00:00 0 -7f0e3008f000-7f0e302b9000 r--p 00000000 08:20 139302 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc.so.52.0.0 -7f0e302b9000-7f0e30b03000 r-xp 0022a000 08:20 139302 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc.so.52.0.0 -7f0e30b03000-7f0e30db4000 r--p 00a74000 08:20 139302 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc.so.52.0.0 -7f0e30db4000-7f0e30dee000 r--p 00d25000 08:20 139302 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc.so.52.0.0 -7f0e30dee000-7f0e30dfb000 rw-p 00d5f000 08:20 139302 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc.so.52.0.0 -7f0e30dfb000-7f0e30e00000 rw-p 00000000 00:00 0 -7f0e30e00000-7f0e34e5e000 r-xp 00000000 08:20 101383 /home/cbrissette/cuopt/.cuopt_env/lib/libcudss.so.0.7.1 -7f0e34e5e000-7f0e3505e000 ---p 0405e000 08:20 101383 /home/cbrissette/cuopt/.cuopt_env/lib/libcudss.so.0.7.1 -7f0e3505e000-7f0e35068000 r--p 0405e000 08:20 101383 /home/cbrissette/cuopt/.cuopt_env/lib/libcudss.so.0.7.1 -7f0e35068000-7f0e3506e000 rw-p 04068000 08:20 101383 /home/cbrissette/cuopt/.cuopt_env/lib/libcudss.so.0.7.1 -7f0e3506e000-7f0e3507e000 rw-p 00000000 00:00 0 -7f0e3507e000-7f0e35080000 rw-p 042ac000 08:20 101383 /home/cbrissette/cuopt/.cuopt_env/lib/libcudss.so.0.7.1 -7f0e3509b000-7f0e3509f000 ---p 00000000 00:00 0 -7f0e3509f000-7f0e350bd000 rw-p 00000000 00:00 0 -7f0e350bd000-7f0e350c3000 r--p 00000000 08:20 194064 /home/cbrissette/cuopt/.cuopt_env/lib/libtbbmalloc.so.2.18 -7f0e350c3000-7f0e350da000 r-xp 00006000 08:20 194064 /home/cbrissette/cuopt/.cuopt_env/lib/libtbbmalloc.so.2.18 -7f0e350da000-7f0e350df000 r--p 0001d000 08:20 194064 /home/cbrissette/cuopt/.cuopt_env/lib/libtbbmalloc.so.2.18 -7f0e350df000-7f0e350e0000 r--p 00021000 08:20 194064 /home/cbrissette/cuopt/.cuopt_env/lib/libtbbmalloc.so.2.18 -7f0e350e0000-7f0e350e2000 rw-p 00022000 08:20 194064 /home/cbrissette/cuopt/.cuopt_env/lib/libtbbmalloc.so.2.18 -7f0e350e2000-7f0e35103000 rw-p 00000000 00:00 0 -7f0e35103000-7f0e35127000 r--p 00000000 08:20 167892 /home/cbrissette/cuopt/.cuopt_env/lib/libssl.so.3 -7f0e35127000-7f0e351c2000 r-xp 00024000 08:20 167892 /home/cbrissette/cuopt/.cuopt_env/lib/libssl.so.3 -7f0e351c2000-7f0e351f2000 r--p 000bf000 08:20 167892 /home/cbrissette/cuopt/.cuopt_env/lib/libssl.so.3 -7f0e351f2000-7f0e351fc000 r--p 000ef000 08:20 167892 /home/cbrissette/cuopt/.cuopt_env/lib/libssl.so.3 -7f0e351fc000-7f0e35200000 rw-p 000f9000 08:20 167892 /home/cbrissette/cuopt/.cuopt_env/lib/libssl.so.3 -7f0e35200000-7f0e3f16c000 r-xp 00000000 08:20 100411 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcusparse.so.12.7.10.1 -7f0e3f16c000-7f0e3f36c000 ---p 09f6c000 08:20 100411 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcusparse.so.12.7.10.1 -7f0e3f36c000-7f0e3f37b000 r--p 09f6c000 08:20 100411 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcusparse.so.12.7.10.1 -7f0e3f37b000-7f0e3f399000 rw-p 09f7b000 08:20 100411 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcusparse.so.12.7.10.1 -7f0e3f399000-7f0e3f3be000 rw-p 00000000 00:00 0 -7f0e3f3be000-7f0e3f3bf000 rw-s a01e41000 00:01 16589 /dev/zero (deleted) -7f0e3f3bf000-7f0e3f3c0000 rw-s a01e40000 00:01 16588 /dev/zero (deleted) -7f0e3f3c0000-7f0e3f3c1000 rw-s a01e3f000 00:01 16587 /dev/zero (deleted) -7f0e3f3c1000-7f0e3f3c2000 rw-s a01e3e000 00:01 16586 /dev/zero (deleted) -7f0e3f3c2000-7f0e3f3c3000 rw-s a01e3d000 00:01 16585 /dev/zero (deleted) -7f0e3f3c3000-7f0e3f3c4000 rw-s a01e3c000 00:01 16584 /dev/zero (deleted) -7f0e3f3c4000-7f0e3f3c5000 rw-s a01e3b000 00:01 16583 /dev/zero (deleted) -7f0e3f3c5000-7f0e3f3c6000 rw-s a01e3a000 00:01 16582 /dev/zero (deleted) -7f0e3f3c6000-7f0e3f3c7000 rw-s a01e39000 00:01 16581 /dev/zero (deleted) -7f0e3f3c7000-7f0e3f3c8000 rw-s a01e38000 00:01 16580 /dev/zero (deleted) -7f0e3f3c8000-7f0e3f3c9000 rw-s a01e37000 00:01 16579 /dev/zero (deleted) -7f0e3f3c9000-7f0e3f3ca000 rw-s a01e36000 00:01 16578 /dev/zero (deleted) -7f0e3f3ca000-7f0e3f3cb000 rw-s a01e35000 00:01 16577 /dev/zero (deleted) -7f0e3f3cb000-7f0e3f3cc000 rw-s a01e34000 00:01 16576 /dev/zero (deleted) -7f0e3f3cc000-7f0e3f3cd000 rw-s a01e33000 00:01 16575 /dev/zero (deleted) -7f0e3f3cd000-7f0e3f3ce000 rw-s a01e32000 00:01 16574 /dev/zero (deleted) -7f0e3f3ce000-7f0e3f3cf000 rw-s a01e31000 00:01 16573 /dev/zero (deleted) -7f0e3f3cf000-7f0e3f3d0000 rw-s a01e30000 00:01 16572 /dev/zero (deleted) -7f0e3f3d0000-7f0e3f3d1000 rw-s a01e2f000 00:01 16571 /dev/zero (deleted) -7f0e3f3d1000-7f0e3f3d2000 rw-s a01e2e000 00:01 16570 /dev/zero (deleted) -7f0e3f3d2000-7f0e3f3d3000 rw-s a01e2d000 00:01 16569 /dev/zero (deleted) -7f0e3f3d3000-7f0e3f3d4000 rw-s a01e2c000 00:01 16568 /dev/zero (deleted) -7f0e3f3d4000-7f0e3f3d5000 rw-s a01e2b000 00:01 16567 /dev/zero (deleted) -7f0e3f3d5000-7f0e3f3d6000 r--p 00000000 08:20 177053 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_utf8_for_code_point.so.2601.0.0 -7f0e3f3d6000-7f0e3f3d7000 r-xp 00001000 08:20 177053 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_utf8_for_code_point.so.2601.0.0 -7f0e3f3d7000-7f0e3f3d8000 r--p 00002000 08:20 177053 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_utf8_for_code_point.so.2601.0.0 -7f0e3f3d8000-7f0e3f3d9000 r--p 00002000 08:20 177053 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_utf8_for_code_point.so.2601.0.0 -7f0e3f3d9000-7f0e3f3da000 rw-p 00003000 08:20 177053 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_utf8_for_code_point.so.2601.0.0 -7f0e3f3da000-7f0e3f3db000 r--p 00000000 08:20 176909 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_decode_rust_punycode.so.2601.0.0 -7f0e3f3db000-7f0e3f3dc000 r-xp 00001000 08:20 176909 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_decode_rust_punycode.so.2601.0.0 -7f0e3f3dc000-7f0e3f3dd000 r--p 00002000 08:20 176909 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_decode_rust_punycode.so.2601.0.0 -7f0e3f3dd000-7f0e3f3de000 r--p 00002000 08:20 176909 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_decode_rust_punycode.so.2601.0.0 -7f0e3f3de000-7f0e3f3df000 rw-p 00003000 08:20 176909 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_decode_rust_punycode.so.2601.0.0 -7f0e3f3df000-7f0e3f3e0000 r--p 00000000 08:20 176160 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_rust.so.2601.0.0 -7f0e3f3e0000-7f0e3f3e4000 r-xp 00001000 08:20 176160 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_rust.so.2601.0.0 -7f0e3f3e4000-7f0e3f3e5000 r--p 00005000 08:20 176160 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_rust.so.2601.0.0 -7f0e3f3e5000-7f0e3f3e6000 r--p 00005000 08:20 176160 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_rust.so.2601.0.0 -7f0e3f3e6000-7f0e3f3e7000 rw-p 00006000 08:20 176160 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_rust.so.2601.0.0 -7f0e3f3e7000-7f0e3f3e9000 r--p 00000000 08:20 175645 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_internal.so.2601.0.0 -7f0e3f3e9000-7f0e3f3eb000 r-xp 00002000 08:20 175645 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_internal.so.2601.0.0 -7f0e3f3eb000-7f0e3f3ec000 r--p 00004000 08:20 175645 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_internal.so.2601.0.0 -7f0e3f3ec000-7f0e3f3ed000 r--p 00004000 08:20 175645 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_internal.so.2601.0.0 -7f0e3f3ed000-7f0e3f3ee000 rw-p 00005000 08:20 175645 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_internal.so.2601.0.0 -7f0e3f3ee000-7f0e3f3f0000 r--p 00000000 08:20 176073 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_internal.so.2601.0.0 -7f0e3f3f0000-7f0e3f3fc000 r-xp 00002000 08:20 176073 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_internal.so.2601.0.0 -7f0e3f3fc000-7f0e3f3fe000 r--p 0000e000 08:20 176073 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_internal.so.2601.0.0 -7f0e3f3fe000-7f0e3f3ff000 r--p 00010000 08:20 176073 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_internal.so.2601.0.0 -7f0e3f3ff000-7f0e3f400000 rw-p 00011000 08:20 176073 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_internal.so.2601.0.0 -7f0e3f400000-7f0e4279d000 r-xp 00000000 08:20 101544 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublas.so.13.4.0.1 -7f0e4279d000-7f0e4299d000 ---p 0339d000 08:20 101544 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublas.so.13.4.0.1 -7f0e4299d000-7f0e429a9000 r--p 0339d000 08:20 101544 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublas.so.13.4.0.1 -7f0e429a9000-7f0e429b0000 rw-p 033a9000 08:20 101544 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublas.so.13.4.0.1 -7f0e429b0000-7f0e429d4000 rw-p 00000000 00:00 0 -7f0e429d4000-7f0e429d5000 r--p 00000000 08:20 174727 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_program_name.so.2601.0.0 -7f0e429d5000-7f0e429d6000 r-xp 00001000 08:20 174727 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_program_name.so.2601.0.0 -7f0e429d6000-7f0e429d7000 r--p 00002000 08:20 174727 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_program_name.so.2601.0.0 -7f0e429d7000-7f0e429d8000 r--p 00002000 08:20 174727 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_program_name.so.2601.0.0 -7f0e429d8000-7f0e429d9000 rw-p 00003000 08:20 174727 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_program_name.so.2601.0.0 -7f0e429d9000-7f0e429db000 r--p 00000000 08:20 174492 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_debugging_internal.so.2601.0.0 -7f0e429db000-7f0e429dc000 r-xp 00002000 08:20 174492 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_debugging_internal.so.2601.0.0 -7f0e429dc000-7f0e429dd000 r--p 00003000 08:20 174492 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_debugging_internal.so.2601.0.0 -7f0e429dd000-7f0e429de000 r--p 00003000 08:20 174492 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_debugging_internal.so.2601.0.0 -7f0e429de000-7f0e429df000 rw-p 00004000 08:20 174492 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_debugging_internal.so.2601.0.0 -7f0e429df000-7f0e429e0000 r--p 00000000 08:20 172719 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_borrowed_fixup_buffer.so.2601.0.0 -7f0e429e0000-7f0e429e1000 r-xp 00001000 08:20 172719 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_borrowed_fixup_buffer.so.2601.0.0 -7f0e429e1000-7f0e429e2000 r--p 00002000 08:20 172719 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_borrowed_fixup_buffer.so.2601.0.0 -7f0e429e2000-7f0e429e3000 r--p 00002000 08:20 172719 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_borrowed_fixup_buffer.so.2601.0.0 -7f0e429e3000-7f0e429e4000 rw-p 00003000 08:20 172719 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_borrowed_fixup_buffer.so.2601.0.0 -7f0e429e4000-7f0e429fc000 rw-p 00000000 00:00 0 -7f0e429fc000-7f0e429fe000 r--p 00000000 08:20 177931 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc32c.so.2601.0.0 -7f0e429fe000-7f0e429ff000 r-xp 00002000 08:20 177931 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc32c.so.2601.0.0 -7f0e429ff000-7f0e42a00000 r--p 00003000 08:20 177931 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc32c.so.2601.0.0 -7f0e42a00000-7f0e42a01000 r--p 00003000 08:20 177931 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc32c.so.2601.0.0 -7f0e42a01000-7f0e42a02000 rw-p 00004000 08:20 177931 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc32c.so.2601.0.0 -7f0e42a02000-7f0e42a03000 r--p 00000000 08:20 177959 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_sink.so.2601.0.0 -7f0e42a03000-7f0e42a04000 r-xp 00001000 08:20 177959 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_sink.so.2601.0.0 -7f0e42a04000-7f0e42a05000 r--p 00002000 08:20 177959 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_sink.so.2601.0.0 -7f0e42a05000-7f0e42a06000 r--p 00002000 08:20 177959 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_sink.so.2601.0.0 -7f0e42a06000-7f0e42a07000 rw-p 00003000 08:20 177959 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_sink.so.2601.0.0 -7f0e42a07000-7f0e42a09000 r--p 00000000 08:20 175392 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_symbolize.so.2601.0.0 -7f0e42a09000-7f0e42a0c000 r-xp 00002000 08:20 175392 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_symbolize.so.2601.0.0 -7f0e42a0c000-7f0e42a0d000 r--p 00005000 08:20 175392 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_symbolize.so.2601.0.0 -7f0e42a0d000-7f0e42a0e000 r--p 00006000 08:20 175392 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_symbolize.so.2601.0.0 -7f0e42a0e000-7f0e42a0f000 rw-p 00007000 08:20 175392 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_symbolize.so.2601.0.0 -7f0e42a0f000-7f0e42a10000 r--p 00000000 08:20 176368 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_private_handle_accessor.so.2601.0.0 -7f0e42a10000-7f0e42a11000 r-xp 00001000 08:20 176368 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_private_handle_accessor.so.2601.0.0 -7f0e42a11000-7f0e42a12000 r--p 00002000 08:20 176368 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_private_handle_accessor.so.2601.0.0 -7f0e42a12000-7f0e42a13000 r--p 00002000 08:20 176368 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_private_handle_accessor.so.2601.0.0 -7f0e42a13000-7f0e42a14000 rw-p 00003000 08:20 176368 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_private_handle_accessor.so.2601.0.0 -7f0e42a14000-7f0e42a16000 r--p 00000000 08:20 176315 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_config.so.2601.0.0 -7f0e42a16000-7f0e42a18000 r-xp 00002000 08:20 176315 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_config.so.2601.0.0 -7f0e42a18000-7f0e42a19000 r--p 00004000 08:20 176315 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_config.so.2601.0.0 -7f0e42a19000-7f0e42a1a000 r--p 00004000 08:20 176315 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_config.so.2601.0.0 -7f0e42a1a000-7f0e42a1b000 rw-p 00005000 08:20 176315 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_config.so.2601.0.0 -7f0e42a1b000-7f0e42a1c000 r--p 00000000 08:20 174103 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag_internal.so.2601.0.0 -7f0e42a1c000-7f0e42a1d000 r-xp 00001000 08:20 174103 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag_internal.so.2601.0.0 -7f0e42a1d000-7f0e42a1e000 r--p 00002000 08:20 174103 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag_internal.so.2601.0.0 -7f0e42a1e000-7f0e42a1f000 r--p 00002000 08:20 174103 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag_internal.so.2601.0.0 -7f0e42a1f000-7f0e42a20000 rw-p 00003000 08:20 174103 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag_internal.so.2601.0.0 -7f0e42a20000-7f0e42a21000 r--p 00000000 08:20 175648 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag.so.2601.0.0 -7f0e42a21000-7f0e42a22000 r-xp 00001000 08:20 175648 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag.so.2601.0.0 -7f0e42a22000-7f0e42a23000 r--p 00002000 08:20 175648 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag.so.2601.0.0 -7f0e42a23000-7f0e42a24000 r--p 00002000 08:20 175648 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag.so.2601.0.0 -7f0e42a24000-7f0e42a25000 rw-p 00003000 08:20 175648 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag.so.2601.0.0 -7f0e42a25000-7f0e42a26000 r--p 00000000 08:20 172450 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_platform.so.2601.0.0 -7f0e42a26000-7f0e42a27000 r-xp 00001000 08:20 172450 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_platform.so.2601.0.0 -7f0e42a27000-7f0e42a29000 r--p 00002000 08:20 172450 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_platform.so.2601.0.0 -7f0e42a29000-7f0e42a2a000 r--p 00003000 08:20 172450 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_platform.so.2601.0.0 -7f0e42a2a000-7f0e42a2b000 rw-p 00004000 08:20 172450 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_platform.so.2601.0.0 -7f0e42a2b000-7f0e42a2c000 r--p 00000000 08:20 178131 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes.so.2601.0.0 -7f0e42a2c000-7f0e42a2d000 r-xp 00001000 08:20 178131 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes.so.2601.0.0 -7f0e42a2d000-7f0e42a2e000 r--p 00002000 08:20 178131 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes.so.2601.0.0 -7f0e42a2e000-7f0e42a2f000 r--p 00002000 08:20 178131 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes.so.2601.0.0 -7f0e42a2f000-7f0e42a30000 rw-p 00003000 08:20 178131 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes.so.2601.0.0 -7f0e42a30000-7f0e42a31000 r--p 00000000 08:20 176601 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_seed_gen_exception.so.2601.0.0 -7f0e42a31000-7f0e42a32000 r-xp 00001000 08:20 176601 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_seed_gen_exception.so.2601.0.0 -7f0e42a32000-7f0e42a33000 r--p 00002000 08:20 176601 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_seed_gen_exception.so.2601.0.0 -7f0e42a33000-7f0e42a34000 r--p 00002000 08:20 176601 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_seed_gen_exception.so.2601.0.0 -7f0e42a34000-7f0e42a35000 rw-p 00003000 08:20 176601 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_seed_gen_exception.so.2601.0.0 -7f0e42a35000-7f0e42a36000 r--p 00000000 08:20 178171 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_seed_material.so.2601.0.0 -7f0e42a36000-7f0e42a37000 r-xp 00001000 08:20 178171 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_seed_material.so.2601.0.0 -7f0e42a37000-7f0e42a38000 r--p 00002000 08:20 178171 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_seed_material.so.2601.0.0 -7f0e42a38000-7f0e42a39000 r--p 00002000 08:20 178171 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_seed_material.so.2601.0.0 -7f0e42a39000-7f0e42a3a000 rw-p 00003000 08:20 178171 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_seed_material.so.2601.0.0 -7f0e42a3a000-7f0e42a3b000 r--p 00000000 08:20 175910 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_city.so.2601.0.0 -7f0e42a3b000-7f0e42a3c000 r-xp 00001000 08:20 175910 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_city.so.2601.0.0 -7f0e42a3c000-7f0e42a3d000 r--p 00002000 08:20 175910 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_city.so.2601.0.0 -7f0e42a3d000-7f0e42a3e000 r--p 00002000 08:20 175910 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_city.so.2601.0.0 -7f0e42a3e000-7f0e42a3f000 rw-p 00003000 08:20 175910 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_city.so.2601.0.0 -7f0e42a3f000-7f0e42a41000 r--p 00000000 08:20 174503 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hashtablez_sampler.so.2601.0.0 -7f0e42a41000-7f0e42a42000 r-xp 00002000 08:20 174503 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hashtablez_sampler.so.2601.0.0 -7f0e42a42000-7f0e42a43000 r--p 00003000 08:20 174503 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hashtablez_sampler.so.2601.0.0 -7f0e42a43000-7f0e42a44000 r--p 00003000 08:20 174503 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hashtablez_sampler.so.2601.0.0 -7f0e42a44000-7f0e42a45000 rw-p 00004000 08:20 174503 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hashtablez_sampler.so.2601.0.0 -7f0e42a45000-7f0e42a47000 r--p 00000000 08:20 176334 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_int128.so.2601.0.0 -7f0e42a47000-7f0e42a49000 r-xp 00002000 08:20 176334 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_int128.so.2601.0.0 -7f0e42a49000-7f0e42a4a000 r--p 00004000 08:20 176334 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_int128.so.2601.0.0 -7f0e42a4a000-7f0e42a4b000 r--p 00004000 08:20 176334 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_int128.so.2601.0.0 -7f0e42a4b000-7f0e42a4c000 rw-p 00005000 08:20 176334 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_int128.so.2601.0.0 -7f0e42a4c000-7f0e42a4d000 r--p 00000000 08:20 173674 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_fnmatch.so.2601.0.0 -7f0e42a4d000-7f0e42a4e000 r-xp 00001000 08:20 173674 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_fnmatch.so.2601.0.0 -7f0e42a4e000-7f0e42a4f000 r--p 00002000 08:20 173674 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_fnmatch.so.2601.0.0 -7f0e42a4f000-7f0e42a50000 r--p 00002000 08:20 173674 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_fnmatch.so.2601.0.0 -7f0e42a50000-7f0e42a51000 rw-p 00003000 08:20 173674 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_fnmatch.so.2601.0.0 -7f0e42a51000-7f0e42a53000 r--p 00000000 08:20 176024 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_malloc_internal.so.2601.0.0 -7f0e42a53000-7f0e42a55000 r-xp 00002000 08:20 176024 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_malloc_internal.so.2601.0.0 -7f0e42a55000-7f0e42a56000 r--p 00004000 08:20 176024 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_malloc_internal.so.2601.0.0 -7f0e42a56000-7f0e42a57000 r--p 00004000 08:20 176024 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_malloc_internal.so.2601.0.0 -7f0e42a57000-7f0e42a58000 rw-p 00005000 08:20 176024 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_malloc_internal.so.2601.0.0 -7f0e42a58000-7f0e42a59000 r--p 00000000 08:20 178559 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_tracing_internal.so.2601.0.0 -7f0e42a59000-7f0e42a5a000 r-xp 00001000 08:20 178559 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_tracing_internal.so.2601.0.0 -7f0e42a5a000-7f0e42a5b000 r--p 00002000 08:20 178559 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_tracing_internal.so.2601.0.0 -7f0e42a5b000-7f0e42a5c000 r--p 00002000 08:20 178559 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_tracing_internal.so.2601.0.0 -7f0e42a5c000-7f0e42a5d000 rw-p 00003000 08:20 178559 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_tracing_internal.so.2601.0.0 -7f0e42a5d000-7f0e42a5e000 r--p 00000000 08:20 173445 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_exponential_biased.so.2601.0.0 -7f0e42a5e000-7f0e42a5f000 r-xp 00001000 08:20 173445 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_exponential_biased.so.2601.0.0 -7f0e42a5f000-7f0e42a60000 r--p 00002000 08:20 173445 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_exponential_biased.so.2601.0.0 -7f0e42a60000-7f0e42a61000 r--p 00002000 08:20 173445 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_exponential_biased.so.2601.0.0 -7f0e42a61000-7f0e42a62000 rw-p 00003000 08:20 173445 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_exponential_biased.so.2601.0.0 -7f0e42a62000-7f0e42a63000 r--p 00000000 08:20 173659 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_stacktrace.so.2601.0.0 -7f0e42a63000-7f0e42a65000 r-xp 00001000 08:20 173659 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_stacktrace.so.2601.0.0 -7f0e42a65000-7f0e42a66000 r--p 00003000 08:20 173659 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_stacktrace.so.2601.0.0 -7f0e42a66000-7f0e42a67000 r--p 00003000 08:20 173659 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_stacktrace.so.2601.0.0 -7f0e42a67000-7f0e42a68000 rw-p 00004000 08:20 173659 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_stacktrace.so.2601.0.0 -7f0e42a68000-7f0e42a6a000 r--p 00000000 08:20 177928 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_handle.so.2601.0.0 -7f0e42a6a000-7f0e42a6b000 r-xp 00002000 08:20 177928 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_handle.so.2601.0.0 -7f0e42a6b000-7f0e42a6c000 r--p 00003000 08:20 177928 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_handle.so.2601.0.0 -7f0e42a6c000-7f0e42a6d000 r--p 00003000 08:20 177928 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_handle.so.2601.0.0 -7f0e42a6d000-7f0e42a6e000 rw-p 00004000 08:20 177928 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_handle.so.2601.0.0 -7f0e42a6e000-7f0e42a70000 r--p 00000000 08:20 175778 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_cord_state.so.2601.0.0 -7f0e42a70000-7f0e42a74000 r-xp 00002000 08:20 175778 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_cord_state.so.2601.0.0 -7f0e42a74000-7f0e42a75000 r--p 00006000 08:20 175778 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_cord_state.so.2601.0.0 -7f0e42a75000-7f0e42a76000 r--p 00006000 08:20 175778 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_cord_state.so.2601.0.0 -7f0e42a76000-7f0e42a77000 rw-p 00007000 08:20 175778 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_cord_state.so.2601.0.0 -7f0e42a77000-7f0e42a78000 r--p 00000000 08:20 177417 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_logging_internal.so.2601.0.0 -7f0e42a78000-7f0e42a79000 r-xp 00001000 08:20 177417 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_logging_internal.so.2601.0.0 -7f0e42a79000-7f0e42a7a000 r--p 00002000 08:20 177417 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_logging_internal.so.2601.0.0 -7f0e42a7a000-7f0e42a7b000 r--p 00002000 08:20 177417 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_logging_internal.so.2601.0.0 -7f0e42a7b000-7f0e42a7c000 rw-p 00003000 08:20 177417 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_logging_internal.so.2601.0.0 -7f0e42a7c000-7f0e42a7e000 r--p 00000000 08:20 173916 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_base.so.2601.0.0 -7f0e42a7e000-7f0e42a7f000 r-xp 00002000 08:20 173916 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_base.so.2601.0.0 -7f0e42a7f000-7f0e42a80000 r--p 00003000 08:20 173916 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_base.so.2601.0.0 -7f0e42a80000-7f0e42a81000 r--p 00003000 08:20 173916 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_base.so.2601.0.0 -7f0e42a81000-7f0e42a82000 rw-p 00004000 08:20 173916 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_base.so.2601.0.0 -7f0e42a82000-7f0e42a84000 r--p 00000000 08:20 177853 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings_internal.so.2601.0.0 -7f0e42a84000-7f0e42a85000 r-xp 00002000 08:20 177853 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings_internal.so.2601.0.0 -7f0e42a85000-7f0e42a86000 r--p 00003000 08:20 177853 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings_internal.so.2601.0.0 -7f0e42a86000-7f0e42a87000 r--p 00003000 08:20 177853 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings_internal.so.2601.0.0 -7f0e42a87000-7f0e42a88000 rw-p 00004000 08:20 177853 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings_internal.so.2601.0.0 -7f0e42a88000-7f0e42a89000 r--p 00000000 08:20 174472 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_proto.so.2601.0.0 -7f0e42a89000-7f0e42a8a000 r-xp 00001000 08:20 174472 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_proto.so.2601.0.0 -7f0e42a8a000-7f0e42a8b000 r--p 00002000 08:20 174472 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_proto.so.2601.0.0 -7f0e42a8b000-7f0e42a8c000 r--p 00002000 08:20 174472 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_proto.so.2601.0.0 -7f0e42a8c000-7f0e42a8d000 rw-p 00003000 08:20 174472 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_proto.so.2601.0.0 -7f0e42a8d000-7f0e42a8e000 r--p 00000000 08:20 177006 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_globals.so.2601.0.0 -7f0e42a8e000-7f0e42a8f000 r-xp 00001000 08:20 177006 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_globals.so.2601.0.0 -7f0e42a8f000-7f0e42a90000 r--p 00002000 08:20 177006 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_globals.so.2601.0.0 -7f0e42a90000-7f0e42a91000 r--p 00002000 08:20 177006 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_globals.so.2601.0.0 -7f0e42a91000-7f0e42a92000 rw-p 00003000 08:20 177006 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_globals.so.2601.0.0 -7f0e42a92000-7f0e42a94000 r--p 00000000 08:20 172473 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_log_sink_set.so.2601.0.0 -7f0e42a94000-7f0e42a95000 r-xp 00002000 08:20 172473 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_log_sink_set.so.2601.0.0 -7f0e42a95000-7f0e42a96000 r--p 00003000 08:20 172473 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_log_sink_set.so.2601.0.0 -7f0e42a96000-7f0e42a97000 r--p 00003000 08:20 172473 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_log_sink_set.so.2601.0.0 -7f0e42a97000-7f0e42a98000 rw-p 00004000 08:20 172473 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_log_sink_set.so.2601.0.0 -7f0e42a98000-7f0e42a99000 r--p 00000000 08:20 173223 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strerror.so.2601.0.0 -7f0e42a99000-7f0e42a9a000 r-xp 00001000 08:20 173223 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strerror.so.2601.0.0 -7f0e42a9a000-7f0e42a9b000 r--p 00002000 08:20 173223 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strerror.so.2601.0.0 -7f0e42a9b000-7f0e42a9c000 r--p 00002000 08:20 173223 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strerror.so.2601.0.0 -7f0e42a9c000-7f0e42a9d000 rw-p 00003000 08:20 173223 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strerror.so.2601.0.0 -7f0e42a9d000-7f0e42a9e000 r--p 00000000 08:20 175668 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_structured_proto.so.2601.0.0 -7f0e42a9e000-7f0e42a9f000 r-xp 00001000 08:20 175668 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_structured_proto.so.2601.0.0 -7f0e42a9f000-7f0e42aa0000 r--p 00002000 08:20 175668 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_structured_proto.so.2601.0.0 -7f0e42aa0000-7f0e42aa1000 r--p 00002000 08:20 175668 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_structured_proto.so.2601.0.0 -7f0e42aa1000-7f0e42aa2000 rw-p 00003000 08:20 175668 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_structured_proto.so.2601.0.0 -7f0e42aa2000-7f0e42aa4000 r--p 00000000 08:20 173934 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_format.so.2601.0.0 -7f0e42aa4000-7f0e42aa5000 r-xp 00002000 08:20 173934 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_format.so.2601.0.0 -7f0e42aa5000-7f0e42aa6000 r--p 00003000 08:20 173934 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_format.so.2601.0.0 -7f0e42aa6000-7f0e42aa7000 r--p 00003000 08:20 173934 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_format.so.2601.0.0 -7f0e42aa7000-7f0e42aa8000 rw-p 00004000 08:20 173934 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_format.so.2601.0.0 -7f0e42aa8000-7f0e42aab000 r--p 00000000 08:20 172840 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_reflection.so.2601.0.0 -7f0e42aab000-7f0e42ab1000 r-xp 00003000 08:20 172840 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_reflection.so.2601.0.0 -7f0e42ab1000-7f0e42ab3000 r--p 00009000 08:20 172840 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_reflection.so.2601.0.0 -7f0e42ab3000-7f0e42ab4000 r--p 0000a000 08:20 172840 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_reflection.so.2601.0.0 -7f0e42ab4000-7f0e42ab5000 rw-p 0000b000 08:20 172840 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_reflection.so.2601.0.0 -7f0e42ab5000-7f0e42ab9000 r--p 00000000 08:20 173480 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_marshalling.so.2601.0.0 -7f0e42ab9000-7f0e42abe000 r-xp 00004000 08:20 173480 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_marshalling.so.2601.0.0 -7f0e42abe000-7f0e42abf000 r--p 00009000 08:20 173480 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_marshalling.so.2601.0.0 -7f0e42abf000-7f0e42ac0000 r--p 0000a000 08:20 173480 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_marshalling.so.2601.0.0 -7f0e42ac0000-7f0e42ac1000 rw-p 0000b000 08:20 173480 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_marshalling.so.2601.0.0 -7f0e42ac1000-7f0e42d51000 r--p 00000000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so -7f0e42d51000-7f0e43960000 r-xp 00290000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so -7f0e43960000-7f0e43c88000 r--p 00e9f000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so -7f0e43c88000-7f0e43ca9000 r--p 011c7000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so -7f0e43ca9000-7f0e43cb0000 rw-p 011e8000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so -7f0e43cb0000-7f0e44e30000 rw-p 00000000 00:00 0 -7f0e44e30000-7f0e44e31000 ---p 0236f000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so -7f0e44e31000-7f0e48000000 rw-p 011ef000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so -7f0e48000000-7f0e48043000 rw-p 00000000 00:00 0 -7f0e48043000-7f0e4c000000 ---p 00000000 00:00 0 -7f0e4c000000-7f0e4c021000 rw-p 00000000 00:00 0 -7f0e4c021000-7f0e50000000 ---p 00000000 00:00 0 -7f0e50000000-7f0e50021000 rw-p 00000000 00:00 0 -7f0e50021000-7f0e54000000 ---p 00000000 00:00 0 -7f0e54000000-7f0e54021000 rw-p 00000000 00:00 0 -7f0e54021000-7f0e58000000 ---p 00000000 00:00 0 -7f0e58000000-7f0e58021000 rw-p 00000000 00:00 0 -7f0e58021000-7f0e5c000000 ---p 00000000 00:00 0 -7f0e5c000000-7f0e5c021000 rw-p 00000000 00:00 0 -7f0e5c021000-7f0e60000000 ---p 00000000 00:00 0 -7f0e60000000-7f0e60021000 rw-p 00000000 00:00 0 -7f0e60021000-7f0e64000000 ---p 00000000 00:00 0 -7f0e64000000-7f0e6418b000 rw-p 00000000 00:00 0 -7f0e6418b000-7f0e68000000 ---p 00000000 00:00 0 -7f0e68000000-7f0e684ab000 rw-p 00000000 00:00 0 -7f0e684ab000-7f0e6c000000 ---p 00000000 00:00 0 -7f0e6c000000-7f0e6c1fc000 rw-p 00000000 00:00 0 -7f0e6c1fc000-7f0e70000000 ---p 00000000 00:00 0 -7f0e70000000-7f0e70021000 rw-p 00000000 00:00 0 -7f0e70021000-7f0e74000000 ---p 00000000 00:00 0 -7f0e74000000-7f0e74021000 rw-p 00000000 00:00 0 -7f0e74021000-7f0e78000000 ---p 00000000 00:00 0 -7f0e78000000-7f0e78021000 rw-p 00000000 00:00 0 -7f0e78021000-7f0e7c000000 ---p 00000000 00:00 0 -7f0e7c000000-7f0e7c021000 rw-p 00000000 00:00 0 -7f0e7c021000-7f0e80000000 ---p 00000000 00:00 0 -7f0e80000000-7f0e80021000 rw-p 00000000 00:00 0 -7f0e80021000-7f0e84000000 ---p 00000000 00:00 0 -7f0e84000000-7f0e84021000 rw-p 00000000 00:00 0 -7f0e84021000-7f0e88000000 ---p 00000000 00:00 0 -7f0e88000000-7f0e88021000 rw-p 00000000 00:00 0 -7f0e88021000-7f0e8c000000 ---p 00000000 00:00 0 -7f0e8c000000-7f0e8c021000 rw-p 00000000 00:00 0 -7f0e8c021000-7f0e90000000 ---p 00000000 00:00 0 -7f0e90000000-7f0e90001000 r--p 00000000 08:20 172814 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_examine_stack.so.2601.0.0 -7f0e90001000-7f0e90002000 r-xp 00001000 08:20 172814 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_examine_stack.so.2601.0.0 -7f0e90002000-7f0e90003000 r--p 00002000 08:20 172814 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_examine_stack.so.2601.0.0 -7f0e90003000-7f0e90004000 r--p 00002000 08:20 172814 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_examine_stack.so.2601.0.0 -7f0e90004000-7f0e90005000 rw-p 00003000 08:20 172814 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_examine_stack.so.2601.0.0 -7f0e90005000-7f0e90006000 r--p 00000000 08:20 176086 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_leak_check.so.2601.0.0 -7f0e90006000-7f0e90007000 r-xp 00001000 08:20 176086 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_leak_check.so.2601.0.0 -7f0e90007000-7f0e90008000 r--p 00002000 08:20 176086 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_leak_check.so.2601.0.0 -7f0e90008000-7f0e90009000 r--p 00002000 08:20 176086 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_leak_check.so.2601.0.0 -7f0e90009000-7f0e9000a000 rw-p 00003000 08:20 176086 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_leak_check.so.2601.0.0 -7f0e9000a000-7f0e9000e000 r--p 00000000 08:20 176110 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_internal.so.2601.0.0 -7f0e9000e000-7f0e90011000 r-xp 00004000 08:20 176110 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_internal.so.2601.0.0 -7f0e90011000-7f0e90013000 r--p 00007000 08:20 176110 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_internal.so.2601.0.0 -7f0e90013000-7f0e90014000 r--p 00008000 08:20 176110 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_internal.so.2601.0.0 -7f0e90014000-7f0e90015000 rw-p 00009000 08:20 176110 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_internal.so.2601.0.0 -7f0e90015000-7f0e90016000 r--p 00000000 08:20 176919 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_slow.so.2601.0.0 -7f0e90016000-7f0e90017000 r-xp 00001000 08:20 176919 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_slow.so.2601.0.0 -7f0e90017000-7f0e90019000 r--p 00002000 08:20 176919 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_slow.so.2601.0.0 -7f0e90019000-7f0e9001a000 r--p 00003000 08:20 176919 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_slow.so.2601.0.0 -7f0e9001a000-7f0e9001b000 rw-p 00004000 08:20 176919 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_slow.so.2601.0.0 -7f0e9001b000-7f0e9001c000 r--p 00000000 08:20 172885 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes_impl.so.2601.0.0 -7f0e9001c000-7f0e9001d000 r-xp 00001000 08:20 172885 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes_impl.so.2601.0.0 -7f0e9001d000-7f0e9001e000 r--p 00002000 08:20 172885 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes_impl.so.2601.0.0 -7f0e9001e000-7f0e9001f000 r--p 00002000 08:20 172885 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes_impl.so.2601.0.0 -7f0e9001f000-7f0e90020000 rw-p 00003000 08:20 172885 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes_impl.so.2601.0.0 -7f0e90020000-7f0e90021000 r--p 00000000 08:20 173464 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen.so.2601.0.0 -7f0e90021000-7f0e90022000 r-xp 00001000 08:20 173464 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen.so.2601.0.0 -7f0e90022000-7f0e90023000 r--p 00002000 08:20 173464 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen.so.2601.0.0 -7f0e90023000-7f0e90024000 r--p 00002000 08:20 173464 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen.so.2601.0.0 -7f0e90024000-7f0e90025000 rw-p 00003000 08:20 173464 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen.so.2601.0.0 -7f0e90025000-7f0e90027000 r--p 00000000 08:20 178082 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_kernel_timeout_internal.so.2601.0.0 -7f0e90027000-7f0e90028000 r-xp 00002000 08:20 178082 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_kernel_timeout_internal.so.2601.0.0 -7f0e90028000-7f0e90029000 r--p 00003000 08:20 178082 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_kernel_timeout_internal.so.2601.0.0 -7f0e90029000-7f0e9002a000 r--p 00003000 08:20 178082 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_kernel_timeout_internal.so.2601.0.0 -7f0e9002a000-7f0e9002b000 rw-p 00004000 08:20 178082 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_kernel_timeout_internal.so.2601.0.0 -7f0e9002b000-7f0e9002d000 r--p 00000000 08:20 175359 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_entropy_pool.so.2601.0.0 -7f0e9002d000-7f0e9002e000 r-xp 00002000 08:20 175359 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_entropy_pool.so.2601.0.0 -7f0e9002e000-7f0e9002f000 r--p 00003000 08:20 175359 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_entropy_pool.so.2601.0.0 -7f0e9002f000-7f0e90030000 r--p 00003000 08:20 175359 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_entropy_pool.so.2601.0.0 -7f0e90030000-7f0e90031000 rw-p 00004000 08:20 175359 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_entropy_pool.so.2601.0.0 -7f0e90031000-7f0e90033000 r--p 00000000 08:20 178507 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_globals.so.2601.0.0 -7f0e90033000-7f0e90034000 r-xp 00002000 08:20 178507 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_globals.so.2601.0.0 -7f0e90034000-7f0e90035000 r--p 00003000 08:20 178507 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_globals.so.2601.0.0 -7f0e90035000-7f0e90036000 r--p 00003000 08:20 178507 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_globals.so.2601.0.0 -7f0e90036000-7f0e90037000 rw-p 00004000 08:20 178507 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_globals.so.2601.0.0 -7f0e90037000-7f0e9004f000 r--p 00000000 08:20 192153 /home/cbrissette/cuopt/.cuopt_env/lib/libre2.so.11 -7f0e9004f000-7f0e90095000 r-xp 00018000 08:20 192153 /home/cbrissette/cuopt/.cuopt_env/lib/libre2.so.11 -7f0e90095000-7f0e900ae000 r--p 0005e000 08:20 192153 /home/cbrissette/cuopt/.cuopt_env/lib/libre2.so.11 -7f0e900ae000-7f0e900b3000 r--p 00076000 08:20 192153 /home/cbrissette/cuopt/.cuopt_env/lib/libre2.so.11 -7f0e900b3000-7f0e900b4000 rw-p 0007b000 08:20 192153 /home/cbrissette/cuopt/.cuopt_env/lib/libre2.so.11 -7f0e900b4000-7f0e900c2000 r--p 00000000 08:20 84539 /home/cbrissette/cuopt/.cuopt_env/lib/libcares.so.2.19.5 -7f0e900c2000-7f0e900ed000 r-xp 0000e000 08:20 84539 /home/cbrissette/cuopt/.cuopt_env/lib/libcares.so.2.19.5 -7f0e900ed000-7f0e900f8000 r--p 00039000 08:20 84539 /home/cbrissette/cuopt/.cuopt_env/lib/libcares.so.2.19.5 -7f0e900f8000-7f0e900fa000 r--p 00043000 08:20 84539 /home/cbrissette/cuopt/.cuopt_env/lib/libcares.so.2.19.5 -7f0e900fa000-7f0e900fb000 rw-p 00045000 08:20 84539 /home/cbrissette/cuopt/.cuopt_env/lib/libcares.so.2.19.5 -7f0e900fb000-7f0e900fc000 r--p 00000000 08:20 139113 /home/cbrissette/cuopt/.cuopt_env/lib/libaddress_sorting.so.52.0.0 -7f0e900fc000-7f0e900fd000 r-xp 00001000 08:20 139113 /home/cbrissette/cuopt/.cuopt_env/lib/libaddress_sorting.so.52.0.0 -7f0e900fd000-7f0e900fe000 r--p 00002000 08:20 139113 /home/cbrissette/cuopt/.cuopt_env/lib/libaddress_sorting.so.52.0.0 -7f0e900fe000-7f0e900ff000 r--p 00002000 08:20 139113 /home/cbrissette/cuopt/.cuopt_env/lib/libaddress_sorting.so.52.0.0 -7f0e900ff000-7f0e90100000 rw-p 00003000 08:20 139113 /home/cbrissette/cuopt/.cuopt_env/lib/libaddress_sorting.so.52.0.0 -7f0e90100000-7f0e90103000 r--p 00000000 08:20 175772 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_throw_delegate.so.2601.0.0 -7f0e90103000-7f0e90104000 r-xp 00003000 08:20 175772 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_throw_delegate.so.2601.0.0 -7f0e90104000-7f0e90105000 r--p 00004000 08:20 175772 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_throw_delegate.so.2601.0.0 -7f0e90105000-7f0e90106000 r--p 00004000 08:20 175772 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_throw_delegate.so.2601.0.0 -7f0e90106000-7f0e90107000 rw-p 00005000 08:20 175772 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_throw_delegate.so.2601.0.0 -7f0e90107000-7f0e90108000 r--p 00000000 08:20 174707 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_spinlock_wait.so.2601.0.0 -7f0e90108000-7f0e90109000 r-xp 00001000 08:20 174707 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_spinlock_wait.so.2601.0.0 -7f0e90109000-7f0e9010a000 r--p 00002000 08:20 174707 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_spinlock_wait.so.2601.0.0 -7f0e9010a000-7f0e9010b000 r--p 00002000 08:20 174707 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_spinlock_wait.so.2601.0.0 -7f0e9010b000-7f0e9010c000 rw-p 00003000 08:20 174707 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_spinlock_wait.so.2601.0.0 -7f0e9010c000-7f0e9010d000 r--p 00000000 08:20 172795 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hash.so.2601.0.0 -7f0e9010d000-7f0e9010e000 r-xp 00001000 08:20 172795 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hash.so.2601.0.0 -7f0e9010e000-7f0e9010f000 r--p 00002000 08:20 172795 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hash.so.2601.0.0 -7f0e9010f000-7f0e90110000 r--p 00002000 08:20 172795 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hash.so.2601.0.0 -7f0e90110000-7f0e90111000 rw-p 00003000 08:20 172795 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hash.so.2601.0.0 -7f0e90111000-7f0e90118000 r--p 00000000 08:20 172948 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time_zone.so.2601.0.0 -7f0e90118000-7f0e9012c000 r-xp 00007000 08:20 172948 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time_zone.so.2601.0.0 -7f0e9012c000-7f0e9012f000 r--p 0001b000 08:20 172948 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time_zone.so.2601.0.0 -7f0e9012f000-7f0e90130000 r--p 0001e000 08:20 172948 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time_zone.so.2601.0.0 -7f0e90130000-7f0e90131000 rw-p 0001f000 08:20 172948 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time_zone.so.2601.0.0 -7f0e90131000-7f0e90137000 r--p 00000000 08:20 173780 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time.so.2601.0.0 -7f0e90137000-7f0e90144000 r-xp 00006000 08:20 173780 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time.so.2601.0.0 -7f0e90144000-7f0e90146000 r--p 00013000 08:20 173780 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time.so.2601.0.0 -7f0e90146000-7f0e90147000 r--p 00015000 08:20 173780 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time.so.2601.0.0 -7f0e90147000-7f0e90148000 rw-p 00016000 08:20 173780 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time.so.2601.0.0 -7f0e90148000-7f0e9014b000 r--p 00000000 08:20 174438 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord_internal.so.2601.0.0 -7f0e9014b000-7f0e90159000 r-xp 00003000 08:20 174438 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord_internal.so.2601.0.0 -7f0e90159000-7f0e9015b000 r--p 00011000 08:20 174438 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord_internal.so.2601.0.0 -7f0e9015b000-7f0e9015c000 r--p 00012000 08:20 174438 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord_internal.so.2601.0.0 -7f0e9015c000-7f0e9015d000 rw-p 00013000 08:20 174438 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord_internal.so.2601.0.0 -7f0e9015d000-7f0e9015f000 r--p 00000000 08:20 173725 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_hash_set.so.2601.0.0 -7f0e9015f000-7f0e90163000 r-xp 00002000 08:20 173725 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_hash_set.so.2601.0.0 -7f0e90163000-7f0e90164000 r--p 00006000 08:20 173725 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_hash_set.so.2601.0.0 -7f0e90164000-7f0e90165000 r--p 00007000 08:20 173725 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_hash_set.so.2601.0.0 -7f0e90165000-7f0e90166000 rw-p 00008000 08:20 173725 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_hash_set.so.2601.0.0 -7f0e90166000-7f0e90167000 r--p 00000000 08:20 174927 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_conditions.so.2601.0.0 -7f0e90167000-7f0e90168000 r-xp 00001000 08:20 174927 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_conditions.so.2601.0.0 -7f0e90168000-7f0e90169000 r--p 00002000 08:20 174927 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_conditions.so.2601.0.0 -7f0e90169000-7f0e9016a000 r--p 00002000 08:20 174927 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_conditions.so.2601.0.0 -7f0e9016a000-7f0e9016b000 rw-p 00003000 08:20 174927 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_conditions.so.2601.0.0 -7f0e9016b000-7f0e9016c000 r--p 00000000 08:20 144730 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_validity.so.33.5.0 -7f0e9016c000-7f0e9016d000 r-xp 00001000 08:20 144730 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_validity.so.33.5.0 -7f0e9016d000-7f0e9016e000 r--p 00002000 08:20 144730 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_validity.so.33.5.0 -7f0e9016e000-7f0e9016f000 r--p 00002000 08:20 144730 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_validity.so.33.5.0 -7f0e9016f000-7f0e90170000 rw-p 00003000 08:20 144730 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_validity.so.33.5.0 -7f0e90170000-7f0e90171000 r--p 00000000 08:20 173312 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_die_if_null.so.2601.0.0 -7f0e90171000-7f0e90172000 r-xp 00001000 08:20 173312 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_die_if_null.so.2601.0.0 -7f0e90172000-7f0e90173000 r--p 00002000 08:20 173312 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_die_if_null.so.2601.0.0 -7f0e90173000-7f0e90174000 r--p 00002000 08:20 173312 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_die_if_null.so.2601.0.0 -7f0e90174000-7f0e90175000 rw-p 00003000 08:20 173312 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_die_if_null.so.2601.0.0 -7f0e90175000-7f0e9017b000 r--p 00000000 08:20 178474 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_str_format_internal.so.2601.0.0 -7f0e9017b000-7f0e90191000 r-xp 00006000 08:20 178474 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_str_format_internal.so.2601.0.0 -7f0e90191000-7f0e90194000 r--p 0001c000 08:20 178474 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_str_format_internal.so.2601.0.0 -7f0e90194000-7f0e90195000 r--p 0001f000 08:20 178474 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_str_format_internal.so.2601.0.0 -7f0e90195000-7f0e90196000 rw-p 00020000 08:20 178474 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_str_format_internal.so.2601.0.0 -7f0e90196000-7f0e9019a000 r--p 00000000 08:20 178182 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_status.so.2601.0.0 -7f0e9019a000-7f0e9019e000 r-xp 00004000 08:20 178182 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_status.so.2601.0.0 -7f0e9019e000-7f0e901a0000 r--p 00008000 08:20 178182 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_status.so.2601.0.0 -7f0e901a0000-7f0e901a1000 r--p 00009000 08:20 178182 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_status.so.2601.0.0 -7f0e901a1000-7f0e901a2000 rw-p 0000a000 08:20 178182 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_status.so.2601.0.0 -7f0e901a2000-7f0e901a4000 r--p 00000000 08:20 175942 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_statusor.so.2601.0.0 -7f0e901a4000-7f0e901a5000 r-xp 00002000 08:20 175942 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_statusor.so.2601.0.0 -7f0e901a5000-7f0e901a6000 r--p 00003000 08:20 175942 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_statusor.so.2601.0.0 -7f0e901a6000-7f0e901a7000 r--p 00003000 08:20 175942 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_statusor.so.2601.0.0 -7f0e901a7000-7f0e901a8000 rw-p 00004000 08:20 175942 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_statusor.so.2601.0.0 -7f0e901a8000-7f0e901aa000 r--p 00000000 08:20 174394 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_vlog_config_internal.so.2601.0.0 -7f0e901aa000-7f0e901ae000 r-xp 00002000 08:20 174394 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_vlog_config_internal.so.2601.0.0 -7f0e901ae000-7f0e901af000 r--p 00006000 08:20 174394 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_vlog_config_internal.so.2601.0.0 -7f0e901af000-7f0e901b0000 r--p 00006000 08:20 174394 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_vlog_config_internal.so.2601.0.0 -7f0e901b0000-7f0e901b1000 rw-p 00007000 08:20 174394 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_vlog_config_internal.so.2601.0.0 -7f0e901b1000-7f0e901b2000 r--p 00000000 08:20 144825 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_range.so.33.5.0 -7f0e901b2000-7f0e901b3000 r-xp 00001000 08:20 144825 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_range.so.33.5.0 -7f0e901b3000-7f0e901b4000 r--p 00002000 08:20 144825 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_range.so.33.5.0 -7f0e901b4000-7f0e901b5000 r--p 00002000 08:20 144825 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_range.so.33.5.0 -7f0e901b5000-7f0e901b6000 rw-p 00003000 08:20 144825 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_range.so.33.5.0 -7f0e901b6000-7f0e901bd000 r--p 00000000 08:20 173525 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings.so.2601.0.0 -7f0e901bd000-7f0e901d4000 r-xp 00007000 08:20 173525 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings.so.2601.0.0 -7f0e901d4000-7f0e901dd000 r--p 0001e000 08:20 173525 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings.so.2601.0.0 -7f0e901dd000-7f0e901de000 r--p 00026000 08:20 173525 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings.so.2601.0.0 -7f0e901de000-7f0e901df000 rw-p 00027000 08:20 173525 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings.so.2601.0.0 -7f0e901df000-7f0e901e5000 r--p 00000000 08:20 176237 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_synchronization.so.2601.0.0 -7f0e901e5000-7f0e901ea000 r-xp 00006000 08:20 176237 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_synchronization.so.2601.0.0 -7f0e901ea000-7f0e901ed000 r--p 0000b000 08:20 176237 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_synchronization.so.2601.0.0 -7f0e901ed000-7f0e901ee000 r--p 0000d000 08:20 176237 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_synchronization.so.2601.0.0 -7f0e901ee000-7f0e901ef000 rw-p 0000e000 08:20 176237 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_synchronization.so.2601.0.0 -7f0e901ef000-7f0e901f1000 rw-p 00000000 00:00 0 -7f0e901f1000-7f0e901f2000 r--p 00000000 08:20 178365 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_functions.so.2601.0.0 -7f0e901f2000-7f0e901f3000 r-xp 00001000 08:20 178365 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_functions.so.2601.0.0 -7f0e901f3000-7f0e901f4000 r--p 00002000 08:20 178365 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_functions.so.2601.0.0 -7f0e901f4000-7f0e901f5000 r--p 00002000 08:20 178365 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_functions.so.2601.0.0 -7f0e901f5000-7f0e901f6000 rw-p 00003000 08:20 178365 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_functions.so.2601.0.0 -7f0e901f6000-7f0e901f8000 r--p 00000000 08:20 175257 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_info.so.2601.0.0 -7f0e901f8000-7f0e901fa000 r-xp 00002000 08:20 175257 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_info.so.2601.0.0 -7f0e901fa000-7f0e901fb000 r--p 00004000 08:20 175257 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_info.so.2601.0.0 -7f0e901fb000-7f0e901fc000 r--p 00004000 08:20 175257 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_info.so.2601.0.0 -7f0e901fc000-7f0e901fd000 rw-p 00005000 08:20 175257 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_info.so.2601.0.0 -7f0e901fd000-7f0e90203000 r--p 00000000 08:20 177056 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord.so.2601.0.0 -7f0e90203000-7f0e9021c000 r-xp 00006000 08:20 177056 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord.so.2601.0.0 -7f0e9021c000-7f0e9021f000 r--p 0001f000 08:20 177056 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord.so.2601.0.0 -7f0e9021f000-7f0e90220000 r--p 00021000 08:20 177056 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord.so.2601.0.0 -7f0e90220000-7f0e90221000 rw-p 00022000 08:20 177056 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord.so.2601.0.0 -7f0e90221000-7f0e90227000 r--p 00000000 08:20 173104 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_message.so.2601.0.0 -7f0e90227000-7f0e9022b000 r-xp 00006000 08:20 173104 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_message.so.2601.0.0 -7f0e9022b000-7f0e9022d000 r--p 0000a000 08:20 173104 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_message.so.2601.0.0 -7f0e9022d000-7f0e9022e000 r--p 0000b000 08:20 173104 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_message.so.2601.0.0 -7f0e9022e000-7f0e9022f000 rw-p 0000c000 08:20 173104 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_message.so.2601.0.0 -7f0e9022f000-7f0e9023b000 r--p 00000000 08:20 140730 /home/cbrissette/cuopt/.cuopt_env/lib/libgpr.so.52.0.0 -7f0e9023b000-7f0e90248000 r-xp 0000c000 08:20 140730 /home/cbrissette/cuopt/.cuopt_env/lib/libgpr.so.52.0.0 -7f0e90248000-7f0e9024e000 r--p 00019000 08:20 140730 /home/cbrissette/cuopt/.cuopt_env/lib/libgpr.so.52.0.0 -7f0e9024e000-7f0e9024f000 r--p 0001f000 08:20 140730 /home/cbrissette/cuopt/.cuopt_env/lib/libgpr.so.52.0.0 -7f0e9024f000-7f0e90250000 rw-p 00020000 08:20 140730 /home/cbrissette/cuopt/.cuopt_env/lib/libgpr.so.52.0.0 -7f0e90250000-7f0e902e5000 r--p 00000000 08:20 144643 /home/cbrissette/cuopt/.cuopt_env/lib/libprotobuf.so.33.5.0 -7f0e902e5000-7f0e90508000 r-xp 00095000 08:20 144643 /home/cbrissette/cuopt/.cuopt_env/lib/libprotobuf.so.33.5.0 -7f0e90508000-7f0e90574000 r--p 002b8000 08:20 144643 /home/cbrissette/cuopt/.cuopt_env/lib/libprotobuf.so.33.5.0 -7f0e90574000-7f0e9057f000 r--p 00324000 08:20 144643 /home/cbrissette/cuopt/.cuopt_env/lib/libprotobuf.so.33.5.0 -7f0e9057f000-7f0e90586000 rw-p 0032f000 08:20 144643 /home/cbrissette/cuopt/.cuopt_env/lib/libprotobuf.so.33.5.0 -7f0e90586000-7f0e90587000 rw-p 00000000 00:00 0 -7f0e90587000-7f0e90594000 r--p 00000000 08:20 83455 /home/cbrissette/cuopt/.cuopt_env/lib/libgomp.so.1.0.0 -7f0e90594000-7f0e905cd000 r-xp 0000d000 08:20 83455 /home/cbrissette/cuopt/.cuopt_env/lib/libgomp.so.1.0.0 -7f0e905cd000-7f0e905db000 r--p 00046000 08:20 83455 /home/cbrissette/cuopt/.cuopt_env/lib/libgomp.so.1.0.0 -7f0e905db000-7f0e905dc000 r--p 00054000 08:20 83455 /home/cbrissette/cuopt/.cuopt_env/lib/libgomp.so.1.0.0 -7f0e905dc000-7f0e905dd000 rw-p 00055000 08:20 83455 /home/cbrissette/cuopt/.cuopt_env/lib/libgomp.so.1.0.0 -7f0e905dd000-7f0e905f9000 r--p 00000000 08:20 182877 /home/cbrissette/cuopt/.cuopt_env/lib/librmm.so -7f0e905f9000-7f0e906b9000 r-xp 0001c000 08:20 182877 /home/cbrissette/cuopt/.cuopt_env/lib/librmm.so -7f0e906b9000-7f0e906e9000 r--p 000dc000 08:20 182877 /home/cbrissette/cuopt/.cuopt_env/lib/librmm.so -7f0e906e9000-7f0e906f0000 r--p 0010c000 08:20 182877 /home/cbrissette/cuopt/.cuopt_env/lib/librmm.so -7f0e906f0000-7f0e906f1000 rw-p 00113000 08:20 182877 /home/cbrissette/cuopt/.cuopt_env/lib/librmm.so -7f0e906f1000-7f0e906f3000 rw-p 00000000 00:00 0 -7f0e906f3000-7f0e90720000 r--p 00000000 08:20 140888 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc++.so.1.78.1 -7f0e90720000-7f0e90779000 r-xp 0002d000 08:20 140888 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc++.so.1.78.1 -7f0e90779000-7f0e90795000 r--p 00086000 08:20 140888 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc++.so.1.78.1 -7f0e90795000-7f0e9079a000 r--p 000a2000 08:20 140888 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc++.so.1.78.1 -7f0e9079a000-7f0e9079b000 rw-p 000a7000 08:20 140888 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc++.so.1.78.1 -7f0e9079b000-7f0e907a9000 r--p 00000000 08:20 194104 /home/cbrissette/cuopt/.cuopt_env/lib/libtbb.so.12.18 -7f0e907a9000-7f0e907d6000 r-xp 0000e000 08:20 194104 /home/cbrissette/cuopt/.cuopt_env/lib/libtbb.so.12.18 -7f0e907d6000-7f0e907e2000 r--p 0003b000 08:20 194104 /home/cbrissette/cuopt/.cuopt_env/lib/libtbb.so.12.18 -7f0e907e2000-7f0e907e4000 r--p 00046000 08:20 194104 /home/cbrissette/cuopt/.cuopt_env/lib/libtbb.so.12.18 -7f0e907e4000-7f0e907e7000 rw-p 00048000 08:20 194104 /home/cbrissette/cuopt/.cuopt_env/lib/libtbb.so.12.18 -7f0e907e7000-7f0e907fd000 rw-p 00000000 00:00 0 -7f0e907fd000-7f0e90801000 ---p 00000000 00:00 0 -7f0e90801000-7f0e908fd000 rw-p 00000000 00:00 0 -7f0e908fd000-7f0e90901000 ---p 00000000 00:00 0 -7f0e90901000-7f0e909fd000 rw-p 00000000 00:00 0 -7f0e909fd000-7f0e90a01000 ---p 00000000 00:00 0 -7f0e90a01000-7f0e90afd000 rw-p 00000000 00:00 0 -7f0e90afd000-7f0e90b01000 ---p 00000000 00:00 0 -7f0e90b01000-7f0e90bfd000 rw-p 00000000 00:00 0 -7f0e90bfd000-7f0e90c01000 ---p 00000000 00:00 0 -7f0e90c01000-7f0e90cfd000 rw-p 00000000 00:00 0 -7f0e90cfd000-7f0e90cfe000 ---p 00000000 00:00 0 -7f0e90cfe000-7f0e90dfe000 rw-p 00000000 00:00 0 -7f0e90dfe000-7f0e90e02000 ---p 00000000 00:00 0 -7f0e90e02000-7f0e90efe000 rw-p 00000000 00:00 0 -7f0e90efe000-7f0e90f02000 ---p 00000000 00:00 0 -7f0e90f02000-7f0e90ffe000 rw-p 00000000 00:00 0 -7f0e90ffe000-7f0e91002000 ---p 00000000 00:00 0 -7f0e91002000-7f0e910fe000 rw-p 00000000 00:00 0 -7f0e910fe000-7f0e91102000 ---p 00000000 00:00 0 -7f0e91102000-7f0e911fe000 rw-p 00000000 00:00 0 -7f0e911fe000-7f0e91202000 ---p 00000000 00:00 0 -7f0e91202000-7f0e912fe000 rw-p 00000000 00:00 0 -7f0e912fe000-7f0e91302000 ---p 00000000 00:00 0 -7f0e91302000-7f0e913fe000 rw-p 00000000 00:00 0 -7f0e913fe000-7f0e91402000 ---p 00000000 00:00 0 -7f0e91402000-7f0e914fe000 rw-p 00000000 00:00 0 -7f0e914fe000-7f0e91502000 ---p 00000000 00:00 0 -7f0e91502000-7f0e915fe000 rw-p 00000000 00:00 0 -7f0e915fe000-7f0e915ff000 ---p 00000000 00:00 0 -7f0e915ff000-7f0e91eff000 rw-p 00000000 00:00 0 -7f0e91eff000-7f0e91f00000 ---p 00000000 00:00 0 -7f0e91f00000-7f0e94000000 rw-p 00000000 00:00 0 -7f0e94000000-7f0e94021000 rw-p 00000000 00:00 0 -7f0e94021000-7f0e98000000 ---p 00000000 00:00 0 -7f0e98000000-7f0e98001000 rw-s a01e2a000 00:01 16566 /dev/zero (deleted) -7f0e98001000-7f0e98002000 r--p 00000000 08:20 172516 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_nullguard.so.2601.0.0 -7f0e98002000-7f0e98003000 r-xp 00001000 08:20 172516 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_nullguard.so.2601.0.0 -7f0e98003000-7f0e98004000 r--p 00002000 08:20 172516 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_nullguard.so.2601.0.0 -7f0e98004000-7f0e98005000 r--p 00002000 08:20 172516 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_nullguard.so.2601.0.0 -7f0e98005000-7f0e98006000 rw-p 00003000 08:20 172516 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_nullguard.so.2601.0.0 -7f0e98006000-7f0e98010000 r--p 00000000 08:20 198476 /home/cbrissette/cuopt/.cuopt_env/lib/librapids_logger.so -7f0e98010000-7f0e98041000 r-xp 0000a000 08:20 198476 /home/cbrissette/cuopt/.cuopt_env/lib/librapids_logger.so -7f0e98041000-7f0e9804e000 r--p 0003b000 08:20 198476 /home/cbrissette/cuopt/.cuopt_env/lib/librapids_logger.so -7f0e9804e000-7f0e98051000 r--p 00048000 08:20 198476 /home/cbrissette/cuopt/.cuopt_env/lib/librapids_logger.so -7f0e98051000-7f0e98052000 rw-p 0004b000 08:20 198476 /home/cbrissette/cuopt/.cuopt_env/lib/librapids_logger.so -7f0e98052000-7f0e98064000 r--p 00000000 08:20 78513 /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so -7f0e98064000-7f0e98080000 r-xp 00012000 08:20 78513 /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so -7f0e98080000-7f0e98089000 r--p 0002e000 08:20 78513 /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so -7f0e98089000-7f0e9808a000 r--p 00037000 08:20 78513 /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so -7f0e9808a000-7f0e9808b000 rw-p 00038000 08:20 78513 /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so -7f0e9808b000-7f0e9808c000 rw-p 00000000 00:00 0 -7f0e9808c000-7f0e9808d000 ---p 00000000 00:00 0 -7f0e9808d000-7f0e98870000 rw-p 00000000 00:00 0 -7f0e98870000-7f0e9b240000 ---p 00000000 00:00 0 -7f0e9b240000-7f0e9b248000 rw-p 00000000 00:00 0 -7f0e9b248000-7f0e9c248000 ---p 00000000 00:00 0 -7f0e9c248000-7f0e9c628000 rw-p 00000000 00:00 0 -7f0e9c628000-7f0e9eff8000 ---p 00000000 00:00 0 -7f0e9eff8000-7f0e9f000000 rw-p 00000000 00:00 0 -7f0e9f000000-7f0ea0000000 ---p 00000000 00:00 0 -7f0ea0000000-7f0ea0021000 rw-p 00000000 00:00 0 -7f0ea0021000-7f0ea4000000 ---p 00000000 00:00 0 -7f0ea4000000-7f0ea4001000 rw-s a01e29000 00:01 16565 /dev/zero (deleted) -7f0ea4001000-7f0ea4002000 rw-s a01e28000 00:01 16564 /dev/zero (deleted) -7f0ea4002000-7f0ea4003000 rw-s a01e27000 00:01 16563 /dev/zero (deleted) -7f0ea4003000-7f0ea4006000 r--p 00000000 08:20 175246 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_check_op.so.2601.0.0 -7f0ea4006000-7f0ea4009000 r-xp 00003000 08:20 175246 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_check_op.so.2601.0.0 -7f0ea4009000-7f0ea400a000 r--p 00006000 08:20 175246 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_check_op.so.2601.0.0 -7f0ea400a000-7f0ea400b000 r--p 00006000 08:20 175246 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_check_op.so.2601.0.0 -7f0ea400b000-7f0ea400c000 rw-p 00007000 08:20 175246 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_check_op.so.2601.0.0 -7f0ea400c000-7f0ea400d000 r--p 00000000 08:20 218634 /usr/lib/x86_64-linux-gnu/libpthread.so.0 -7f0ea400d000-7f0ea400e000 r-xp 00001000 08:20 218634 /usr/lib/x86_64-linux-gnu/libpthread.so.0 -7f0ea400e000-7f0ea400f000 r--p 00002000 08:20 218634 /usr/lib/x86_64-linux-gnu/libpthread.so.0 -7f0ea400f000-7f0ea4010000 r--p 00002000 08:20 218634 /usr/lib/x86_64-linux-gnu/libpthread.so.0 -7f0ea4010000-7f0ea4011000 rw-p 00003000 08:20 218634 /usr/lib/x86_64-linux-gnu/libpthread.so.0 -7f0ea4011000-7f0ea4012000 rw-s a01e26000 00:01 16562 /dev/zero (deleted) -7f0ea4012000-7f0ea4013000 rw-s a01e25000 00:01 16561 /dev/zero (deleted) -7f0ea4013000-7f0ea4014000 rw-s a01e24000 00:01 16560 /dev/zero (deleted) -7f0ea4014000-7f0ea4015000 rw-s a01e23000 00:01 16559 /dev/zero (deleted) -7f0ea4015000-7f0ea4016000 rw-s a01e22000 00:01 16558 /dev/zero (deleted) -7f0ea4016000-7f0ea4017000 rw-s a01e21000 00:01 16554 /dev/zero (deleted) -7f0ea4017000-7f0ea4018000 rw-s a01e20000 00:01 16553 /dev/zero (deleted) -7f0ea4018000-7f0ea4019000 rw-s a01e1f000 00:01 16552 /dev/zero (deleted) -7f0ea4019000-7f0ea401a000 rw-s a01e1e000 00:01 16551 /dev/zero (deleted) -7f0ea401a000-7f0ea401b000 rw-s a01e1d000 00:01 16550 /dev/zero (deleted) -7f0ea401b000-7f0ea401f000 r--p 00000000 08:20 294964 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnet.so -7f0ea401f000-7f0ea402d000 r-xp 00004000 08:20 294964 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnet.so -7f0ea402d000-7f0ea4031000 r--p 00012000 08:20 294964 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnet.so -7f0ea4031000-7f0ea4032000 r--p 00015000 08:20 294964 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnet.so -7f0ea4032000-7f0ea4033000 rw-p 00016000 08:20 294964 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnet.so -7f0ea4033000-7f0ea403a000 r--p 00000000 08:20 294965 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnio.so -7f0ea403a000-7f0ea4042000 r-xp 00007000 08:20 294965 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnio.so -7f0ea4042000-7f0ea4045000 r--p 0000f000 08:20 294965 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnio.so -7f0ea4045000-7f0ea4046000 r--p 00011000 08:20 294965 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnio.so -7f0ea4046000-7f0ea4047000 rw-p 00012000 08:20 294965 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnio.so -7f0ea4047000-7f0ea47cf000 rw-p 00000000 00:00 0 -7f0ea47cf000-7f0ea4a3f000 rwxp 00000000 00:00 0 -7f0ea4a3f000-7f0ea4f0e000 ---p 00000000 00:00 0 -7f0ea4f0e000-7f0ea51fe000 rwxp 00000000 00:00 0 -7f0ea51fe000-7f0eac36e000 ---p 00000000 00:00 0 -7f0eac36e000-7f0eac5de000 rwxp 00000000 00:00 0 -7f0eac5de000-7f0eb37cf000 ---p 00000000 00:00 0 -7f0eb37cf000-7f0ebc000000 r--s 00000000 08:20 294975 /usr/lib/jvm/java-11-openjdk-amd64/lib/modules -7f0ebc000000-7f0ebfccb000 rw-p 00000000 00:00 0 -7f0ebfccb000-7f0ec0000000 ---p 00000000 00:00 0 -7f0ec0000000-7f0ec0001000 r--p 00000000 00:00 0 -7f0ec0001000-7f0ec0002000 rw-s a01e1c000 00:01 16548 /dev/zero (deleted) -7f0ec0002000-7f0ec0003000 rw-s a01e1b000 00:01 16547 /dev/zero (deleted) -7f0ec0003000-7f0ec0005000 r--p 00000000 08:20 294962 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement_ext.so -7f0ec0005000-7f0ec0008000 r-xp 00002000 08:20 294962 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement_ext.so -7f0ec0008000-7f0ec000a000 r--p 00005000 08:20 294962 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement_ext.so -7f0ec000a000-7f0ec000b000 r--p 00006000 08:20 294962 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement_ext.so -7f0ec000b000-7f0ec000c000 rw-p 00007000 08:20 294962 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement_ext.so -7f0ec000c000-7f0ec000f000 r--p 00000000 08:20 294960 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement.so -7f0ec000f000-7f0ec0010000 r-xp 00003000 08:20 294960 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement.so -7f0ec0010000-7f0ec0011000 r--p 00004000 08:20 294960 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement.so -7f0ec0011000-7f0ec0012000 r--p 00004000 08:20 294960 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement.so -7f0ec0012000-7f0ec0013000 rw-p 00005000 08:20 294960 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement.so -7f0ec0013000-7f0ec006a000 r--p 00000000 08:20 217873 /usr/lib/locale/C.utf8/LC_CTYPE -7f0ec006a000-7f0ec006b000 r--p 00000000 08:20 217879 /usr/lib/locale/C.utf8/LC_NUMERIC -7f0ec006b000-7f0ec006c000 r--p 00000000 08:20 217882 /usr/lib/locale/C.utf8/LC_TIME -7f0ec006c000-7f0ec006d000 r--p 00000000 08:20 217872 /usr/lib/locale/C.utf8/LC_COLLATE -7f0ec006d000-7f0ec006e000 r--p 00000000 08:20 217877 /usr/lib/locale/C.utf8/LC_MONETARY -7f0ec006e000-7f0ec006f000 r--p 00000000 08:20 217876 /usr/lib/locale/C.utf8/LC_MESSAGES/SYS_LC_MESSAGES -7f0ec006f000-7f0ec0070000 r--p 00000000 08:20 217880 /usr/lib/locale/C.utf8/LC_PAPER -7f0ec0070000-7f0ec0071000 r--p 00000000 08:20 217878 /usr/lib/locale/C.utf8/LC_NAME -7f0ec0071000-7f0ec0072000 r--p 00000000 08:20 217871 /usr/lib/locale/C.utf8/LC_ADDRESS -7f0ec0072000-7f0ec0073000 r--p 00000000 08:20 217881 /usr/lib/locale/C.utf8/LC_TELEPHONE -7f0ec0073000-7f0ec007a000 r--s 00000000 08:20 218904 /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache -7f0ec007a000-7f0ec05da000 rw-p 00000000 00:00 0 -7f0ec05da000-7f0ec05db000 ---p 00000000 00:00 0 -7f0ec05db000-7f0ec06db000 rw-p 00000000 00:00 0 -7f0ec06db000-7f0ec06dc000 ---p 00000000 00:00 0 -7f0ec06dc000-7f0ec0a4e000 rw-p 00000000 00:00 0 -7f0ec0a4e000-7f0ec0f88000 ---p 00000000 00:00 0 -7f0ec0f88000-7f0ec0f89000 rw-p 00000000 00:00 0 -7f0ec0f89000-7f0ec1189000 ---p 00000000 00:00 0 -7f0ec1189000-7f0ec1205000 rw-p 00000000 00:00 0 -7f0ec1205000-7f0ec173f000 ---p 00000000 00:00 0 -7f0ec173f000-7f0ec1740000 rw-p 00000000 00:00 0 -7f0ec1740000-7f0ec1940000 ---p 00000000 00:00 0 -7f0ec1940000-7f0ec19bc000 rw-p 00000000 00:00 0 -7f0ec19bc000-7f0ec1ef6000 ---p 00000000 00:00 0 -7f0ec1ef6000-7f0ec1ef7000 rw-p 00000000 00:00 0 -7f0ec1ef7000-7f0ec20f7000 ---p 00000000 00:00 0 -7f0ec20f7000-7f0ec3006000 rw-p 00000000 00:00 0 -7f0ec3006000-7f0ec3007000 ---p 00000000 00:00 0 -7f0ec3007000-7f0ec310c000 rw-p 00000000 00:00 0 -7f0ec310c000-7f0ec31f0000 ---p 00000000 00:00 0 -7f0ec31f0000-7f0ec31f6000 rw-p 00000000 00:00 0 -7f0ec31f6000-7f0ec32d9000 ---p 00000000 00:00 0 -7f0ec32d9000-7f0ec32de000 rw-p 00000000 00:00 0 -7f0ec32de000-7f0ec32e8000 ---p 00000000 00:00 0 -7f0ec32e8000-7f0ec32ea000 r--p 00000000 08:20 294974 /usr/lib/jvm/java-11-openjdk-amd64/lib/libzip.so -7f0ec32ea000-7f0ec32ef000 r-xp 00002000 08:20 294974 /usr/lib/jvm/java-11-openjdk-amd64/lib/libzip.so -7f0ec32ef000-7f0ec32f1000 r--p 00007000 08:20 294974 /usr/lib/jvm/java-11-openjdk-amd64/lib/libzip.so -7f0ec32f1000-7f0ec32f2000 r--p 00008000 08:20 294974 /usr/lib/jvm/java-11-openjdk-amd64/lib/libzip.so -7f0ec32f2000-7f0ec32f3000 rw-p 00009000 08:20 294974 /usr/lib/jvm/java-11-openjdk-amd64/lib/libzip.so -7f0ec32f3000-7f0ec32fb000 rw-s 00000000 08:20 78560 /tmp/hsperfdata_cbrissette/1440122 -7f0ec32fb000-7f0ec32fc000 ---p 00000000 00:00 0 -7f0ec32fc000-7f0ec32fd000 r--p 00000000 00:00 0 -7f0ec32fd000-7f0ec330b000 r--p 00000000 08:20 294953 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjava.so -7f0ec330b000-7f0ec3321000 r-xp 0000e000 08:20 294953 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjava.so -7f0ec3321000-7f0ec3328000 r--p 00024000 08:20 294953 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjava.so -7f0ec3328000-7f0ec3329000 r--p 0002a000 08:20 294953 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjava.so -7f0ec3329000-7f0ec332a000 rw-p 0002b000 08:20 294953 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjava.so -7f0ec332a000-7f0ec332b000 rw-p 00000000 00:00 0 -7f0ec332b000-7f0ec3330000 r--p 00000000 08:20 294973 /usr/lib/jvm/java-11-openjdk-amd64/lib/libverify.so -7f0ec3330000-7f0ec3337000 r-xp 00005000 08:20 294973 /usr/lib/jvm/java-11-openjdk-amd64/lib/libverify.so -7f0ec3337000-7f0ec3339000 r--p 0000c000 08:20 294973 /usr/lib/jvm/java-11-openjdk-amd64/lib/libverify.so -7f0ec3339000-7f0ec333b000 r--p 0000d000 08:20 294973 /usr/lib/jvm/java-11-openjdk-amd64/lib/libverify.so -7f0ec333b000-7f0ec333c000 rw-p 0000f000 08:20 294973 /usr/lib/jvm/java-11-openjdk-amd64/lib/libverify.so -7f0ec333c000-7f0ec333d000 r--p 00000000 08:20 218636 /usr/lib/x86_64-linux-gnu/librt.so.1 -7f0ec333d000-7f0ec333e000 r-xp 00001000 08:20 218636 /usr/lib/x86_64-linux-gnu/librt.so.1 -7f0ec333e000-7f0ec333f000 r--p 00002000 08:20 218636 /usr/lib/x86_64-linux-gnu/librt.so.1 -7f0ec333f000-7f0ec3340000 r--p 00002000 08:20 218636 /usr/lib/x86_64-linux-gnu/librt.so.1 -7f0ec3340000-7f0ec3341000 rw-p 00003000 08:20 218636 /usr/lib/x86_64-linux-gnu/librt.so.1 -7f0ec3341000-7f0ec3345000 ---p 00000000 00:00 0 -7f0ec3345000-7f0ec3441000 rw-p 00000000 00:00 0 -7f0ec3441000-7f0ec3442000 r--p 00000000 08:20 218624 /usr/lib/x86_64-linux-gnu/libdl.so.2 -7f0ec3442000-7f0ec3443000 r-xp 00001000 08:20 218624 /usr/lib/x86_64-linux-gnu/libdl.so.2 -7f0ec3443000-7f0ec3444000 r--p 00002000 08:20 218624 /usr/lib/x86_64-linux-gnu/libdl.so.2 -7f0ec3444000-7f0ec3445000 r--p 00002000 08:20 218624 /usr/lib/x86_64-linux-gnu/libdl.so.2 -7f0ec3445000-7f0ec3446000 rw-p 00003000 08:20 218624 /usr/lib/x86_64-linux-gnu/libdl.so.2 -7f0ec3446000-7f0ec344a000 r--p 00000000 08:20 84327 /home/cbrissette/cuopt/.cuopt_env/lib/libgcc_s.so.1 -7f0ec344a000-7f0ec346d000 r-xp 00004000 08:20 84327 /home/cbrissette/cuopt/.cuopt_env/lib/libgcc_s.so.1 -7f0ec346d000-7f0ec3471000 r--p 00027000 08:20 84327 /home/cbrissette/cuopt/.cuopt_env/lib/libgcc_s.so.1 -7f0ec3471000-7f0ec3472000 r--p 0002a000 08:20 84327 /home/cbrissette/cuopt/.cuopt_env/lib/libgcc_s.so.1 -7f0ec3472000-7f0ec3473000 rw-p 0002b000 08:20 84327 /home/cbrissette/cuopt/.cuopt_env/lib/libgcc_s.so.1 -7f0ec3473000-7f0ec3481000 r--p 00000000 08:20 218625 /usr/lib/x86_64-linux-gnu/libm.so.6 -7f0ec3481000-7f0ec34fd000 r-xp 0000e000 08:20 218625 /usr/lib/x86_64-linux-gnu/libm.so.6 -7f0ec34fd000-7f0ec3558000 r--p 0008a000 08:20 218625 /usr/lib/x86_64-linux-gnu/libm.so.6 -7f0ec3558000-7f0ec3559000 r--p 000e4000 08:20 218625 /usr/lib/x86_64-linux-gnu/libm.so.6 -7f0ec3559000-7f0ec355a000 rw-p 000e5000 08:20 218625 /usr/lib/x86_64-linux-gnu/libm.so.6 -7f0ec355a000-7f0ec3604000 r--p 00000000 08:20 84948 /home/cbrissette/cuopt/.cuopt_env/lib/libstdc++.so.6.0.34 -7f0ec3604000-7f0ec3735000 r-xp 000aa000 08:20 84948 /home/cbrissette/cuopt/.cuopt_env/lib/libstdc++.so.6.0.34 -7f0ec3735000-7f0ec37c3000 r--p 001db000 08:20 84948 /home/cbrissette/cuopt/.cuopt_env/lib/libstdc++.so.6.0.34 -7f0ec37c3000-7f0ec37d2000 r--p 00268000 08:20 84948 /home/cbrissette/cuopt/.cuopt_env/lib/libstdc++.so.6.0.34 -7f0ec37d2000-7f0ec37d5000 rw-p 00277000 08:20 84948 /home/cbrissette/cuopt/.cuopt_env/lib/libstdc++.so.6.0.34 -7f0ec37d5000-7f0ec37d9000 rw-p 00000000 00:00 0 -7f0ec37d9000-7f0ec3a5c000 r--p 00000000 08:20 294978 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so -7f0ec3a5c000-7f0ec46fa000 r-xp 00283000 08:20 294978 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so -7f0ec46fa000-7f0ec4956000 r--p 00f21000 08:20 294978 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so -7f0ec4956000-7f0ec4a1a000 r--p 0117c000 08:20 294978 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so -7f0ec4a1a000-7f0ec4a55000 rw-p 01240000 08:20 294978 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so -7f0ec4a55000-7f0ec4aae000 rw-p 00000000 00:00 0 -7f0ec4aae000-7f0ec4ad6000 r--p 00000000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 -7f0ec4ad6000-7f0ec4c6b000 r-xp 00028000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 -7f0ec4c6b000-7f0ec4cc3000 r--p 001bd000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 -7f0ec4cc3000-7f0ec4cc4000 ---p 00215000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 -7f0ec4cc4000-7f0ec4cc8000 r--p 00215000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 -7f0ec4cc8000-7f0ec4cca000 rw-p 00219000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 -7f0ec4cca000-7f0ec4cd7000 rw-p 00000000 00:00 0 -7f0ec4cd7000-7f0ec4cd8000 r--p 00000000 08:20 217875 /usr/lib/locale/C.utf8/LC_MEASUREMENT -7f0ec4cd8000-7f0ec4cda000 r--p 00000000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so -7f0ec4cda000-7f0ec4cdd000 r-xp 00002000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so -7f0ec4cdd000-7f0ec4cde000 r--p 00005000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so -7f0ec4cde000-7f0ec4cdf000 ---p 00006000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so -7f0ec4cdf000-7f0ec4ce0000 r--p 00006000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so -7f0ec4ce0000-7f0ec4ce1000 rw-p 00007000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so -7f0ec4ce1000-7f0ec4ce4000 r--p 00000000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so -7f0ec4ce4000-7f0ec4cee000 r-xp 00003000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so -7f0ec4cee000-7f0ec4cf1000 r--p 0000d000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so -7f0ec4cf1000-7f0ec4cf2000 ---p 00010000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so -7f0ec4cf2000-7f0ec4cf3000 r--p 00010000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so -7f0ec4cf3000-7f0ec4cf4000 rw-p 00011000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so -7f0ec4cf4000-7f0ec4cf7000 r--p 00000000 08:20 83514 /home/cbrissette/cuopt/.cuopt_env/lib/libz.so.1.3.2 -7f0ec4cf7000-7f0ec4d07000 r-xp 00003000 08:20 83514 /home/cbrissette/cuopt/.cuopt_env/lib/libz.so.1.3.2 -7f0ec4d07000-7f0ec4d0d000 r--p 00013000 08:20 83514 /home/cbrissette/cuopt/.cuopt_env/lib/libz.so.1.3.2 -7f0ec4d0d000-7f0ec4d0e000 r--p 00019000 08:20 83514 /home/cbrissette/cuopt/.cuopt_env/lib/libz.so.1.3.2 -7f0ec4d0e000-7f0ec4d0f000 rw-p 0001a000 08:20 83514 /home/cbrissette/cuopt/.cuopt_env/lib/libz.so.1.3.2 -7f0ec4d0f000-7f0ec4d11000 rw-p 00000000 00:00 0 -7f0ec4d11000-7f0ec4d13000 r--p 00000000 08:20 218618 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 -7f0ec4d13000-7f0ec4d3d000 r-xp 00002000 08:20 218618 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 -7f0ec4d3d000-7f0ec4d48000 r--p 0002c000 08:20 218618 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 -7f0ec4d48000-7f0ec4d49000 r--p 00000000 08:20 217874 /usr/lib/locale/C.utf8/LC_IDENTIFICATION -7f0ec4d49000-7f0ec4d4b000 r--p 00037000 08:20 218618 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 -7f0ec4d4b000-7f0ec4d4d000 rw-p 00039000 08:20 218618 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 -7ffd2ab9a000-7ffd2abbd000 rw-p 00000000 00:00 0 [stack] -7ffd2abee000-7ffd2abf2000 r--p 00000000 00:00 0 [vvar] -7ffd2abf2000-7ffd2abf4000 r-xp 00000000 00:00 0 [vdso] - - -VM Arguments: -java_command: /home/cbrissette/cuopt/java/cuopt/target/surefire/surefirebooter-20260707090259251_3.jar /home/cbrissette/cuopt/java/cuopt/target/surefire 2026-07-07T09-02-59_150-jvmRun1 surefire-20260707090259251_1tmp surefire_0-20260707090259251_2tmp -java_class_path (initial): /home/cbrissette/cuopt/java/cuopt/target/surefire/surefirebooter-20260707090259251_3.jar -Launcher Type: SUN_STANDARD - -[Global flags] - intx CICompilerCount = 12 {product} {ergonomic} - uint ConcGCThreads = 4 {product} {ergonomic} - uint G1ConcRefinementThreads = 15 {product} {ergonomic} - size_t G1HeapRegionSize = 1048576 {product} {ergonomic} - uintx GCDrainStackTargetSize = 64 {product} {ergonomic} - size_t InitialHeapSize = 260046848 {product} {ergonomic} - size_t MarkStackSize = 4194304 {product} {ergonomic} - size_t MaxHeapSize = 4141875200 {product} {ergonomic} - size_t MaxNewSize = 2485125120 {product} {ergonomic} - size_t MinHeapDeltaBytes = 1048576 {product} {ergonomic} - uintx NonNMethodCodeHeapSize = 7594288 {pd product} {ergonomic} - uintx NonProfiledCodeHeapSize = 122031976 {pd product} {ergonomic} - uintx ProfiledCodeHeapSize = 122031976 {pd product} {ergonomic} - uintx ReservedCodeCacheSize = 251658240 {pd product} {ergonomic} - bool SegmentedCodeCache = true {product} {ergonomic} - bool UseCompressedClassPointers = true {lp64_product} {ergonomic} - bool UseCompressedOops = true {lp64_product} {ergonomic} - bool UseG1GC = true {product} {ergonomic} - -Logging: -Log output configuration: - #0: stdout all=warning uptime,level,tags - #1: stderr all=off uptime,level,tags - -Environment Variables: -JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 -PATH=/usr/lib/jvm/java-11-openjdk-amd64/bin:/home/cbrissette/cuopt/.cuopt_env/bin:/usr/lib/jvm/java-11-openjdk-amd64/bin:/path/to/jdk-11/bin:/home/cbrissette/cuopt/.cuopt_env/bin:/home/cbrissette/miniforge3/condabin:/usr/local/cuda-12/bin:/usr/lib:/lib:/home/cbrissette/.npm-packages/bin:/home/cbrissette/.local/node/bin:/home/cbrissette/.vscode-server/bin/034f571df509819cc10b0c8129f66ef77a542f0e/bin/remote-cli:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/wsl/lib:/mnt/c/Program Files/Microsoft VS Code:/mnt/c/Windows/system32:/mnt/c/Windows:/mnt/c/Windows/System32/Wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0:/mnt/c/Windows/System32/OpenSSH:/mnt/c/Program Files/dotnet:/mnt/c/Program Files/Microsoft VS Code/bin:/mnt/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/mnt/c/Program Files/NVIDIA Corporation/Nsight Compute 2025.1.0:/mnt/c/Program Files/Teleport:/mnt/c/PROGRA~1/cinc/bin:/mnt/c/Program Files/NVInfo/bin:/mnt/c/Program Files/ai-pim-utils:/mnt/c/WINDOWS/system32:/mnt/c/WINDOWS:/mnt/c/WINDOWS/System32/Wbem:/mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0:/mnt/c/WINDOWS/System32/OpenSSH:/mnt/c/Program Files/Teleport Connect/resources/bin:/mnt/c/Users/cbrissette/.local/bin:/mnt/c/Users/cbrissette/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/cbrissette/AppData/Local/Programs/cursor/resources/app/bin:/mnt/c/Users/cbrissette/AppData/Local/Microsoft/WinGet/Packages/astral-sh.uv_Microsoft.Winget.Source_8wekyb3d8bbwe:/mnt/c/Users/cbrissette/AppData/Local/Microsoft/WindowsApps:/snap/bin:/home/cbrissette/ngc-cli:/home/cbrissette/.local/bin:/usr/local/go/bin -LD_LIBRARY_PATH=/home/cbrissette/cuopt/.cuopt_env/lib:/home/cbrissette/cuopt/java/cuopt/build/native:/home/cbrissette/cuopt/.cuopt_env/lib:/home/cbrissette/cuopt/cpp/build -SHELL=/bin/bash -DISPLAY=:0 -HOSTTYPE=x86_64 -LANG=C.UTF-8 -TERM=xterm-256color - -Signal Handlers: -SIGSEGV: [libjvm.so+0xeaead0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGBUS: [libjvm.so+0xeaead0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGFPE: [libjvm.so+0xeaead0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGPIPE: [libjvm.so+0xbf1430], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGXFSZ: [libjvm.so+0xbf1430], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGILL: [libjvm.so+0xeaead0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGUSR2: [libjvm.so+0xbf12d0], sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO -SIGHUP: [libjvm.so+0xbf1a90], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGINT: [libjvm.so+0xbf1a90], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGTERM: [libjvm.so+0xbf1a90], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGQUIT: [libjvm.so+0xbf1a90], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO - - ---------------- S Y S T E M --------------- - -OS:DISTRIB_ID=Ubuntu -DISTRIB_RELEASE=22.04 -DISTRIB_CODENAME=jammy -DISTRIB_DESCRIPTION="Ubuntu 22.04.5 LTS" -uname:Linux 5.15.153.1-microsoft-standard-WSL2 #1 SMP Fri Mar 29 23:14:13 UTC 2024 x86_64 -OS uptime: 2 days 16:07 hours -libc:glibc 2.35 NPTL 2.35 -rlimit (soft/hard): STACK 8192k/infinity , CORE 0k/infinity , NPROC 63166/63166 , NOFILE 1048576/1048576 , AS infinity/infinity , CPU infinity/infinity , DATA infinity/infinity , FSIZE infinity/infinity , MEMLOCK 65536k/65536k -load average:0.92 0.38 0.22 - -/proc/meminfo: -MemTotal: 16177528 kB -MemFree: 10978740 kB -MemAvailable: 11940716 kB -Buffers: 10640 kB -Cached: 963344 kB -SwapCached: 57796 kB -Active: 476540 kB -Inactive: 3837872 kB -Active(anon): 14360 kB -Inactive(anon): 3395324 kB -Active(file): 462180 kB -Inactive(file): 442548 kB -Unevictable: 0 kB -Mlocked: 0 kB -SwapTotal: 4194304 kB -SwapFree: 3716576 kB -Dirty: 4540 kB -Writeback: 0 kB -AnonPages: 3228376 kB -Mapped: 523268 kB -Shmem: 69292 kB -KReclaimable: 389348 kB -Slab: 511468 kB -SReclaimable: 389348 kB -SUnreclaim: 122120 kB -KernelStack: 14752 kB -PageTables: 50184 kB -NFS_Unstable: 0 kB -Bounce: 0 kB -WritebackTmp: 0 kB -CommitLimit: 12283068 kB -Committed_AS: 6693168 kB -VmallocTotal: 34359738367 kB -VmallocUsed: 37832 kB -VmallocChunk: 0 kB -Percpu: 13248 kB -AnonHugePages: 1234944 kB -ShmemHugePages: 0 kB -ShmemPmdMapped: 0 kB -FileHugePages: 0 kB -FilePmdMapped: 0 kB -HugePages_Total: 0 -HugePages_Free: 0 -HugePages_Rsvd: 0 -HugePages_Surp: 0 -Hugepagesize: 2048 kB -Hugetlb: 0 kB -DirectMap4k: 402432 kB -DirectMap2M: 13025280 kB -DirectMap1G: 11534336 kB - -/sys/kernel/mm/transparent_hugepage/enabled: -[always] madvise never -/sys/kernel/mm/transparent_hugepage/defrag (defrag/compaction efforts parameter): -always defer defer+madvise [madvise] never - -Process Memory: -Virtual Size: 42600520K (peak: 42666056K) -Resident Set Size: 489132K (peak: 489132K) (anon: 298392K, file: 125152K, shmem: 65588K) -Swapped out: 0K -C-Heap outstanding allocations: 191829K, retained: 4606K -glibc malloc tunables: (default) - -/proc/sys/kernel/threads-max (system-wide limit on the number of threads): -126333 -/proc/sys/vm/max_map_count (maximum number of memory map areas a process may have): -65530 -/proc/sys/kernel/pid_max (system-wide limit on number of process identifiers): -4194304 - -container (cgroup) information: -container_type: cgroupv1 -cpu_cpuset_cpus: 0-19 -cpu_memory_nodes: 0 -active_processor_count: 20 -cpu_quota: no quota -cpu_period: 100000 -cpu_shares: no shares -memory_limit_in_bytes: unlimited -memory_and_swap_limit_in_bytes: unlimited -memory_soft_limit_in_bytes: unlimited -memory_usage_in_bytes: 4201780 k -memory_max_usage_in_bytes: 2211664 k -kernel_memory_usage_in_bytes: 38364 k -kernel_memory_max_usage_in_bytes: unlimited -kernel_memory_limit_in_bytes: 70264 k -maximum number of tasks: not supported -current number of tasks: not supported - -Hyper-V virtualization detected -Steal ticks since vm start: 0 -Steal ticks percentage since vm start: 0.000 - -CPU:total 20 (initial active 20) (16 cores per cpu, 2 threads per core) family 6 model 186 stepping 2 microcode 0xffffffff, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, clmul, erms, 3dnowpref, lzcnt, ht, tsc, tscinvbit, bmi1, bmi2, adx, sha, fma -CPU Model and flags from /proc/cpuinfo: -model name : 13th Gen Intel(R) Core(TM) i7-13800H -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq vmx ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves avx_vnni umip waitpkg gfni vaes vpclmulqdq rdpid movdiri movdir64b fsrm md_clear serialize flush_l1d arch_capabilities -Online cpus: -0-19 -Offline cpus: - -BIOS frequency limitation: - -Frequency switch latency (ns): - -Available cpu frequencies: - -Current governor: - -Core performance/turbo boost: - - -Memory: 4k page, physical 16177528k(10978740k free), swap 4194304k(3716576k free) - -vm_info: OpenJDK 64-Bit Server VM (11.0.24+8-post-Ubuntu-1ubuntu322.04) for linux-amd64 JRE (11.0.24+8-post-Ubuntu-1ubuntu322.04), built on Jul 21 2024 21:19:53 by "unknown" with gcc 11.4.0 - -END. diff --git a/java/cuopt/hs_err_pid1449708.log b/java/cuopt/hs_err_pid1449708.log deleted file mode 100644 index dac52a22c9..0000000000 --- a/java/cuopt/hs_err_pid1449708.log +++ /dev/null @@ -1,1716 +0,0 @@ -# -# A fatal error has been detected by the Java Runtime Environment: -# -# SIGBUS (0x7) at pc=0x00007f7c3f060c00, pid=1449708, tid=1449709 -# -# JRE version: OpenJDK Runtime Environment (11.0.24+8) (build 11.0.24+8-post-Ubuntu-1ubuntu322.04) -# Java VM: OpenJDK 64-Bit Server VM (11.0.24+8-post-Ubuntu-1ubuntu322.04, mixed mode, sharing, tiered, compressed oops, g1 gc, linux-amd64) -# Problematic frame: -# C [libcuopt.so+0x59fc00] cuopt::linear_programming::problem_and_stream_view_t::~problem_and_stream_view_t()+0x30 -# -# Core dump will be written. Default location: Core dumps may be processed with "/wsl-capture-crash %t %E %p %s" (or dumping to /home/cbrissette/cuopt/java/cuopt/core.1449708) -# -# If you would like to submit a bug report, please visit: -# https://bugs.launchpad.net/ubuntu/+source/openjdk-lts -# The crash happened outside the Java Virtual Machine in native code. -# See problematic frame for where to report the bug. -# - ---------------- S U M M A R Y ------------ - -Command Line: /home/cbrissette/cuopt/java/cuopt/target/surefire/surefirebooter-20260707091921778_3.jar /home/cbrissette/cuopt/java/cuopt/target/surefire 2026-07-07T09-19-21_604-jvmRun1 surefire-20260707091921778_1tmp surefire_0-20260707091921778_2tmp - -Host: 13th Gen Intel(R) Core(TM) i7-13800H, 20 cores, 15G, Ubuntu 22.04.5 LTS -Time: Tue Jul 7 09:19:24 2026 EDT elapsed time: 3.161848 seconds (0d 0h 0m 3s) - ---------------- T H R E A D --------------- - -Current thread (0x00007f7cd0016000): JavaThread "main" [_thread_in_native, id=1449709, stack(0x00007f7cd785d000,0x00007f7cd795d000)] - -Stack: [0x00007f7cd785d000,0x00007f7cd795d000], sp=0x00007f7cd7958910, free space=1006k -Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code) -C [libcuopt.so+0x59fc00] cuopt::linear_programming::problem_and_stream_view_t::~problem_and_stream_view_t()+0x30 - -Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) -j com.nvidia.cuopt.linearprogramming.NativeCuOpt.destroyProblem(J)V+0 -j com.nvidia.cuopt.linearprogramming.DataModel$NativeHandle.run()V+13 -J 724 c1 jdk.internal.ref.CleanerImpl$PhantomCleanableRef.performCleanup()V java.base@11.0.24 (10 bytes) @ 0x00007f7cb90637f4 [0x00007f7cb90636c0+0x0000000000000134] -J 723 c1 jdk.internal.ref.PhantomCleanable.clean()V java.base@11.0.24 (16 bytes) @ 0x00007f7cb9063d3c [0x00007f7cb9063b60+0x00000000000001dc] -j com.nvidia.cuopt.linearprogramming.DataModel.close()V+4 -j com.nvidia.cuopt.linearprogramming.NativeIntegrationTest.mutableDataModelExposesPythonMetadataAndQuadraticFields()V+576 -v ~StubRoutines::call_stub -j jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+0 java.base@11.0.24 -j jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+100 java.base@11.0.24 -j jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+6 java.base@11.0.24 -j java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+59 java.base@11.0.24 -j org.junit.platform.commons.util.ReflectionUtils.invokeMethod(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+42 -j org.junit.jupiter.engine.execution.MethodInvocation.proceed()Ljava/lang/Object;+16 -j org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed()Ljava/lang/Object;+8 -j org.junit.jupiter.engine.extension.TimeoutExtension.intercept(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/TimeoutDuration;Lorg/junit/jupiter/engine/extension/TimeoutExtension$TimeoutProvider;)Ljava/lang/Object;+28 -j org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/TimeoutExtension$TimeoutProvider;)Ljava/lang/Object;+31 -j org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)V+9 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda$189.apply(Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)V+5 -j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(Lorg/junit/jupiter/engine/execution/InterceptingExecutableInvoker$ReflectiveInterceptorCall$VoidMethodInterceptorCall;Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)Ljava/lang/Void;+6 -j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall$$Lambda$190.apply(Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)Ljava/lang/Object;+9 -j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(Lorg/junit/jupiter/engine/execution/InterceptingExecutableInvoker$ReflectiveInterceptorCall;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;)Ljava/lang/Object;+6 -j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$$Lambda$378.apply(Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;)Ljava/lang/Object;+14 -j org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed()Ljava/lang/Object;+12 -j org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;)Ljava/lang/Object;+1 -j org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/engine/execution/InvocationInterceptorChain$InterceptorCall;Ljava/util/List;)Ljava/lang/Object;+24 -j org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/engine/execution/InvocationInterceptorChain$InterceptorCall;)Ljava/lang/Object;+31 -j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/engine/execution/InterceptingExecutableInvoker$ReflectiveInterceptorCall;)Ljava/lang/Object;+15 -j org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(Ljava/lang/reflect/Method;Ljava/lang/Object;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/engine/execution/InterceptingExecutableInvoker$ReflectiveInterceptorCall;)Ljava/lang/Object;+55 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$8(Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)V+28 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda$399.execute()V+12 -j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)V+21 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;+44 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;+6 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6()V+79 -j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$297.execute()V+4 -j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+15 -j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$296.invoke(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+5 -j org.junit.platform.engine.support.hierarchical.Node.around(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$Invocation;)V+2 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9()V+14 -j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$295.execute()V+4 -j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively()V+31 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.execute()V+55 -j org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService$$Lambda$301.accept(Ljava/lang/Object;)V+4 -j java.util.ArrayList.forEach(Ljava/util/function/Consumer;)V+46 java.base@11.0.24 -j org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(Ljava/util/List;)V+6 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6()V+116 -j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$297.execute()V+4 -j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+15 -j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$296.invoke(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+5 -j org.junit.platform.engine.support.hierarchical.Node.around(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$Invocation;)V+2 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9()V+14 -j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$295.execute()V+4 -j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively()V+31 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.execute()V+55 -j org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService$$Lambda$301.accept(Ljava/lang/Object;)V+4 -j java.util.ArrayList.forEach(Ljava/util/function/Consumer;)V+46 java.base@11.0.24 -j org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(Ljava/util/List;)V+6 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6()V+116 -j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$297.execute()V+4 -j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+15 -j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$296.invoke(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V+5 -j org.junit.platform.engine.support.hierarchical.Node.around(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$Invocation;)V+2 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9()V+14 -j org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$295.execute()V+4 -j org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)V+1 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively()V+31 -j org.junit.platform.engine.support.hierarchical.NodeTestTask.execute()V+55 -j org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(Lorg/junit/platform/engine/support/hierarchical/HierarchicalTestExecutorService$TestTask;)Ljava/util/concurrent/Future;+1 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute()Ljava/util/concurrent/Future;+74 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(Lorg/junit/platform/engine/ExecutionRequest;)V+31 -j org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(Lorg/junit/platform/engine/TestDescriptor;Lorg/junit/platform/engine/EngineExecutionListener;Lorg/junit/platform/engine/ConfigurationParameters;Lorg/junit/platform/engine/TestEngine;)V+24 -j org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(Lorg/junit/platform/launcher/core/LauncherDiscoveryResult;Lorg/junit/platform/engine/EngineExecutionListener;)V+115 -j org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(Lorg/junit/platform/launcher/core/InternalTestPlan;Lorg/junit/platform/engine/EngineExecutionListener;Lorg/junit/platform/launcher/TestExecutionListener;)V+55 -j org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(Lorg/junit/platform/launcher/core/InternalTestPlan;Lorg/junit/platform/launcher/TestExecutionListener;)V+6 -j org.junit.platform.launcher.core.EngineExecutionOrchestrator$$Lambda$243.accept(Ljava/lang/Object;)V+12 -j org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(Lorg/junit/platform/engine/ConfigurationParameters;Lorg/junit/platform/launcher/core/ListenerRegistry;Ljava/util/function/Consumer;)V+51 -j org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(Lorg/junit/platform/launcher/core/InternalTestPlan;[Lorg/junit/platform/launcher/TestExecutionListener;)V+23 -j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/launcher/core/InternalTestPlan;[Lorg/junit/platform/launcher/TestExecutionListener;)V+6 -j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;[Lorg/junit/platform/launcher/TestExecutionListener;)V+34 -j org.junit.platform.launcher.core.DelegatingLauncher.execute(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;[Lorg/junit/platform/launcher/TestExecutionListener;)V+6 -j org.apache.maven.surefire.junitplatform.LazyLauncher.execute(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;[Lorg/junit/platform/launcher/TestExecutionListener;)V+6 -j org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.execute(Lorg/apache/maven/surefire/api/util/TestsToRun;Lorg/apache/maven/surefire/junitplatform/RunListenerAdapter;)V+70 -j org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(Lorg/apache/maven/surefire/api/util/TestsToRun;Lorg/apache/maven/surefire/junitplatform/RunListenerAdapter;)V+3 -j org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(Ljava/lang/Object;)Lorg/apache/maven/surefire/api/suite/RunResult;+95 -j org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess()V+8 -j org.apache.maven.surefire.booter.ForkedBooter.execute()V+1 -j org.apache.maven.surefire.booter.ForkedBooter.run(Lorg/apache/maven/surefire/booter/ForkedBooter;[Ljava/lang/String;)V+27 -j org.apache.maven.surefire.booter.ForkedBooter.main([Ljava/lang/String;)V+10 -v ~StubRoutines::call_stub - -siginfo: si_signo: 7 (SIGBUS), si_code: 128 (SI_KERNEL), si_addr: 0x0000000000000000 - -Register to memory mapping: - -RAX=0x0 is NULL -RBX=0x00007f7cd1fe4c80 points into unknown readable memory: 0x00007f7b00000000 | 00 00 00 00 7b 7f 00 00 -RCX=0x0000000000000060 is an unknown value -RDX=0x00007f7cd0000090 points into unknown readable memory: 0x00007f7cd3fe30c0 | c0 30 fe d3 7c 7f 00 00 -RSP=0x00007f7cd7958910 is pointing into the stack for thread: 0x00007f7cd0016000 -RBP=0x2f676e616c2f6176 is an unknown value -RSI=0x0 is NULL -RDI=0x0 is NULL -R8 =0x00007f7cd1039da0 points into unknown readable memory: 0x0000000000000001 | 01 00 00 00 00 00 00 00 -R9 =0x0 is NULL -R10=0x00007f7cd1068e98 points into unknown readable memory: 0x00007f7c0540bd70 | 70 bd 40 05 7c 7f 00 00 -R11=0xcc81f13a041e411a is an unknown value -R12=0x00007f7cd90606d0: __pthread_key_create+0x0000000000000000 in /lib/x86_64-linux-gnu/libc.so.6 at 0x00007f7cd8fca000 -R13=0x0000000000000004 is an unknown value -R14=0x00007f7cd7958a18 is pointing into the stack for thread: 0x00007f7cd0016000 -R15=0x00007f7cd0016000 is a thread - - -Registers: -RAX=0x0000000000000000, RBX=0x00007f7cd1fe4c80, RCX=0x0000000000000060, RDX=0x00007f7cd0000090 -RSP=0x00007f7cd7958910, RBP=0x2f676e616c2f6176, RSI=0x0000000000000000, RDI=0x0000000000000000 -R8 =0x00007f7cd1039da0, R9 =0x0000000000000000, R10=0x00007f7cd1068e98, R11=0xcc81f13a041e411a -R12=0x00007f7cd90606d0, R13=0x0000000000000004, R14=0x00007f7cd7958a18, R15=0x00007f7cd0016000 -RIP=0x00007f7c3f060c00, EFLAGS=0x0000000000010202, CSGSFS=0x002b000000000033, ERR=0x0000000000000000 - TRAPNO=0x000000000000000c - -Top of Stack: (sp=0x00007f7cd7958910) -0x00007f7cd7958910: 00007f7cd0016000 00007f7cd7958958 -0x00007f7cd7958920: 00007f7cd1fe4c80 00007f7c3f060cce -0x00007f7cd7958930: 00007f7ca5f50040 00007f7cd1fe4c80 -0x00007f7cd7958940: 00007f7cd2b1feb0 00007f7cac076ff8 - -Instructions: (pc=0x00007f7c3f060c00) -0x00007f7c3f060b00: 00 eb d6 0f 1f 44 00 00 48 8b 07 ff 90 38 01 00 -0x00007f7c3f060b10: 00 eb c6 0f 1f 44 00 00 48 8b 07 ff 90 30 01 00 -0x00007f7c3f060b20: 00 eb b6 0f 1f 44 00 00 b8 01 00 00 00 5b c3 48 -0x00007f7c3f060b30: 89 c7 48 89 d0 e9 33 3a d0 ff 66 0f 1f 44 00 00 -0x00007f7c3f060b40: 48 85 d2 74 3b 48 85 ff 74 36 80 3f 00 75 31 48 -0x00007f7c3f060b50: 8b 7f 10 48 85 ff 74 28 53 48 89 d3 83 fe 0c 74 -0x00007f7c3f060b60: 4f 83 fe 10 74 3a 83 fe 0b 75 25 48 8b 07 ff 90 -0x00007f7c3f060b70: 40 01 00 00 89 03 31 c0 5b c3 66 0f 1f 44 00 00 -0x00007f7c3f060b80: b8 01 00 00 00 c3 66 2e 0f 1f 84 00 00 00 00 00 -0x00007f7c3f060b90: b8 01 00 00 00 5b c3 66 0f 1f 84 00 00 00 00 00 -0x00007f7c3f060ba0: 48 8b 07 ff 90 68 01 00 00 eb c9 0f 1f 44 00 00 -0x00007f7c3f060bb0: 48 8b 07 ff 90 48 01 00 00 eb b9 48 89 c7 48 89 -0x00007f7c3f060bc0: d0 e9 c8 39 d0 ff 66 2e 0f 1f 84 00 00 00 00 00 -0x00007f7c3f060bd0: 55 53 48 89 fb 48 83 ec 08 48 8b 7f 08 48 85 ff -0x00007f7c3f060be0: 74 06 48 8b 07 ff 50 08 48 8b 7b 10 48 85 ff 74 -0x00007f7c3f060bf0: 06 48 8b 07 ff 50 08 48 8b 6b 50 48 85 ed 74 47 -0x00007f7c3f060c00: 48 8b 45 00 48 8d 15 a5 da e1 ff 48 8b 40 08 48 -0x00007f7c3f060c10: 39 d0 0f 85 88 00 00 00 48 8b 05 99 70 c4 00 48 -0x00007f7c3f060c20: 8d 7d 48 48 83 c0 10 48 89 45 00 e8 d0 e0 e1 ff -0x00007f7c3f060c30: 48 8d 7d 30 e8 e7 df e1 ff be 60 00 00 00 48 89 -0x00007f7c3f060c40: ef ff 15 21 e1 c3 00 48 8b 7b 48 48 85 ff 74 0b -0x00007f7c3f060c50: be 08 00 00 00 ff 15 0d e1 c3 00 48 8b 7b 30 48 -0x00007f7c3f060c60: 85 ff 74 0d 48 8b 73 40 48 29 fe ff 15 f7 e0 c3 -0x00007f7c3f060c70: 00 48 8b 7b 18 48 85 ff 74 16 48 8b 73 28 48 83 -0x00007f7c3f060c80: c4 08 5b 5d 48 29 fe ff 25 db e0 c3 00 0f 1f 00 -0x00007f7c3f060c90: 48 83 c4 08 5b 5d c3 66 0f 1f 84 00 00 00 00 00 -0x00007f7c3f060ca0: 48 89 ef ff d0 eb a0 66 0f 1f 84 00 00 00 00 00 -0x00007f7c3f060cb0: 48 85 ff 74 3b 55 53 48 89 fb 48 83 ec 08 48 8b -0x00007f7c3f060cc0: 2f 48 85 ed 74 1d 48 89 ef e8 02 ff ff ff be 58 -0x00007f7c3f060cd0: 00 00 00 48 89 ef ff 15 8c e0 c3 00 48 c7 03 00 -0x00007f7c3f060ce0: 00 00 00 48 83 c4 08 5b 5d c3 66 0f 1f 44 00 00 -0x00007f7c3f060cf0: c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 - - -Stack slot to memory mapping: -stack at sp + 0 slots: 0x00007f7cd0016000 is a thread -stack at sp + 1 slots: 0x00007f7cd7958958 is pointing into the stack for thread: 0x00007f7cd0016000 -stack at sp + 2 slots: 0x00007f7cd1fe4c80 points into unknown readable memory: 0x00007f7b00000000 | 00 00 00 00 7b 7f 00 00 -stack at sp + 3 slots: 0x00007f7c3f060cce: cuOptDestroyProblem+0x000000000000001e in /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so at 0x00007f7c3eac1000 -stack at sp + 4 slots: 0x00007f7ca5f50040 is pointing into metadata -stack at sp + 5 slots: 0x00007f7cd1fe4c80 points into unknown readable memory: 0x00007f7b00000000 | 00 00 00 00 7b 7f 00 00 -stack at sp + 6 slots: 0x00007f7cd2b1feb0 points into unknown readable memory: 0x00007f7b257ceebf | bf ee 7c 25 7b 7f 00 00 -stack at sp + 7 slots: 0x00007f7cac076ff8: Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_destroyProblem+0x0000000000000098 in /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so at 0x00007f7cac055000 - - ---------------- P R O C E S S --------------- - -Threads class SMR info: -_java_thread_list=0x00007f7cd368b2f0, length=16, elements={ -0x00007f7cd0016000, 0x00007f7cd0253800, 0x00007f7cd0255800, 0x00007f7cd025d800, -0x00007f7cd025f800, 0x00007f7cd0262000, 0x00007f7cd0264000, 0x00007f7cd0266000, -0x00007f7c8008c800, 0x00007f7cd0298800, 0x00007f7cd03ed000, 0x00007f7cd03fa000, -0x00007f7cd06a4000, 0x00007f7cd10a5000, 0x00007f7cd1fe1000, 0x00007f7cd2201000 -} - -Java Threads: ( => current thread ) -=>0x00007f7cd0016000 JavaThread "main" [_thread_in_native, id=1449709, stack(0x00007f7cd785d000,0x00007f7cd795d000)] - 0x00007f7cd0253800 JavaThread "Reference Handler" daemon [_thread_blocked, id=1449719, stack(0x00007f7cac28f000,0x00007f7cac38f000)] - 0x00007f7cd0255800 JavaThread "Finalizer" daemon [_thread_blocked, id=1449720, stack(0x00007f7cac18f000,0x00007f7cac28f000)] - 0x00007f7cd025d800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=1449721, stack(0x00007f7cac08f000,0x00007f7cac18f000)] - 0x00007f7cd025f800 JavaThread "Service Thread" daemon [_thread_blocked, id=1449722, stack(0x00007f7ca5700000,0x00007f7ca5800000)] - 0x00007f7cd0262000 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=1449723, stack(0x00007f7ca5600000,0x00007f7ca5700000)] - 0x00007f7cd0264000 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=1449724, stack(0x00007f7ca5500000,0x00007f7ca5600000)] - 0x00007f7cd0266000 JavaThread "Sweeper thread" daemon [_thread_blocked, id=1449725, stack(0x00007f7ca5400000,0x00007f7ca5500000)] - 0x00007f7c8008c800 JavaThread "C1 CompilerThread1" daemon [_thread_blocked, id=1449726, stack(0x00007f7ca5300000,0x00007f7ca5400000)] - 0x00007f7cd0298800 JavaThread "Common-Cleaner" daemon [_thread_blocked, id=1449728, stack(0x00007f7ca50ff000,0x00007f7ca51ff000)] - 0x00007f7cd03ed000 JavaThread "surefire-forkedjvm-stream-flusher" daemon [_thread_blocked, id=1449732, stack(0x00007f7ca4fff000,0x00007f7ca50ff000)] - 0x00007f7cd03fa000 JavaThread "surefire-forkedjvm-command-thread" daemon [_thread_in_native, id=1449733, stack(0x00007f7ca4eff000,0x00007f7ca4fff000)] - 0x00007f7cd06a4000 JavaThread "Cleaner-0" daemon [_thread_blocked, id=1449747, stack(0x00007f7ca46fa000,0x00007f7ca47fa000)] - 0x00007f7cd10a5000 JavaThread "process reaper" daemon [_thread_blocked, id=1449842, stack(0x00007f7c0730b000,0x00007f7c0732d000)] - 0x00007f7cd1fe1000 JavaThread "Cleaner-1" daemon [_thread_blocked, id=1449847, stack(0x00007f7ca4dff000,0x00007f7ca4eff000)] - 0x00007f7cd2201000 JavaThread "Cleaner-2" daemon [_thread_blocked, id=1449852, stack(0x00007f7ca4cff000,0x00007f7ca4dff000)] - -Other Threads: - 0x00007f7cd0250800 VMThread "VM Thread" [stack: 0x00007f7cac390000,0x00007f7cac490000] [id=1449718] - 0x00007f7cd0296800 WatcherThread [stack: 0x00007f7ca5200000,0x00007f7ca5300000] [id=1449727] - 0x00007f7cd0030000 GCTaskThread "GC Thread#0" [stack: 0x00007f7cd7523000,0x00007f7cd7623000] [id=1449710] - 0x00007f7c98019000 GCTaskThread "GC Thread#1" [stack: 0x00007f7ca4bff000,0x00007f7ca4cff000] [id=1449739] - 0x00007f7c9801a800 GCTaskThread "GC Thread#2" [stack: 0x00007f7ca4afe000,0x00007f7ca4bfe000] [id=1449740] - 0x00007f7c9801c000 GCTaskThread "GC Thread#3" [stack: 0x00007f7ca49fd000,0x00007f7ca4afd000] [id=1449741] - 0x00007f7c9801e000 GCTaskThread "GC Thread#4" [stack: 0x00007f7ca48fc000,0x00007f7ca49fc000] [id=1449742] - 0x00007f7c9801f800 GCTaskThread "GC Thread#5" [stack: 0x00007f7ca47fb000,0x00007f7ca48fb000] [id=1449743] - 0x00007f7cd008e000 ConcurrentGCThread "G1 Main Marker" [stack: 0x00007f7cd4bf8000,0x00007f7cd4cf8000] [id=1449711] - 0x00007f7cd008f800 ConcurrentGCThread "G1 Conc#0" [stack: 0x00007f7cd4af7000,0x00007f7cd4bf7000] [id=1449712] - 0x00007f7cd01ab000 ConcurrentGCThread "G1 Refine#0" [stack: 0x00007f7cb81ca000,0x00007f7cb82ca000] [id=1449715] - 0x00007f7cd01ac800 ConcurrentGCThread "G1 Young RemSet Sampling" [stack: 0x00007f7cb80c9000,0x00007f7cb81c9000] [id=1449716] - -Threads with active compile tasks: - -VM state:not at safepoint (normal execution) - -VM Mutex/Monitor currently owned by a thread: None - -Heap address: 0x0000000709200000, size: 3950 MB, Compressed Oops mode: Zero based, Oop shift amount: 3 -Narrow klass base: 0x0000000800000000, Narrow klass shift: 3 -Compressed class space size: 1073741824 Address: 0x0000000840000000 - -Heap: - garbage-first heap total 256000K, used 4239K [0x0000000709200000, 0x0000000800000000) - region size 1024K, 5 young (5120K), 3 survivors (3072K) - Metaspace used 7500K, capacity 9132K, committed 9216K, reserved 1056768K - class space used 905K, capacity 1238K, committed 1280K, reserved 1048576K -Heap Regions: E=young(eden), S=young(survivor), O=old, HS=humongous(starts), HC=humongous(continues), CS=collection set, F=free, A=archive, TAMS=top-at-mark-start (previous, next) -| 0|0x0000000709200000, 0x0000000709200000, 0x0000000709300000| 0%| F| |TAMS 0x0000000709200000, 0x0000000709200000| Untracked -| 1|0x0000000709300000, 0x0000000709300000, 0x0000000709400000| 0%| F| |TAMS 0x0000000709300000, 0x0000000709300000| Untracked -| 2|0x0000000709400000, 0x0000000709400000, 0x0000000709500000| 0%| F| |TAMS 0x0000000709400000, 0x0000000709400000| Untracked -| 3|0x0000000709500000, 0x0000000709500000, 0x0000000709600000| 0%| F| |TAMS 0x0000000709500000, 0x0000000709500000| Untracked -| 4|0x0000000709600000, 0x0000000709600000, 0x0000000709700000| 0%| F| |TAMS 0x0000000709600000, 0x0000000709600000| Untracked -| 5|0x0000000709700000, 0x0000000709700000, 0x0000000709800000| 0%| F| |TAMS 0x0000000709700000, 0x0000000709700000| Untracked -| 6|0x0000000709800000, 0x0000000709800000, 0x0000000709900000| 0%| F| |TAMS 0x0000000709800000, 0x0000000709800000| Untracked -| 7|0x0000000709900000, 0x0000000709900000, 0x0000000709a00000| 0%| F| |TAMS 0x0000000709900000, 0x0000000709900000| Untracked -| 8|0x0000000709a00000, 0x0000000709a00000, 0x0000000709b00000| 0%| F| |TAMS 0x0000000709a00000, 0x0000000709a00000| Untracked -| 9|0x0000000709b00000, 0x0000000709b00000, 0x0000000709c00000| 0%| F| |TAMS 0x0000000709b00000, 0x0000000709b00000| Untracked -| 10|0x0000000709c00000, 0x0000000709c00000, 0x0000000709d00000| 0%| F| |TAMS 0x0000000709c00000, 0x0000000709c00000| Untracked -| 11|0x0000000709d00000, 0x0000000709d00000, 0x0000000709e00000| 0%| F| |TAMS 0x0000000709d00000, 0x0000000709d00000| Untracked -| 12|0x0000000709e00000, 0x0000000709e00000, 0x0000000709f00000| 0%| F| |TAMS 0x0000000709e00000, 0x0000000709e00000| Untracked -| 13|0x0000000709f00000, 0x0000000709f00000, 0x000000070a000000| 0%| F| |TAMS 0x0000000709f00000, 0x0000000709f00000| Untracked -| 14|0x000000070a000000, 0x000000070a000000, 0x000000070a100000| 0%| F| |TAMS 0x000000070a000000, 0x000000070a000000| Untracked -| 15|0x000000070a100000, 0x000000070a100000, 0x000000070a200000| 0%| F| |TAMS 0x000000070a100000, 0x000000070a100000| Untracked -| 16|0x000000070a200000, 0x000000070a200000, 0x000000070a300000| 0%| F| |TAMS 0x000000070a200000, 0x000000070a200000| Untracked -| 17|0x000000070a300000, 0x000000070a300000, 0x000000070a400000| 0%| F| |TAMS 0x000000070a300000, 0x000000070a300000| Untracked -| 18|0x000000070a400000, 0x000000070a400000, 0x000000070a500000| 0%| F| |TAMS 0x000000070a400000, 0x000000070a400000| Untracked -| 19|0x000000070a500000, 0x000000070a500000, 0x000000070a600000| 0%| F| |TAMS 0x000000070a500000, 0x000000070a500000| Untracked -| 20|0x000000070a600000, 0x000000070a600000, 0x000000070a700000| 0%| F| |TAMS 0x000000070a600000, 0x000000070a600000| Untracked -| 21|0x000000070a700000, 0x000000070a700000, 0x000000070a800000| 0%| F| |TAMS 0x000000070a700000, 0x000000070a700000| Untracked -| 22|0x000000070a800000, 0x000000070a800000, 0x000000070a900000| 0%| F| |TAMS 0x000000070a800000, 0x000000070a800000| Untracked -| 23|0x000000070a900000, 0x000000070a900000, 0x000000070aa00000| 0%| F| |TAMS 0x000000070a900000, 0x000000070a900000| Untracked -| 24|0x000000070aa00000, 0x000000070aa00000, 0x000000070ab00000| 0%| F| |TAMS 0x000000070aa00000, 0x000000070aa00000| Untracked -| 25|0x000000070ab00000, 0x000000070ab00000, 0x000000070ac00000| 0%| F| |TAMS 0x000000070ab00000, 0x000000070ab00000| Untracked -| 26|0x000000070ac00000, 0x000000070ac00000, 0x000000070ad00000| 0%| F| |TAMS 0x000000070ac00000, 0x000000070ac00000| Untracked -| 27|0x000000070ad00000, 0x000000070ad00000, 0x000000070ae00000| 0%| F| |TAMS 0x000000070ad00000, 0x000000070ad00000| Untracked -| 28|0x000000070ae00000, 0x000000070ae00000, 0x000000070af00000| 0%| F| |TAMS 0x000000070ae00000, 0x000000070ae00000| Untracked -| 29|0x000000070af00000, 0x000000070af00000, 0x000000070b000000| 0%| F| |TAMS 0x000000070af00000, 0x000000070af00000| Untracked -| 30|0x000000070b000000, 0x000000070b000000, 0x000000070b100000| 0%| F| |TAMS 0x000000070b000000, 0x000000070b000000| Untracked -| 31|0x000000070b100000, 0x000000070b100000, 0x000000070b200000| 0%| F| |TAMS 0x000000070b100000, 0x000000070b100000| Untracked -| 32|0x000000070b200000, 0x000000070b200000, 0x000000070b300000| 0%| F| |TAMS 0x000000070b200000, 0x000000070b200000| Untracked -| 33|0x000000070b300000, 0x000000070b300000, 0x000000070b400000| 0%| F| |TAMS 0x000000070b300000, 0x000000070b300000| Untracked -| 34|0x000000070b400000, 0x000000070b400000, 0x000000070b500000| 0%| F| |TAMS 0x000000070b400000, 0x000000070b400000| Untracked -| 35|0x000000070b500000, 0x000000070b500000, 0x000000070b600000| 0%| F| |TAMS 0x000000070b500000, 0x000000070b500000| Untracked -| 36|0x000000070b600000, 0x000000070b600000, 0x000000070b700000| 0%| F| |TAMS 0x000000070b600000, 0x000000070b600000| Untracked -| 37|0x000000070b700000, 0x000000070b700000, 0x000000070b800000| 0%| F| |TAMS 0x000000070b700000, 0x000000070b700000| Untracked -| 38|0x000000070b800000, 0x000000070b800000, 0x000000070b900000| 0%| F| |TAMS 0x000000070b800000, 0x000000070b800000| Untracked -| 39|0x000000070b900000, 0x000000070b900000, 0x000000070ba00000| 0%| F| |TAMS 0x000000070b900000, 0x000000070b900000| Untracked -| 40|0x000000070ba00000, 0x000000070ba00000, 0x000000070bb00000| 0%| F| |TAMS 0x000000070ba00000, 0x000000070ba00000| Untracked -| 41|0x000000070bb00000, 0x000000070bb00000, 0x000000070bc00000| 0%| F| |TAMS 0x000000070bb00000, 0x000000070bb00000| Untracked -| 42|0x000000070bc00000, 0x000000070bc00000, 0x000000070bd00000| 0%| F| |TAMS 0x000000070bc00000, 0x000000070bc00000| Untracked -| 43|0x000000070bd00000, 0x000000070bd00000, 0x000000070be00000| 0%| F| |TAMS 0x000000070bd00000, 0x000000070bd00000| Untracked -| 44|0x000000070be00000, 0x000000070be00000, 0x000000070bf00000| 0%| F| |TAMS 0x000000070be00000, 0x000000070be00000| Untracked -| 45|0x000000070bf00000, 0x000000070bf00000, 0x000000070c000000| 0%| F| |TAMS 0x000000070bf00000, 0x000000070bf00000| Untracked -| 46|0x000000070c000000, 0x000000070c000000, 0x000000070c100000| 0%| F| |TAMS 0x000000070c000000, 0x000000070c000000| Untracked -| 47|0x000000070c100000, 0x000000070c100000, 0x000000070c200000| 0%| F| |TAMS 0x000000070c100000, 0x000000070c100000| Untracked -| 48|0x000000070c200000, 0x000000070c200000, 0x000000070c300000| 0%| F| |TAMS 0x000000070c200000, 0x000000070c200000| Untracked -| 49|0x000000070c300000, 0x000000070c300000, 0x000000070c400000| 0%| F| |TAMS 0x000000070c300000, 0x000000070c300000| Untracked -| 50|0x000000070c400000, 0x000000070c400000, 0x000000070c500000| 0%| F| |TAMS 0x000000070c400000, 0x000000070c400000| Untracked -| 51|0x000000070c500000, 0x000000070c500000, 0x000000070c600000| 0%| F| |TAMS 0x000000070c500000, 0x000000070c500000| Untracked -| 52|0x000000070c600000, 0x000000070c600000, 0x000000070c700000| 0%| F| |TAMS 0x000000070c600000, 0x000000070c600000| Untracked -| 53|0x000000070c700000, 0x000000070c700000, 0x000000070c800000| 0%| F| |TAMS 0x000000070c700000, 0x000000070c700000| Untracked -| 54|0x000000070c800000, 0x000000070c800000, 0x000000070c900000| 0%| F| |TAMS 0x000000070c800000, 0x000000070c800000| Untracked -| 55|0x000000070c900000, 0x000000070c900000, 0x000000070ca00000| 0%| F| |TAMS 0x000000070c900000, 0x000000070c900000| Untracked -| 56|0x000000070ca00000, 0x000000070ca00000, 0x000000070cb00000| 0%| F| |TAMS 0x000000070ca00000, 0x000000070ca00000| Untracked -| 57|0x000000070cb00000, 0x000000070cb00000, 0x000000070cc00000| 0%| F| |TAMS 0x000000070cb00000, 0x000000070cb00000| Untracked -| 58|0x000000070cc00000, 0x000000070cc00000, 0x000000070cd00000| 0%| F| |TAMS 0x000000070cc00000, 0x000000070cc00000| Untracked -| 59|0x000000070cd00000, 0x000000070cd00000, 0x000000070ce00000| 0%| F| |TAMS 0x000000070cd00000, 0x000000070cd00000| Untracked -| 60|0x000000070ce00000, 0x000000070ce00000, 0x000000070cf00000| 0%| F| |TAMS 0x000000070ce00000, 0x000000070ce00000| Untracked -| 61|0x000000070cf00000, 0x000000070cf00000, 0x000000070d000000| 0%| F| |TAMS 0x000000070cf00000, 0x000000070cf00000| Untracked -| 62|0x000000070d000000, 0x000000070d000000, 0x000000070d100000| 0%| F| |TAMS 0x000000070d000000, 0x000000070d000000| Untracked -| 63|0x000000070d100000, 0x000000070d100000, 0x000000070d200000| 0%| F| |TAMS 0x000000070d100000, 0x000000070d100000| Untracked -| 64|0x000000070d200000, 0x000000070d200000, 0x000000070d300000| 0%| F| |TAMS 0x000000070d200000, 0x000000070d200000| Untracked -| 65|0x000000070d300000, 0x000000070d300000, 0x000000070d400000| 0%| F| |TAMS 0x000000070d300000, 0x000000070d300000| Untracked -| 66|0x000000070d400000, 0x000000070d400000, 0x000000070d500000| 0%| F| |TAMS 0x000000070d400000, 0x000000070d400000| Untracked -| 67|0x000000070d500000, 0x000000070d500000, 0x000000070d600000| 0%| F| |TAMS 0x000000070d500000, 0x000000070d500000| Untracked -| 68|0x000000070d600000, 0x000000070d600000, 0x000000070d700000| 0%| F| |TAMS 0x000000070d600000, 0x000000070d600000| Untracked -| 69|0x000000070d700000, 0x000000070d700000, 0x000000070d800000| 0%| F| |TAMS 0x000000070d700000, 0x000000070d700000| Untracked -| 70|0x000000070d800000, 0x000000070d800000, 0x000000070d900000| 0%| F| |TAMS 0x000000070d800000, 0x000000070d800000| Untracked -| 71|0x000000070d900000, 0x000000070d900000, 0x000000070da00000| 0%| F| |TAMS 0x000000070d900000, 0x000000070d900000| Untracked -| 72|0x000000070da00000, 0x000000070da00000, 0x000000070db00000| 0%| F| |TAMS 0x000000070da00000, 0x000000070da00000| Untracked -| 73|0x000000070db00000, 0x000000070db00000, 0x000000070dc00000| 0%| F| |TAMS 0x000000070db00000, 0x000000070db00000| Untracked -| 74|0x000000070dc00000, 0x000000070dc00000, 0x000000070dd00000| 0%| F| |TAMS 0x000000070dc00000, 0x000000070dc00000| Untracked -| 75|0x000000070dd00000, 0x000000070dd00000, 0x000000070de00000| 0%| F| |TAMS 0x000000070dd00000, 0x000000070dd00000| Untracked -| 76|0x000000070de00000, 0x000000070de00000, 0x000000070df00000| 0%| F| |TAMS 0x000000070de00000, 0x000000070de00000| Untracked -| 77|0x000000070df00000, 0x000000070df00000, 0x000000070e000000| 0%| F| |TAMS 0x000000070df00000, 0x000000070df00000| Untracked -| 78|0x000000070e000000, 0x000000070e000000, 0x000000070e100000| 0%| F| |TAMS 0x000000070e000000, 0x000000070e000000| Untracked -| 79|0x000000070e100000, 0x000000070e100000, 0x000000070e200000| 0%| F| |TAMS 0x000000070e100000, 0x000000070e100000| Untracked -| 80|0x000000070e200000, 0x000000070e200000, 0x000000070e300000| 0%| F| |TAMS 0x000000070e200000, 0x000000070e200000| Untracked -| 81|0x000000070e300000, 0x000000070e300000, 0x000000070e400000| 0%| F| |TAMS 0x000000070e300000, 0x000000070e300000| Untracked -| 82|0x000000070e400000, 0x000000070e400000, 0x000000070e500000| 0%| F| |TAMS 0x000000070e400000, 0x000000070e400000| Untracked -| 83|0x000000070e500000, 0x000000070e500000, 0x000000070e600000| 0%| F| |TAMS 0x000000070e500000, 0x000000070e500000| Untracked -| 84|0x000000070e600000, 0x000000070e600000, 0x000000070e700000| 0%| F| |TAMS 0x000000070e600000, 0x000000070e600000| Untracked -| 85|0x000000070e700000, 0x000000070e700000, 0x000000070e800000| 0%| F| |TAMS 0x000000070e700000, 0x000000070e700000| Untracked -| 86|0x000000070e800000, 0x000000070e800000, 0x000000070e900000| 0%| F| |TAMS 0x000000070e800000, 0x000000070e800000| Untracked -| 87|0x000000070e900000, 0x000000070e900000, 0x000000070ea00000| 0%| F| |TAMS 0x000000070e900000, 0x000000070e900000| Untracked -| 88|0x000000070ea00000, 0x000000070ea00000, 0x000000070eb00000| 0%| F| |TAMS 0x000000070ea00000, 0x000000070ea00000| Untracked -| 89|0x000000070eb00000, 0x000000070eb00000, 0x000000070ec00000| 0%| F| |TAMS 0x000000070eb00000, 0x000000070eb00000| Untracked -| 90|0x000000070ec00000, 0x000000070ec00000, 0x000000070ed00000| 0%| F| |TAMS 0x000000070ec00000, 0x000000070ec00000| Untracked -| 91|0x000000070ed00000, 0x000000070ed00000, 0x000000070ee00000| 0%| F| |TAMS 0x000000070ed00000, 0x000000070ed00000| Untracked -| 92|0x000000070ee00000, 0x000000070ee00000, 0x000000070ef00000| 0%| F| |TAMS 0x000000070ee00000, 0x000000070ee00000| Untracked -| 93|0x000000070ef00000, 0x000000070ef00000, 0x000000070f000000| 0%| F| |TAMS 0x000000070ef00000, 0x000000070ef00000| Untracked -| 94|0x000000070f000000, 0x000000070f000000, 0x000000070f100000| 0%| F| |TAMS 0x000000070f000000, 0x000000070f000000| Untracked -| 95|0x000000070f100000, 0x000000070f100000, 0x000000070f200000| 0%| F| |TAMS 0x000000070f100000, 0x000000070f100000| Untracked -| 96|0x000000070f200000, 0x000000070f200000, 0x000000070f300000| 0%| F| |TAMS 0x000000070f200000, 0x000000070f200000| Untracked -| 97|0x000000070f300000, 0x000000070f300000, 0x000000070f400000| 0%| F| |TAMS 0x000000070f300000, 0x000000070f300000| Untracked -| 98|0x000000070f400000, 0x000000070f400000, 0x000000070f500000| 0%| F| |TAMS 0x000000070f400000, 0x000000070f400000| Untracked -| 99|0x000000070f500000, 0x000000070f500000, 0x000000070f600000| 0%| F| |TAMS 0x000000070f500000, 0x000000070f500000| Untracked -| 100|0x000000070f600000, 0x000000070f600000, 0x000000070f700000| 0%| F| |TAMS 0x000000070f600000, 0x000000070f600000| Untracked -| 101|0x000000070f700000, 0x000000070f700000, 0x000000070f800000| 0%| F| |TAMS 0x000000070f700000, 0x000000070f700000| Untracked -| 102|0x000000070f800000, 0x000000070f800000, 0x000000070f900000| 0%| F| |TAMS 0x000000070f800000, 0x000000070f800000| Untracked -| 103|0x000000070f900000, 0x000000070f900000, 0x000000070fa00000| 0%| F| |TAMS 0x000000070f900000, 0x000000070f900000| Untracked -| 104|0x000000070fa00000, 0x000000070fa00000, 0x000000070fb00000| 0%| F| |TAMS 0x000000070fa00000, 0x000000070fa00000| Untracked -| 105|0x000000070fb00000, 0x000000070fb00000, 0x000000070fc00000| 0%| F| |TAMS 0x000000070fb00000, 0x000000070fb00000| Untracked -| 106|0x000000070fc00000, 0x000000070fc00000, 0x000000070fd00000| 0%| F| |TAMS 0x000000070fc00000, 0x000000070fc00000| Untracked -| 107|0x000000070fd00000, 0x000000070fd00000, 0x000000070fe00000| 0%| F| |TAMS 0x000000070fd00000, 0x000000070fd00000| Untracked -| 108|0x000000070fe00000, 0x000000070fe00000, 0x000000070ff00000| 0%| F| |TAMS 0x000000070fe00000, 0x000000070fe00000| Untracked -| 109|0x000000070ff00000, 0x000000070ff00000, 0x0000000710000000| 0%| F| |TAMS 0x000000070ff00000, 0x000000070ff00000| Untracked -| 110|0x0000000710000000, 0x0000000710000000, 0x0000000710100000| 0%| F| |TAMS 0x0000000710000000, 0x0000000710000000| Untracked -| 111|0x0000000710100000, 0x0000000710100000, 0x0000000710200000| 0%| F| |TAMS 0x0000000710100000, 0x0000000710100000| Untracked -| 112|0x0000000710200000, 0x0000000710200000, 0x0000000710300000| 0%| F| |TAMS 0x0000000710200000, 0x0000000710200000| Untracked -| 113|0x0000000710300000, 0x0000000710300000, 0x0000000710400000| 0%| F| |TAMS 0x0000000710300000, 0x0000000710300000| Untracked -| 114|0x0000000710400000, 0x0000000710400000, 0x0000000710500000| 0%| F| |TAMS 0x0000000710400000, 0x0000000710400000| Untracked -| 115|0x0000000710500000, 0x0000000710500000, 0x0000000710600000| 0%| F| |TAMS 0x0000000710500000, 0x0000000710500000| Untracked -| 116|0x0000000710600000, 0x0000000710600000, 0x0000000710700000| 0%| F| |TAMS 0x0000000710600000, 0x0000000710600000| Untracked -| 117|0x0000000710700000, 0x0000000710700000, 0x0000000710800000| 0%| F| |TAMS 0x0000000710700000, 0x0000000710700000| Untracked -| 118|0x0000000710800000, 0x0000000710800000, 0x0000000710900000| 0%| F| |TAMS 0x0000000710800000, 0x0000000710800000| Untracked -| 119|0x0000000710900000, 0x0000000710900000, 0x0000000710a00000| 0%| F| |TAMS 0x0000000710900000, 0x0000000710900000| Untracked -| 120|0x0000000710a00000, 0x0000000710a00000, 0x0000000710b00000| 0%| F| |TAMS 0x0000000710a00000, 0x0000000710a00000| Untracked -| 121|0x0000000710b00000, 0x0000000710b00000, 0x0000000710c00000| 0%| F| |TAMS 0x0000000710b00000, 0x0000000710b00000| Untracked -| 122|0x0000000710c00000, 0x0000000710c00000, 0x0000000710d00000| 0%| F| |TAMS 0x0000000710c00000, 0x0000000710c00000| Untracked -| 123|0x0000000710d00000, 0x0000000710d00000, 0x0000000710e00000| 0%| F| |TAMS 0x0000000710d00000, 0x0000000710d00000| Untracked -| 124|0x0000000710e00000, 0x0000000710e00000, 0x0000000710f00000| 0%| F| |TAMS 0x0000000710e00000, 0x0000000710e00000| Untracked -| 125|0x0000000710f00000, 0x0000000710f00000, 0x0000000711000000| 0%| F| |TAMS 0x0000000710f00000, 0x0000000710f00000| Untracked -| 126|0x0000000711000000, 0x0000000711000000, 0x0000000711100000| 0%| F| |TAMS 0x0000000711000000, 0x0000000711000000| Untracked -| 127|0x0000000711100000, 0x0000000711100000, 0x0000000711200000| 0%| F| |TAMS 0x0000000711100000, 0x0000000711100000| Untracked -| 128|0x0000000711200000, 0x0000000711200000, 0x0000000711300000| 0%| F| |TAMS 0x0000000711200000, 0x0000000711200000| Untracked -| 129|0x0000000711300000, 0x0000000711300000, 0x0000000711400000| 0%| F| |TAMS 0x0000000711300000, 0x0000000711300000| Untracked -| 130|0x0000000711400000, 0x0000000711400000, 0x0000000711500000| 0%| F| |TAMS 0x0000000711400000, 0x0000000711400000| Untracked -| 131|0x0000000711500000, 0x0000000711500000, 0x0000000711600000| 0%| F| |TAMS 0x0000000711500000, 0x0000000711500000| Untracked -| 132|0x0000000711600000, 0x0000000711600000, 0x0000000711700000| 0%| F| |TAMS 0x0000000711600000, 0x0000000711600000| Untracked -| 133|0x0000000711700000, 0x0000000711700000, 0x0000000711800000| 0%| F| |TAMS 0x0000000711700000, 0x0000000711700000| Untracked -| 134|0x0000000711800000, 0x0000000711800000, 0x0000000711900000| 0%| F| |TAMS 0x0000000711800000, 0x0000000711800000| Untracked -| 135|0x0000000711900000, 0x0000000711900000, 0x0000000711a00000| 0%| F| |TAMS 0x0000000711900000, 0x0000000711900000| Untracked -| 136|0x0000000711a00000, 0x0000000711a00000, 0x0000000711b00000| 0%| F| |TAMS 0x0000000711a00000, 0x0000000711a00000| Untracked -| 137|0x0000000711b00000, 0x0000000711b00000, 0x0000000711c00000| 0%| F| |TAMS 0x0000000711b00000, 0x0000000711b00000| Untracked -| 138|0x0000000711c00000, 0x0000000711c00000, 0x0000000711d00000| 0%| F| |TAMS 0x0000000711c00000, 0x0000000711c00000| Untracked -| 139|0x0000000711d00000, 0x0000000711d00000, 0x0000000711e00000| 0%| F| |TAMS 0x0000000711d00000, 0x0000000711d00000| Untracked -| 140|0x0000000711e00000, 0x0000000711e00000, 0x0000000711f00000| 0%| F| |TAMS 0x0000000711e00000, 0x0000000711e00000| Untracked -| 141|0x0000000711f00000, 0x0000000711f00000, 0x0000000712000000| 0%| F| |TAMS 0x0000000711f00000, 0x0000000711f00000| Untracked -| 142|0x0000000712000000, 0x0000000712000000, 0x0000000712100000| 0%| F| |TAMS 0x0000000712000000, 0x0000000712000000| Untracked -| 143|0x0000000712100000, 0x0000000712100000, 0x0000000712200000| 0%| F| |TAMS 0x0000000712100000, 0x0000000712100000| Untracked -| 144|0x0000000712200000, 0x0000000712200000, 0x0000000712300000| 0%| F| |TAMS 0x0000000712200000, 0x0000000712200000| Untracked -| 145|0x0000000712300000, 0x0000000712300000, 0x0000000712400000| 0%| F| |TAMS 0x0000000712300000, 0x0000000712300000| Untracked -| 146|0x0000000712400000, 0x0000000712400000, 0x0000000712500000| 0%| F| |TAMS 0x0000000712400000, 0x0000000712400000| Untracked -| 147|0x0000000712500000, 0x0000000712500000, 0x0000000712600000| 0%| F| |TAMS 0x0000000712500000, 0x0000000712500000| Untracked -| 148|0x0000000712600000, 0x0000000712600000, 0x0000000712700000| 0%| F| |TAMS 0x0000000712600000, 0x0000000712600000| Untracked -| 149|0x0000000712700000, 0x0000000712700000, 0x0000000712800000| 0%| F| |TAMS 0x0000000712700000, 0x0000000712700000| Untracked -| 150|0x0000000712800000, 0x0000000712800000, 0x0000000712900000| 0%| F| |TAMS 0x0000000712800000, 0x0000000712800000| Untracked -| 151|0x0000000712900000, 0x0000000712900000, 0x0000000712a00000| 0%| F| |TAMS 0x0000000712900000, 0x0000000712900000| Untracked -| 152|0x0000000712a00000, 0x0000000712a00000, 0x0000000712b00000| 0%| F| |TAMS 0x0000000712a00000, 0x0000000712a00000| Untracked -| 153|0x0000000712b00000, 0x0000000712b00000, 0x0000000712c00000| 0%| F| |TAMS 0x0000000712b00000, 0x0000000712b00000| Untracked -| 154|0x0000000712c00000, 0x0000000712c00000, 0x0000000712d00000| 0%| F| |TAMS 0x0000000712c00000, 0x0000000712c00000| Untracked -| 155|0x0000000712d00000, 0x0000000712d00000, 0x0000000712e00000| 0%| F| |TAMS 0x0000000712d00000, 0x0000000712d00000| Untracked -| 156|0x0000000712e00000, 0x0000000712e00000, 0x0000000712f00000| 0%| F| |TAMS 0x0000000712e00000, 0x0000000712e00000| Untracked -| 157|0x0000000712f00000, 0x0000000712f00000, 0x0000000713000000| 0%| F| |TAMS 0x0000000712f00000, 0x0000000712f00000| Untracked -| 158|0x0000000713000000, 0x0000000713000000, 0x0000000713100000| 0%| F| |TAMS 0x0000000713000000, 0x0000000713000000| Untracked -| 159|0x0000000713100000, 0x0000000713100000, 0x0000000713200000| 0%| F| |TAMS 0x0000000713100000, 0x0000000713100000| Untracked -| 160|0x0000000713200000, 0x0000000713200000, 0x0000000713300000| 0%| F| |TAMS 0x0000000713200000, 0x0000000713200000| Untracked -| 161|0x0000000713300000, 0x0000000713300000, 0x0000000713400000| 0%| F| |TAMS 0x0000000713300000, 0x0000000713300000| Untracked -| 162|0x0000000713400000, 0x0000000713400000, 0x0000000713500000| 0%| F| |TAMS 0x0000000713400000, 0x0000000713400000| Untracked -| 163|0x0000000713500000, 0x0000000713500000, 0x0000000713600000| 0%| F| |TAMS 0x0000000713500000, 0x0000000713500000| Untracked -| 164|0x0000000713600000, 0x0000000713600000, 0x0000000713700000| 0%| F| |TAMS 0x0000000713600000, 0x0000000713600000| Untracked -| 165|0x0000000713700000, 0x0000000713700000, 0x0000000713800000| 0%| F| |TAMS 0x0000000713700000, 0x0000000713700000| Untracked -| 166|0x0000000713800000, 0x0000000713800000, 0x0000000713900000| 0%| F| |TAMS 0x0000000713800000, 0x0000000713800000| Untracked -| 167|0x0000000713900000, 0x0000000713900000, 0x0000000713a00000| 0%| F| |TAMS 0x0000000713900000, 0x0000000713900000| Untracked -| 168|0x0000000713a00000, 0x0000000713a00000, 0x0000000713b00000| 0%| F| |TAMS 0x0000000713a00000, 0x0000000713a00000| Untracked -| 169|0x0000000713b00000, 0x0000000713b00000, 0x0000000713c00000| 0%| F| |TAMS 0x0000000713b00000, 0x0000000713b00000| Untracked -| 170|0x0000000713c00000, 0x0000000713c00000, 0x0000000713d00000| 0%| F| |TAMS 0x0000000713c00000, 0x0000000713c00000| Untracked -| 171|0x0000000713d00000, 0x0000000713d00000, 0x0000000713e00000| 0%| F| |TAMS 0x0000000713d00000, 0x0000000713d00000| Untracked -| 172|0x0000000713e00000, 0x0000000713e00000, 0x0000000713f00000| 0%| F| |TAMS 0x0000000713e00000, 0x0000000713e00000| Untracked -| 173|0x0000000713f00000, 0x0000000713f00000, 0x0000000714000000| 0%| F| |TAMS 0x0000000713f00000, 0x0000000713f00000| Untracked -| 174|0x0000000714000000, 0x0000000714000000, 0x0000000714100000| 0%| F| |TAMS 0x0000000714000000, 0x0000000714000000| Untracked -| 175|0x0000000714100000, 0x0000000714100000, 0x0000000714200000| 0%| F| |TAMS 0x0000000714100000, 0x0000000714100000| Untracked -| 176|0x0000000714200000, 0x0000000714200000, 0x0000000714300000| 0%| F| |TAMS 0x0000000714200000, 0x0000000714200000| Untracked -| 177|0x0000000714300000, 0x0000000714300000, 0x0000000714400000| 0%| F| |TAMS 0x0000000714300000, 0x0000000714300000| Untracked -| 178|0x0000000714400000, 0x0000000714400000, 0x0000000714500000| 0%| F| |TAMS 0x0000000714400000, 0x0000000714400000| Untracked -| 179|0x0000000714500000, 0x0000000714500000, 0x0000000714600000| 0%| F| |TAMS 0x0000000714500000, 0x0000000714500000| Untracked -| 180|0x0000000714600000, 0x0000000714600000, 0x0000000714700000| 0%| F| |TAMS 0x0000000714600000, 0x0000000714600000| Untracked -| 181|0x0000000714700000, 0x0000000714700000, 0x0000000714800000| 0%| F| |TAMS 0x0000000714700000, 0x0000000714700000| Untracked -| 182|0x0000000714800000, 0x0000000714800000, 0x0000000714900000| 0%| F| |TAMS 0x0000000714800000, 0x0000000714800000| Untracked -| 183|0x0000000714900000, 0x0000000714900000, 0x0000000714a00000| 0%| F| |TAMS 0x0000000714900000, 0x0000000714900000| Untracked -| 184|0x0000000714a00000, 0x0000000714a00000, 0x0000000714b00000| 0%| F| |TAMS 0x0000000714a00000, 0x0000000714a00000| Untracked -| 185|0x0000000714b00000, 0x0000000714b00000, 0x0000000714c00000| 0%| F| |TAMS 0x0000000714b00000, 0x0000000714b00000| Untracked -| 186|0x0000000714c00000, 0x0000000714c00000, 0x0000000714d00000| 0%| F| |TAMS 0x0000000714c00000, 0x0000000714c00000| Untracked -| 187|0x0000000714d00000, 0x0000000714d00000, 0x0000000714e00000| 0%| F| |TAMS 0x0000000714d00000, 0x0000000714d00000| Untracked -| 188|0x0000000714e00000, 0x0000000714e00000, 0x0000000714f00000| 0%| F| |TAMS 0x0000000714e00000, 0x0000000714e00000| Untracked -| 189|0x0000000714f00000, 0x0000000714f00000, 0x0000000715000000| 0%| F| |TAMS 0x0000000714f00000, 0x0000000714f00000| Untracked -| 190|0x0000000715000000, 0x0000000715000000, 0x0000000715100000| 0%| F| |TAMS 0x0000000715000000, 0x0000000715000000| Untracked -| 191|0x0000000715100000, 0x0000000715100000, 0x0000000715200000| 0%| F| |TAMS 0x0000000715100000, 0x0000000715100000| Untracked -| 192|0x0000000715200000, 0x0000000715200000, 0x0000000715300000| 0%| F| |TAMS 0x0000000715200000, 0x0000000715200000| Untracked -| 193|0x0000000715300000, 0x0000000715300000, 0x0000000715400000| 0%| F| |TAMS 0x0000000715300000, 0x0000000715300000| Untracked -| 194|0x0000000715400000, 0x0000000715400000, 0x0000000715500000| 0%| F| |TAMS 0x0000000715400000, 0x0000000715400000| Untracked -| 195|0x0000000715500000, 0x0000000715500000, 0x0000000715600000| 0%| F| |TAMS 0x0000000715500000, 0x0000000715500000| Untracked -| 196|0x0000000715600000, 0x0000000715600000, 0x0000000715700000| 0%| F| |TAMS 0x0000000715600000, 0x0000000715600000| Untracked -| 197|0x0000000715700000, 0x0000000715700000, 0x0000000715800000| 0%| F| |TAMS 0x0000000715700000, 0x0000000715700000| Untracked -| 198|0x0000000715800000, 0x0000000715800000, 0x0000000715900000| 0%| F| |TAMS 0x0000000715800000, 0x0000000715800000| Untracked -| 199|0x0000000715900000, 0x0000000715900000, 0x0000000715a00000| 0%| F| |TAMS 0x0000000715900000, 0x0000000715900000| Untracked -| 200|0x0000000715a00000, 0x0000000715a00000, 0x0000000715b00000| 0%| F| |TAMS 0x0000000715a00000, 0x0000000715a00000| Untracked -| 201|0x0000000715b00000, 0x0000000715b00000, 0x0000000715c00000| 0%| F| |TAMS 0x0000000715b00000, 0x0000000715b00000| Untracked -| 202|0x0000000715c00000, 0x0000000715c00000, 0x0000000715d00000| 0%| F| |TAMS 0x0000000715c00000, 0x0000000715c00000| Untracked -| 203|0x0000000715d00000, 0x0000000715d00000, 0x0000000715e00000| 0%| F| |TAMS 0x0000000715d00000, 0x0000000715d00000| Untracked -| 204|0x0000000715e00000, 0x0000000715e00000, 0x0000000715f00000| 0%| F| |TAMS 0x0000000715e00000, 0x0000000715e00000| Untracked -| 205|0x0000000715f00000, 0x0000000715f00000, 0x0000000716000000| 0%| F| |TAMS 0x0000000715f00000, 0x0000000715f00000| Untracked -| 206|0x0000000716000000, 0x0000000716000000, 0x0000000716100000| 0%| F| |TAMS 0x0000000716000000, 0x0000000716000000| Untracked -| 207|0x0000000716100000, 0x0000000716100000, 0x0000000716200000| 0%| F| |TAMS 0x0000000716100000, 0x0000000716100000| Untracked -| 208|0x0000000716200000, 0x0000000716200000, 0x0000000716300000| 0%| F| |TAMS 0x0000000716200000, 0x0000000716200000| Untracked -| 209|0x0000000716300000, 0x0000000716300000, 0x0000000716400000| 0%| F| |TAMS 0x0000000716300000, 0x0000000716300000| Untracked -| 210|0x0000000716400000, 0x0000000716400000, 0x0000000716500000| 0%| F| |TAMS 0x0000000716400000, 0x0000000716400000| Untracked -| 211|0x0000000716500000, 0x0000000716500000, 0x0000000716600000| 0%| F| |TAMS 0x0000000716500000, 0x0000000716500000| Untracked -| 212|0x0000000716600000, 0x0000000716600000, 0x0000000716700000| 0%| F| |TAMS 0x0000000716600000, 0x0000000716600000| Untracked -| 213|0x0000000716700000, 0x0000000716700000, 0x0000000716800000| 0%| F| |TAMS 0x0000000716700000, 0x0000000716700000| Untracked -| 214|0x0000000716800000, 0x0000000716800000, 0x0000000716900000| 0%| F| |TAMS 0x0000000716800000, 0x0000000716800000| Untracked -| 215|0x0000000716900000, 0x0000000716900000, 0x0000000716a00000| 0%| F| |TAMS 0x0000000716900000, 0x0000000716900000| Untracked -| 216|0x0000000716a00000, 0x0000000716a00000, 0x0000000716b00000| 0%| F| |TAMS 0x0000000716a00000, 0x0000000716a00000| Untracked -| 217|0x0000000716b00000, 0x0000000716b00000, 0x0000000716c00000| 0%| F| |TAMS 0x0000000716b00000, 0x0000000716b00000| Untracked -| 218|0x0000000716c00000, 0x0000000716c00000, 0x0000000716d00000| 0%| F| |TAMS 0x0000000716c00000, 0x0000000716c00000| Untracked -| 219|0x0000000716d00000, 0x0000000716d00000, 0x0000000716e00000| 0%| F| |TAMS 0x0000000716d00000, 0x0000000716d00000| Untracked -| 220|0x0000000716e00000, 0x0000000716e00000, 0x0000000716f00000| 0%| F| |TAMS 0x0000000716e00000, 0x0000000716e00000| Untracked -| 221|0x0000000716f00000, 0x0000000716f6fd50, 0x0000000717000000| 43%| S|CS|TAMS 0x0000000716f00000, 0x0000000716f00000| Complete -| 222|0x0000000717000000, 0x0000000717100000, 0x0000000717100000|100%| S|CS|TAMS 0x0000000717000000, 0x0000000717000000| Complete -| 223|0x0000000717100000, 0x0000000717200000, 0x0000000717200000|100%| S|CS|TAMS 0x0000000717100000, 0x0000000717100000| Complete -| 224|0x0000000717200000, 0x0000000717200000, 0x0000000717300000| 0%| F| |TAMS 0x0000000717200000, 0x0000000717200000| Untracked -| 225|0x0000000717300000, 0x0000000717300000, 0x0000000717400000| 0%| F| |TAMS 0x0000000717300000, 0x0000000717300000| Untracked -| 226|0x0000000717400000, 0x0000000717400000, 0x0000000717500000| 0%| F| |TAMS 0x0000000717400000, 0x0000000717400000| Untracked -| 227|0x0000000717500000, 0x0000000717500000, 0x0000000717600000| 0%| F| |TAMS 0x0000000717500000, 0x0000000717500000| Untracked -| 228|0x0000000717600000, 0x0000000717600000, 0x0000000717700000| 0%| F| |TAMS 0x0000000717600000, 0x0000000717600000| Untracked -| 229|0x0000000717700000, 0x0000000717700000, 0x0000000717800000| 0%| F| |TAMS 0x0000000717700000, 0x0000000717700000| Untracked -| 230|0x0000000717800000, 0x0000000717800000, 0x0000000717900000| 0%| F| |TAMS 0x0000000717800000, 0x0000000717800000| Untracked -| 231|0x0000000717900000, 0x0000000717900000, 0x0000000717a00000| 0%| F| |TAMS 0x0000000717900000, 0x0000000717900000| Untracked -| 232|0x0000000717a00000, 0x0000000717a00000, 0x0000000717b00000| 0%| F| |TAMS 0x0000000717a00000, 0x0000000717a00000| Untracked -| 233|0x0000000717b00000, 0x0000000717b00000, 0x0000000717c00000| 0%| F| |TAMS 0x0000000717b00000, 0x0000000717b00000| Untracked -| 234|0x0000000717c00000, 0x0000000717c00000, 0x0000000717d00000| 0%| F| |TAMS 0x0000000717c00000, 0x0000000717c00000| Untracked -| 235|0x0000000717d00000, 0x0000000717d00000, 0x0000000717e00000| 0%| F| |TAMS 0x0000000717d00000, 0x0000000717d00000| Untracked -| 236|0x0000000717e00000, 0x0000000717e00000, 0x0000000717f00000| 0%| F| |TAMS 0x0000000717e00000, 0x0000000717e00000| Untracked -| 237|0x0000000717f00000, 0x0000000717f00000, 0x0000000718000000| 0%| F| |TAMS 0x0000000717f00000, 0x0000000717f00000| Untracked -| 238|0x0000000718000000, 0x0000000718000000, 0x0000000718100000| 0%| F| |TAMS 0x0000000718000000, 0x0000000718000000| Untracked -| 239|0x0000000718100000, 0x0000000718100000, 0x0000000718200000| 0%| F| |TAMS 0x0000000718100000, 0x0000000718100000| Untracked -| 240|0x0000000718200000, 0x0000000718200000, 0x0000000718300000| 0%| F| |TAMS 0x0000000718200000, 0x0000000718200000| Untracked -| 241|0x0000000718300000, 0x0000000718300000, 0x0000000718400000| 0%| F| |TAMS 0x0000000718300000, 0x0000000718300000| Untracked -| 242|0x0000000718400000, 0x0000000718400000, 0x0000000718500000| 0%| F| |TAMS 0x0000000718400000, 0x0000000718400000| Untracked -| 243|0x0000000718500000, 0x0000000718500000, 0x0000000718600000| 0%| F| |TAMS 0x0000000718500000, 0x0000000718500000| Untracked -| 244|0x0000000718600000, 0x0000000718600000, 0x0000000718700000| 0%| F| |TAMS 0x0000000718600000, 0x0000000718600000| Untracked -| 245|0x0000000718700000, 0x0000000718700000, 0x0000000718800000| 0%| F| |TAMS 0x0000000718700000, 0x0000000718700000| Untracked -| 246|0x0000000718800000, 0x0000000718900000, 0x0000000718900000|100%| E| |TAMS 0x0000000718800000, 0x0000000718800000| Complete -| 247|0x0000000718900000, 0x0000000718a00000, 0x0000000718a00000|100%| E|CS|TAMS 0x0000000718900000, 0x0000000718900000| Complete -|2924|0x00000007bfe00000, 0x00000007bfe48000, 0x00000007bff00000| 28%|OA| |TAMS 0x00000007bfe00000, 0x00000007bfe00000| Untracked -|2925|0x00000007bff00000, 0x00000007bff6c000, 0x00000007c0000000| 42%|CA| |TAMS 0x00000007bff00000, 0x00000007bff00000| Untracked - -Card table byte_map: [0x00007f7cd56a5000,0x00007f7cd5e5c000] _byte_map_base: 0x00007f7cd1e5c000 - -Marking Bits (Prev, Next): (CMBitMap*) 0x00007f7cd007d798, (CMBitMap*) 0x00007f7cd007d7d0 - Prev Bits: [0x00007f7cb0248000, 0x00007f7cb4000000) - Next Bits: [0x00007f7cac490000, 0x00007f7cb0248000) - -Polling page: 0x00007f7cd7817000 - -Metaspace: - -Usage: - Non-class: 7.71 MB capacity, 6.44 MB ( 84%) used, 1.21 MB ( 16%) free+waste, 62.69 KB ( <1%) overhead. - Class: 1.21 MB capacity, 905.91 KB ( 73%) used, 298.34 KB ( 24%) free+waste, 33.75 KB ( 3%) overhead. - Both: 8.92 MB capacity, 7.32 MB ( 82%) used, 1.50 MB ( 17%) free+waste, 96.44 KB ( 1%) overhead. - -Virtual space: - Non-class space: 8.00 MB reserved, 7.75 MB ( 97%) committed - Class space: 1.00 GB reserved, 1.25 MB ( <1%) committed - Both: 1.01 GB reserved, 9.00 MB ( <1%) committed - -Chunk freelists: - Non-Class: 42.00 KB - Class: 0 bytes - Both: 42.00 KB - -MaxMetaspaceSize: unlimited -CompressedClassSpaceSize: 1.00 GB -Initial GC threshold: 20.80 MB -Current GC threshold: 20.80 MB -CDS: on - -CodeHeap 'non-profiled nmethods': size=119172Kb used=406Kb max_used=406Kb free=118765Kb - bounds [0x00007f7cc036e000, 0x00007f7cc05de000, 0x00007f7cc77cf000] -CodeHeap 'profiled nmethods': size=119168Kb used=2947Kb max_used=2947Kb free=116221Kb - bounds [0x00007f7cb8f0e000, 0x00007f7cb91fe000, 0x00007f7cc036e000] -CodeHeap 'non-nmethods': size=7420Kb used=1728Kb max_used=2308Kb free=5691Kb - bounds [0x00007f7cb87cf000, 0x00007f7cb8a3f000, 0x00007f7cb8f0e000] - total_blobs=1883 nmethods=1458 adapters=337 - compilation: enabled - stopped_count=0, restarted_count=0 - full_count=0 - -Compilation events (20 events): -Event: 2.814 Thread 0x00007f7cd0264000 nmethod 1447 0x00007f7cb91eb790 code [0x00007f7cb91eb940, 0x00007f7cb91ebab0] -Event: 2.975 Thread 0x00007f7cd0262000 1448 ! 4 jdk.internal.loader.URLClassPath$JarLoader::ensureOpen (36 bytes) -Event: 2.976 Thread 0x00007f7cd0262000 nmethod 1448 0x00007f7cc03cf610 code [0x00007f7cc03cf7a0, 0x00007f7cc03cf838] -Event: 2.976 Thread 0x00007f7cd0262000 1449 4 java.util.jar.JarFile::getEntry (22 bytes) -Event: 2.995 Thread 0x00007f7cd0262000 nmethod 1449 0x00007f7cc03cf910 code [0x00007f7cc03cfbe0, 0x00007f7cc03d0e18] -Event: 3.087 Thread 0x00007f7c8008c800 1451 ! 3 java.nio.charset.CharsetEncoder::encode (285 bytes) -Event: 3.087 Thread 0x00007f7cd0264000 1452 3 sun.nio.cs.UTF_8$Encoder::encodeLoop (28 bytes) -Event: 3.087 Thread 0x00007f7cd0264000 nmethod 1452 0x00007f7cb91ebb10 code [0x00007f7cb91ebd00, 0x00007f7cb91ec110] -Event: 3.087 Thread 0x00007f7cd0262000 1454 4 java.nio.StringCharBuffer::get (19 bytes) -Event: 3.087 Thread 0x00007f7cd0264000 1453 3 java.util.regex.Pattern::next (33 bytes) -Event: 3.088 Thread 0x00007f7c8008c800 nmethod 1451 0x00007f7cb91ec290 code [0x00007f7cb91ec5c0, 0x00007f7cb91ed930] -Event: 3.088 Thread 0x00007f7c8008c800 1455 3 jdk.internal.misc.Unsafe::convEndian (16 bytes) -Event: 3.088 Thread 0x00007f7cd0264000 nmethod 1453 0x00007f7cb91edf10 code [0x00007f7cb91ee0e0, 0x00007f7cb91ee360] -Event: 3.088 Thread 0x00007f7c8008c800 nmethod 1455 0x00007f7cb91ee490 code [0x00007f7cb91ee640, 0x00007f7cb91ee7f0] -Event: 3.088 Thread 0x00007f7cd0264000 1456 3 java.lang.Integer::reverseBytes (26 bytes) -Event: 3.088 Thread 0x00007f7cd0264000 nmethod 1456 0x00007f7cb91ee890 code [0x00007f7cb91eea40, 0x00007f7cb91eeb50] -Event: 3.089 Thread 0x00007f7cd0262000 nmethod 1454 0x00007f7cc03d1a10 code [0x00007f7cc03d1bc0, 0x00007f7cc03d1d08] -Event: 3.150 Thread 0x00007f7cd0262000 1458 4 java.io.UnixFileSystem::normalize (75 bytes) -Event: 3.152 Thread 0x00007f7cd0262000 nmethod 1458 0x00007f7cc03d1e90 code [0x00007f7cc03d2040, 0x00007f7cc03d2228] -Event: 3.152 Thread 0x00007f7cd0262000 1457 ! 4 jdk.internal.loader.URLClassPath$JarLoader::getResource (65 bytes) - -GC Heap History (2 events): -Event: 0.711 GC heap before -{Heap before GC invocations=0 (full 0): - garbage-first heap total 256000K, used 24272K [0x0000000709200000, 0x0000000800000000) - region size 1024K, 24 young (24576K), 0 survivors (0K) - Metaspace used 7128K, capacity 8964K, committed 9216K, reserved 1056768K - class space used 862K, capacity 1222K, committed 1280K, reserved 1048576K -} -Event: 0.729 GC heap after -{Heap after GC invocations=1 (full 0): - garbage-first heap total 256000K, used 3215K [0x0000000709200000, 0x0000000800000000) - region size 1024K, 3 young (3072K), 3 survivors (3072K) - Metaspace used 7128K, capacity 8964K, committed 9216K, reserved 1056768K - class space used 862K, capacity 1222K, committed 1280K, reserved 1048576K -} - -Deoptimization events (20 events): -Event: 0.588 Thread 0x00007f7cd0016000 DEOPT PACKING pc=0x00007f7cb8f95d08 sp=0x00007f7cd795a4a0 -Event: 0.588 Thread 0x00007f7cd0016000 DEOPT UNPACKING pc=0x00007f7cb881964a sp=0x00007f7cd79599d8 mode 0 -Event: 0.643 Thread 0x00007f7cd0016000 Uncommon trap: trap_request=0xffffff4d fr.pc=0x00007f7cc03a8844 relative=0x0000000000000284 -Event: 0.643 Thread 0x00007f7cd0016000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f7cc03a8844 method=java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object; @ 86 c2 -Event: 0.643 Thread 0x00007f7cd0016000 DEOPT PACKING pc=0x00007f7cc03a8844 sp=0x00007f7cd7959a50 -Event: 0.643 Thread 0x00007f7cd0016000 DEOPT UNPACKING pc=0x00007f7cb8818ea5 sp=0x00007f7cd79599e8 mode 2 -Event: 0.672 Thread 0x00007f7cd0016000 Uncommon trap: trap_request=0xffffff4d fr.pc=0x00007f7cc0382864 relative=0x0000000000000044 -Event: 0.672 Thread 0x00007f7cd0016000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f7cc0382864 method=java.lang.CharacterData.of(I)Ljava/lang/CharacterData; @ 4 c2 -Event: 0.672 Thread 0x00007f7cd0016000 DEOPT PACKING pc=0x00007f7cc0382864 sp=0x00007f7cd7957f60 -Event: 0.672 Thread 0x00007f7cd0016000 DEOPT UNPACKING pc=0x00007f7cb8818ea5 sp=0x00007f7cd7957f18 mode 2 -Event: 0.674 Thread 0x00007f7cd0016000 Uncommon trap: trap_request=0xffffff4d fr.pc=0x00007f7cc037a438 relative=0x0000000000000198 -Event: 0.674 Thread 0x00007f7cd0016000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f7cc037a438 method=java.lang.String.isLatin1()Z @ 10 c2 -Event: 0.674 Thread 0x00007f7cd0016000 DEOPT PACKING pc=0x00007f7cc037a438 sp=0x00007f7cd79587b0 -Event: 0.674 Thread 0x00007f7cd0016000 DEOPT UNPACKING pc=0x00007f7cb8818ea5 sp=0x00007f7cd79586f8 mode 2 -Event: 0.680 Thread 0x00007f7cd0016000 Uncommon trap: trap_request=0xffffff4d fr.pc=0x00007f7cc03a6b44 relative=0x00000000000004a4 -Event: 0.680 Thread 0x00007f7cd0016000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f7cc03a6b44 method=jdk.internal.org.objectweb.asm.Type.getArgumentsAndReturnSizes(Ljava/lang/String;)I @ 130 c2 -Event: 0.680 Thread 0x00007f7cd0016000 DEOPT PACKING pc=0x00007f7cc03a6b44 sp=0x00007f7cd7957810 -Event: 0.680 Thread 0x00007f7cd0016000 DEOPT UNPACKING pc=0x00007f7cb8818ea5 sp=0x00007f7cd79577c8 mode 2 -Event: 3.150 Thread 0x00007f7cd0016000 DEOPT PACKING pc=0x00007f7cb8fa6ea0 sp=0x00007f7cd7957b50 -Event: 3.150 Thread 0x00007f7cd0016000 DEOPT UNPACKING pc=0x00007f7cb881964a sp=0x00007f7cd7957088 mode 0 - -Classes redefined (0 events): -No events - -Internal exceptions (20 events): -Event: 0.516 Thread 0x00007f7cd0016000 Exception (0x0000000717aac4f8) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.556 Thread 0x00007f7cd0016000 Exception (0x00000007179f3468) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.556 Thread 0x00007f7cd0016000 Exception (0x00000007179f6bc0) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 839] -Event: 0.577 Thread 0x00007f7cd0016000 Exception (0x0000000717895f28) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.577 Thread 0x00007f7cd0016000 Exception (0x0000000717898ce8) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 839] -Event: 0.579 Thread 0x00007f7cd0016000 Exception (0x00000007178bcd80) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.593 Thread 0x00007f7cd0016000 Exception (0x000000071775b2a0) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.600 Thread 0x00007f7cd0016000 Exception (0x00000007177af948) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.604 Thread 0x00007f7cd0016000 Exception (0x00000007177cb850) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.613 Thread 0x00007f7cd0016000 Exception (0x0000000717687448) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.623 Thread 0x00007f7cd0016000 Exception (0x00000007175196c8) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.653 Thread 0x00007f7cd0016000 Exception (0x000000071748a458) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.654 Thread 0x00007f7cd0016000 Exception (0x00000007174988a0) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 0.655 Thread 0x00007f7cd0016000 Exception (0x00000007174aa388) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 839] -Event: 2.787 Thread 0x00007f7cd0016000 Exception (0x0000000718916010) thrown at [./src/hotspot/share/prims/jni.cpp, line 617] -Event: 2.796 Thread 0x00007f7cd0016000 Exception (0x00000007189386b0) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 2.796 Thread 0x00007f7cd0016000 Exception (0x0000000718944d20) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 2.797 Thread 0x00007f7cd0016000 Exception (0x000000071894bd78) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 2.797 Thread 0x00007f7cd0016000 Exception (0x000000071894ff40) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] -Event: 2.798 Thread 0x00007f7cd0016000 Exception (0x0000000718953928) thrown at [./src/hotspot/share/interpreter/linkResolver.cpp, line 772] - -Events (20 events): -Event: 3.078 loading class com/nvidia/cuopt/linearprogramming/Solution$NativeHandle -Event: 3.078 loading class com/nvidia/cuopt/linearprogramming/Solution$NativeHandle done -Event: 3.084 loading class com/nvidia/cuopt/linearprogramming/BatchSolveResult -Event: 3.084 loading class com/nvidia/cuopt/linearprogramming/BatchSolveResult done -Event: 3.084 loading class com/nvidia/cuopt/linearprogramming/Solution -Event: 3.084 loading class com/nvidia/cuopt/linearprogramming/Solution done -Event: 3.148 Executing VM operation: RevokeBias -Event: 3.148 Executing VM operation: RevokeBias done -Event: 3.148 Executing VM operation: RevokeBias -Event: 3.148 Executing VM operation: RevokeBias done -Event: 3.148 Executing VM operation: RevokeBias -Event: 3.148 Executing VM operation: RevokeBias done -Event: 3.150 loading class org/junit/jupiter/api/AssertionFailureBuilder -Event: 3.150 loading class org/junit/jupiter/api/AssertionFailureBuilder done -Event: 3.150 loading class java/util/ArrayDeque$DeqSpliterator -Event: 3.150 loading class java/util/ArrayDeque$DeqSpliterator done -Event: 3.151 loading class org/opentest4j/AssertionFailedError$1 -Event: 3.151 loading class org/opentest4j/AssertionFailedError$1 done -Event: 3.151 loading class org/opentest4j/ValueWrapper -Event: 3.151 loading class org/opentest4j/ValueWrapper done - - -Dynamic libraries: -200000000-200600000 rw-s 00000000 00:01 8252 /dev/zero (deleted) -200600000-203000000 ---p 00000000 00:00 0 -203000000-203200000 rw-s 00000000 00:01 8260 /dev/zero (deleted) -203200000-203400000 rw-s 00000000 00:01 8293 /dev/zero (deleted) -203400000-203600000 ---p 00000000 00:00 0 -203600000-203800000 rw-s 00000000 00:01 8295 /dev/zero (deleted) -203800000-203a00000 rw-s 00000000 00:01 8296 /dev/zero (deleted) -203a00000-203e00000 ---p 00000000 00:00 0 -203e00000-204000000 rw-s 00000000 00:01 8298 /dev/zero (deleted) -204000000-204200000 rw-s 00000000 00:01 8299 /dev/zero (deleted) -204200000-700000000 ---p 00000000 00:00 0 -709200000-718a00000 rw-p 00000000 00:00 0 -718a00000-7bfe00000 ---p 00000000 00:00 0 -7bfe00000-7bfe48000 rw-p 00b14000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa -7bfe48000-7bff00000 rw-p 00000000 00:00 0 -7bff00000-7bff6c000 rw-p 00aa8000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa -7bff6c000-7c0000000 rw-p 00000000 00:00 0 -7c0000000-800000000 ---p 00000000 00:00 0 -800000000-800002000 rwxp 00001000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa -800002000-8003ce000 rw-p 00003000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa -8003ce000-800aa6000 r--p 003cf000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa -800aa6000-800aa7000 rw-p 00aa7000 08:20 293785 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa -840000000-840140000 rw-p 00000000 00:00 0 -840140000-880000000 ---p 00000000 00:00 0 -900000000-c00000000 ---p 00000000 00:00 0 -55851a364000-55851a365000 r--p 00000000 08:20 294880 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -55851a365000-55851a366000 r-xp 00001000 08:20 294880 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -55851a366000-55851a367000 r--p 00002000 08:20 294880 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -55851a367000-55851a368000 r--p 00002000 08:20 294880 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -55851a368000-55851a369000 rw-p 00003000 08:20 294880 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -55851bb38000-55851bb59000 rw-p 00000000 00:00 0 [heap] -7f7be0000000-7f7be0021000 rw-p 00000000 00:00 0 -7f7be0021000-7f7be4000000 ---p 00000000 00:00 0 -7f7be7803000-7f7be8000000 rw-p 00000000 00:00 0 -7f7be8000000-7f7be8021000 rw-p 00000000 00:00 0 -7f7be8021000-7f7bec000000 ---p 00000000 00:00 0 -7f7bec543000-7f7bec544000 ---p 00000000 00:00 0 -7f7bec544000-7f7bf0000000 rw-p 00000000 00:00 0 -7f7bf0000000-7f7bf0021000 rw-p 00000000 00:00 0 -7f7bf0021000-7f7bf4000000 ---p 00000000 00:00 0 -7f7bf417b000-7f7bf5d6b000 rw-p 00000000 00:00 0 -7f7bf5d6b000-7f7bf5f6b000 rw-s 00000000 00:01 8297 /dev/zero (deleted) -7f7bf5f6b000-7f7bf616b000 rw-s 00000000 00:01 8294 /dev/zero (deleted) -7f7bf616b000-7f7bf8b6b000 rw-s 00000000 00:01 8259 /dev/zero (deleted) -7f7bf8b6b000-7f7bf8d6b000 rw-s 00000000 00:01 8258 /dev/zero (deleted) -7f7bf8d6b000-7f7bf8d6c000 ---p 00000000 00:00 0 -7f7bf8d6c000-7f7bf97ff000 rw-p 00000000 00:00 0 -7f7bf97ff000-7f7bff800000 ---p 00000000 00:00 0 -7f7bff800000-7f7c00000000 rw-p 00000000 00:00 0 -7f7c00000000-7f7c00021000 rw-p 00000000 00:00 0 -7f7c00021000-7f7c04000000 ---p 00000000 00:00 0 -7f7c04006000-7f7c04400000 rw-p 00000000 00:00 0 -7f7c04400000-7f7c0440d000 r-xp 00000000 00:21 1688849861009784 /usr/lib/wsl/drivers/nvdm.inf_amd64_86ce1e7b61a7cb15/libnvdxgdmal.so.1 -7f7c0440d000-7f7c0460d000 ---p 0000d000 00:21 1688849861009784 /usr/lib/wsl/drivers/nvdm.inf_amd64_86ce1e7b61a7cb15/libnvdxgdmal.so.1 -7f7c0460d000-7f7c0460f000 r--p 0000d000 00:21 1688849861009784 /usr/lib/wsl/drivers/nvdm.inf_amd64_86ce1e7b61a7cb15/libnvdxgdmal.so.1 -7f7c0460f000-7f7c04610000 rw-p 0000f000 00:21 1688849861009784 /usr/lib/wsl/drivers/nvdm.inf_amd64_86ce1e7b61a7cb15/libnvdxgdmal.so.1 -7f7c0466e000-7f7c047ff000 rw-p 00000000 00:00 0 -7f7c047ff000-7f7c04800000 ---p 00000000 00:00 0 -7f7c04800000-7f7c05000000 rw-p 00000000 00:00 0 -7f7c05000000-7f7c0666e000 r-xp 00000000 00:21 1688849861009763 /usr/lib/wsl/drivers/nvdm.inf_amd64_86ce1e7b61a7cb15/libcuda.so.1.1 -7f7c0666e000-7f7c0686d000 ---p 0166e000 00:21 1688849861009763 /usr/lib/wsl/drivers/nvdm.inf_amd64_86ce1e7b61a7cb15/libcuda.so.1.1 -7f7c0686d000-7f7c06bad000 r--p 0166d000 00:21 1688849861009763 /usr/lib/wsl/drivers/nvdm.inf_amd64_86ce1e7b61a7cb15/libcuda.so.1.1 -7f7c06bad000-7f7c06bb4000 rw-p 019ad000 00:21 1688849861009763 /usr/lib/wsl/drivers/nvdm.inf_amd64_86ce1e7b61a7cb15/libcuda.so.1.1 -7f7c06bb4000-7f7c06c21000 rw-p 00000000 00:00 0 -7f7c06cfe000-7f7c07000000 rw-p 00000000 00:00 0 -7f7c07000000-7f7c07028000 r-xp 00000000 00:22 1688849861009770 /usr/lib/wsl/lib/libcuda.so.1 -7f7c07028000-7f7c07228000 ---p 00028000 00:22 1688849861009770 /usr/lib/wsl/lib/libcuda.so.1 -7f7c07228000-7f7c07229000 r--p 00028000 00:22 1688849861009770 /usr/lib/wsl/lib/libcuda.so.1 -7f7c07229000-7f7c0722b000 rw-p 00029000 00:22 1688849861009770 /usr/lib/wsl/lib/libcuda.so.1 -7f7c07279000-7f7c0727a000 rw-s a01e41000 00:01 8292 /dev/zero (deleted) -7f7c0727a000-7f7c0727b000 rw-s a01e40000 00:01 8291 /dev/zero (deleted) -7f7c0727b000-7f7c0727c000 rw-s a01e3f000 00:01 8290 /dev/zero (deleted) -7f7c0727c000-7f7c0727d000 rw-s a01e3e000 00:01 8289 /dev/zero (deleted) -7f7c0727d000-7f7c0727e000 rw-s a01e3d000 00:01 8288 /dev/zero (deleted) -7f7c0727e000-7f7c0727f000 rw-s a01e3c000 00:01 8287 /dev/zero (deleted) -7f7c0727f000-7f7c07280000 rw-s a01e3b000 00:01 8286 /dev/zero (deleted) -7f7c07280000-7f7c07281000 rw-s a01e3a000 00:01 8285 /dev/zero (deleted) -7f7c07281000-7f7c07282000 rw-s a01e39000 00:01 8284 /dev/zero (deleted) -7f7c07282000-7f7c07283000 rw-s a01e38000 00:01 8283 /dev/zero (deleted) -7f7c07283000-7f7c07284000 rw-s a01e37000 00:01 8282 /dev/zero (deleted) -7f7c07284000-7f7c07285000 rw-s a01e36000 00:01 8281 /dev/zero (deleted) -7f7c07285000-7f7c07286000 rw-s a01e35000 00:01 8280 /dev/zero (deleted) -7f7c07286000-7f7c07287000 rw-s a01e34000 00:01 8279 /dev/zero (deleted) -7f7c07287000-7f7c07288000 rw-s a01e33000 00:01 8278 /dev/zero (deleted) -7f7c07288000-7f7c07289000 rw-s a01e32000 00:01 8277 /dev/zero (deleted) -7f7c07289000-7f7c0728a000 rw-s a01e31000 00:01 8276 /dev/zero (deleted) -7f7c0728a000-7f7c0730b000 rw-p 00000000 00:00 0 -7f7c0730b000-7f7c0730f000 ---p 00000000 00:00 0 -7f7c0730f000-7f7c073ee000 rw-p 00000000 00:00 0 -7f7c073ee000-7f7c074dd000 r--p 00000000 08:20 320733 /home/cbrissette/cuopt/.cuopt_env/lib/libcrypto.so.3 -7f7c074dd000-7f7c07841000 r-xp 000ef000 08:20 320733 /home/cbrissette/cuopt/.cuopt_env/lib/libcrypto.so.3 -7f7c07841000-7f7c07978000 r--p 00453000 08:20 320733 /home/cbrissette/cuopt/.cuopt_env/lib/libcrypto.so.3 -7f7c07978000-7f7c079fa000 r--p 00589000 08:20 320733 /home/cbrissette/cuopt/.cuopt_env/lib/libcrypto.so.3 -7f7c079fa000-7f7c079fd000 rw-p 0060b000 08:20 320733 /home/cbrissette/cuopt/.cuopt_env/lib/libcrypto.so.3 -7f7c079fd000-7f7c07a00000 rw-p 00000000 00:00 0 -7f7c07a00000-7f7c1ee7c000 r-xp 00000000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 -7f7c1ee7c000-7f7c1f07c000 ---p 1747c000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 -7f7c1f07c000-7f7c1f334000 r--p 1747c000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 -7f7c1f334000-7f7c1f9c8000 rw-p 17734000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 -7f7c1f9c8000-7f7c253e0000 rw-p 00000000 00:00 0 -7f7c253e0000-7f7c255df000 ---p 1d9e0000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 -7f7c255df000-7f7c260d5000 r--p 17ddf000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 -7f7c260d5000-7f7c262d4000 ---p 1e6d5000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 -7f7c262d4000-7f7c2beb7000 rw-p 188d4000 08:20 101468 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublasLt.so.13.4.0.1 -7f7c2beb7000-7f7c2beb8000 rw-s a01e30000 00:01 8275 /dev/zero (deleted) -7f7c2beb8000-7f7c2beb9000 rw-s a01e2f000 00:01 8274 /dev/zero (deleted) -7f7c2beb9000-7f7c2bf1c000 r--p 00000000 00:23 9288674231615732 /usr/lib/wsl/lib/libdxcore.so -7f7c2bf1c000-7f7c2bf99000 r-xp 00062000 00:23 9288674231615732 /usr/lib/wsl/lib/libdxcore.so -7f7c2bf99000-7f7c2bfa1000 r--p 000de000 00:23 9288674231615732 /usr/lib/wsl/lib/libdxcore.so -7f7c2bfa1000-7f7c2bfa2000 rw-p 000e5000 00:23 9288674231615732 /usr/lib/wsl/lib/libdxcore.so -7f7c2bfa2000-7f7c2bff6000 rw-p 00000000 00:00 0 -7f7c2bff6000-7f7c2bffc000 r--p 00000000 08:20 194064 /home/cbrissette/cuopt/.cuopt_env/lib/libtbbmalloc.so.2.18 -7f7c2bffc000-7f7c2c013000 r-xp 00006000 08:20 194064 /home/cbrissette/cuopt/.cuopt_env/lib/libtbbmalloc.so.2.18 -7f7c2c013000-7f7c2c018000 r--p 0001d000 08:20 194064 /home/cbrissette/cuopt/.cuopt_env/lib/libtbbmalloc.so.2.18 -7f7c2c018000-7f7c2c019000 r--p 00021000 08:20 194064 /home/cbrissette/cuopt/.cuopt_env/lib/libtbbmalloc.so.2.18 -7f7c2c019000-7f7c2c01b000 rw-p 00022000 08:20 194064 /home/cbrissette/cuopt/.cuopt_env/lib/libtbbmalloc.so.2.18 -7f7c2c01b000-7f7c2c03c000 rw-p 00000000 00:00 0 -7f7c2c03c000-7f7c2c03d000 r--p 00000000 08:20 177053 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_utf8_for_code_point.so.2601.0.0 -7f7c2c03d000-7f7c2c03e000 r-xp 00001000 08:20 177053 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_utf8_for_code_point.so.2601.0.0 -7f7c2c03e000-7f7c2c03f000 r--p 00002000 08:20 177053 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_utf8_for_code_point.so.2601.0.0 -7f7c2c03f000-7f7c2c040000 r--p 00002000 08:20 177053 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_utf8_for_code_point.so.2601.0.0 -7f7c2c040000-7f7c2c041000 rw-p 00003000 08:20 177053 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_utf8_for_code_point.so.2601.0.0 -7f7c2c041000-7f7c2c042000 r--p 00000000 08:20 176909 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_decode_rust_punycode.so.2601.0.0 -7f7c2c042000-7f7c2c043000 r-xp 00001000 08:20 176909 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_decode_rust_punycode.so.2601.0.0 -7f7c2c043000-7f7c2c044000 r--p 00002000 08:20 176909 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_decode_rust_punycode.so.2601.0.0 -7f7c2c044000-7f7c2c045000 r--p 00002000 08:20 176909 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_decode_rust_punycode.so.2601.0.0 -7f7c2c045000-7f7c2c046000 rw-p 00003000 08:20 176909 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_decode_rust_punycode.so.2601.0.0 -7f7c2c046000-7f7c2c047000 r--p 00000000 08:20 176160 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_rust.so.2601.0.0 -7f7c2c047000-7f7c2c04b000 r-xp 00001000 08:20 176160 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_rust.so.2601.0.0 -7f7c2c04b000-7f7c2c04c000 r--p 00005000 08:20 176160 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_rust.so.2601.0.0 -7f7c2c04c000-7f7c2c04d000 r--p 00005000 08:20 176160 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_rust.so.2601.0.0 -7f7c2c04d000-7f7c2c04e000 rw-p 00006000 08:20 176160 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_rust.so.2601.0.0 -7f7c2c04e000-7f7c2c050000 r--p 00000000 08:20 175645 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_internal.so.2601.0.0 -7f7c2c050000-7f7c2c052000 r-xp 00002000 08:20 175645 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_internal.so.2601.0.0 -7f7c2c052000-7f7c2c053000 r--p 00004000 08:20 175645 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_internal.so.2601.0.0 -7f7c2c053000-7f7c2c054000 r--p 00004000 08:20 175645 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_internal.so.2601.0.0 -7f7c2c054000-7f7c2c055000 rw-p 00005000 08:20 175645 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_internal.so.2601.0.0 -7f7c2c055000-7f7c2c057000 r--p 00000000 08:20 176073 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_internal.so.2601.0.0 -7f7c2c057000-7f7c2c063000 r-xp 00002000 08:20 176073 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_internal.so.2601.0.0 -7f7c2c063000-7f7c2c065000 r--p 0000e000 08:20 176073 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_internal.so.2601.0.0 -7f7c2c065000-7f7c2c066000 r--p 00010000 08:20 176073 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_internal.so.2601.0.0 -7f7c2c066000-7f7c2c067000 rw-p 00011000 08:20 176073 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_demangle_internal.so.2601.0.0 -7f7c2c067000-7f7c2c068000 r--p 00000000 08:20 174727 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_program_name.so.2601.0.0 -7f7c2c068000-7f7c2c069000 r-xp 00001000 08:20 174727 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_program_name.so.2601.0.0 -7f7c2c069000-7f7c2c06a000 r--p 00002000 08:20 174727 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_program_name.so.2601.0.0 -7f7c2c06a000-7f7c2c06b000 r--p 00002000 08:20 174727 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_program_name.so.2601.0.0 -7f7c2c06b000-7f7c2c06c000 rw-p 00003000 08:20 174727 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_program_name.so.2601.0.0 -7f7c2c06c000-7f7c2c06e000 r--p 00000000 08:20 174492 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_debugging_internal.so.2601.0.0 -7f7c2c06e000-7f7c2c06f000 r-xp 00002000 08:20 174492 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_debugging_internal.so.2601.0.0 -7f7c2c06f000-7f7c2c070000 r--p 00003000 08:20 174492 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_debugging_internal.so.2601.0.0 -7f7c2c070000-7f7c2c071000 r--p 00003000 08:20 174492 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_debugging_internal.so.2601.0.0 -7f7c2c071000-7f7c2c072000 rw-p 00004000 08:20 174492 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_debugging_internal.so.2601.0.0 -7f7c2c072000-7f7c2c073000 r--p 00000000 08:20 172719 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_borrowed_fixup_buffer.so.2601.0.0 -7f7c2c073000-7f7c2c074000 r-xp 00001000 08:20 172719 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_borrowed_fixup_buffer.so.2601.0.0 -7f7c2c074000-7f7c2c075000 r--p 00002000 08:20 172719 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_borrowed_fixup_buffer.so.2601.0.0 -7f7c2c075000-7f7c2c076000 r--p 00002000 08:20 172719 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_borrowed_fixup_buffer.so.2601.0.0 -7f7c2c076000-7f7c2c077000 rw-p 00003000 08:20 172719 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_borrowed_fixup_buffer.so.2601.0.0 -7f7c2c077000-7f7c2c08f000 rw-p 00000000 00:00 0 -7f7c2c08f000-7f7c2c2b9000 r--p 00000000 08:20 139302 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc.so.52.0.0 -7f7c2c2b9000-7f7c2cb03000 r-xp 0022a000 08:20 139302 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc.so.52.0.0 -7f7c2cb03000-7f7c2cdb4000 r--p 00a74000 08:20 139302 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc.so.52.0.0 -7f7c2cdb4000-7f7c2cdee000 r--p 00d25000 08:20 139302 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc.so.52.0.0 -7f7c2cdee000-7f7c2cdfb000 rw-p 00d5f000 08:20 139302 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc.so.52.0.0 -7f7c2cdfb000-7f7c2ce00000 rw-p 00000000 00:00 0 -7f7c2ce00000-7f7c30e5e000 r-xp 00000000 08:20 101383 /home/cbrissette/cuopt/.cuopt_env/lib/libcudss.so.0.7.1 -7f7c30e5e000-7f7c3105e000 ---p 0405e000 08:20 101383 /home/cbrissette/cuopt/.cuopt_env/lib/libcudss.so.0.7.1 -7f7c3105e000-7f7c31068000 r--p 0405e000 08:20 101383 /home/cbrissette/cuopt/.cuopt_env/lib/libcudss.so.0.7.1 -7f7c31068000-7f7c3106e000 rw-p 04068000 08:20 101383 /home/cbrissette/cuopt/.cuopt_env/lib/libcudss.so.0.7.1 -7f7c3106e000-7f7c3107e000 rw-p 00000000 00:00 0 -7f7c3107e000-7f7c31080000 rw-p 042ac000 08:20 101383 /home/cbrissette/cuopt/.cuopt_env/lib/libcudss.so.0.7.1 -7f7c31080000-7f7c31081000 rw-s a01e2e000 00:01 8273 /dev/zero (deleted) -7f7c31081000-7f7c31082000 rw-s a01e2d000 00:01 8272 /dev/zero (deleted) -7f7c31082000-7f7c31083000 rw-s a01e2c000 00:01 8271 /dev/zero (deleted) -7f7c31083000-7f7c31085000 r--p 00000000 08:20 177931 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc32c.so.2601.0.0 -7f7c31085000-7f7c31086000 r-xp 00002000 08:20 177931 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc32c.so.2601.0.0 -7f7c31086000-7f7c31087000 r--p 00003000 08:20 177931 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc32c.so.2601.0.0 -7f7c31087000-7f7c31088000 r--p 00003000 08:20 177931 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc32c.so.2601.0.0 -7f7c31088000-7f7c31089000 rw-p 00004000 08:20 177931 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc32c.so.2601.0.0 -7f7c31089000-7f7c3108a000 r--p 00000000 08:20 177959 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_sink.so.2601.0.0 -7f7c3108a000-7f7c3108b000 r-xp 00001000 08:20 177959 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_sink.so.2601.0.0 -7f7c3108b000-7f7c3108c000 r--p 00002000 08:20 177959 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_sink.so.2601.0.0 -7f7c3108c000-7f7c3108d000 r--p 00002000 08:20 177959 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_sink.so.2601.0.0 -7f7c3108d000-7f7c3108e000 rw-p 00003000 08:20 177959 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_sink.so.2601.0.0 -7f7c3108e000-7f7c31090000 r--p 00000000 08:20 175392 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_symbolize.so.2601.0.0 -7f7c31090000-7f7c31093000 r-xp 00002000 08:20 175392 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_symbolize.so.2601.0.0 -7f7c31093000-7f7c31094000 r--p 00005000 08:20 175392 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_symbolize.so.2601.0.0 -7f7c31094000-7f7c31095000 r--p 00006000 08:20 175392 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_symbolize.so.2601.0.0 -7f7c31095000-7f7c31096000 rw-p 00007000 08:20 175392 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_symbolize.so.2601.0.0 -7f7c31096000-7f7c31097000 r--p 00000000 08:20 176368 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_private_handle_accessor.so.2601.0.0 -7f7c31097000-7f7c31098000 r-xp 00001000 08:20 176368 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_private_handle_accessor.so.2601.0.0 -7f7c31098000-7f7c31099000 r--p 00002000 08:20 176368 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_private_handle_accessor.so.2601.0.0 -7f7c31099000-7f7c3109a000 r--p 00002000 08:20 176368 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_private_handle_accessor.so.2601.0.0 -7f7c3109a000-7f7c3109b000 rw-p 00003000 08:20 176368 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_private_handle_accessor.so.2601.0.0 -7f7c3109b000-7f7c3109d000 r--p 00000000 08:20 176315 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_config.so.2601.0.0 -7f7c3109d000-7f7c3109f000 r-xp 00002000 08:20 176315 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_config.so.2601.0.0 -7f7c3109f000-7f7c310a0000 r--p 00004000 08:20 176315 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_config.so.2601.0.0 -7f7c310a0000-7f7c310a1000 r--p 00004000 08:20 176315 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_config.so.2601.0.0 -7f7c310a1000-7f7c310a2000 rw-p 00005000 08:20 176315 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_config.so.2601.0.0 -7f7c310a2000-7f7c310a3000 r--p 00000000 08:20 174103 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag_internal.so.2601.0.0 -7f7c310a3000-7f7c310a4000 r-xp 00001000 08:20 174103 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag_internal.so.2601.0.0 -7f7c310a4000-7f7c310a5000 r--p 00002000 08:20 174103 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag_internal.so.2601.0.0 -7f7c310a5000-7f7c310a6000 r--p 00002000 08:20 174103 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag_internal.so.2601.0.0 -7f7c310a6000-7f7c310a7000 rw-p 00003000 08:20 174103 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag_internal.so.2601.0.0 -7f7c310a7000-7f7c310a8000 r--p 00000000 08:20 175648 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag.so.2601.0.0 -7f7c310a8000-7f7c310a9000 r-xp 00001000 08:20 175648 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag.so.2601.0.0 -7f7c310a9000-7f7c310aa000 r--p 00002000 08:20 175648 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag.so.2601.0.0 -7f7c310aa000-7f7c310ab000 r--p 00002000 08:20 175648 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag.so.2601.0.0 -7f7c310ab000-7f7c310ac000 rw-p 00003000 08:20 175648 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_commandlineflag.so.2601.0.0 -7f7c310ac000-7f7c310ad000 r--p 00000000 08:20 172450 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_platform.so.2601.0.0 -7f7c310ad000-7f7c310ae000 r-xp 00001000 08:20 172450 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_platform.so.2601.0.0 -7f7c310ae000-7f7c310b0000 r--p 00002000 08:20 172450 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_platform.so.2601.0.0 -7f7c310b0000-7f7c310b1000 r--p 00003000 08:20 172450 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_platform.so.2601.0.0 -7f7c310b1000-7f7c310b2000 rw-p 00004000 08:20 172450 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_platform.so.2601.0.0 -7f7c310b2000-7f7c310b3000 r--p 00000000 08:20 178131 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes.so.2601.0.0 -7f7c310b3000-7f7c310b4000 r-xp 00001000 08:20 178131 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes.so.2601.0.0 -7f7c310b4000-7f7c310b5000 r--p 00002000 08:20 178131 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes.so.2601.0.0 -7f7c310b5000-7f7c310b6000 r--p 00002000 08:20 178131 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes.so.2601.0.0 -7f7c310b6000-7f7c310b7000 rw-p 00003000 08:20 178131 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes.so.2601.0.0 -7f7c310b7000-7f7c310b8000 r--p 00000000 08:20 176601 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_seed_gen_exception.so.2601.0.0 -7f7c310b8000-7f7c310b9000 r-xp 00001000 08:20 176601 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_seed_gen_exception.so.2601.0.0 -7f7c310b9000-7f7c310ba000 r--p 00002000 08:20 176601 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_seed_gen_exception.so.2601.0.0 -7f7c310ba000-7f7c310bb000 r--p 00002000 08:20 176601 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_seed_gen_exception.so.2601.0.0 -7f7c310bb000-7f7c310bc000 rw-p 00003000 08:20 176601 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_seed_gen_exception.so.2601.0.0 -7f7c310bc000-7f7c310bd000 r--p 00000000 08:20 178171 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_seed_material.so.2601.0.0 -7f7c310bd000-7f7c310be000 r-xp 00001000 08:20 178171 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_seed_material.so.2601.0.0 -7f7c310be000-7f7c310bf000 r--p 00002000 08:20 178171 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_seed_material.so.2601.0.0 -7f7c310bf000-7f7c310c0000 r--p 00002000 08:20 178171 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_seed_material.so.2601.0.0 -7f7c310c0000-7f7c310c1000 rw-p 00003000 08:20 178171 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_seed_material.so.2601.0.0 -7f7c310c1000-7f7c310c2000 r--p 00000000 08:20 175910 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_city.so.2601.0.0 -7f7c310c2000-7f7c310c3000 r-xp 00001000 08:20 175910 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_city.so.2601.0.0 -7f7c310c3000-7f7c310c4000 r--p 00002000 08:20 175910 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_city.so.2601.0.0 -7f7c310c4000-7f7c310c5000 r--p 00002000 08:20 175910 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_city.so.2601.0.0 -7f7c310c5000-7f7c310c6000 rw-p 00003000 08:20 175910 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_city.so.2601.0.0 -7f7c310c6000-7f7c310c8000 r--p 00000000 08:20 174503 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hashtablez_sampler.so.2601.0.0 -7f7c310c8000-7f7c310c9000 r-xp 00002000 08:20 174503 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hashtablez_sampler.so.2601.0.0 -7f7c310c9000-7f7c310ca000 r--p 00003000 08:20 174503 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hashtablez_sampler.so.2601.0.0 -7f7c310ca000-7f7c310cb000 r--p 00003000 08:20 174503 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hashtablez_sampler.so.2601.0.0 -7f7c310cb000-7f7c310cc000 rw-p 00004000 08:20 174503 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hashtablez_sampler.so.2601.0.0 -7f7c310cc000-7f7c310ce000 r--p 00000000 08:20 176334 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_int128.so.2601.0.0 -7f7c310ce000-7f7c310d0000 r-xp 00002000 08:20 176334 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_int128.so.2601.0.0 -7f7c310d0000-7f7c310d1000 r--p 00004000 08:20 176334 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_int128.so.2601.0.0 -7f7c310d1000-7f7c310d2000 r--p 00004000 08:20 176334 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_int128.so.2601.0.0 -7f7c310d2000-7f7c310d3000 rw-p 00005000 08:20 176334 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_int128.so.2601.0.0 -7f7c310d3000-7f7c310d4000 r--p 00000000 08:20 173674 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_fnmatch.so.2601.0.0 -7f7c310d4000-7f7c310d5000 r-xp 00001000 08:20 173674 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_fnmatch.so.2601.0.0 -7f7c310d5000-7f7c310d6000 r--p 00002000 08:20 173674 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_fnmatch.so.2601.0.0 -7f7c310d6000-7f7c310d7000 r--p 00002000 08:20 173674 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_fnmatch.so.2601.0.0 -7f7c310d7000-7f7c310d8000 rw-p 00003000 08:20 173674 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_fnmatch.so.2601.0.0 -7f7c310d8000-7f7c310da000 r--p 00000000 08:20 176024 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_malloc_internal.so.2601.0.0 -7f7c310da000-7f7c310dc000 r-xp 00002000 08:20 176024 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_malloc_internal.so.2601.0.0 -7f7c310dc000-7f7c310dd000 r--p 00004000 08:20 176024 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_malloc_internal.so.2601.0.0 -7f7c310dd000-7f7c310de000 r--p 00004000 08:20 176024 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_malloc_internal.so.2601.0.0 -7f7c310de000-7f7c310df000 rw-p 00005000 08:20 176024 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_malloc_internal.so.2601.0.0 -7f7c310df000-7f7c310e0000 r--p 00000000 08:20 178559 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_tracing_internal.so.2601.0.0 -7f7c310e0000-7f7c310e1000 r-xp 00001000 08:20 178559 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_tracing_internal.so.2601.0.0 -7f7c310e1000-7f7c310e2000 r--p 00002000 08:20 178559 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_tracing_internal.so.2601.0.0 -7f7c310e2000-7f7c310e3000 r--p 00002000 08:20 178559 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_tracing_internal.so.2601.0.0 -7f7c310e3000-7f7c310e4000 rw-p 00003000 08:20 178559 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_tracing_internal.so.2601.0.0 -7f7c310e4000-7f7c310e5000 r--p 00000000 08:20 173445 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_exponential_biased.so.2601.0.0 -7f7c310e5000-7f7c310e6000 r-xp 00001000 08:20 173445 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_exponential_biased.so.2601.0.0 -7f7c310e6000-7f7c310e7000 r--p 00002000 08:20 173445 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_exponential_biased.so.2601.0.0 -7f7c310e7000-7f7c310e8000 r--p 00002000 08:20 173445 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_exponential_biased.so.2601.0.0 -7f7c310e8000-7f7c310e9000 rw-p 00003000 08:20 173445 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_exponential_biased.so.2601.0.0 -7f7c310e9000-7f7c310ea000 r--p 00000000 08:20 173659 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_stacktrace.so.2601.0.0 -7f7c310ea000-7f7c310ec000 r-xp 00001000 08:20 173659 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_stacktrace.so.2601.0.0 -7f7c310ec000-7f7c310ed000 r--p 00003000 08:20 173659 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_stacktrace.so.2601.0.0 -7f7c310ed000-7f7c310ee000 r--p 00003000 08:20 173659 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_stacktrace.so.2601.0.0 -7f7c310ee000-7f7c310ef000 rw-p 00004000 08:20 173659 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_stacktrace.so.2601.0.0 -7f7c310ef000-7f7c310f1000 r--p 00000000 08:20 177928 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_handle.so.2601.0.0 -7f7c310f1000-7f7c310f2000 r-xp 00002000 08:20 177928 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_handle.so.2601.0.0 -7f7c310f2000-7f7c310f3000 r--p 00003000 08:20 177928 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_handle.so.2601.0.0 -7f7c310f3000-7f7c310f4000 r--p 00003000 08:20 177928 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_handle.so.2601.0.0 -7f7c310f4000-7f7c310f5000 rw-p 00004000 08:20 177928 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_handle.so.2601.0.0 -7f7c310f5000-7f7c310f7000 r--p 00000000 08:20 175778 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_cord_state.so.2601.0.0 -7f7c310f7000-7f7c310fb000 r-xp 00002000 08:20 175778 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_cord_state.so.2601.0.0 -7f7c310fb000-7f7c310fc000 r--p 00006000 08:20 175778 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_cord_state.so.2601.0.0 -7f7c310fc000-7f7c310fd000 r--p 00006000 08:20 175778 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_cord_state.so.2601.0.0 -7f7c310fd000-7f7c310fe000 rw-p 00007000 08:20 175778 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_crc_cord_state.so.2601.0.0 -7f7c310fe000-7f7c310ff000 r--p 00000000 08:20 177417 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_logging_internal.so.2601.0.0 -7f7c310ff000-7f7c31100000 r-xp 00001000 08:20 177417 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_logging_internal.so.2601.0.0 -7f7c31100000-7f7c31101000 r--p 00002000 08:20 177417 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_logging_internal.so.2601.0.0 -7f7c31101000-7f7c31102000 r--p 00002000 08:20 177417 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_logging_internal.so.2601.0.0 -7f7c31102000-7f7c31103000 rw-p 00003000 08:20 177417 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_logging_internal.so.2601.0.0 -7f7c31103000-7f7c31127000 r--p 00000000 08:20 167892 /home/cbrissette/cuopt/.cuopt_env/lib/libssl.so.3 -7f7c31127000-7f7c311c2000 r-xp 00024000 08:20 167892 /home/cbrissette/cuopt/.cuopt_env/lib/libssl.so.3 -7f7c311c2000-7f7c311f2000 r--p 000bf000 08:20 167892 /home/cbrissette/cuopt/.cuopt_env/lib/libssl.so.3 -7f7c311f2000-7f7c311fc000 r--p 000ef000 08:20 167892 /home/cbrissette/cuopt/.cuopt_env/lib/libssl.so.3 -7f7c311fc000-7f7c31200000 rw-p 000f9000 08:20 167892 /home/cbrissette/cuopt/.cuopt_env/lib/libssl.so.3 -7f7c31200000-7f7c3b16c000 r-xp 00000000 08:20 100411 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcusparse.so.12.7.10.1 -7f7c3b16c000-7f7c3b36c000 ---p 09f6c000 08:20 100411 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcusparse.so.12.7.10.1 -7f7c3b36c000-7f7c3b37b000 r--p 09f6c000 08:20 100411 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcusparse.so.12.7.10.1 -7f7c3b37b000-7f7c3b399000 rw-p 09f7b000 08:20 100411 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcusparse.so.12.7.10.1 -7f7c3b399000-7f7c3b3be000 rw-p 00000000 00:00 0 -7f7c3b3be000-7f7c3b3bf000 rw-s a01e2b000 00:01 8270 /dev/zero (deleted) -7f7c3b3bf000-7f7c3b3c0000 rw-s a01e2a000 00:01 8269 /dev/zero (deleted) -7f7c3b3c0000-7f7c3b3c1000 rw-s a01e29000 00:01 8268 /dev/zero (deleted) -7f7c3b3c1000-7f7c3b3c2000 rw-s a01e28000 00:01 8267 /dev/zero (deleted) -7f7c3b3c2000-7f7c3b3c4000 r--p 00000000 08:20 173916 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_base.so.2601.0.0 -7f7c3b3c4000-7f7c3b3c5000 r-xp 00002000 08:20 173916 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_base.so.2601.0.0 -7f7c3b3c5000-7f7c3b3c6000 r--p 00003000 08:20 173916 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_base.so.2601.0.0 -7f7c3b3c6000-7f7c3b3c7000 r--p 00003000 08:20 173916 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_base.so.2601.0.0 -7f7c3b3c7000-7f7c3b3c8000 rw-p 00004000 08:20 173916 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_base.so.2601.0.0 -7f7c3b3c8000-7f7c3b3ca000 r--p 00000000 08:20 177853 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings_internal.so.2601.0.0 -7f7c3b3ca000-7f7c3b3cb000 r-xp 00002000 08:20 177853 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings_internal.so.2601.0.0 -7f7c3b3cb000-7f7c3b3cc000 r--p 00003000 08:20 177853 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings_internal.so.2601.0.0 -7f7c3b3cc000-7f7c3b3cd000 r--p 00003000 08:20 177853 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings_internal.so.2601.0.0 -7f7c3b3cd000-7f7c3b3ce000 rw-p 00004000 08:20 177853 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings_internal.so.2601.0.0 -7f7c3b3ce000-7f7c3b3cf000 r--p 00000000 08:20 174472 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_proto.so.2601.0.0 -7f7c3b3cf000-7f7c3b3d0000 r-xp 00001000 08:20 174472 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_proto.so.2601.0.0 -7f7c3b3d0000-7f7c3b3d1000 r--p 00002000 08:20 174472 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_proto.so.2601.0.0 -7f7c3b3d1000-7f7c3b3d2000 r--p 00002000 08:20 174472 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_proto.so.2601.0.0 -7f7c3b3d2000-7f7c3b3d3000 rw-p 00003000 08:20 174472 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_proto.so.2601.0.0 -7f7c3b3d3000-7f7c3b3d4000 r--p 00000000 08:20 177006 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_globals.so.2601.0.0 -7f7c3b3d4000-7f7c3b3d5000 r-xp 00001000 08:20 177006 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_globals.so.2601.0.0 -7f7c3b3d5000-7f7c3b3d6000 r--p 00002000 08:20 177006 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_globals.so.2601.0.0 -7f7c3b3d6000-7f7c3b3d7000 r--p 00002000 08:20 177006 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_globals.so.2601.0.0 -7f7c3b3d7000-7f7c3b3d8000 rw-p 00003000 08:20 177006 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_globals.so.2601.0.0 -7f7c3b3d8000-7f7c3b3da000 r--p 00000000 08:20 172473 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_log_sink_set.so.2601.0.0 -7f7c3b3da000-7f7c3b3db000 r-xp 00002000 08:20 172473 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_log_sink_set.so.2601.0.0 -7f7c3b3db000-7f7c3b3dc000 r--p 00003000 08:20 172473 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_log_sink_set.so.2601.0.0 -7f7c3b3dc000-7f7c3b3dd000 r--p 00003000 08:20 172473 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_log_sink_set.so.2601.0.0 -7f7c3b3dd000-7f7c3b3de000 rw-p 00004000 08:20 172473 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_log_sink_set.so.2601.0.0 -7f7c3b3de000-7f7c3b3df000 r--p 00000000 08:20 173223 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strerror.so.2601.0.0 -7f7c3b3df000-7f7c3b3e0000 r-xp 00001000 08:20 173223 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strerror.so.2601.0.0 -7f7c3b3e0000-7f7c3b3e1000 r--p 00002000 08:20 173223 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strerror.so.2601.0.0 -7f7c3b3e1000-7f7c3b3e2000 r--p 00002000 08:20 173223 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strerror.so.2601.0.0 -7f7c3b3e2000-7f7c3b3e3000 rw-p 00003000 08:20 173223 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strerror.so.2601.0.0 -7f7c3b3e3000-7f7c3b3e4000 r--p 00000000 08:20 175668 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_structured_proto.so.2601.0.0 -7f7c3b3e4000-7f7c3b3e5000 r-xp 00001000 08:20 175668 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_structured_proto.so.2601.0.0 -7f7c3b3e5000-7f7c3b3e6000 r--p 00002000 08:20 175668 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_structured_proto.so.2601.0.0 -7f7c3b3e6000-7f7c3b3e7000 r--p 00002000 08:20 175668 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_structured_proto.so.2601.0.0 -7f7c3b3e7000-7f7c3b3e8000 rw-p 00003000 08:20 175668 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_structured_proto.so.2601.0.0 -7f7c3b3e8000-7f7c3b3ea000 r--p 00000000 08:20 173934 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_format.so.2601.0.0 -7f7c3b3ea000-7f7c3b3eb000 r-xp 00002000 08:20 173934 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_format.so.2601.0.0 -7f7c3b3eb000-7f7c3b3ec000 r--p 00003000 08:20 173934 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_format.so.2601.0.0 -7f7c3b3ec000-7f7c3b3ed000 r--p 00003000 08:20 173934 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_format.so.2601.0.0 -7f7c3b3ed000-7f7c3b3ee000 rw-p 00004000 08:20 173934 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_format.so.2601.0.0 -7f7c3b3ee000-7f7c3b3ef000 r--p 00000000 08:20 172814 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_examine_stack.so.2601.0.0 -7f7c3b3ef000-7f7c3b3f0000 r-xp 00001000 08:20 172814 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_examine_stack.so.2601.0.0 -7f7c3b3f0000-7f7c3b3f1000 r--p 00002000 08:20 172814 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_examine_stack.so.2601.0.0 -7f7c3b3f1000-7f7c3b3f2000 r--p 00002000 08:20 172814 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_examine_stack.so.2601.0.0 -7f7c3b3f2000-7f7c3b3f3000 rw-p 00003000 08:20 172814 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_examine_stack.so.2601.0.0 -7f7c3b3f3000-7f7c3b3f6000 r--p 00000000 08:20 172840 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_reflection.so.2601.0.0 -7f7c3b3f6000-7f7c3b3fc000 r-xp 00003000 08:20 172840 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_reflection.so.2601.0.0 -7f7c3b3fc000-7f7c3b3fe000 r--p 00009000 08:20 172840 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_reflection.so.2601.0.0 -7f7c3b3fe000-7f7c3b3ff000 r--p 0000a000 08:20 172840 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_reflection.so.2601.0.0 -7f7c3b3ff000-7f7c3b400000 rw-p 0000b000 08:20 172840 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_reflection.so.2601.0.0 -7f7c3b400000-7f7c3e79d000 r-xp 00000000 08:20 101544 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublas.so.13.4.0.1 -7f7c3e79d000-7f7c3e99d000 ---p 0339d000 08:20 101544 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublas.so.13.4.0.1 -7f7c3e99d000-7f7c3e9a9000 r--p 0339d000 08:20 101544 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublas.so.13.4.0.1 -7f7c3e9a9000-7f7c3e9b0000 rw-p 033a9000 08:20 101544 /home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib/libcublas.so.13.4.0.1 -7f7c3e9b0000-7f7c3e9d4000 rw-p 00000000 00:00 0 -7f7c3e9d4000-7f7c3e9d5000 rw-s a01e27000 00:01 8266 /dev/zero (deleted) -7f7c3e9d5000-7f7c3e9d6000 rw-s a01e26000 00:01 8265 /dev/zero (deleted) -7f7c3e9d6000-7f7c3e9d7000 r--p 00000000 08:20 176086 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_leak_check.so.2601.0.0 -7f7c3e9d7000-7f7c3e9d8000 r-xp 00001000 08:20 176086 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_leak_check.so.2601.0.0 -7f7c3e9d8000-7f7c3e9d9000 r--p 00002000 08:20 176086 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_leak_check.so.2601.0.0 -7f7c3e9d9000-7f7c3e9da000 r--p 00002000 08:20 176086 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_leak_check.so.2601.0.0 -7f7c3e9da000-7f7c3e9db000 rw-p 00003000 08:20 176086 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_leak_check.so.2601.0.0 -7f7c3e9db000-7f7c3e9df000 r--p 00000000 08:20 173480 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_marshalling.so.2601.0.0 -7f7c3e9df000-7f7c3e9e4000 r-xp 00004000 08:20 173480 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_marshalling.so.2601.0.0 -7f7c3e9e4000-7f7c3e9e5000 r--p 00009000 08:20 173480 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_marshalling.so.2601.0.0 -7f7c3e9e5000-7f7c3e9e6000 r--p 0000a000 08:20 173480 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_marshalling.so.2601.0.0 -7f7c3e9e6000-7f7c3e9e7000 rw-p 0000b000 08:20 173480 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_marshalling.so.2601.0.0 -7f7c3e9e7000-7f7c3e9eb000 r--p 00000000 08:20 176110 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_internal.so.2601.0.0 -7f7c3e9eb000-7f7c3e9ee000 r-xp 00004000 08:20 176110 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_internal.so.2601.0.0 -7f7c3e9ee000-7f7c3e9f0000 r--p 00007000 08:20 176110 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_internal.so.2601.0.0 -7f7c3e9f0000-7f7c3e9f1000 r--p 00008000 08:20 176110 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_internal.so.2601.0.0 -7f7c3e9f1000-7f7c3e9f2000 rw-p 00009000 08:20 176110 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_flags_internal.so.2601.0.0 -7f7c3e9f2000-7f7c3e9f3000 r--p 00000000 08:20 176919 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_slow.so.2601.0.0 -7f7c3e9f3000-7f7c3e9f4000 r-xp 00001000 08:20 176919 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_slow.so.2601.0.0 -7f7c3e9f4000-7f7c3e9f6000 r--p 00002000 08:20 176919 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_slow.so.2601.0.0 -7f7c3e9f6000-7f7c3e9f7000 r--p 00003000 08:20 176919 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_slow.so.2601.0.0 -7f7c3e9f7000-7f7c3e9f8000 rw-p 00004000 08:20 176919 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_slow.so.2601.0.0 -7f7c3e9f8000-7f7c3e9f9000 r--p 00000000 08:20 172885 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes_impl.so.2601.0.0 -7f7c3e9f9000-7f7c3e9fa000 r-xp 00001000 08:20 172885 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes_impl.so.2601.0.0 -7f7c3e9fa000-7f7c3e9fb000 r--p 00002000 08:20 172885 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes_impl.so.2601.0.0 -7f7c3e9fb000-7f7c3e9fc000 r--p 00002000 08:20 172885 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes_impl.so.2601.0.0 -7f7c3e9fc000-7f7c3e9fd000 rw-p 00003000 08:20 172885 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen_hwaes_impl.so.2601.0.0 -7f7c3e9fd000-7f7c3ea15000 r--p 00000000 08:20 192153 /home/cbrissette/cuopt/.cuopt_env/lib/libre2.so.11 -7f7c3ea15000-7f7c3ea5b000 r-xp 00018000 08:20 192153 /home/cbrissette/cuopt/.cuopt_env/lib/libre2.so.11 -7f7c3ea5b000-7f7c3ea74000 r--p 0005e000 08:20 192153 /home/cbrissette/cuopt/.cuopt_env/lib/libre2.so.11 -7f7c3ea74000-7f7c3ea79000 r--p 00076000 08:20 192153 /home/cbrissette/cuopt/.cuopt_env/lib/libre2.so.11 -7f7c3ea79000-7f7c3ea7a000 rw-p 0007b000 08:20 192153 /home/cbrissette/cuopt/.cuopt_env/lib/libre2.so.11 -7f7c3ea7a000-7f7c3ea88000 r--p 00000000 08:20 84539 /home/cbrissette/cuopt/.cuopt_env/lib/libcares.so.2.19.5 -7f7c3ea88000-7f7c3eab3000 r-xp 0000e000 08:20 84539 /home/cbrissette/cuopt/.cuopt_env/lib/libcares.so.2.19.5 -7f7c3eab3000-7f7c3eabe000 r--p 00039000 08:20 84539 /home/cbrissette/cuopt/.cuopt_env/lib/libcares.so.2.19.5 -7f7c3eabe000-7f7c3eac0000 r--p 00043000 08:20 84539 /home/cbrissette/cuopt/.cuopt_env/lib/libcares.so.2.19.5 -7f7c3eac0000-7f7c3eac1000 rw-p 00045000 08:20 84539 /home/cbrissette/cuopt/.cuopt_env/lib/libcares.so.2.19.5 -7f7c3eac1000-7f7c3ed51000 r--p 00000000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so -7f7c3ed51000-7f7c3f960000 r-xp 00290000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so -7f7c3f960000-7f7c3fc88000 r--p 00e9f000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so -7f7c3fc88000-7f7c3fca9000 r--p 011c7000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so -7f7c3fca9000-7f7c3fcb0000 rw-p 011e8000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so -7f7c3fcb0000-7f7c40e30000 rw-p 00000000 00:00 0 -7f7c40e30000-7f7c40e31000 ---p 0236f000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so -7f7c40e31000-7f7c44000000 rw-p 011ef000 08:20 77543 /home/cbrissette/cuopt/.cuopt_env/lib/libcuopt.so -7f7c44000000-7f7c44021000 rw-p 00000000 00:00 0 -7f7c44021000-7f7c48000000 ---p 00000000 00:00 0 -7f7c48000000-7f7c48021000 rw-p 00000000 00:00 0 -7f7c48021000-7f7c4c000000 ---p 00000000 00:00 0 -7f7c4c000000-7f7c4c021000 rw-p 00000000 00:00 0 -7f7c4c021000-7f7c50000000 ---p 00000000 00:00 0 -7f7c50000000-7f7c50021000 rw-p 00000000 00:00 0 -7f7c50021000-7f7c54000000 ---p 00000000 00:00 0 -7f7c54000000-7f7c54021000 rw-p 00000000 00:00 0 -7f7c54021000-7f7c58000000 ---p 00000000 00:00 0 -7f7c58000000-7f7c58021000 rw-p 00000000 00:00 0 -7f7c58021000-7f7c5c000000 ---p 00000000 00:00 0 -7f7c5c000000-7f7c5c04c000 rw-p 00000000 00:00 0 -7f7c5c04c000-7f7c60000000 ---p 00000000 00:00 0 -7f7c60000000-7f7c601c4000 rw-p 00000000 00:00 0 -7f7c601c4000-7f7c64000000 ---p 00000000 00:00 0 -7f7c64000000-7f7c64021000 rw-p 00000000 00:00 0 -7f7c64021000-7f7c68000000 ---p 00000000 00:00 0 -7f7c68000000-7f7c68023000 rw-p 00000000 00:00 0 -7f7c68023000-7f7c6c000000 ---p 00000000 00:00 0 -7f7c6c000000-7f7c6c021000 rw-p 00000000 00:00 0 -7f7c6c021000-7f7c70000000 ---p 00000000 00:00 0 -7f7c70000000-7f7c70021000 rw-p 00000000 00:00 0 -7f7c70021000-7f7c74000000 ---p 00000000 00:00 0 -7f7c74000000-7f7c74021000 rw-p 00000000 00:00 0 -7f7c74021000-7f7c78000000 ---p 00000000 00:00 0 -7f7c78000000-7f7c780e8000 rw-p 00000000 00:00 0 -7f7c780e8000-7f7c7c000000 ---p 00000000 00:00 0 -7f7c7c000000-7f7c7c3a3000 rw-p 00000000 00:00 0 -7f7c7c3a3000-7f7c80000000 ---p 00000000 00:00 0 -7f7c80000000-7f7c802b8000 rw-p 00000000 00:00 0 -7f7c802b8000-7f7c84000000 ---p 00000000 00:00 0 -7f7c84000000-7f7c84021000 rw-p 00000000 00:00 0 -7f7c84021000-7f7c88000000 ---p 00000000 00:00 0 -7f7c88000000-7f7c88021000 rw-p 00000000 00:00 0 -7f7c88021000-7f7c8c000000 ---p 00000000 00:00 0 -7f7c8c000000-7f7c8c021000 rw-p 00000000 00:00 0 -7f7c8c021000-7f7c90000000 ---p 00000000 00:00 0 -7f7c90000000-7f7c90021000 rw-p 00000000 00:00 0 -7f7c90021000-7f7c94000000 ---p 00000000 00:00 0 -7f7c94000000-7f7c94021000 rw-p 00000000 00:00 0 -7f7c94021000-7f7c98000000 ---p 00000000 00:00 0 -7f7c98000000-7f7c98023000 rw-p 00000000 00:00 0 -7f7c98023000-7f7c9c000000 ---p 00000000 00:00 0 -7f7c9c000000-7f7c9c021000 rw-p 00000000 00:00 0 -7f7c9c021000-7f7ca0000000 ---p 00000000 00:00 0 -7f7ca0000000-7f7ca0021000 rw-p 00000000 00:00 0 -7f7ca0021000-7f7ca4000000 ---p 00000000 00:00 0 -7f7ca4000000-7f7ca4001000 rw-s a01e25000 00:01 8264 /dev/zero (deleted) -7f7ca4001000-7f7ca4002000 rw-s a01e24000 00:01 8263 /dev/zero (deleted) -7f7ca4002000-7f7ca4003000 r--p 00000000 08:20 173464 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen.so.2601.0.0 -7f7ca4003000-7f7ca4004000 r-xp 00001000 08:20 173464 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen.so.2601.0.0 -7f7ca4004000-7f7ca4005000 r--p 00002000 08:20 173464 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen.so.2601.0.0 -7f7ca4005000-7f7ca4006000 r--p 00002000 08:20 173464 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen.so.2601.0.0 -7f7ca4006000-7f7ca4007000 rw-p 00003000 08:20 173464 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_randen.so.2601.0.0 -7f7ca4007000-7f7ca4009000 r--p 00000000 08:20 178082 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_kernel_timeout_internal.so.2601.0.0 -7f7ca4009000-7f7ca400a000 r-xp 00002000 08:20 178082 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_kernel_timeout_internal.so.2601.0.0 -7f7ca400a000-7f7ca400b000 r--p 00003000 08:20 178082 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_kernel_timeout_internal.so.2601.0.0 -7f7ca400b000-7f7ca400c000 r--p 00003000 08:20 178082 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_kernel_timeout_internal.so.2601.0.0 -7f7ca400c000-7f7ca400d000 rw-p 00004000 08:20 178082 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_kernel_timeout_internal.so.2601.0.0 -7f7ca400d000-7f7ca400f000 r--p 00000000 08:20 175359 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_entropy_pool.so.2601.0.0 -7f7ca400f000-7f7ca4010000 r-xp 00002000 08:20 175359 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_entropy_pool.so.2601.0.0 -7f7ca4010000-7f7ca4011000 r--p 00003000 08:20 175359 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_entropy_pool.so.2601.0.0 -7f7ca4011000-7f7ca4012000 r--p 00003000 08:20 175359 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_entropy_pool.so.2601.0.0 -7f7ca4012000-7f7ca4013000 rw-p 00004000 08:20 175359 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_random_internal_entropy_pool.so.2601.0.0 -7f7ca4013000-7f7ca4015000 r--p 00000000 08:20 178507 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_globals.so.2601.0.0 -7f7ca4015000-7f7ca4016000 r-xp 00002000 08:20 178507 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_globals.so.2601.0.0 -7f7ca4016000-7f7ca4017000 r--p 00003000 08:20 178507 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_globals.so.2601.0.0 -7f7ca4017000-7f7ca4018000 r--p 00003000 08:20 178507 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_globals.so.2601.0.0 -7f7ca4018000-7f7ca4019000 rw-p 00004000 08:20 178507 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_globals.so.2601.0.0 -7f7ca4019000-7f7ca401a000 r--p 00000000 08:20 139113 /home/cbrissette/cuopt/.cuopt_env/lib/libaddress_sorting.so.52.0.0 -7f7ca401a000-7f7ca401b000 r-xp 00001000 08:20 139113 /home/cbrissette/cuopt/.cuopt_env/lib/libaddress_sorting.so.52.0.0 -7f7ca401b000-7f7ca401c000 r--p 00002000 08:20 139113 /home/cbrissette/cuopt/.cuopt_env/lib/libaddress_sorting.so.52.0.0 -7f7ca401c000-7f7ca401d000 r--p 00002000 08:20 139113 /home/cbrissette/cuopt/.cuopt_env/lib/libaddress_sorting.so.52.0.0 -7f7ca401d000-7f7ca401e000 rw-p 00003000 08:20 139113 /home/cbrissette/cuopt/.cuopt_env/lib/libaddress_sorting.so.52.0.0 -7f7ca401e000-7f7ca4021000 r--p 00000000 08:20 175772 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_throw_delegate.so.2601.0.0 -7f7ca4021000-7f7ca4022000 r-xp 00003000 08:20 175772 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_throw_delegate.so.2601.0.0 -7f7ca4022000-7f7ca4023000 r--p 00004000 08:20 175772 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_throw_delegate.so.2601.0.0 -7f7ca4023000-7f7ca4024000 r--p 00004000 08:20 175772 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_throw_delegate.so.2601.0.0 -7f7ca4024000-7f7ca4025000 rw-p 00005000 08:20 175772 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_throw_delegate.so.2601.0.0 -7f7ca4025000-7f7ca4026000 r--p 00000000 08:20 174707 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_spinlock_wait.so.2601.0.0 -7f7ca4026000-7f7ca4027000 r-xp 00001000 08:20 174707 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_spinlock_wait.so.2601.0.0 -7f7ca4027000-7f7ca4028000 r--p 00002000 08:20 174707 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_spinlock_wait.so.2601.0.0 -7f7ca4028000-7f7ca4029000 r--p 00002000 08:20 174707 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_spinlock_wait.so.2601.0.0 -7f7ca4029000-7f7ca402a000 rw-p 00003000 08:20 174707 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_spinlock_wait.so.2601.0.0 -7f7ca402a000-7f7ca402b000 r--p 00000000 08:20 172795 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hash.so.2601.0.0 -7f7ca402b000-7f7ca402c000 r-xp 00001000 08:20 172795 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hash.so.2601.0.0 -7f7ca402c000-7f7ca402d000 r--p 00002000 08:20 172795 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hash.so.2601.0.0 -7f7ca402d000-7f7ca402e000 r--p 00002000 08:20 172795 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hash.so.2601.0.0 -7f7ca402e000-7f7ca402f000 rw-p 00003000 08:20 172795 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_hash.so.2601.0.0 -7f7ca402f000-7f7ca4036000 r--p 00000000 08:20 172948 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time_zone.so.2601.0.0 -7f7ca4036000-7f7ca404a000 r-xp 00007000 08:20 172948 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time_zone.so.2601.0.0 -7f7ca404a000-7f7ca404d000 r--p 0001b000 08:20 172948 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time_zone.so.2601.0.0 -7f7ca404d000-7f7ca404e000 r--p 0001e000 08:20 172948 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time_zone.so.2601.0.0 -7f7ca404e000-7f7ca404f000 rw-p 0001f000 08:20 172948 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time_zone.so.2601.0.0 -7f7ca404f000-7f7ca4055000 r--p 00000000 08:20 173780 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time.so.2601.0.0 -7f7ca4055000-7f7ca4062000 r-xp 00006000 08:20 173780 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time.so.2601.0.0 -7f7ca4062000-7f7ca4064000 r--p 00013000 08:20 173780 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time.so.2601.0.0 -7f7ca4064000-7f7ca4065000 r--p 00015000 08:20 173780 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time.so.2601.0.0 -7f7ca4065000-7f7ca4066000 rw-p 00016000 08:20 173780 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_time.so.2601.0.0 -7f7ca4066000-7f7ca4069000 r--p 00000000 08:20 174438 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord_internal.so.2601.0.0 -7f7ca4069000-7f7ca4077000 r-xp 00003000 08:20 174438 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord_internal.so.2601.0.0 -7f7ca4077000-7f7ca4079000 r--p 00011000 08:20 174438 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord_internal.so.2601.0.0 -7f7ca4079000-7f7ca407a000 r--p 00012000 08:20 174438 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord_internal.so.2601.0.0 -7f7ca407a000-7f7ca407b000 rw-p 00013000 08:20 174438 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord_internal.so.2601.0.0 -7f7ca407b000-7f7ca407d000 r--p 00000000 08:20 173725 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_hash_set.so.2601.0.0 -7f7ca407d000-7f7ca4081000 r-xp 00002000 08:20 173725 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_hash_set.so.2601.0.0 -7f7ca4081000-7f7ca4082000 r--p 00006000 08:20 173725 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_hash_set.so.2601.0.0 -7f7ca4082000-7f7ca4083000 r--p 00007000 08:20 173725 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_hash_set.so.2601.0.0 -7f7ca4083000-7f7ca4084000 rw-p 00008000 08:20 173725 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_raw_hash_set.so.2601.0.0 -7f7ca4084000-7f7ca4085000 r--p 00000000 08:20 174927 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_conditions.so.2601.0.0 -7f7ca4085000-7f7ca4086000 r-xp 00001000 08:20 174927 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_conditions.so.2601.0.0 -7f7ca4086000-7f7ca4087000 r--p 00002000 08:20 174927 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_conditions.so.2601.0.0 -7f7ca4087000-7f7ca4088000 r--p 00002000 08:20 174927 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_conditions.so.2601.0.0 -7f7ca4088000-7f7ca4089000 rw-p 00003000 08:20 174927 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_conditions.so.2601.0.0 -7f7ca4089000-7f7ca408a000 r--p 00000000 08:20 144730 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_validity.so.33.5.0 -7f7ca408a000-7f7ca408b000 r-xp 00001000 08:20 144730 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_validity.so.33.5.0 -7f7ca408b000-7f7ca408c000 r--p 00002000 08:20 144730 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_validity.so.33.5.0 -7f7ca408c000-7f7ca408d000 r--p 00002000 08:20 144730 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_validity.so.33.5.0 -7f7ca408d000-7f7ca408e000 rw-p 00003000 08:20 144730 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_validity.so.33.5.0 -7f7ca408e000-7f7ca408f000 r--p 00000000 08:20 173312 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_die_if_null.so.2601.0.0 -7f7ca408f000-7f7ca4090000 r-xp 00001000 08:20 173312 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_die_if_null.so.2601.0.0 -7f7ca4090000-7f7ca4091000 r--p 00002000 08:20 173312 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_die_if_null.so.2601.0.0 -7f7ca4091000-7f7ca4092000 r--p 00002000 08:20 173312 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_die_if_null.so.2601.0.0 -7f7ca4092000-7f7ca4093000 rw-p 00003000 08:20 173312 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_die_if_null.so.2601.0.0 -7f7ca4093000-7f7ca4099000 r--p 00000000 08:20 178474 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_str_format_internal.so.2601.0.0 -7f7ca4099000-7f7ca40af000 r-xp 00006000 08:20 178474 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_str_format_internal.so.2601.0.0 -7f7ca40af000-7f7ca40b2000 r--p 0001c000 08:20 178474 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_str_format_internal.so.2601.0.0 -7f7ca40b2000-7f7ca40b3000 r--p 0001f000 08:20 178474 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_str_format_internal.so.2601.0.0 -7f7ca40b3000-7f7ca40b4000 rw-p 00020000 08:20 178474 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_str_format_internal.so.2601.0.0 -7f7ca40b4000-7f7ca40b8000 r--p 00000000 08:20 178182 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_status.so.2601.0.0 -7f7ca40b8000-7f7ca40bc000 r-xp 00004000 08:20 178182 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_status.so.2601.0.0 -7f7ca40bc000-7f7ca40be000 r--p 00008000 08:20 178182 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_status.so.2601.0.0 -7f7ca40be000-7f7ca40bf000 r--p 00009000 08:20 178182 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_status.so.2601.0.0 -7f7ca40bf000-7f7ca40c0000 rw-p 0000a000 08:20 178182 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_status.so.2601.0.0 -7f7ca40c0000-7f7ca40c2000 r--p 00000000 08:20 175942 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_statusor.so.2601.0.0 -7f7ca40c2000-7f7ca40c3000 r-xp 00002000 08:20 175942 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_statusor.so.2601.0.0 -7f7ca40c3000-7f7ca40c4000 r--p 00003000 08:20 175942 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_statusor.so.2601.0.0 -7f7ca40c4000-7f7ca40c5000 r--p 00003000 08:20 175942 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_statusor.so.2601.0.0 -7f7ca40c5000-7f7ca40c6000 rw-p 00004000 08:20 175942 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_statusor.so.2601.0.0 -7f7ca40c6000-7f7ca40c8000 r--p 00000000 08:20 174394 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_vlog_config_internal.so.2601.0.0 -7f7ca40c8000-7f7ca40cc000 r-xp 00002000 08:20 174394 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_vlog_config_internal.so.2601.0.0 -7f7ca40cc000-7f7ca40cd000 r--p 00006000 08:20 174394 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_vlog_config_internal.so.2601.0.0 -7f7ca40cd000-7f7ca40ce000 r--p 00006000 08:20 174394 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_vlog_config_internal.so.2601.0.0 -7f7ca40ce000-7f7ca40cf000 rw-p 00007000 08:20 174394 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_vlog_config_internal.so.2601.0.0 -7f7ca40cf000-7f7ca40d0000 r--p 00000000 08:20 144825 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_range.so.33.5.0 -7f7ca40d0000-7f7ca40d1000 r-xp 00001000 08:20 144825 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_range.so.33.5.0 -7f7ca40d1000-7f7ca40d2000 r--p 00002000 08:20 144825 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_range.so.33.5.0 -7f7ca40d2000-7f7ca40d3000 r--p 00002000 08:20 144825 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_range.so.33.5.0 -7f7ca40d3000-7f7ca40d4000 rw-p 00003000 08:20 144825 /home/cbrissette/cuopt/.cuopt_env/lib/libutf8_range.so.33.5.0 -7f7ca40d4000-7f7ca40db000 r--p 00000000 08:20 173525 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings.so.2601.0.0 -7f7ca40db000-7f7ca40f2000 r-xp 00007000 08:20 173525 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings.so.2601.0.0 -7f7ca40f2000-7f7ca40fb000 r--p 0001e000 08:20 173525 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings.so.2601.0.0 -7f7ca40fb000-7f7ca40fc000 r--p 00026000 08:20 173525 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings.so.2601.0.0 -7f7ca40fc000-7f7ca40fd000 rw-p 00027000 08:20 173525 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_strings.so.2601.0.0 -7f7ca40fd000-7f7ca4103000 r--p 00000000 08:20 176237 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_synchronization.so.2601.0.0 -7f7ca4103000-7f7ca4108000 r-xp 00006000 08:20 176237 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_synchronization.so.2601.0.0 -7f7ca4108000-7f7ca410b000 r--p 0000b000 08:20 176237 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_synchronization.so.2601.0.0 -7f7ca410b000-7f7ca410c000 r--p 0000d000 08:20 176237 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_synchronization.so.2601.0.0 -7f7ca410c000-7f7ca410d000 rw-p 0000e000 08:20 176237 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_synchronization.so.2601.0.0 -7f7ca410d000-7f7ca410f000 rw-p 00000000 00:00 0 -7f7ca410f000-7f7ca4110000 r--p 00000000 08:20 178365 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_functions.so.2601.0.0 -7f7ca4110000-7f7ca4111000 r-xp 00001000 08:20 178365 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_functions.so.2601.0.0 -7f7ca4111000-7f7ca4112000 r--p 00002000 08:20 178365 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_functions.so.2601.0.0 -7f7ca4112000-7f7ca4113000 r--p 00002000 08:20 178365 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_functions.so.2601.0.0 -7f7ca4113000-7f7ca4114000 rw-p 00003000 08:20 178365 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_functions.so.2601.0.0 -7f7ca4114000-7f7ca4116000 r--p 00000000 08:20 175257 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_info.so.2601.0.0 -7f7ca4116000-7f7ca4118000 r-xp 00002000 08:20 175257 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_info.so.2601.0.0 -7f7ca4118000-7f7ca4119000 r--p 00004000 08:20 175257 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_info.so.2601.0.0 -7f7ca4119000-7f7ca411a000 r--p 00004000 08:20 175257 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_info.so.2601.0.0 -7f7ca411a000-7f7ca411b000 rw-p 00005000 08:20 175257 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cordz_info.so.2601.0.0 -7f7ca411b000-7f7ca4121000 r--p 00000000 08:20 177056 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord.so.2601.0.0 -7f7ca4121000-7f7ca413a000 r-xp 00006000 08:20 177056 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord.so.2601.0.0 -7f7ca413a000-7f7ca413d000 r--p 0001f000 08:20 177056 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord.so.2601.0.0 -7f7ca413d000-7f7ca413e000 r--p 00021000 08:20 177056 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord.so.2601.0.0 -7f7ca413e000-7f7ca413f000 rw-p 00022000 08:20 177056 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_cord.so.2601.0.0 -7f7ca413f000-7f7ca4145000 r--p 00000000 08:20 173104 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_message.so.2601.0.0 -7f7ca4145000-7f7ca4149000 r-xp 00006000 08:20 173104 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_message.so.2601.0.0 -7f7ca4149000-7f7ca414b000 r--p 0000a000 08:20 173104 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_message.so.2601.0.0 -7f7ca414b000-7f7ca414c000 r--p 0000b000 08:20 173104 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_message.so.2601.0.0 -7f7ca414c000-7f7ca414d000 rw-p 0000c000 08:20 173104 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_message.so.2601.0.0 -7f7ca414d000-7f7ca41e2000 r--p 00000000 08:20 144643 /home/cbrissette/cuopt/.cuopt_env/lib/libprotobuf.so.33.5.0 -7f7ca41e2000-7f7ca4405000 r-xp 00095000 08:20 144643 /home/cbrissette/cuopt/.cuopt_env/lib/libprotobuf.so.33.5.0 -7f7ca4405000-7f7ca4471000 r--p 002b8000 08:20 144643 /home/cbrissette/cuopt/.cuopt_env/lib/libprotobuf.so.33.5.0 -7f7ca4471000-7f7ca447c000 r--p 00324000 08:20 144643 /home/cbrissette/cuopt/.cuopt_env/lib/libprotobuf.so.33.5.0 -7f7ca447c000-7f7ca4483000 rw-p 0032f000 08:20 144643 /home/cbrissette/cuopt/.cuopt_env/lib/libprotobuf.so.33.5.0 -7f7ca4483000-7f7ca4484000 rw-p 00000000 00:00 0 -7f7ca4484000-7f7ca4491000 r--p 00000000 08:20 83455 /home/cbrissette/cuopt/.cuopt_env/lib/libgomp.so.1.0.0 -7f7ca4491000-7f7ca44ca000 r-xp 0000d000 08:20 83455 /home/cbrissette/cuopt/.cuopt_env/lib/libgomp.so.1.0.0 -7f7ca44ca000-7f7ca44d8000 r--p 00046000 08:20 83455 /home/cbrissette/cuopt/.cuopt_env/lib/libgomp.so.1.0.0 -7f7ca44d8000-7f7ca44d9000 r--p 00054000 08:20 83455 /home/cbrissette/cuopt/.cuopt_env/lib/libgomp.so.1.0.0 -7f7ca44d9000-7f7ca44da000 rw-p 00055000 08:20 83455 /home/cbrissette/cuopt/.cuopt_env/lib/libgomp.so.1.0.0 -7f7ca44da000-7f7ca44f6000 r--p 00000000 08:20 182877 /home/cbrissette/cuopt/.cuopt_env/lib/librmm.so -7f7ca44f6000-7f7ca45b6000 r-xp 0001c000 08:20 182877 /home/cbrissette/cuopt/.cuopt_env/lib/librmm.so -7f7ca45b6000-7f7ca45e6000 r--p 000dc000 08:20 182877 /home/cbrissette/cuopt/.cuopt_env/lib/librmm.so -7f7ca45e6000-7f7ca45ed000 r--p 0010c000 08:20 182877 /home/cbrissette/cuopt/.cuopt_env/lib/librmm.so -7f7ca45ed000-7f7ca45ee000 rw-p 00113000 08:20 182877 /home/cbrissette/cuopt/.cuopt_env/lib/librmm.so -7f7ca45ee000-7f7ca45f0000 rw-p 00000000 00:00 0 -7f7ca45f0000-7f7ca461d000 r--p 00000000 08:20 140888 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc++.so.1.78.1 -7f7ca461d000-7f7ca4676000 r-xp 0002d000 08:20 140888 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc++.so.1.78.1 -7f7ca4676000-7f7ca4692000 r--p 00086000 08:20 140888 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc++.so.1.78.1 -7f7ca4692000-7f7ca4697000 r--p 000a2000 08:20 140888 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc++.so.1.78.1 -7f7ca4697000-7f7ca4698000 rw-p 000a7000 08:20 140888 /home/cbrissette/cuopt/.cuopt_env/lib/libgrpc++.so.1.78.1 -7f7ca4698000-7f7ca46a6000 r--p 00000000 08:20 194104 /home/cbrissette/cuopt/.cuopt_env/lib/libtbb.so.12.18 -7f7ca46a6000-7f7ca46d3000 r-xp 0000e000 08:20 194104 /home/cbrissette/cuopt/.cuopt_env/lib/libtbb.so.12.18 -7f7ca46d3000-7f7ca46df000 r--p 0003b000 08:20 194104 /home/cbrissette/cuopt/.cuopt_env/lib/libtbb.so.12.18 -7f7ca46df000-7f7ca46e1000 r--p 00046000 08:20 194104 /home/cbrissette/cuopt/.cuopt_env/lib/libtbb.so.12.18 -7f7ca46e1000-7f7ca46e4000 rw-p 00048000 08:20 194104 /home/cbrissette/cuopt/.cuopt_env/lib/libtbb.so.12.18 -7f7ca46e4000-7f7ca46fa000 rw-p 00000000 00:00 0 -7f7ca46fa000-7f7ca46fe000 ---p 00000000 00:00 0 -7f7ca46fe000-7f7ca47fa000 rw-p 00000000 00:00 0 -7f7ca47fa000-7f7ca47fb000 ---p 00000000 00:00 0 -7f7ca47fb000-7f7ca48fb000 rw-p 00000000 00:00 0 -7f7ca48fb000-7f7ca48fc000 ---p 00000000 00:00 0 -7f7ca48fc000-7f7ca49fc000 rw-p 00000000 00:00 0 -7f7ca49fc000-7f7ca49fd000 ---p 00000000 00:00 0 -7f7ca49fd000-7f7ca4afd000 rw-p 00000000 00:00 0 -7f7ca4afd000-7f7ca4afe000 ---p 00000000 00:00 0 -7f7ca4afe000-7f7ca4bfe000 rw-p 00000000 00:00 0 -7f7ca4bfe000-7f7ca4bff000 ---p 00000000 00:00 0 -7f7ca4bff000-7f7ca4cff000 rw-p 00000000 00:00 0 -7f7ca4cff000-7f7ca4d03000 ---p 00000000 00:00 0 -7f7ca4d03000-7f7ca4dff000 rw-p 00000000 00:00 0 -7f7ca4dff000-7f7ca4e03000 ---p 00000000 00:00 0 -7f7ca4e03000-7f7ca4eff000 rw-p 00000000 00:00 0 -7f7ca4eff000-7f7ca4f03000 ---p 00000000 00:00 0 -7f7ca4f03000-7f7ca4fff000 rw-p 00000000 00:00 0 -7f7ca4fff000-7f7ca5003000 ---p 00000000 00:00 0 -7f7ca5003000-7f7ca50ff000 rw-p 00000000 00:00 0 -7f7ca50ff000-7f7ca5103000 ---p 00000000 00:00 0 -7f7ca5103000-7f7ca51ff000 rw-p 00000000 00:00 0 -7f7ca51ff000-7f7ca5200000 ---p 00000000 00:00 0 -7f7ca5200000-7f7ca5300000 rw-p 00000000 00:00 0 -7f7ca5300000-7f7ca5304000 ---p 00000000 00:00 0 -7f7ca5304000-7f7ca5400000 rw-p 00000000 00:00 0 -7f7ca5400000-7f7ca5404000 ---p 00000000 00:00 0 -7f7ca5404000-7f7ca5500000 rw-p 00000000 00:00 0 -7f7ca5500000-7f7ca5504000 ---p 00000000 00:00 0 -7f7ca5504000-7f7ca5600000 rw-p 00000000 00:00 0 -7f7ca5600000-7f7ca5604000 ---p 00000000 00:00 0 -7f7ca5604000-7f7ca5700000 rw-p 00000000 00:00 0 -7f7ca5700000-7f7ca5704000 ---p 00000000 00:00 0 -7f7ca5704000-7f7ca5fc0000 rw-p 00000000 00:00 0 -7f7ca5fc0000-7f7ca6000000 ---p 00000000 00:00 0 -7f7ca6000000-7f7ca8000000 rw-p 00000000 00:00 0 -7f7ca8000000-7f7ca8021000 rw-p 00000000 00:00 0 -7f7ca8021000-7f7cac000000 ---p 00000000 00:00 0 -7f7cac000000-7f7cac003000 r--p 00000000 08:20 175246 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_check_op.so.2601.0.0 -7f7cac003000-7f7cac006000 r-xp 00003000 08:20 175246 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_check_op.so.2601.0.0 -7f7cac006000-7f7cac007000 r--p 00006000 08:20 175246 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_check_op.so.2601.0.0 -7f7cac007000-7f7cac008000 r--p 00006000 08:20 175246 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_check_op.so.2601.0.0 -7f7cac008000-7f7cac009000 rw-p 00007000 08:20 175246 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_check_op.so.2601.0.0 -7f7cac009000-7f7cac013000 r--p 00000000 08:20 198476 /home/cbrissette/cuopt/.cuopt_env/lib/librapids_logger.so -7f7cac013000-7f7cac044000 r-xp 0000a000 08:20 198476 /home/cbrissette/cuopt/.cuopt_env/lib/librapids_logger.so -7f7cac044000-7f7cac051000 r--p 0003b000 08:20 198476 /home/cbrissette/cuopt/.cuopt_env/lib/librapids_logger.so -7f7cac051000-7f7cac054000 r--p 00048000 08:20 198476 /home/cbrissette/cuopt/.cuopt_env/lib/librapids_logger.so -7f7cac054000-7f7cac055000 rw-p 0004b000 08:20 198476 /home/cbrissette/cuopt/.cuopt_env/lib/librapids_logger.so -7f7cac055000-7f7cac067000 r--p 00000000 08:20 78513 /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so -7f7cac067000-7f7cac083000 r-xp 00012000 08:20 78513 /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so -7f7cac083000-7f7cac08c000 r--p 0002e000 08:20 78513 /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so -7f7cac08c000-7f7cac08d000 r--p 00037000 08:20 78513 /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so -7f7cac08d000-7f7cac08e000 rw-p 00038000 08:20 78513 /home/cbrissette/cuopt/java/cuopt/build/native/libcuopt_jni.so -7f7cac08e000-7f7cac08f000 rw-p 00000000 00:00 0 -7f7cac08f000-7f7cac093000 ---p 00000000 00:00 0 -7f7cac093000-7f7cac18f000 rw-p 00000000 00:00 0 -7f7cac18f000-7f7cac193000 ---p 00000000 00:00 0 -7f7cac193000-7f7cac28f000 rw-p 00000000 00:00 0 -7f7cac28f000-7f7cac293000 ---p 00000000 00:00 0 -7f7cac293000-7f7cac38f000 rw-p 00000000 00:00 0 -7f7cac38f000-7f7cac390000 ---p 00000000 00:00 0 -7f7cac390000-7f7cac870000 rw-p 00000000 00:00 0 -7f7cac870000-7f7caf240000 ---p 00000000 00:00 0 -7f7caf240000-7f7caf248000 rw-p 00000000 00:00 0 -7f7caf248000-7f7cb0248000 ---p 00000000 00:00 0 -7f7cb0248000-7f7cb0628000 rw-p 00000000 00:00 0 -7f7cb0628000-7f7cb2ff8000 ---p 00000000 00:00 0 -7f7cb2ff8000-7f7cb3000000 rw-p 00000000 00:00 0 -7f7cb3000000-7f7cb4000000 ---p 00000000 00:00 0 -7f7cb4000000-7f7cb4021000 rw-p 00000000 00:00 0 -7f7cb4021000-7f7cb8000000 ---p 00000000 00:00 0 -7f7cb8000000-7f7cb8001000 r--p 00000000 08:20 172516 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_nullguard.so.2601.0.0 -7f7cb8001000-7f7cb8002000 r-xp 00001000 08:20 172516 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_nullguard.so.2601.0.0 -7f7cb8002000-7f7cb8003000 r--p 00002000 08:20 172516 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_nullguard.so.2601.0.0 -7f7cb8003000-7f7cb8004000 r--p 00002000 08:20 172516 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_nullguard.so.2601.0.0 -7f7cb8004000-7f7cb8005000 rw-p 00003000 08:20 172516 /home/cbrissette/cuopt/.cuopt_env/lib/libabsl_log_internal_nullguard.so.2601.0.0 -7f7cb8005000-7f7cb8011000 r--p 00000000 08:20 140730 /home/cbrissette/cuopt/.cuopt_env/lib/libgpr.so.52.0.0 -7f7cb8011000-7f7cb801e000 r-xp 0000c000 08:20 140730 /home/cbrissette/cuopt/.cuopt_env/lib/libgpr.so.52.0.0 -7f7cb801e000-7f7cb8024000 r--p 00019000 08:20 140730 /home/cbrissette/cuopt/.cuopt_env/lib/libgpr.so.52.0.0 -7f7cb8024000-7f7cb8025000 r--p 0001f000 08:20 140730 /home/cbrissette/cuopt/.cuopt_env/lib/libgpr.so.52.0.0 -7f7cb8025000-7f7cb8026000 rw-p 00020000 08:20 140730 /home/cbrissette/cuopt/.cuopt_env/lib/libgpr.so.52.0.0 -7f7cb8026000-7f7cb8027000 r--p 00000000 08:20 218634 /usr/lib/x86_64-linux-gnu/libpthread.so.0 -7f7cb8027000-7f7cb8028000 r-xp 00001000 08:20 218634 /usr/lib/x86_64-linux-gnu/libpthread.so.0 -7f7cb8028000-7f7cb8029000 r--p 00002000 08:20 218634 /usr/lib/x86_64-linux-gnu/libpthread.so.0 -7f7cb8029000-7f7cb802a000 r--p 00002000 08:20 218634 /usr/lib/x86_64-linux-gnu/libpthread.so.0 -7f7cb802a000-7f7cb802b000 rw-p 00003000 08:20 218634 /usr/lib/x86_64-linux-gnu/libpthread.so.0 -7f7cb802b000-7f7cb802c000 rw-s a01e23000 00:01 8262 /dev/zero (deleted) -7f7cb802c000-7f7cb802d000 rw-s a01e22000 00:01 8261 /dev/zero (deleted) -7f7cb802d000-7f7cb802e000 rw-s a01e21000 00:01 8257 /dev/zero (deleted) -7f7cb802e000-7f7cb802f000 rw-s a01e20000 00:01 8256 /dev/zero (deleted) -7f7cb802f000-7f7cb8030000 rw-s a01e1f000 00:01 8255 /dev/zero (deleted) -7f7cb8030000-7f7cb8031000 rw-s a01e1e000 00:01 8254 /dev/zero (deleted) -7f7cb8031000-7f7cb8032000 rw-s a01e1d000 00:01 8253 /dev/zero (deleted) -7f7cb8032000-7f7cb8033000 r--p 00000000 00:00 0 -7f7cb8033000-7f7cb8034000 rw-s a01e1c000 00:01 8251 /dev/zero (deleted) -7f7cb8034000-7f7cb8035000 rw-s a01e1b000 00:01 280 /dev/zero (deleted) -7f7cb8035000-7f7cb8037000 r--p 00000000 08:20 294962 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement_ext.so -7f7cb8037000-7f7cb803a000 r-xp 00002000 08:20 294962 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement_ext.so -7f7cb803a000-7f7cb803c000 r--p 00005000 08:20 294962 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement_ext.so -7f7cb803c000-7f7cb803d000 r--p 00006000 08:20 294962 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement_ext.so -7f7cb803d000-7f7cb803e000 rw-p 00007000 08:20 294962 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement_ext.so -7f7cb803e000-7f7cb8041000 r--p 00000000 08:20 294960 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement.so -7f7cb8041000-7f7cb8042000 r-xp 00003000 08:20 294960 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement.so -7f7cb8042000-7f7cb8043000 r--p 00004000 08:20 294960 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement.so -7f7cb8043000-7f7cb8044000 r--p 00004000 08:20 294960 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement.so -7f7cb8044000-7f7cb8045000 rw-p 00005000 08:20 294960 /usr/lib/jvm/java-11-openjdk-amd64/lib/libmanagement.so -7f7cb8045000-7f7cb8049000 r--p 00000000 08:20 294964 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnet.so -7f7cb8049000-7f7cb8057000 r-xp 00004000 08:20 294964 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnet.so -7f7cb8057000-7f7cb805b000 r--p 00012000 08:20 294964 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnet.so -7f7cb805b000-7f7cb805c000 r--p 00015000 08:20 294964 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnet.so -7f7cb805c000-7f7cb805d000 rw-p 00016000 08:20 294964 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnet.so -7f7cb805d000-7f7cb8064000 r--p 00000000 08:20 294965 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnio.so -7f7cb8064000-7f7cb806c000 r-xp 00007000 08:20 294965 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnio.so -7f7cb806c000-7f7cb806f000 r--p 0000f000 08:20 294965 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnio.so -7f7cb806f000-7f7cb8070000 r--p 00011000 08:20 294965 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnio.so -7f7cb8070000-7f7cb8071000 rw-p 00012000 08:20 294965 /usr/lib/jvm/java-11-openjdk-amd64/lib/libnio.so -7f7cb8071000-7f7cb80c8000 r--p 00000000 08:20 217873 /usr/lib/locale/C.utf8/LC_CTYPE -7f7cb80c8000-7f7cb80c9000 ---p 00000000 00:00 0 -7f7cb80c9000-7f7cb81c9000 rw-p 00000000 00:00 0 -7f7cb81c9000-7f7cb81ca000 ---p 00000000 00:00 0 -7f7cb81ca000-7f7cb87cf000 rw-p 00000000 00:00 0 -7f7cb87cf000-7f7cb8a3f000 rwxp 00000000 00:00 0 -7f7cb8a3f000-7f7cb8f0e000 ---p 00000000 00:00 0 -7f7cb8f0e000-7f7cb91fe000 rwxp 00000000 00:00 0 -7f7cb91fe000-7f7cc036e000 ---p 00000000 00:00 0 -7f7cc036e000-7f7cc05de000 rwxp 00000000 00:00 0 -7f7cc05de000-7f7cc77cf000 ---p 00000000 00:00 0 -7f7cc77cf000-7f7cd0000000 r--s 00000000 08:20 294975 /usr/lib/jvm/java-11-openjdk-amd64/lib/modules -7f7cd0000000-7f7cd3fe4000 rw-p 00000000 00:00 0 -7f7cd3fe4000-7f7cd4000000 ---p 00000000 00:00 0 -7f7cd4000000-7f7cd4001000 r--p 00000000 08:20 217879 /usr/lib/locale/C.utf8/LC_NUMERIC -7f7cd4001000-7f7cd4002000 r--p 00000000 08:20 217882 /usr/lib/locale/C.utf8/LC_TIME -7f7cd4002000-7f7cd4003000 r--p 00000000 08:20 217872 /usr/lib/locale/C.utf8/LC_COLLATE -7f7cd4003000-7f7cd4004000 r--p 00000000 08:20 217877 /usr/lib/locale/C.utf8/LC_MONETARY -7f7cd4004000-7f7cd4005000 r--p 00000000 08:20 217876 /usr/lib/locale/C.utf8/LC_MESSAGES/SYS_LC_MESSAGES -7f7cd4005000-7f7cd4006000 r--p 00000000 08:20 217880 /usr/lib/locale/C.utf8/LC_PAPER -7f7cd4006000-7f7cd4007000 r--p 00000000 08:20 217878 /usr/lib/locale/C.utf8/LC_NAME -7f7cd4007000-7f7cd4008000 r--p 00000000 08:20 217871 /usr/lib/locale/C.utf8/LC_ADDRESS -7f7cd4008000-7f7cd4009000 r--p 00000000 08:20 217881 /usr/lib/locale/C.utf8/LC_TELEPHONE -7f7cd4009000-7f7cd4010000 r--s 00000000 08:20 218904 /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache -7f7cd4010000-7f7cd4af6000 rw-p 00000000 00:00 0 -7f7cd4af6000-7f7cd4af7000 ---p 00000000 00:00 0 -7f7cd4af7000-7f7cd4bf7000 rw-p 00000000 00:00 0 -7f7cd4bf7000-7f7cd4bf8000 ---p 00000000 00:00 0 -7f7cd4bf8000-7f7cd4f6a000 rw-p 00000000 00:00 0 -7f7cd4f6a000-7f7cd54a4000 ---p 00000000 00:00 0 -7f7cd54a4000-7f7cd54a5000 rw-p 00000000 00:00 0 -7f7cd54a5000-7f7cd56a5000 ---p 00000000 00:00 0 -7f7cd56a5000-7f7cd5721000 rw-p 00000000 00:00 0 -7f7cd5721000-7f7cd5c5b000 ---p 00000000 00:00 0 -7f7cd5c5b000-7f7cd5c5c000 rw-p 00000000 00:00 0 -7f7cd5c5c000-7f7cd5e5c000 ---p 00000000 00:00 0 -7f7cd5e5c000-7f7cd5ed8000 rw-p 00000000 00:00 0 -7f7cd5ed8000-7f7cd6412000 ---p 00000000 00:00 0 -7f7cd6412000-7f7cd6413000 rw-p 00000000 00:00 0 -7f7cd6413000-7f7cd6613000 ---p 00000000 00:00 0 -7f7cd6613000-7f7cd7522000 rw-p 00000000 00:00 0 -7f7cd7522000-7f7cd7523000 ---p 00000000 00:00 0 -7f7cd7523000-7f7cd7628000 rw-p 00000000 00:00 0 -7f7cd7628000-7f7cd770c000 ---p 00000000 00:00 0 -7f7cd770c000-7f7cd7712000 rw-p 00000000 00:00 0 -7f7cd7712000-7f7cd77f5000 ---p 00000000 00:00 0 -7f7cd77f5000-7f7cd77fa000 rw-p 00000000 00:00 0 -7f7cd77fa000-7f7cd7804000 ---p 00000000 00:00 0 -7f7cd7804000-7f7cd7806000 r--p 00000000 08:20 294974 /usr/lib/jvm/java-11-openjdk-amd64/lib/libzip.so -7f7cd7806000-7f7cd780b000 r-xp 00002000 08:20 294974 /usr/lib/jvm/java-11-openjdk-amd64/lib/libzip.so -7f7cd780b000-7f7cd780d000 r--p 00007000 08:20 294974 /usr/lib/jvm/java-11-openjdk-amd64/lib/libzip.so -7f7cd780d000-7f7cd780e000 r--p 00008000 08:20 294974 /usr/lib/jvm/java-11-openjdk-amd64/lib/libzip.so -7f7cd780e000-7f7cd780f000 rw-p 00009000 08:20 294974 /usr/lib/jvm/java-11-openjdk-amd64/lib/libzip.so -7f7cd780f000-7f7cd7817000 rw-s 00000000 08:20 78568 /tmp/hsperfdata_cbrissette/1449708 -7f7cd7817000-7f7cd7818000 ---p 00000000 00:00 0 -7f7cd7818000-7f7cd7819000 r--p 00000000 00:00 0 -7f7cd7819000-7f7cd7827000 r--p 00000000 08:20 294953 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjava.so -7f7cd7827000-7f7cd783d000 r-xp 0000e000 08:20 294953 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjava.so -7f7cd783d000-7f7cd7844000 r--p 00024000 08:20 294953 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjava.so -7f7cd7844000-7f7cd7845000 r--p 0002a000 08:20 294953 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjava.so -7f7cd7845000-7f7cd7846000 rw-p 0002b000 08:20 294953 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjava.so -7f7cd7846000-7f7cd7847000 rw-p 00000000 00:00 0 -7f7cd7847000-7f7cd784c000 r--p 00000000 08:20 294973 /usr/lib/jvm/java-11-openjdk-amd64/lib/libverify.so -7f7cd784c000-7f7cd7853000 r-xp 00005000 08:20 294973 /usr/lib/jvm/java-11-openjdk-amd64/lib/libverify.so -7f7cd7853000-7f7cd7855000 r--p 0000c000 08:20 294973 /usr/lib/jvm/java-11-openjdk-amd64/lib/libverify.so -7f7cd7855000-7f7cd7857000 r--p 0000d000 08:20 294973 /usr/lib/jvm/java-11-openjdk-amd64/lib/libverify.so -7f7cd7857000-7f7cd7858000 rw-p 0000f000 08:20 294973 /usr/lib/jvm/java-11-openjdk-amd64/lib/libverify.so -7f7cd7858000-7f7cd7859000 r--p 00000000 08:20 218636 /usr/lib/x86_64-linux-gnu/librt.so.1 -7f7cd7859000-7f7cd785a000 r-xp 00001000 08:20 218636 /usr/lib/x86_64-linux-gnu/librt.so.1 -7f7cd785a000-7f7cd785b000 r--p 00002000 08:20 218636 /usr/lib/x86_64-linux-gnu/librt.so.1 -7f7cd785b000-7f7cd785c000 r--p 00002000 08:20 218636 /usr/lib/x86_64-linux-gnu/librt.so.1 -7f7cd785c000-7f7cd785d000 rw-p 00003000 08:20 218636 /usr/lib/x86_64-linux-gnu/librt.so.1 -7f7cd785d000-7f7cd7861000 ---p 00000000 00:00 0 -7f7cd7861000-7f7cd795d000 rw-p 00000000 00:00 0 -7f7cd795d000-7f7cd795e000 r--p 00000000 08:20 218624 /usr/lib/x86_64-linux-gnu/libdl.so.2 -7f7cd795e000-7f7cd795f000 r-xp 00001000 08:20 218624 /usr/lib/x86_64-linux-gnu/libdl.so.2 -7f7cd795f000-7f7cd7960000 r--p 00002000 08:20 218624 /usr/lib/x86_64-linux-gnu/libdl.so.2 -7f7cd7960000-7f7cd7961000 r--p 00002000 08:20 218624 /usr/lib/x86_64-linux-gnu/libdl.so.2 -7f7cd7961000-7f7cd7962000 rw-p 00003000 08:20 218624 /usr/lib/x86_64-linux-gnu/libdl.so.2 -7f7cd7962000-7f7cd7966000 r--p 00000000 08:20 84327 /home/cbrissette/cuopt/.cuopt_env/lib/libgcc_s.so.1 -7f7cd7966000-7f7cd7989000 r-xp 00004000 08:20 84327 /home/cbrissette/cuopt/.cuopt_env/lib/libgcc_s.so.1 -7f7cd7989000-7f7cd798d000 r--p 00027000 08:20 84327 /home/cbrissette/cuopt/.cuopt_env/lib/libgcc_s.so.1 -7f7cd798d000-7f7cd798e000 r--p 0002a000 08:20 84327 /home/cbrissette/cuopt/.cuopt_env/lib/libgcc_s.so.1 -7f7cd798e000-7f7cd798f000 rw-p 0002b000 08:20 84327 /home/cbrissette/cuopt/.cuopt_env/lib/libgcc_s.so.1 -7f7cd798f000-7f7cd799d000 r--p 00000000 08:20 218625 /usr/lib/x86_64-linux-gnu/libm.so.6 -7f7cd799d000-7f7cd7a19000 r-xp 0000e000 08:20 218625 /usr/lib/x86_64-linux-gnu/libm.so.6 -7f7cd7a19000-7f7cd7a74000 r--p 0008a000 08:20 218625 /usr/lib/x86_64-linux-gnu/libm.so.6 -7f7cd7a74000-7f7cd7a75000 r--p 000e4000 08:20 218625 /usr/lib/x86_64-linux-gnu/libm.so.6 -7f7cd7a75000-7f7cd7a76000 rw-p 000e5000 08:20 218625 /usr/lib/x86_64-linux-gnu/libm.so.6 -7f7cd7a76000-7f7cd7b20000 r--p 00000000 08:20 84948 /home/cbrissette/cuopt/.cuopt_env/lib/libstdc++.so.6.0.34 -7f7cd7b20000-7f7cd7c51000 r-xp 000aa000 08:20 84948 /home/cbrissette/cuopt/.cuopt_env/lib/libstdc++.so.6.0.34 -7f7cd7c51000-7f7cd7cdf000 r--p 001db000 08:20 84948 /home/cbrissette/cuopt/.cuopt_env/lib/libstdc++.so.6.0.34 -7f7cd7cdf000-7f7cd7cee000 r--p 00268000 08:20 84948 /home/cbrissette/cuopt/.cuopt_env/lib/libstdc++.so.6.0.34 -7f7cd7cee000-7f7cd7cf1000 rw-p 00277000 08:20 84948 /home/cbrissette/cuopt/.cuopt_env/lib/libstdc++.so.6.0.34 -7f7cd7cf1000-7f7cd7cf5000 rw-p 00000000 00:00 0 -7f7cd7cf5000-7f7cd7f78000 r--p 00000000 08:20 294978 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so -7f7cd7f78000-7f7cd8c16000 r-xp 00283000 08:20 294978 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so -7f7cd8c16000-7f7cd8e72000 r--p 00f21000 08:20 294978 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so -7f7cd8e72000-7f7cd8f36000 r--p 0117c000 08:20 294978 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so -7f7cd8f36000-7f7cd8f71000 rw-p 01240000 08:20 294978 /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so -7f7cd8f71000-7f7cd8fca000 rw-p 00000000 00:00 0 -7f7cd8fca000-7f7cd8ff2000 r--p 00000000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 -7f7cd8ff2000-7f7cd9187000 r-xp 00028000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 -7f7cd9187000-7f7cd91df000 r--p 001bd000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 -7f7cd91df000-7f7cd91e0000 ---p 00215000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 -7f7cd91e0000-7f7cd91e4000 r--p 00215000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 -7f7cd91e4000-7f7cd91e6000 rw-p 00219000 08:20 218621 /usr/lib/x86_64-linux-gnu/libc.so.6 -7f7cd91e6000-7f7cd91f3000 rw-p 00000000 00:00 0 -7f7cd91f3000-7f7cd91f4000 r--p 00000000 08:20 217875 /usr/lib/locale/C.utf8/LC_MEASUREMENT -7f7cd91f4000-7f7cd91f6000 r--p 00000000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so -7f7cd91f6000-7f7cd91f9000 r-xp 00002000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so -7f7cd91f9000-7f7cd91fa000 r--p 00005000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so -7f7cd91fa000-7f7cd91fb000 ---p 00006000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so -7f7cd91fb000-7f7cd91fc000 r--p 00006000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so -7f7cd91fc000-7f7cd91fd000 rw-p 00007000 08:20 294956 /usr/lib/jvm/java-11-openjdk-amd64/lib/libjimage.so -7f7cd91fd000-7f7cd9200000 r--p 00000000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so -7f7cd9200000-7f7cd920a000 r-xp 00003000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so -7f7cd920a000-7f7cd920d000 r--p 0000d000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so -7f7cd920d000-7f7cd920e000 ---p 00010000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so -7f7cd920e000-7f7cd920f000 r--p 00010000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so -7f7cd920f000-7f7cd9210000 rw-p 00011000 08:20 294930 /usr/lib/jvm/java-11-openjdk-amd64/lib/jli/libjli.so -7f7cd9210000-7f7cd9213000 r--p 00000000 08:20 83514 /home/cbrissette/cuopt/.cuopt_env/lib/libz.so.1.3.2 -7f7cd9213000-7f7cd9223000 r-xp 00003000 08:20 83514 /home/cbrissette/cuopt/.cuopt_env/lib/libz.so.1.3.2 -7f7cd9223000-7f7cd9229000 r--p 00013000 08:20 83514 /home/cbrissette/cuopt/.cuopt_env/lib/libz.so.1.3.2 -7f7cd9229000-7f7cd922a000 r--p 00019000 08:20 83514 /home/cbrissette/cuopt/.cuopt_env/lib/libz.so.1.3.2 -7f7cd922a000-7f7cd922b000 rw-p 0001a000 08:20 83514 /home/cbrissette/cuopt/.cuopt_env/lib/libz.so.1.3.2 -7f7cd922b000-7f7cd922d000 rw-p 00000000 00:00 0 -7f7cd922d000-7f7cd922f000 r--p 00000000 08:20 218618 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 -7f7cd922f000-7f7cd9259000 r-xp 00002000 08:20 218618 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 -7f7cd9259000-7f7cd9264000 r--p 0002c000 08:20 218618 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 -7f7cd9264000-7f7cd9265000 r--p 00000000 08:20 217874 /usr/lib/locale/C.utf8/LC_IDENTIFICATION -7f7cd9265000-7f7cd9267000 r--p 00037000 08:20 218618 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 -7f7cd9267000-7f7cd9269000 rw-p 00039000 08:20 218618 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 -7ffd3bb4a000-7ffd3bb6d000 rw-p 00000000 00:00 0 [stack] -7ffd3bbf3000-7ffd3bbf7000 r--p 00000000 00:00 0 [vvar] -7ffd3bbf7000-7ffd3bbf9000 r-xp 00000000 00:00 0 [vdso] - - -VM Arguments: -java_command: /home/cbrissette/cuopt/java/cuopt/target/surefire/surefirebooter-20260707091921778_3.jar /home/cbrissette/cuopt/java/cuopt/target/surefire 2026-07-07T09-19-21_604-jvmRun1 surefire-20260707091921778_1tmp surefire_0-20260707091921778_2tmp -java_class_path (initial): /home/cbrissette/cuopt/java/cuopt/target/surefire/surefirebooter-20260707091921778_3.jar -Launcher Type: SUN_STANDARD - -[Global flags] - intx CICompilerCount = 12 {product} {ergonomic} - uint ConcGCThreads = 4 {product} {ergonomic} - uint G1ConcRefinementThreads = 15 {product} {ergonomic} - size_t G1HeapRegionSize = 1048576 {product} {ergonomic} - uintx GCDrainStackTargetSize = 64 {product} {ergonomic} - size_t InitialHeapSize = 260046848 {product} {ergonomic} - size_t MarkStackSize = 4194304 {product} {ergonomic} - size_t MaxHeapSize = 4141875200 {product} {ergonomic} - size_t MaxNewSize = 2485125120 {product} {ergonomic} - size_t MinHeapDeltaBytes = 1048576 {product} {ergonomic} - uintx NonNMethodCodeHeapSize = 7594288 {pd product} {ergonomic} - uintx NonProfiledCodeHeapSize = 122031976 {pd product} {ergonomic} - uintx ProfiledCodeHeapSize = 122031976 {pd product} {ergonomic} - uintx ReservedCodeCacheSize = 251658240 {pd product} {ergonomic} - bool SegmentedCodeCache = true {product} {ergonomic} - bool UseCompressedClassPointers = true {lp64_product} {ergonomic} - bool UseCompressedOops = true {lp64_product} {ergonomic} - bool UseG1GC = true {product} {ergonomic} - -Logging: -Log output configuration: - #0: stdout all=warning uptime,level,tags - #1: stderr all=off uptime,level,tags - -Environment Variables: -JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 -PATH=/usr/lib/jvm/java-11-openjdk-amd64/bin:/home/cbrissette/cuopt/.cuopt_env/bin:/usr/lib/jvm/java-11-openjdk-amd64/bin:/path/to/jdk-11/bin:/home/cbrissette/cuopt/.cuopt_env/bin:/home/cbrissette/miniforge3/condabin:/usr/local/cuda-12/bin:/usr/lib:/lib:/home/cbrissette/.npm-packages/bin:/home/cbrissette/.local/node/bin:/home/cbrissette/.vscode-server/bin/034f571df509819cc10b0c8129f66ef77a542f0e/bin/remote-cli:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/wsl/lib:/mnt/c/Program Files/Microsoft VS Code:/mnt/c/Windows/system32:/mnt/c/Windows:/mnt/c/Windows/System32/Wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0:/mnt/c/Windows/System32/OpenSSH:/mnt/c/Program Files/dotnet:/mnt/c/Program Files/Microsoft VS Code/bin:/mnt/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/mnt/c/Program Files/NVIDIA Corporation/Nsight Compute 2025.1.0:/mnt/c/Program Files/Teleport:/mnt/c/PROGRA~1/cinc/bin:/mnt/c/Program Files/NVInfo/bin:/mnt/c/Program Files/ai-pim-utils:/mnt/c/WINDOWS/system32:/mnt/c/WINDOWS:/mnt/c/WINDOWS/System32/Wbem:/mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0:/mnt/c/WINDOWS/System32/OpenSSH:/mnt/c/Program Files/Teleport Connect/resources/bin:/mnt/c/Users/cbrissette/.local/bin:/mnt/c/Users/cbrissette/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/cbrissette/AppData/Local/Programs/cursor/resources/app/bin:/mnt/c/Users/cbrissette/AppData/Local/Microsoft/WinGet/Packages/astral-sh.uv_Microsoft.Winget.Source_8wekyb3d8bbwe:/mnt/c/Users/cbrissette/AppData/Local/Microsoft/WindowsApps:/snap/bin:/home/cbrissette/ngc-cli:/home/cbrissette/.local/bin:/usr/local/go/bin -LD_LIBRARY_PATH=/home/cbrissette/cuopt/.cuopt_env/lib:/home/cbrissette/cuopt/java/cuopt/build/native:/home/cbrissette/cuopt/.cuopt_env/lib:/home/cbrissette/cuopt/cpp/build -SHELL=/bin/bash -DISPLAY=:0 -HOSTTYPE=x86_64 -LANG=C.UTF-8 -TERM=xterm-256color - -Signal Handlers: -SIGSEGV: [libjvm.so+0xeaead0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGBUS: [libjvm.so+0xeaead0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGFPE: [libjvm.so+0xeaead0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGPIPE: [libjvm.so+0xbf1430], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGXFSZ: [libjvm.so+0xbf1430], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGILL: [libjvm.so+0xeaead0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGUSR2: [libjvm.so+0xbf12d0], sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO -SIGHUP: [libjvm.so+0xbf1a90], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGINT: [libjvm.so+0xbf1a90], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGTERM: [libjvm.so+0xbf1a90], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGQUIT: [libjvm.so+0xbf1a90], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO - - ---------------- S Y S T E M --------------- - -OS:DISTRIB_ID=Ubuntu -DISTRIB_RELEASE=22.04 -DISTRIB_CODENAME=jammy -DISTRIB_DESCRIPTION="Ubuntu 22.04.5 LTS" -uname:Linux 5.15.153.1-microsoft-standard-WSL2 #1 SMP Fri Mar 29 23:14:13 UTC 2024 x86_64 -OS uptime: 2 days 16:24 hours -libc:glibc 2.35 NPTL 2.35 -rlimit (soft/hard): STACK 8192k/infinity , CORE 0k/infinity , NPROC 63166/63166 , NOFILE 1048576/1048576 , AS infinity/infinity , CPU infinity/infinity , DATA infinity/infinity , FSIZE infinity/infinity , MEMLOCK 65536k/65536k -load average:2.00 5.66 4.74 - -/proc/meminfo: -MemTotal: 16177528 kB -MemFree: 9117720 kB -MemAvailable: 11883568 kB -Buffers: 79512 kB -Cached: 2676828 kB -SwapCached: 57768 kB -Active: 1612520 kB -Inactive: 4539092 kB -Active(anon): 14392 kB -Inactive(anon): 3450132 kB -Active(file): 1598128 kB -Inactive(file): 1088960 kB -Unevictable: 0 kB -Mlocked: 0 kB -SwapTotal: 4194304 kB -SwapFree: 3716668 kB -Dirty: 3724 kB -Writeback: 0 kB -AnonPages: 3266292 kB -Mapped: 525420 kB -Shmem: 69292 kB -KReclaimable: 410860 kB -Slab: 532904 kB -SReclaimable: 410860 kB -SUnreclaim: 122044 kB -KernelStack: 14880 kB -PageTables: 48672 kB -NFS_Unstable: 0 kB -Bounce: 0 kB -WritebackTmp: 0 kB -CommitLimit: 12283068 kB -Committed_AS: 6753580 kB -VmallocTotal: 34359738367 kB -VmallocUsed: 37960 kB -VmallocChunk: 0 kB -Percpu: 13248 kB -AnonHugePages: 1247232 kB -ShmemHugePages: 0 kB -ShmemPmdMapped: 0 kB -FileHugePages: 0 kB -FilePmdMapped: 0 kB -HugePages_Total: 0 -HugePages_Free: 0 -HugePages_Rsvd: 0 -HugePages_Surp: 0 -Hugepagesize: 2048 kB -Hugetlb: 0 kB -DirectMap4k: 410624 kB -DirectMap2M: 13017088 kB -DirectMap1G: 11534336 kB - -/sys/kernel/mm/transparent_hugepage/enabled: -[always] madvise never -/sys/kernel/mm/transparent_hugepage/defrag (defrag/compaction efforts parameter): -always defer defer+madvise [madvise] never - -Process Memory: -Virtual Size: 42675260K (peak: 42732616K) -Resident Set Size: 505140K (peak: 505140K) (anon: 312764K, file: 126788K, shmem: 65588K) -Swapped out: 0K -C-Heap outstanding allocations: 203013K, retained: 4906K -glibc malloc tunables: (default) - -/proc/sys/kernel/threads-max (system-wide limit on the number of threads): -126333 -/proc/sys/vm/max_map_count (maximum number of memory map areas a process may have): -65530 -/proc/sys/kernel/pid_max (system-wide limit on number of process identifiers): -4194304 - -container (cgroup) information: -container_type: cgroupv1 -cpu_cpuset_cpus: 0-19 -cpu_memory_nodes: 0 -active_processor_count: 20 -cpu_quota: no quota -cpu_period: 100000 -cpu_shares: no shares -memory_limit_in_bytes: unlimited -memory_and_swap_limit_in_bytes: unlimited -memory_soft_limit_in_bytes: unlimited -memory_usage_in_bytes: 6023092 k -memory_max_usage_in_bytes: 2211664 k -kernel_memory_usage_in_bytes: 38436 k -kernel_memory_max_usage_in_bytes: unlimited -kernel_memory_limit_in_bytes: 70264 k -maximum number of tasks: not supported -current number of tasks: not supported - -Hyper-V virtualization detected -Steal ticks since vm start: 0 -Steal ticks percentage since vm start: 0.000 - -CPU:total 20 (initial active 20) (16 cores per cpu, 2 threads per core) family 6 model 186 stepping 2 microcode 0xffffffff, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, clmul, erms, 3dnowpref, lzcnt, ht, tsc, tscinvbit, bmi1, bmi2, adx, sha, fma -CPU Model and flags from /proc/cpuinfo: -model name : 13th Gen Intel(R) Core(TM) i7-13800H -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq vmx ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves avx_vnni umip waitpkg gfni vaes vpclmulqdq rdpid movdiri movdir64b fsrm md_clear serialize flush_l1d arch_capabilities -Online cpus: -0-19 -Offline cpus: - -BIOS frequency limitation: - -Frequency switch latency (ns): - -Available cpu frequencies: - -Current governor: - -Core performance/turbo boost: - - -Memory: 4k page, physical 16177528k(9117720k free), swap 4194304k(3716668k free) - -vm_info: OpenJDK 64-Bit Server VM (11.0.24+8-post-Ubuntu-1ubuntu322.04) for linux-amd64 JRE (11.0.24+8-post-Ubuntu-1ubuntu322.04), built on Jul 21 2024 21:19:53 by "unknown" with gcc 11.4.0 - -END. From c61bb628db7a0b2667873435404b35abdda52229 Mon Sep 17 00:00:00 2001 From: Christopher Brissette Date: Thu, 9 Jul 2026 14:22:09 -0400 Subject: [PATCH 3/5] many PR updates based on comments. --- .github/workflows/build.yaml | 34 + .github/workflows/pr.yaml | 58 +- .github/workflows/test.yaml | 26 + ci/build_java.sh | 57 + ci/release/update-version.sh | 5 + ci/test_java.sh | 12 + dependencies.yaml | 14 + .../source/cuopt-java/convex/convex-api.rst | 109 +- .../cuopt-java/convex/convex-examples.rst | 78 +- docs/cuopt/source/cuopt-java/convex/index.rst | 25 +- docs/cuopt/source/cuopt-java/index.rst | 24 +- docs/cuopt/source/cuopt-java/mip/index.rst | 4 +- docs/cuopt/source/cuopt-java/mip/mip-api.rst | 57 +- .../source/cuopt-java/mip/mip-examples.rst | 19 +- docs/cuopt/source/cuopt-java/quick-start.rst | 65 +- docs/cuopt/source/index.rst | 10 + java/.gitignore | 3 + java/cuopt/README.md | 39 +- java/cuopt/TESTS.md | 204 +-- java/cuopt/pom.xml | 10 +- java/cuopt/scripts/generate_constants.sh | 14 +- java/cuopt/scripts/test.sh | 3 +- .../cuopt/linearprogramming/BatchSolve.java | 41 - .../linearprogramming/BatchSolveResult.java | 31 - .../linearprogramming/PDLPSolverMode.java | 23 - .../linearprogramming/PDLPWarmStartData.java | 198 --- .../linearprogramming/SolverSettings.java | 223 --- .../linearprogramming/TerminationStatus.java | 40 - .../CSRMatrix.java} | 7 +- .../Constraint.java | 2 +- .../ConstraintSense.java | 2 +- .../CuOptException.java | 2 +- .../DataModel.java | 46 +- .../LPStats.java | 2 +- .../LinearExpression.java | 16 +- .../mathematicalprogramming/MIPCallback.java | 8 + .../MIPCallbackSolution.java} | 6 +- .../MIPSetSolutionCallback.java} | 6 +- .../MIPSolutionCallback.java} | 4 +- .../MIPStats.java | 2 +- .../NativeCuOpt.java | 86 +- .../ObjectiveExpression.java | 17 + .../ObjectiveSense.java | 2 +- .../PDLPSolverMode.java | 24 + .../Problem.java | 69 +- .../ProblemCategory.java | 7 +- .../QuadraticConstraint.java | 2 +- .../QuadraticExpression.java | 16 +- .../Solution.java | 50 +- .../SolverMethod.java | 13 +- .../SolverSettings.java | 226 +++ .../TerminationStatus.java | 42 + .../Variable.java | 6 +- .../VariableType.java | 2 +- .../src/main/native/cuopt_java_native_api.cpp | 237 +-- .../src/main/native/cuopt_java_native_api.hpp | 56 - java/cuopt/src/main/native/cuopt_jni.cpp | 331 ++-- .../linearprogramming/PythonParityTest.java | 1367 ----------------- .../DataModelIntegrationTest.java | 678 ++++++++ .../NativeIntegrationTest.java | 102 +- .../ProblemModelingTest.java | 40 +- .../test/resources/python_binding_parity.py | 291 ---- .../cuopt/linearprogramming/BatchSolve.class | Bin 3226 -> 0 bytes .../linearprogramming/BatchSolveResult.class | Bin 1835 -> 0 bytes .../cuopt/linearprogramming/Constraint.class | Bin 5055 -> 0 bytes .../linearprogramming/ConstraintSense.class | Bin 2133 -> 0 bytes .../cuopt/linearprogramming/CsrMatrix.class | Bin 1305 -> 0 bytes .../linearprogramming/CuOptConstants.class | Bin 9640 -> 0 bytes .../linearprogramming/CuOptException.class | Bin 573 -> 0 bytes .../DataModel$NativeHandle.class | Bin 953 -> 0 bytes .../cuopt/linearprogramming/DataModel.class | Bin 19715 -> 0 bytes .../cuopt/linearprogramming/LPStats.class | Bin 1209 -> 0 bytes .../linearprogramming/LinearExpression.class | Bin 8253 -> 0 bytes .../cuopt/linearprogramming/MIPStats.class | Bin 1175 -> 0 bytes .../MipCallbackSolution.class | Bin 709 -> 0 bytes .../MipSetSolutionCallback.class | Bin 336 -> 0 bytes .../MipSolutionCallback.class | Bin 277 -> 0 bytes .../cuopt/linearprogramming/NativeCuOpt.class | Bin 5582 -> 0 bytes .../linearprogramming/ObjectiveSense.class | Bin 1288 -> 0 bytes .../linearprogramming/PDLPSolverMode.class | Bin 1453 -> 0 bytes .../linearprogramming/PDLPWarmStartData.class | Bin 3904 -> 0 bytes .../cuopt/linearprogramming/Problem$1.class | Bin 863 -> 0 bytes .../Problem$MatrixBuild.class | Bin 1150 -> 0 bytes .../cuopt/linearprogramming/Problem.class | Bin 30615 -> 0 bytes .../linearprogramming/ProblemCategory.class | Bin 2133 -> 0 bytes .../QuadraticConstraint.class | Bin 2431 -> 0 bytes .../QuadraticExpression$QuadraticTerm.class | Bin 1080 -> 0 bytes .../QuadraticExpression.class | Bin 7929 -> 0 bytes .../Solution$NativeHandle.class | Bin 949 -> 0 bytes .../cuopt/linearprogramming/Solution.class | Bin 6972 -> 0 bytes .../linearprogramming/SolverMethod.class | Bin 1694 -> 0 bytes .../SolverSettings$NativeHandle.class | Bin 985 -> 0 bytes .../linearprogramming/SolverSettings.class | Bin 9592 -> 0 bytes .../linearprogramming/TerminationStatus.class | Bin 2295 -> 0 bytes .../cuopt/linearprogramming/Variable.class | Bin 3000 -> 0 bytes .../linearprogramming/VariableType.class | Bin 2131 -> 0 bytes .../linearprogramming/CuOptConstants.java | 151 -- .../compile/default-compile/createdFiles.lst | 34 - .../compile/default-compile/inputFiles.lst | 28 - .../default-testCompile/createdFiles.lst | 7 - .../default-testCompile/inputFiles.lst | 3 - ...2026-07-07T10-51-16_754-jvmRun1.dumpstream | 345 ----- ...inearprogramming.NativeIntegrationTest.xml | 71 - ....linearprogramming.ProblemModelingTest.xml | 64 - ...opt.linearprogramming.PythonParityTest.xml | 71 - ...inearprogramming.NativeIntegrationTest.txt | 4 - ....linearprogramming.ProblemModelingTest.txt | 4 - ...opt.linearprogramming.PythonParityTest.txt | 4 - .../NativeIntegrationTest.class | Bin 18609 -> 0 bytes .../ProblemModelingTest.class | Bin 6338 -> 0 bytes .../PythonParityTest$CaseSpec.class | Bin 9779 -> 0 bytes .../PythonParityTest$JavaResult.class | Bin 5946 -> 0 bytes .../PythonParityTest$ProcessResult.class | Bin 642 -> 0 bytes .../PythonParityTest$PythonResult.class | Bin 3423 -> 0 bytes .../linearprogramming/PythonParityTest.class | Bin 29441 -> 0 bytes .../test-classes/python_binding_parity.py | 291 ---- 116 files changed, 1812 insertions(+), 4458 deletions(-) create mode 100755 ci/build_java.sh create mode 100755 ci/test_java.sh create mode 100644 java/.gitignore delete mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/BatchSolve.java delete mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/BatchSolveResult.java delete mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/PDLPSolverMode.java delete mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/PDLPWarmStartData.java delete mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/SolverSettings.java delete mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/TerminationStatus.java rename java/cuopt/src/main/java/com/nvidia/cuopt/{linearprogramming/CsrMatrix.java => mathematicalprogramming/CSRMatrix.java} (81%) rename java/cuopt/src/main/java/com/nvidia/cuopt/{linearprogramming => mathematicalprogramming}/Constraint.java (98%) rename java/cuopt/src/main/java/com/nvidia/cuopt/{linearprogramming => mathematicalprogramming}/ConstraintSense.java (92%) rename java/cuopt/src/main/java/com/nvidia/cuopt/{linearprogramming => mathematicalprogramming}/CuOptException.java (89%) rename java/cuopt/src/main/java/com/nvidia/cuopt/{linearprogramming => mathematicalprogramming}/DataModel.java (94%) rename java/cuopt/src/main/java/com/nvidia/cuopt/{linearprogramming => mathematicalprogramming}/LPStats.java (94%) rename java/cuopt/src/main/java/com/nvidia/cuopt/{linearprogramming => mathematicalprogramming}/LinearExpression.java (94%) create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/MIPCallback.java rename java/cuopt/src/main/java/com/nvidia/cuopt/{linearprogramming/MipCallbackSolution.java => mathematicalprogramming/MIPCallbackSolution.java} (76%) rename java/cuopt/src/main/java/com/nvidia/cuopt/{linearprogramming/MipSetSolutionCallback.java => mathematicalprogramming/MIPSetSolutionCallback.java} (50%) rename java/cuopt/src/main/java/com/nvidia/cuopt/{linearprogramming/MipSolutionCallback.java => mathematicalprogramming/MIPSolutionCallback.java} (71%) rename java/cuopt/src/main/java/com/nvidia/cuopt/{linearprogramming => mathematicalprogramming}/MIPStats.java (95%) rename java/cuopt/src/main/java/com/nvidia/cuopt/{linearprogramming => mathematicalprogramming}/NativeCuOpt.java (62%) create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/ObjectiveExpression.java rename java/cuopt/src/main/java/com/nvidia/cuopt/{linearprogramming => mathematicalprogramming}/ObjectiveSense.java (88%) create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/PDLPSolverMode.java rename java/cuopt/src/main/java/com/nvidia/cuopt/{linearprogramming => mathematicalprogramming}/Problem.java (94%) rename java/cuopt/src/main/java/com/nvidia/cuopt/{linearprogramming => mathematicalprogramming}/ProblemCategory.java (76%) rename java/cuopt/src/main/java/com/nvidia/cuopt/{linearprogramming => mathematicalprogramming}/QuadraticConstraint.java (97%) rename java/cuopt/src/main/java/com/nvidia/cuopt/{linearprogramming => mathematicalprogramming}/QuadraticExpression.java (96%) rename java/cuopt/src/main/java/com/nvidia/cuopt/{linearprogramming => mathematicalprogramming}/Solution.java (78%) rename java/cuopt/src/main/java/com/nvidia/cuopt/{linearprogramming => mathematicalprogramming}/SolverMethod.java (58%) create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/SolverSettings.java create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/TerminationStatus.java rename java/cuopt/src/main/java/com/nvidia/cuopt/{linearprogramming => mathematicalprogramming}/Variable.java (94%) rename java/cuopt/src/main/java/com/nvidia/cuopt/{linearprogramming => mathematicalprogramming}/VariableType.java (93%) delete mode 100644 java/cuopt/src/test/java/com/nvidia/cuopt/linearprogramming/PythonParityTest.java create mode 100644 java/cuopt/src/test/java/com/nvidia/cuopt/mathematicalprogramming/DataModelIntegrationTest.java rename java/cuopt/src/test/java/com/nvidia/cuopt/{linearprogramming => mathematicalprogramming}/NativeIntegrationTest.java (70%) rename java/cuopt/src/test/java/com/nvidia/cuopt/{linearprogramming => mathematicalprogramming}/ProblemModelingTest.java (76%) delete mode 100644 java/cuopt/src/test/resources/python_binding_parity.py delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/BatchSolve.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/BatchSolveResult.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Constraint.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/ConstraintSense.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/CsrMatrix.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/CuOptConstants.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/CuOptException.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/DataModel$NativeHandle.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/DataModel.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/LPStats.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/LinearExpression.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/MIPStats.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/MipCallbackSolution.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/MipSetSolutionCallback.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/MipSolutionCallback.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/NativeCuOpt.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/ObjectiveSense.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/PDLPSolverMode.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/PDLPWarmStartData.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Problem$1.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Problem$MatrixBuild.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Problem.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/ProblemCategory.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/QuadraticConstraint.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/QuadraticExpression$QuadraticTerm.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/QuadraticExpression.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Solution$NativeHandle.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Solution.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/SolverMethod.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/SolverSettings$NativeHandle.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/SolverSettings.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/TerminationStatus.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Variable.class delete mode 100644 java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/VariableType.class delete mode 100644 java/cuopt/target/generated-sources/cuopt/com/nvidia/cuopt/linearprogramming/CuOptConstants.java delete mode 100644 java/cuopt/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst delete mode 100644 java/cuopt/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst delete mode 100644 java/cuopt/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst delete mode 100644 java/cuopt/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst delete mode 100644 java/cuopt/target/surefire-reports/2026-07-07T10-51-16_754-jvmRun1.dumpstream delete mode 100644 java/cuopt/target/surefire-reports/TEST-com.nvidia.cuopt.linearprogramming.NativeIntegrationTest.xml delete mode 100644 java/cuopt/target/surefire-reports/TEST-com.nvidia.cuopt.linearprogramming.ProblemModelingTest.xml delete mode 100644 java/cuopt/target/surefire-reports/TEST-com.nvidia.cuopt.linearprogramming.PythonParityTest.xml delete mode 100644 java/cuopt/target/surefire-reports/com.nvidia.cuopt.linearprogramming.NativeIntegrationTest.txt delete mode 100644 java/cuopt/target/surefire-reports/com.nvidia.cuopt.linearprogramming.ProblemModelingTest.txt delete mode 100644 java/cuopt/target/surefire-reports/com.nvidia.cuopt.linearprogramming.PythonParityTest.txt delete mode 100644 java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/NativeIntegrationTest.class delete mode 100644 java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/ProblemModelingTest.class delete mode 100644 java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/PythonParityTest$CaseSpec.class delete mode 100644 java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/PythonParityTest$JavaResult.class delete mode 100644 java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/PythonParityTest$ProcessResult.class delete mode 100644 java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/PythonParityTest$PythonResult.class delete mode 100644 java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/PythonParityTest.class delete mode 100644 java/cuopt/target/test-classes/python_binding_parity.py diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index f1d4123a6a..6fa33a4391 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -60,6 +60,39 @@ jobs: date: ${{ inputs.date }} sha: ${{ inputs.sha }} script: ci/build_cpp.sh + java-build-matrix: + needs: cpp-build + permissions: + contents: read + uses: rapidsai/shared-workflows/.github/workflows/compute-matrix.yaml@main + with: + build_type: pull-request + matrix_name: conda-cpp-build + matrix_filter: map(select(.ARCH == "amd64")) + java-build: + needs: java-build-matrix + permissions: + actions: read + contents: read + id-token: write + packages: read + pull-requests: read + secrets: inherit # zizmor: ignore[secrets-inherit] + uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main + strategy: + fail-fast: false + matrix: ${{ fromJSON(needs.java-build-matrix.outputs.matrix) }} + with: + build_type: ${{ inputs.build_type || 'branch' }} + branch: ${{ inputs.branch }} + date: ${{ inputs.date }} + sha: ${{ inputs.sha }} + node_type: "gpu-l4-latest-1" + arch: "amd64" + container_image: "rapidsai/ci-conda:26.08-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }}" + script: "ci/build_java.sh" + artifact-name: "cuopt-java-cuda${{ matrix.CUDA_VER }}" + file_to_upload: "java/cuopt/target/" python-build: needs: [cpp-build] permissions: @@ -272,6 +305,7 @@ jobs: # so 'test.yaml' can be triggered without waiting for those. needs: - upload-conda + - java-build - wheel-publish-cuopt - wheel-publish-cuopt-server - wheel-publish-cuopt-sh-client diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 8c05b5d1b0..26c9f2320f 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -24,6 +24,8 @@ jobs: - checks - conda-cpp-build - conda-cpp-tests + - java-build-matrix + - java-build - conda-python-build - conda-python-tests - docs-build @@ -165,12 +167,14 @@ jobs: - '!README.md' - '!SECURITY.md' - '!ci/build_wheel*.sh' + - '!ci/build_java.sh' - '!ci/check_style.sh' - '!ci/docker/**' - '!ci/release/**' - '!ci/run_*.pytests.sh' - '!ci/run_ctests.sh' - '!ci/test_cpp*.sh' + - '!ci/test_java.sh' - '!ci/test_notebooks.sh' - '!ci/test_python.sh' - '!ci/test_self_hosted_service.sh' @@ -178,6 +182,7 @@ jobs: - '!ci/thirdparty-testing/**' - '!container-builder/**' - '!helmchart/**' + - '!java/**' - '!ngc/**' - '!sonar-project.properties' - '!sonarqube/**' @@ -223,12 +228,14 @@ jobs: - '!SECURITY.md' - '!agents/**' - '!ci/build_docs.sh' + - '!ci/build_java.sh' - '!ci/build_python.sh' - '!ci/build_wheel*.sh' - '!ci/check_style.sh' - '!ci/docker/**' - '!ci/release/**' - '!ci/test_python.sh' + - '!ci/test_java.sh' - '!ci/test_self_hosted_service.sh' - '!ci/test_wheel*.sh' - '!ci/thirdparty-testing/**' @@ -239,6 +246,7 @@ jobs: - '!gemini-extension.json' - '!helmchart/**' - '!img/**' + - '!java/**' - '!ngc/**' - '!notebooks/**' - '!python/**' @@ -252,6 +260,14 @@ jobs: - '!sonarqube/**' - '!ucf/**' - '!utilities/**' + test_java: + - 'java/**' + - 'ci/build_java.sh' + - 'ci/test_java.sh' + - 'dependencies.yaml' + - '.github/workflows/pr.yaml' + - '.github/workflows/build.yaml' + - '.github/workflows/test.yaml' test_python_conda: - '**' - '!**/*.md' @@ -292,11 +308,13 @@ jobs: - '!SECURITY.md' - '!agents/**' - '!ci/build_docs.sh' + - '!ci/build_java.sh' - '!ci/build_wheel*.sh' - '!ci/check_style.sh' - '!ci/docker/**' - '!ci/release/**' - '!ci/test_self_hosted_service.sh' + - '!ci/test_java.sh' - '!ci/test_wheel*.sh' - '!ci/thirdparty-testing/**' - '!ci/utils/sync_skills_version.sh' @@ -306,6 +324,7 @@ jobs: - '!gemini-extension.json' - '!helmchart/**' - '!img/**' + - '!java/**' - '!ngc/**' - '!notebooks/**' - '!skills/**/SKILL.md' @@ -360,11 +379,13 @@ jobs: - '!ci/build_cpp.sh' - '!ci/build_docs.sh' - '!ci/build_python.sh' + - '!ci/build_java.sh' - '!ci/check_style.sh' - '!ci/docker/**' - '!ci/release/**' - '!ci/run_ctests.sh' - '!ci/test_python.sh' + - '!ci/test_java.sh' - '!ci/thirdparty-testing/**' - '!ci/utils/sync_skills_version.sh' - '!ci/utils/validate_skills.sh' @@ -373,6 +394,7 @@ jobs: - '!gemini-extension.json' - '!helmchart/**' - '!img/**' + - '!java/**' - '!ngc/**' - '!notebooks/**' - '!skills/**/SKILL.md' @@ -393,9 +415,10 @@ jobs: enable_check_generated_files: false conda-cpp-build: needs: [checks, compute-matrix-filters, changed-files] - # Consumed by conda-cpp-tests, conda-python-build, and (transitively) docs-build. + # Consumed by C++, Java, Python, and docs jobs. if: >- fromJSON(needs.changed-files.outputs.changed_file_groups).test_cpp || + fromJSON(needs.changed-files.outputs.changed_file_groups).test_java || fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_conda || fromJSON(needs.changed-files.outputs.changed_file_groups).build_docs permissions: @@ -431,6 +454,39 @@ jobs: script-env-secret-2-value: ${{ secrets.CUOPT_AWS_ACCESS_KEY_ID }} script-env-secret-3-key: CUOPT_AWS_SECRET_ACCESS_KEY script-env-secret-3-value: ${{ secrets.CUOPT_AWS_SECRET_ACCESS_KEY }} + java-build-matrix: + needs: [conda-cpp-build, changed-files] + permissions: + contents: read + uses: rapidsai/shared-workflows/.github/workflows/compute-matrix.yaml@main + if: >- + fromJSON(needs.changed-files.outputs.changed_file_groups).test_java || + fromJSON(needs.changed-files.outputs.changed_file_groups).test_cpp + with: + build_type: pull-request + matrix_name: conda-cpp-build + matrix_filter: map(select(.ARCH == "amd64")) + java-build: + needs: java-build-matrix + permissions: + actions: read + contents: read + id-token: write + packages: read + pull-requests: read + secrets: inherit # zizmor: ignore[secrets-inherit] + uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main + strategy: + fail-fast: false + matrix: ${{ fromJSON(needs.java-build-matrix.outputs.matrix) }} + with: + build_type: pull-request + node_type: "gpu-l4-latest-1" + arch: "amd64" + container_image: "rapidsai/ci-conda:26.08-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }}" + script: "ci/test_java.sh" + artifact-name: "cuopt-java-cuda${{ matrix.CUDA_VER }}" + file_to_upload: "java/cuopt/target/" conda-python-build: needs: [conda-cpp-build, compute-matrix-filters, changed-files] # Consumed by conda-python-tests and docs-build. diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 01c1e2b0b3..059199aa37 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -73,6 +73,31 @@ jobs: script-env-secret-3-key: CUOPT_AWS_SECRET_ACCESS_KEY script-env-secret-3-value: ${{ secrets.CUOPT_AWS_SECRET_ACCESS_KEY }} + conda-java-tests: + permissions: + actions: read + contents: read + id-token: write + packages: read + pull-requests: read + secrets: inherit # zizmor: ignore[secrets-inherit] + uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main + strategy: + fail-fast: false + matrix: + cuda_version: + - "12.9.1" + - "13.2.0" + with: + build_type: ${{ inputs.build_type }} + branch: ${{ inputs.branch }} + date: ${{ inputs.date }} + sha: ${{ inputs.sha }} + node_type: "gpu-l4-latest-1" + arch: "amd64" + container_image: "rapidsai/ci-conda:26.08-cuda${{ matrix.cuda_version }}-ubuntu24.04-py3.13" + script: "ci/test_java.sh" + wheel-tests-cuopt: permissions: actions: read @@ -142,6 +167,7 @@ jobs: needs: - conda-cpp-tests - conda-python-tests + - conda-java-tests - wheel-tests-cuopt - wheel-tests-cuopt-server - conda-notebook-tests diff --git a/ci/build_java.sh b/ci/build_java.sh new file mode 100755 index 0000000000..0c754a8fc6 --- /dev/null +++ b/ci/build_java.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +# SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +set -euo pipefail + +RUN_TESTS=false +if [[ "${1:-}" == "--run-java-tests" ]]; then + RUN_TESTS=true +elif [[ $# -gt 0 ]]; then + echo "Usage: $0 [--run-java-tests]" >&2 + exit 2 +fi + +if [[ -e /opt/conda/etc/profile.d/conda.sh ]]; then + . /opt/conda/etc/profile.d/conda.sh +fi + +rapids-logger "Configuring conda strict channel priority" +conda config --set channel_priority strict + +rapids-logger "Downloading the C++ artifact" +CPP_CHANNEL=$(rapids-download-from-github \ + "$(rapids-artifact-name conda_cpp libcuopt cuopt --cuda "$RAPIDS_CUDA_VERSION")") + +rapids-logger "Generating Java build dependencies" +ENV_YAML_DIR=$(mktemp -d) +rapids-dependency-file-generator \ + --output conda \ + --file-key java \ + --prepend-channel "${CPP_CHANNEL}" \ + --matrix "cuda=${RAPIDS_CUDA_VERSION%.*};arch=$(arch)" | tee "${ENV_YAML_DIR}/env.yaml" + +rapids-mamba-retry env create --yes -f "${ENV_YAML_DIR}/env.yaml" -n java \ + --channel "${CPP_CHANNEL}" + +# Temporarily allow unbound variables for conda activation. +set +u +conda activate java +set -u + +rapids-print-env + +export CUOPT_PREFIX="${CONDA_PREFIX}" +export CUOPT_JAVA_NATIVE_BUILD_DIR="${PWD}/java/cuopt/build/native" + +if [[ "${RUN_TESTS}" == true ]]; then + rapids-logger "Building and testing the Java bindings" + bash java/cuopt/scripts/test.sh +else + rapids-logger "Building the Java bindings" + bash java/cuopt/scripts/build_native.sh + mvn -f java/cuopt/pom.xml clean package \ + -DskipTests \ + -Dcuopt.native.dir="${CUOPT_JAVA_NATIVE_BUILD_DIR}" +fi diff --git a/ci/release/update-version.sh b/ci/release/update-version.sh index 0e776c6043..af10bd5b9a 100755 --- a/ci/release/update-version.sh +++ b/ci/release/update-version.sh @@ -124,6 +124,11 @@ for DEP in "${DEPENDENCIES[@]}"; do done done +# Update the Java API version. Keep the RAPIDS YY.MM.PP format used by VERSION. +for FILE in java/*/pom.xml; do + sed_runner "/.*/s//${NEXT_FULL_TAG}<\/version>/g" "${FILE}" +done + # Update README.md version badge sed_runner 's/badge\/version-[0-9]\+\.[0-9]\+\.[0-9]\+-blue/badge\/version-'${NEXT_FULL_TAG}'-blue/g' README.md diff --git a/ci/test_java.sh b/ci/test_java.sh new file mode 100755 index 0000000000..40026caa01 --- /dev/null +++ b/ci/test_java.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +# SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +set -euo pipefail + +rapids-logger "Checking GPU availability" +nvidia-smi + +rapids-logger "Running the Java build and tests" +ci/build_java.sh --run-java-tests diff --git a/dependencies.yaml b/dependencies.yaml index 1251f29f82..73fc663b05 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -45,6 +45,14 @@ files: - test_cpp - test_cpp_cuopt - depends_on_libcuopt + java: + output: none + includes: + - build_common + - cuda + - cuda_version + - depends_on_libcuopt + - java test_python: output: none includes: @@ -275,6 +283,12 @@ dependencies: - libprotobuf - libabseil - re2 + java: + common: + - output_types: conda + packages: + - maven + - openjdk=11.* test_cpp: common: - output_types: [conda] diff --git a/docs/cuopt/source/cuopt-java/convex/convex-api.rst b/docs/cuopt/source/cuopt-java/convex/convex-api.rst index 21529d40b7..8d9a2b633c 100644 --- a/docs/cuopt/source/cuopt-java/convex/convex-api.rst +++ b/docs/cuopt/source/cuopt-java/convex/convex-api.rst @@ -2,15 +2,15 @@ Convex Optimization API Reference =================================== -The Java LP/QP bindings are in the package -``com.nvidia.cuopt.linearprogramming``. The public API is documented below by +The Java LP/MIP/QP bindings are in the package +``com.nvidia.cuopt.mathematicalprogramming``. The public API is documented below by role. Method names are Java names and therefore use fluent methods instead of Python operator overloads. -High-level model ----------------- +High-level problem +------------------ -``Problem`` is the recommended entry point for models built in Java. +``Problem`` is the recommended entry point for problems built in Java. .. list-table:: ``Problem`` :header-rows: 1 @@ -19,7 +19,7 @@ High-level model * - API - Description * - ``new Problem()`` / ``new Problem(String name)`` - - Create an empty model, optionally with a problem name. + - Create an empty problem, optionally with a name. * - ``addVariable(...)`` - Add a variable with lower/upper bounds, objective coefficient, variable type, and name. * - ``addConstraint(Constraint, String name)`` @@ -29,30 +29,31 @@ High-level model * - ``setObjective(QuadraticExpression, ObjectiveSense)`` - Set a quadratic objective with optional linear and constant terms. * - ``solve()`` / ``solve(SolverSettings)`` - - Convert the model to a native ``DataModel`` and return a ``Solution``. - * - ``toDataModel()`` - - Materialize the high-level model as the lower-level native data model. + - Solve the problem and return a ``Solution``. * - ``getCSR()`` / ``getQCSR()`` - Inspect the linear or quadratic objective matrix in CSR form. * - ``writeMPS(String)`` / ``read(String)`` / ``readMPS(String)`` - - Write or load MPS/QPS-backed models. The fixed-format overloads accept a boolean flag. + - Write or load MPS/QPS-backed problems. The fixed-format overloads accept a boolean flag. * - ``update()`` / ``updateConstraint(...)`` / ``updateObjective(...)`` - - Update model state and reset solved values where appropriate. + - Update problem state and reset solved values where appropriate. * - ``relax()`` - Return a copy with variables converted to continuous type. -The model also exposes ``getVariables``, ``getVariable``, ``getConstraints``, +``Problem`` also exposes ``getVariables``, ``getVariable``, ``getConstraints``, ``getConstraint``, ``getNumVariables``, ``getNumConstraints``, -``getNumNonZeros``, ``isMip``, ``isSolved``, ``getStatus``, -``getObjectiveValue``, and ``getSolveTime``. +``getNumNonZeros``, ``isMIP``, ``isSolved``, ``getStatus``, +``getObjective``, ``getObjectiveValue``, and ``getSolveTime``. ``getObjective`` +returns the common ``ObjectiveExpression`` type; ``isQuadratic`` distinguishes +the concrete linear and quadratic forms without an ``Object`` downcast. -Low-level data model --------------------- +Deprecated low-level problem representation +------------------------------------------- -``DataModel`` is useful when the problem is already available as arrays or -when direct access to native CSR and quadratic data is required. +.. deprecated:: 26.08 + Use ``Problem``. ``DataModel`` remains temporarily available for code that + requires direct access to native CSR and quadratic data. -Create a model with one of the following factories: +Create the deprecated representation with one of the following factories: .. code-block:: java @@ -67,9 +68,9 @@ Create a model with one of the following factories: constraintUpperBounds, variableLowerBounds, variableUpperBounds, variableTypes); -``CsrMatrix`` stores ``rowOffsets``, ``columnIndices``, and ``values``. The -arrays are available through ``getRowOffsets``, ``getColumnIndices``, and -``getValues``. +``CSRMatrix`` takes ``values``, ``columnIndices``, and ``rowOffsets`` in the +same order as the lower-level cuOpt CSR setter. The arrays are available +through ``getValues``, ``getColumnIndices``, and ``getRowOffsets``. The mutable ``DataModel`` setters cover: @@ -82,20 +83,20 @@ The mutable ``DataModel`` setters cover: The corresponding getters include ``getConstraintMatrix``, ``getConstraintMatrixValues``, ``getConstraintMatrixIndices``, -``getConstraintMatrixOffsets``, ``getConstraintRhs``, +``getConstraintMatrixOffsets``, ``getConstraintRHS``, ``getConstraintLowerBounds``, ``getConstraintUpperBounds``, ``getQuadraticObjectiveValues``, ``getQuadraticObjectiveIndices``, ``getQuadraticObjectiveOffsets``, ``getQuadraticConstraints``, ``getVariableNames``, ``getRowNames``, ``getObjectiveName``, ``getProblemName``, ``getProblemCategory``, and ``toDict``. -Use ``clearQuadraticConstraints`` to remove all quadratic constraints from a -mutable data model. ``DataModel`` implements ``AutoCloseable``. +Use ``clearQuadraticConstraints`` to remove all quadratic constraints from the +mutable representation. ``DataModel`` implements ``AutoCloseable``. Variables, expressions, and constraints ---------------------------------------- -``Variable`` stores the model index, bounds, objective coefficient, type, +``Variable`` stores the problem index, bounds, objective coefficient, type, name, solved value, reduced cost, and optional MIP start. Its mutable methods return the variable so calls can be chained: @@ -113,10 +114,13 @@ return the variable so calls can be chained: ``QuadraticExpression`` supports quadratic terms through ``QuadraticExpression.of(first, second, coefficient)`` and the same fluent arithmetic pattern. It can also contain linear and constant terms. Its -``le`` and ``ge`` methods return quadratic constraints; ``eq`` throws because -equality quadratic constraints are not supported. +``le`` and ``ge`` methods return quadratic constraints. It does not expose an +``eq`` method because equality quadratic constraints are not supported. -The enums used in model construction are: +Both expression classes implement ``ObjectiveExpression``, which exposes the +linear portion, constant, current value, and ``isQuadratic``. + +The enums used in problem construction are: * ``ObjectiveSense.MINIMIZE`` and ``ObjectiveSense.MAXIMIZE``; * ``ConstraintSense.LE``, ``ConstraintSense.GE``, and ``ConstraintSense.EQ``; @@ -124,6 +128,9 @@ The enums used in model construction are: ``VariableType.SEMI_CONTINUOUS``; and * ``ProblemCategory`` for the native problem classification. +``ProblemCategory.IP`` is deprecated. Java normalizes the legacy native IP +category to ``ProblemCategory.MIP``. + ``Constraint`` provides ``getSense``, ``getRHS``, ``getCoefficient``, ``getLinearExpression``, ``getQuadraticExpression``, ``isQuadratic``, ``computeSlack``, ``getSlack``, and ``getDualValue``. @@ -132,22 +139,21 @@ Solver settings --------------- ``SolverSettings`` owns native solver configuration and implements -``AutoCloseable``. Parameters can be set with the overloaded -``setParameter`` methods for ``String``, ``int``, ``double``, and ``boolean`` -values. Use ``getParameter`` or ``getParameterAsString`` for the native string -representation, and ``getTypedParameter`` when a Java ``Boolean``, -``Integer``, ``Double``, or ``String`` value is preferred. +``AutoCloseable``. Settings can be set with the overloaded +``setSetting`` methods for ``String``, ``int``, ``double``, and ``boolean`` +values. Use ``getSetting`` or ``getSettingAsString`` for the native string +representation. The ``getSetting(name, type)`` overload provides a typed +``Boolean``, ``Integer``, ``Double``, or ``String`` result, for example +``getSetting(CuOptConstants.CUOPT_TIME_LIMIT, Double.class)``. The settings API also includes: -* ``getSolverParameterNames`` and the static setting accessors; -* ``setMethod`` and ``setPdlpSolverMode``; +* ``getSolverSettingNames`` and the static setting accessors; +* ``setMethod`` and ``setPDLPSolverMode``; * ``setOptimalityTolerance``; -* primal and dual initial solutions; -* ``dumpParametersToFile`` and ``loadParametersFromFile``; +* ``dumpSettingsToFile`` and ``loadSettingsFromFile``; * ``toDict``; -* ``setPdlpWarmStartData``; and -* MIP callback registration through ``setMipCallback``. +* MIP callback registration through ``setMIPCallback``. ``SolverMethod`` includes ``PDLP``, ``DUAL_SIMPLEX``, ``BARRIER``, ``CONCURRENT``, and ``UNSET``. ``PDLPSolverMode`` exposes the supported PDLP @@ -165,22 +171,17 @@ Solutions and statistics * ``getSolveTime`` and ``getProblemCategory``; and * ``getVars`` when variable names are available. -LP solutions additionally expose ``getLpStats`` and PDLP warm-start data. -``LPStats`` contains primal residual, dual residual, gap, iteration count, and -the ``SolverMethod`` used. MIP-only solution fields are documented in -:doc:`../mip/mip-api`. - -MPS, batching, and errors -------------------------- +LP solutions additionally expose ``getLPStats``. ``LPStats`` contains primal +residual, dual residual, gap, iteration count, and the ``SolverMethod`` used. +MIP-only solution fields are documented in :doc:`../mip/mip-api`. -``DataModel.read``, ``DataModel.parseMps``, ``Problem.read``, and -``Problem.readMPS`` support MPS/QPS parsing, including a fixed-format boolean -overload. ``writeMPS`` writes a model for round trips or use by another cuOpt -interface. +MPS and errors +-------------- -``BatchSolve.solve(List, SolverSettings)`` is a sequential Java -compatibility entry point. It returns ``BatchSolveResult``, containing the -solutions and elapsed solve time. +``Problem.read`` and ``Problem.readMPS`` support MPS/QPS parsing, including a +fixed-format boolean overload. The deprecated ``DataModel`` equivalents are +``DataModel.read`` and ``DataModel.parseMPS``. ``writeMPS`` writes a problem +for round trips or use by another cuOpt interface. Native failures are reported as ``CuOptException`` with a cuOpt status code available through ``getStatusCode``. Accessing an LP-only field on a MIP diff --git a/docs/cuopt/source/cuopt-java/convex/convex-examples.rst b/docs/cuopt/source/cuopt-java/convex/convex-examples.rst index d3cd907025..4061e753bb 100644 --- a/docs/cuopt/source/cuopt-java/convex/convex-examples.rst +++ b/docs/cuopt/source/cuopt-java/convex/convex-examples.rst @@ -13,7 +13,7 @@ The high-level API uses fluent expressions and explicit comparison methods. .. code-block:: java - import com.nvidia.cuopt.linearprogramming.*; + import com.nvidia.cuopt.mathematicalprogramming.*; try (Problem problem = new Problem("simple-lp")) { Variable x = problem.addVariable( @@ -38,21 +38,22 @@ The high-level API uses fluent expressions and explicit comparison methods. } } -``Problem.solve`` copies the model to a native ``DataModel`` and populates -the ``Variable`` and ``Constraint`` objects after the solve. The solution -object remains available for detailed native results and statistics. +``Problem.solve`` populates the ``Variable`` and ``Constraint`` objects after +the solve. The solution object remains available for detailed native results +and statistics. -Low-level CSR linear program ------------------------------ +Deprecated low-level CSR linear program +---------------------------------------- -Use ``DataModel`` when the input is already in CSR form: +``DataModel`` is deprecated in favor of ``Problem``. It remains temporarily +available when the input is already in CSR form: .. code-block:: java - CsrMatrix matrix = new CsrMatrix( - new int[] {0, 2}, // row offsets - new int[] {0, 1}, // column indices - new double[] {1.0, 1.0}); + CSRMatrix matrix = new CSRMatrix( + new double[] {1.0, 1.0}, // values + new int[] {0, 1}, // column indices + new int[] {0, 2}); // row offsets try (DataModel model = DataModel.createProblem( 1, 2, @@ -60,11 +61,11 @@ Use ``DataModel`` when the input is already in CSR form: 0.0, new double[] {1.0, 1.0}, matrix, - new byte[] {(byte) 'G'}, + new byte[] {'G'}, new double[] {10.0}, new double[] {0.0, 0.0}, new double[] {Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY}, - new byte[] {(byte) 'C', (byte) 'C'}); + new byte[] {'C', 'C'}); SolverSettings settings = new SolverSettings().setMethod(SolverMethod.PDLP); Solution solution = model.solve(settings)) { System.out.println(solution.getPrimalObjective()); @@ -101,21 +102,18 @@ Quadratic objectives combine quadratic, linear, and constant terms: System.out.println("x = " + x.getValue()); System.out.println("y = " + y.getValue()); System.out.println("Objective = " + solution.getPrimalObjective()); - System.out.println("LP stats gap = " + solution.getLpStats().getGap()); + System.out.println("LP stats gap = " + solution.getLPStats().getGap()); } } -The lower-level equivalent is ``DataModel.setQuadraticObjective`` with a -``QuadraticExpression`` or ``setQuadraticObjectiveMatrix`` with quadratic CSR -arrays. For QP solutions, ``getPrimalSolution``, ``getDualSolution``, -``getReducedCost``, ``getDualObjective``, and ``getLpStats`` are available when +For QP solutions, ``getPrimalSolution``, ``getDualSolution``, +``getReducedCost``, ``getDualObjective``, and ``getLPStats`` are available when the solver returns the corresponding values. Quadratic constraints --------------------- -Quadratic constraints can be added to a high-level ``Problem`` or directly to -a ``DataModel``: +Quadratic constraints can be added directly to a ``Problem``: .. code-block:: java @@ -135,48 +133,38 @@ a ``DataModel``: } } -Only ``LE`` and ``GE`` quadratic constraints are supported. Calling -``QuadraticExpression.eq`` or adding an equality quadratic constraint raises -``IllegalArgumentException``. +Only ``LE`` and ``GE`` quadratic constraints are supported; +``QuadraticExpression`` does not expose an ``eq`` method. Reading and writing MPS/QPS --------------------------- -``DataModel`` and ``Problem`` expose both extension-dispatch and direct MPS -entry points: +``Problem`` exposes both extension-dispatch and direct MPS entry points: .. code-block:: java - try (DataModel model = DataModel.read("model.mps")) { - System.out.println("Variables: " + model.getNumVariables()); - System.out.println("QP terms: " + model.getQuadraticObjectiveValues().length); - model.writeMPS("roundtrip.mps"); + try (Problem problem = Problem.read("problem.mps")) { + System.out.println("Variables: " + problem.getNumVariables()); + problem.writeMPS("roundtrip.mps"); } - try (DataModel fixed = DataModel.parseMps("fixed-format.mps", true)) { + try (Problem fixed = Problem.readMPS("fixed-format.mps", true)) { // Use fixed-format parsing explicitly. } -``Problem.read`` and ``Problem.readMPS`` build the high-level Java model from -the parsed data. Parsing failures are reported as ``CuOptException`` with the -cuOpt status code available from ``getStatusCode``. +Parsing failures are reported as ``CuOptException`` with the cuOpt status code +available from ``getStatusCode``. -Inspecting solutions and PDLP warm starts ------------------------------------------- +Inspecting solutions +-------------------- -LP solutions expose residuals and solver metadata through ``LPStats``. When -PDLP warm-start data is available, retrieve a defensive-copy representation: +LP solutions expose residuals and solver metadata through ``LPStats``: .. code-block:: java try (SolverSettings settings = new SolverSettings().setMethod(SolverMethod.PDLP); Solution solution = problem.solve(settings)) { - if (solution.hasPdlpWarmStartData()) { - PDLPWarmStartData warmStart = solution.getPdlpWarmStartData(); - System.out.println(warmStart.getCurrentPrimalSolution().length); - System.out.println(warmStart.getTotalPdlpIterations()); - } + LPStats stats = solution.getLPStats(); + System.out.println(stats.getNumIterations()); + System.out.println(stats.getPrimalResidual()); } - -The same ``PDLPWarmStartData`` can be supplied to -``SolverSettings.setPdlpWarmStartData`` for a subsequent compatible LP solve. diff --git a/docs/cuopt/source/cuopt-java/convex/index.rst b/docs/cuopt/source/cuopt-java/convex/index.rst index add551d187..3fb0b00bb2 100644 --- a/docs/cuopt/source/cuopt-java/convex/index.rst +++ b/docs/cuopt/source/cuopt-java/convex/index.rst @@ -1,25 +1,22 @@ -===================================== -Convex Optimization (LP/QP) -===================================== +================================================ +Convex Optimization (LP/QP/QCQP/SOCP) +================================================ -This section documents the Java bindings for continuous linear and quadratic -optimization. The Java API includes both: +This section documents the Java bindings for LP, QP, QCQP, and SOCP. The Java +API includes both: -* a high-level modeling API based on ``Problem``, ``Variable``, expressions, +* a high-level problem API based on ``Problem``, ``Variable``, expressions, and constraints; and -* a lower-level ``DataModel`` API that exposes CSR data, ranged bounds, - quadratic matrices, MPS I/O, and solver results. +* a deprecated lower-level ``DataModel`` API for compatibility with direct + CSR data, ranged bounds, quadratic matrices, MPS I/O, and solver results. Quadratic constraints are supported for ``LE`` and ``GE`` constraints. Equality -quadratic constraints are rejected by the Java API. Dedicated SOCP modeling -helpers are not currently exposed; cone models can be represented through the -supported quadratic-expression API when they satisfy cuOpt's quadratic -constraint requirements. +quadratic constraints are rejected by the Java API. .. toctree:: :maxdepth: 3 - :caption: LP/QP Java API - :name: LP/QP Java API Reference + :caption: LP/QP/QCQP/SOCP Java API + :name: LP/QP/QCQP/SOCP Java API Reference :titlesonly: convex-api.rst diff --git a/docs/cuopt/source/cuopt-java/index.rst b/docs/cuopt/source/cuopt-java/index.rst index a4de800c03..d7b30c63a3 100644 --- a/docs/cuopt/source/cuopt-java/index.rst +++ b/docs/cuopt/source/cuopt-java/index.rst @@ -1,21 +1,23 @@ ==================================== -Java API (Beta) +Java API ==================================== NVIDIA cuOpt provides experimental Java bindings for linear programming (LP), -mixed-integer linear programming (MILP), quadratic programming (QP), and -quadratic constraints through JNI. +mixed-integer linear programming (MILP), quadratic programming (QP), +quadratically constrained quadratic programming (QCQP), and second-order cone +programming (SOCP) through JNI. -The Java bindings are a separately compiled beta module for the LP/MILP/QP -surface. They are not part of the repository-level cuOpt build and do not -provide routing or distance-engine bindings. See :doc:`quick-start` before -using the API. +The Java bindings are a separately compiled beta module for this mathematical +programming surface. Repository CI and release workflows build and test it +against the matching ``libcuopt`` artifact, but it is not part of the top-level +cuOpt build and does not provide routing or distance-engine bindings. See +:doc:`quick-start` before using the API. .. note:: - This Java module is currently intended for the customer beta described by - your cuOpt distribution. Build it from ``java/cuopt`` against an existing - cuOpt installation; do not expect ``build.sh`` to compile it. + Build the module locally from ``java/cuopt`` against an existing cuOpt + installation. CI artifacts are experimental; publication to a supported + Maven repository has not been defined. .. toctree:: :maxdepth: 3 @@ -27,7 +29,7 @@ using the API. .. toctree:: :maxdepth: 3 - :caption: Convex Optimization (LP/QP) + :caption: Convex Optimization (LP/QP/QCQP/SOCP) :name: LP/QP Java API :titlesonly: diff --git a/docs/cuopt/source/cuopt-java/mip/index.rst b/docs/cuopt/source/cuopt-java/mip/index.rst index 18566cca1b..afdc154b97 100644 --- a/docs/cuopt/source/cuopt-java/mip/index.rst +++ b/docs/cuopt/source/cuopt-java/mip/index.rst @@ -9,8 +9,8 @@ Mixed Integer Programming (MIP) performance characteristics; inspect termination status, MIP gap, and solution bound in production workflows. -The Java MIP API uses the same ``Problem``, ``DataModel``, -``SolverSettings``, and ``Solution`` classes as the LP/QP API. MIP models are +The Java MIP API uses the same ``Problem``, ``SolverSettings``, and +``Solution`` classes as the LP/QP API. MIP problems are identified by one or more variables with ``INTEGER`` or ``SEMI_CONTINUOUS`` type. diff --git a/docs/cuopt/source/cuopt-java/mip/mip-api.rst b/docs/cuopt/source/cuopt-java/mip/mip-api.rst index 97d39c7077..ebdfcb2d4b 100644 --- a/docs/cuopt/source/cuopt-java/mip/mip-api.rst +++ b/docs/cuopt/source/cuopt-java/mip/mip-api.rst @@ -2,9 +2,9 @@ MIP API Reference ================= -MIP uses the shared Java modeling and solve APIs documented in +MIP uses the shared Java problem construction and solve APIs documented in :doc:`../convex/convex-api`. The following features are particularly relevant -to mixed-integer models. +to mixed-integer problems. Variable types -------------- @@ -22,73 +22,72 @@ Use ``VariableType`` when adding a variable or updating an existing variable: VariableType.SEMI_CONTINUOUS, "semi"); The supported values are ``CONTINUOUS``, ``INTEGER``, and -``SEMI_CONTINUOUS``. ``Problem.isMip()``, ``DataModel.isMip()``, and -``Solution.isMip()`` report whether a model or result contains a noncontinuous -variable. +``SEMI_CONTINUOUS``. ``Problem.isMIP()`` and ``Solution.isMIP()`` report +whether a problem or result contains a noncontinuous variable. MIP starts ---------- -MIP starts can be provided per variable through ``Variable.setMipStart``. The +MIP starts can be provided per variable through ``Variable.setMIPStart``. The high-level ``Problem.solve`` collects defined variable starts and passes them to the native solver. A complete start can also be supplied directly through -``SolverSettings.addMipStart(double[])``. +``SolverSettings.addMIPStart(double[])``. .. code-block:: java - x.setMipStart(3.0); - y.setMipStart(2.0); + x.setMIPStart(3.0); + y.setMIPStart(2.0); try (SolverSettings settings = new SolverSettings()) { - // The array follows the model's variable-index order. - settings.addMipStart(new double[] {3.0, 2.0}); + // The array follows the problem's variable-index order. + settings.addMIPStart(new double[] {3.0, 2.0}); try (Solution solution = problem.solve(settings)) { - System.out.println(solution.getMipGap()); + System.out.println(solution.getMIPGap()); } } MIP settings ------------ -All solver parameters are set through ``SolverSettings``. Use the overloaded -``setParameter`` methods for string, integer, floating-point, and boolean +All solver settings are set through ``SolverSettings``. Use the overloaded +``setSetting`` methods for string, integer, floating-point, and boolean values. MIP-relevant settings include time and node limits, MIP tolerances, -presolve, heuristics, scaling, determinism, and cut controls. Parameter names -are available at runtime through ``SolverSettings.getSolverParameterNames``; +presolve, heuristics, scaling, determinism, and cut controls. Setting names +are available at runtime through ``SolverSettings.getSolverSettingNames``; the generated ``CuOptConstants`` class contains string and integer constants from the cuOpt public constants header. MIP callbacks ------------- -``SolverSettings.setMipCallback`` accepts either callback interface: +``SolverSettings.setMIPCallback`` accepts either callback interface: -``MipSolutionCallback`` receives each incumbent solution: +``MIPSolutionCallback`` receives each incumbent solution: .. code-block:: java - settings.setMipCallback( + settings.setMIPCallback( (solution, objectiveValue, solutionBound, userData) -> { System.out.println("incumbent objective = " + objectiveValue); }, "my-user-data", problem.getNumVariables()); -``MipSetSolutionCallback`` returns a candidate solution and objective when the +``MIPSetSolutionCallback`` returns a candidate solution and objective when the native solver asks Java for one: .. code-block:: java - settings.setMipCallback( + settings.setMIPCallback( (solutionBound, userData) -> - new MipCallbackSolution(new double[] {3.0, 2.0}, 19.0), + new MIPCallbackSolution(new double[] {3.0, 2.0}, 19.0), null, problem.getNumVariables()); Callbacks are native-runtime features. Keep the callback and any user data valid for the duration of the solve, and close the ``SolverSettings`` after the solve completes. Registered callbacks can be inspected with -``getMipCallbacks``. +``getMIPCallbacks``. MIP solution fields ------------------- @@ -97,23 +96,23 @@ For a MIP ``Solution``: * ``getPrimalSolution`` returns the incumbent primal vector; * ``getPrimalObjective`` returns its objective value; -* ``getMipGap`` returns the current relative MIP gap; +* ``getMIPGap`` returns the current relative MIP gap; * ``getSolutionBound`` returns the best bound reported by the solver; -* ``getMipStats`` returns ``MIPStats``; and +* ``getMIPStats`` returns ``MIPStats``; and * ``getTerminationStatus``, ``getTerminationReason``, ``getErrorStatus``, ``getErrorMessage``, and ``getSolveTime`` describe the solve. ``MIPStats`` contains presolve time, maximum constraint violation, maximum integer violation, maximum variable-bound violation, node count, and simplex iteration count. LP-only accessors such as ``getDualSolution``, -``getReducedCost``, and ``getLpStats`` raise ``IllegalStateException`` for a +``getReducedCost``, and ``getLPStats`` raise ``IllegalStateException`` for a MIP result. Relaxing and inspecting a MIP ----------------------------- -``Problem.relax()`` returns a separate continuous model while preserving +``Problem.relax()`` returns a separate continuous problem while preserving variable names, bounds, objective, and constraints. This is useful for inspecting the LP relaxation without changing the original MIP. The original -model can also be inspected through ``getCSR``, ``getQCSR``, ``toDataModel``, -and ``getIncumbentValues``. +problem can also be inspected through ``getCSR``, ``getQCSR``, and +``getIncumbentValues``. diff --git a/docs/cuopt/source/cuopt-java/mip/mip-examples.rst b/docs/cuopt/source/cuopt-java/mip/mip-examples.rst index 6c07fb69e9..b482a5e728 100644 --- a/docs/cuopt/source/cuopt-java/mip/mip-examples.rst +++ b/docs/cuopt/source/cuopt-java/mip/mip-examples.rst @@ -10,7 +10,7 @@ Simple MILP .. code-block:: java - import com.nvidia.cuopt.linearprogramming.*; + import com.nvidia.cuopt.mathematicalprogramming.*; try (Problem problem = new Problem("simple-milp")) { Variable x = problem.addVariable( @@ -25,15 +25,15 @@ Simple MILP ObjectiveSense.MAXIMIZE); try (SolverSettings settings = new SolverSettings() - .setParameter(CuOptConstants.CUOPT_TIME_LIMIT, 10.0); + .setSetting(CuOptConstants.CUOPT_TIME_LIMIT, 10.0); Solution solution = problem.solve(settings)) { System.out.println("Status: " + solution.getTerminationStatus()); System.out.println("x = " + x.getValue()); System.out.println("y = " + y.getValue()); System.out.println("Objective = " + solution.getPrimalObjective()); - System.out.println("MIP gap = " + solution.getMipGap()); + System.out.println("MIP gap = " + solution.getMIPGap()); System.out.println("Bound = " + solution.getSolutionBound()); - System.out.println("Nodes = " + solution.getMipStats().getNumNodes()); + System.out.println("Nodes = " + solution.getMIPStats().getNumNodes()); } } @@ -66,16 +66,17 @@ Set starts on variables when using the high-level ``Problem`` API: .. code-block:: java - x.setMipStart(3.0); - y.setMipStart(2.0); + x.setMIPStart(3.0); + y.setMIPStart(2.0); try (SolverSettings settings = new SolverSettings(); Solution solution = problem.solve(settings)) { System.out.println(solution.getPrimalObjective()); } -For a lower-level model, pass a full variable-index-ordered array through -``SolverSettings.addMipStart``. +For the deprecated lower-level representation, pass a full +variable-index-ordered array through +``SolverSettings.addMIPStart``. Incumbent callback ------------------ @@ -85,7 +86,7 @@ Register an incumbent callback before solving: .. code-block:: java try (SolverSettings settings = new SolverSettings()) { - settings.setMipCallback( + settings.setMIPCallback( (incumbent, objective, bound, userData) -> { System.out.println( "incumbent objective=" + objective + ", bound=" + bound); diff --git a/docs/cuopt/source/cuopt-java/quick-start.rst b/docs/cuopt/source/cuopt-java/quick-start.rst index 4bd65ea88d..d6e91cd6ec 100644 --- a/docs/cuopt/source/cuopt-java/quick-start.rst +++ b/docs/cuopt/source/cuopt-java/quick-start.rst @@ -1,9 +1,10 @@ Java Quick Start ================ -The Java bindings live in ``java/cuopt`` and are built explicitly as a -standalone beta module. They are not part of the repository-level cuOpt build -and do not modify the main C/C++ or Python bindings. +The experimental Java bindings live in ``java/cuopt`` and are built explicitly +from source. Repository CI and release workflows also build and test the module +against the matching ``libcuopt`` artifact. It is not part of the top-level +cuOpt build, and a supported Maven distribution has not yet been defined. Requirements ------------ @@ -13,7 +14,7 @@ The Java module requires: * Java 11 or newer, with ``JAVA_HOME`` pointing to a JDK; * a C++20 compiler; * an existing cuOpt installation containing ``libcuopt.so``; and -* a CUDA-enabled runtime for solving models. +* a CUDA-enabled runtime for solving problems. The module uses Maven for Java compilation and a Java-local CMake project for the JNI library. The standalone native build links to @@ -62,7 +63,7 @@ To run one test class, pass its Maven property to the helper: .. code-block:: bash - bash scripts/test.sh -Dtest=PythonParityTest + bash scripts/test.sh -Dtest=DataModelIntegrationTest Application code can use the same property: @@ -85,7 +86,7 @@ instead of operator overloading. .. code-block:: java - import com.nvidia.cuopt.linearprogramming.*; + import com.nvidia.cuopt.mathematicalprogramming.*; Problem problem = new Problem("simple"); Variable x = problem.addVariable(0, Double.POSITIVE_INFINITY, 0, @@ -100,7 +101,7 @@ instead of operator overloading. Solution solution = problem.solve(settings)) { System.out.println(solution.getTerminationStatus()); System.out.println(solution.getPrimalObjective()); - System.out.println(solution.getLpStats().getSolvedBy()); + System.out.println(solution.getLPStats().getSolvedBy()); } MILP Example @@ -113,38 +114,27 @@ MILP Example problem.addConstraint(LinearExpression.of(x).ge(1.0)); try (SolverSettings settings = new SolverSettings() - .setParameter(CuOptConstants.CUOPT_TIME_LIMIT, 10.0); + .setSetting(CuOptConstants.CUOPT_TIME_LIMIT, 10.0); Solution solution = problem.solve(settings)) { - System.out.println(solution.getMipGap()); - System.out.println(solution.getMipStats().getNumNodes()); + System.out.println(solution.getMIPGap()); + System.out.println(solution.getMIPStats().getNumNodes()); } QP Example ---------- -``DataModel`` exposes the lower-level CSR API and quadratic hooks from the C API. - .. code-block:: java - CsrMatrix matrix = new CsrMatrix( - new int[] {0, 2}, - new int[] {0, 1}, - new double[] {1.0, 1.0}); - - try (DataModel model = DataModel.createProblem( - 1, 2, ObjectiveSense.MINIMIZE, 0.0, - new double[] {-8.0, -16.0}, - matrix, - new byte[] {(byte) 'G'}, - new double[] {5.0}, - new double[] {0.0, 0.0}, - new double[] {10.0, 10.0}, - new byte[] {(byte) 'C', (byte) 'C'})) { - Problem shell = new Problem(); - Variable x0 = shell.addVariable(); - Variable x1 = shell.addVariable(); - model.setQuadraticObjective( - QuadraticExpression.of(x0, x0, 1.0).plus(x1, x1, 4.0)); + try (Problem problem = new Problem("quadratic")) { + Variable x = problem.addVariable(0.0, 10.0, 0.0, VariableType.CONTINUOUS, "x"); + Variable y = problem.addVariable(0.0, 10.0, 0.0, VariableType.CONTINUOUS, "y"); + problem.addConstraint(LinearExpression.of(x).plus(y).ge(5.0)); + problem.setObjective( + QuadraticExpression.of(x, x, 1.0).plus(y, y, 4.0), + ObjectiveSense.MINIMIZE); + try (Solution solution = problem.solve()) { + System.out.println(solution.getPrimalObjective()); + } } MPS I/O @@ -152,19 +142,18 @@ MPS I/O .. code-block:: java - try (DataModel model = DataModel.read("model.mps")) { - model.writeMPS("roundtrip.mps"); + try (Problem problem = Problem.read("problem.mps")) { + problem.writeMPS("roundtrip.mps"); } Lifecycle --------- -``DataModel``, ``SolverSettings``, and ``Solution`` own native handles and -implement ``AutoCloseable``. Prefer try-with-resources. They also register a -``Cleaner`` fallback, but deterministic close keeps native memory pressure -predictable. +``SolverSettings`` and ``Solution`` own native handles and implement +``AutoCloseable``. Prefer try-with-resources. They also register a ``Cleaner`` +fallback, but deterministic close keeps native memory pressure predictable. The Java module is not a drop-in translation of Python syntax. Java uses fluent expression methods such as ``plus``, ``minus``, ``le``, ``ge``, and ``eq`` instead of Python operator overloads. The following pages document the -implemented LP/MILP/QP surface and its Java names. +implemented LP/MILP/QP/QCQP/SOCP surface and its Java names. diff --git a/docs/cuopt/source/index.rst b/docs/cuopt/source/index.rst index 3d53b88965..4bc291112e 100644 --- a/docs/cuopt/source/index.rst +++ b/docs/cuopt/source/index.rst @@ -42,6 +42,16 @@ Python (cuopt) Python Overview +========================== +Java (cuopt) +========================== +.. toctree:: + :maxdepth: 4 + :caption: Java API + :name: Java API + + Java Overview + ==================================== gRPC remote execution ==================================== diff --git a/java/.gitignore b/java/.gitignore new file mode 100644 index 0000000000..3d9173556a --- /dev/null +++ b/java/.gitignore @@ -0,0 +1,3 @@ +*.iml +hs_err*.log +target/ diff --git a/java/cuopt/README.md b/java/cuopt/README.md index 852e18a436..e17848704f 100644 --- a/java/cuopt/README.md +++ b/java/cuopt/README.md @@ -1,11 +1,15 @@ -# cuOpt Java bindings (beta) +# cuOpt Java bindings -This directory is an isolated, customer-specific beta module for the cuOpt -LP, MILP, and QP Java bindings. It is intentionally not connected to the -repository-level `build.sh`, CMake targets, public C/C++ headers, dependency -manifest, or Python build. +This directory contains a source module for cuOpt LP, MILP, QP, +QCQP, and SOCP Java bindings. The repository CI and release workflows build +and test the module against the matching `libcuopt` conda artifact and retain +the Maven `target/` output as a workflow artifact. Publication to a supported +Maven repository has not been defined. -The Java module must be compiled separately against an existing cuOpt +The module is not connected to the repository-level `build.sh` or main CMake +targets. + +For local development, compile the Java module against an existing cuOpt installation: ```bash @@ -16,10 +20,23 @@ CUOPT_PREFIX=/path/to/cuopt/conda/environment bash scripts/test.sh `build_native.sh` builds `libcuopt_jni.so` in `build/native`. `test.sh` builds that library and runs the Maven tests. Java 11 or newer and a C++20 compiler -are required. The native solve and Python-parity tests require a CUDA driver; -they skip automatically when one is unavailable. +are required. Native solve tests require a CUDA driver and skip automatically +when one is unavailable. The standalone native project links to `${CUOPT_PREFIX}/lib/libcuopt.so` and -uses private cuOpt headers from the checkout only to implement the Java-local -bridge. No Java-specific symbol or source file is required by the main cuOpt -build. +uses private cuOpt headers from the checkout to implement the Java-local +bridge. The Java-required native extensions need C API review before this +module can become a supported binary distribution. No Java-specific symbol or +source file is currently required by the main cuOpt build. + +## Generated constants + +Maven generates `CuOptConstants.java` under +`target/generated-sources/cuopt/com/nvidia/cuopt/mathematicalprogramming/` +from `cpp/include/cuopt/linear_programming/constants.h`. Do not edit the +generated file. Regenerate it after changing the C++ constants header with: + +```bash +cd java/cuopt +mvn generate-sources +``` diff --git a/java/cuopt/TESTS.md b/java/cuopt/TESTS.md index 226c929409..12e59a8339 100644 --- a/java/cuopt/TESTS.md +++ b/java/cuopt/TESTS.md @@ -5,189 +5,69 @@ SPDX-License-Identifier: Apache-2.0 # cuOpt Java binding tests -This module currently has three Java test classes under -`src/test/java/com/nvidia/cuopt/linearprogramming`: +The Java module has three test classes under +`src/test/java/com/nvidia/cuopt/mathematicalprogramming`: -- `ProblemModelingTest`: pure Java modeling tests. -- `NativeIntegrationTest`: JNI/native cuOpt smoke tests. -- `PythonParityTest`: Java-vs-Python cuOpt parity tests. +- `ProblemModelingTest`: five pure Java modeling tests. +- `NativeIntegrationTest`: nine JNI/native cuOpt smoke and lifecycle tests. +- `DataModelIntegrationTest`: ten standalone Java problem and solve tests. -The full suite has 22 test executions: 3 modeling tests, 9 native integration -tests, and 10 Python parity dynamic tests. - -For the broader API coverage and Java/Python parity backlog, see -`API_PARITY.md`. +The suite has no dependency on the cuOpt Python interface. ## How to run -Run these commands from a shell that can see the GPU. A good quick check is: - -```bash -nvidia-smi -``` - -The Java module has its own native CMake project. It does not add a target to -the repository-level `build.sh` and does not modify the main cuOpt C/C++ API. -Build the JNI library first: - -```bash -cd /home/cbrissette/cuopt/java/cuopt - -CUOPT_PREFIX=/home/cbrissette/cuopt/.cuopt_env \ -bash scripts/build_native.sh -``` - -The native helper preserves the compiler recorded in an existing Java CMake -cache and clears inherited conda `CFLAGS`, `CXXFLAGS`, `CPPFLAGS`, and -`LDFLAGS` while configuring/building. This prevents conda's host compiler flags -from exposing incompatible CUDA FP4/FP6 headers in the standalone JNI build. - -Then run only the Python parity suite: +Build the JNI library and run all Java tests with: ```bash -cd /home/cbrissette/cuopt/java/cuopt - -JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 \ -LD_LIBRARY_PATH=/home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib:/home/cbrissette/cuopt/.cuopt_env/lib:/home/cbrissette/cuopt/java/cuopt/build/native \ -mvn clean test -Dtest=PythonParityTest \ - -Dcuopt.native.dir=/home/cbrissette/cuopt/java/cuopt/build/native \ - -Dcuopt.python=/home/cbrissette/cuopt/.cuopt_env/bin/python +cd /path/to/cuopt/java/cuopt +export JAVA_HOME=/path/to/jdk-11 +export CUOPT_PREFIX=/path/to/cuopt/conda/environment +bash scripts/test.sh ``` -To run the full Java binding suite: +To run one test class: ```bash -cd /home/cbrissette/cuopt/java/cuopt - -JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 \ -LD_LIBRARY_PATH=/home/cbrissette/cuopt/.cuopt_env/targets/x86_64-linux/lib:/home/cbrissette/cuopt/.cuopt_env/lib:/home/cbrissette/cuopt/java/cuopt/build/native \ -mvn test \ - -Dcuopt.native.dir=/home/cbrissette/cuopt/java/cuopt/build/native \ - -Dcuopt.python=/home/cbrissette/cuopt/.cuopt_env/bin/python +bash scripts/test.sh -Dtest=DataModelIntegrationTest ``` -The helper script combines both steps and accepts Maven arguments: +When invoking Maven directly, build the JNI library first and provide the +native directory: ```bash -cd /home/cbrissette/cuopt/java/cuopt -CUOPT_PREFIX=/home/cbrissette/cuopt/.cuopt_env bash scripts/test.sh -Dtest=PythonParityTest +bash scripts/build_native.sh +mvn test -Dcuopt.native.dir=build/native ``` -Important runtime inputs: - -- `cuopt.native.dir` must point at the Java module's native build directory, - containing `libcuopt_jni`. -- `cuopt.python` should point at a Python environment with Python cuOpt - installed. -- `LD_LIBRARY_PATH` needs the CUDA runtime directory, the conda environment - libraries, and the local cuOpt native build directory when invoking Maven - directly. `scripts/test.sh` configures these paths automatically. - -## `ProblemModelingTest` - -These tests do not require the native library, Python cuOpt, or a GPU. They -exercise the Java modeling layer before anything crosses into JNI. - -| Test | What it verifies | -| --- | --- | -| `buildsLinearModelAndCsr` | Builds a small two-variable MIP through the high-level `Problem` API. It checks variable indices, MIP detection, CSR row offsets, column indices, matrix values, objective setup, constraint count, and RHS adjustment when a constraint expression has a constant term. | -| `duplicateLinearTermsAreMergedForSlack` | Adds the same variable twice to one linear expression and verifies the coefficients are merged. It also checks slack computation and confirms the model is not marked as MIP when all variables are continuous. | - -## `NativeIntegrationTest` - -These tests verify that the Java bindings can load and call the JNI/native cuOpt -library. Tests that solve models also require a visible CUDA driver. - -| Test | What it verifies | -| --- | --- | -| `solverParameterNamesAreAvailable` | Loads the native library and confirms solver parameter names can be queried through `SolverSettings`. This is a low-cost JNI smoke test. | -| `settingsExposeTypedValuesAndParameterFileRoundTrip` | Checks typed parameter reads, optimality-tolerance propagation, callback registration state, the settings map view, and native parameter dump/load bindings. | -| `emptyDataModelCanBeClosed` | Verifies a JNI-created empty `DataModel` can be closed without crossing the native ownership boundary incorrectly. | -| `mutableDataModelExposesPythonMetadataAndQuadraticFields` | Exercises mutable DataModel setters, names, objective scaling, initial vectors, Q-CSR getters, quadratic-constraint add/get/clear, and `toDict`. | -| `solvesSmallLpAndReportsStats` | Builds a tiny LP directly as a `DataModel`, solves it with PDLP, checks the termination status and primal objective, verifies the primal solution satisfies the single constraint, and confirms LP-only stats are available while MIP stats are rejected. | -| `solvesProblemApiMilpAndLifecycleCloseIsIdempotent` | Builds a one-variable integer problem through the high-level `Problem` API, solves it, checks the integer solution value, verifies MIP stats are available and dual values are rejected, and confirms calling `Solution.close()` twice is safe. | -| `solvesSmallQp` | Starts from the tiny LP model, adds a quadratic objective, solves it, and verifies the Java binding can retrieve a primal solution for a QP-shaped model. | -| `rejectsMissingFileThroughCuOptException` | Calls `DataModel.read` on a missing MPS file and verifies the Java API raises `CuOptException` with the expected MPS file error status. | -| `writesAndReadsMpsThroughReadAndParseMps` | Writes a generated MPS model and reads it through both extension-dispatch and direct MPS parser APIs, plus the high-level `Problem.read` path. | -| `batchSolveCompatibilityReturnsAllSolutions` | Verifies the Java BatchSolve compatibility entry point returns one solution per model and reports elapsed time. | - -## `PythonParityTest` - -`PythonParityTest` is a dynamic JUnit test factory. For each case below, Java -constructs a `DataModel`, writes the same model data to a temporary JSON file, -and invokes `src/test/resources/python_binding_parity.py` as the Python oracle. -The Python helper builds the same model with Python cuOpt, solves it with the -same deterministic settings, and emits `CUOPT_COMPARE key=value` lines for Java -to compare. - -Each parity case compares both model data and solve behavior: - -- model dimensions and nonzero count; -- objective sense, offset, scaling factor, and coefficients; -- CSR matrix values, column indices, and row offsets; -- variable bounds, variable types, variable names, row names, and model names; -- quadratic objective values, column indices, and row offsets for the QP case; -- row sense/RHS for row-sense models, or constraint lower/upper bounds for - ranged-bound models; -- solution category, termination status, error status/message, and solve time - that is either non-negative or `NaN` when unavailable; -- primal objective and primal solution for cases expected to have solution - values; -- dual, dual-objective, and reduced-cost availability and values for LP/QP - solutions; -- LP-stat availability, residuals, gap, iteration count, and solved-by method; -- MIP-stat availability, MIP gap, solution bound, presolve time that is either - non-negative or `NaN` when unavailable, violation fields, node count, and - simplex-iteration count. - -The infeasible case only compares status and availability-style behavior, not -solution vectors. - -| Dynamic test | What it verifies | -| --- | --- | -| `lp_min_ge_unique_solution` | Compares a small continuous minimization LP with one greater-than-or-equal constraint, bounded variables, and a nonzero objective offset. | -| `lp_max_le_unique_solution` | Compares a continuous maximization LP with three less-than-or-equal constraints. This exercises maximize sense handling and a denser multi-row CSR matrix. | -| `lp_equal_with_offset` | Compares a continuous LP with an equality constraint and a nonzero objective offset. This checks equality row type handling and objective-offset parity. | -| `lp_ranged_bounds` | Compares a continuous LP created through the ranged-constraint API using explicit constraint lower and upper bounds instead of row sense plus RHS. | -| `lp_mixed_bounds_negative_coefficients` | Compares an LP with negative variable lower bounds, negative objective coefficients, equality constraints, and a nonzero negative objective offset. | -| `lp_max_ranged_bounds` | Compares a maximization LP built with ranged constraints to cover maximize sense and ranged-bound handling together. | -| `milp_integer_unique_solution` | Compares a small integer minimization model. This checks integer variable type propagation, MIP solve behavior, and MIP-specific stat availability. | -| `milp_mixed_integer_continuous_max` | Compares a maximization MILP with one integer and one continuous variable, exercising mixed variable types and fractional continuous values in a MIP solution. | -| `qp_diagonal_objective` | Compares a convex QP with a diagonal quadratic objective matrix, one quadratic constraint, linear objective terms, named variables/rows, objective scaling, ranged constraints, and bounded continuous variables. | -| `lp_infeasible_status` | Compares a contradictory one-variable LP with lower and upper row requirements that cannot both hold. This verifies Java and Python agree on infeasible termination behavior. | - -## Python oracle helper - -`src/test/resources/python_binding_parity.py` is not a standalone JUnit test, but -it is part of the parity suite. - -It supports two modes: - -- `--probe`: imports Python cuOpt and emits `CUOPT_COMPARE probe=ok`; the Java - tests use this to skip cleanly if Python cuOpt is unavailable. -- `case_file`: reads a JSON model spec, builds the matching Python cuOpt - `DataModel`, solves it, and emits model/solution fields for Java assertions. - -You can run the probe by hand: +`scripts/test.sh` configures `LD_LIBRARY_PATH` for the selected cuOpt and CUDA +runtime libraries. -```bash -/home/cbrissette/cuopt/.cuopt_env/bin/python \ - /home/cbrissette/cuopt/java/cuopt/src/test/resources/python_binding_parity.py --probe -``` +## Coverage -## Pass, fail, and skip behavior +`ProblemModelingTest` exercises generated enum constants, legacy problem +category mapping, expression construction, CSR generation, duplicate-term +merging, problem updates, relaxation, and quadratic inspection without loading +the native library. -The expected successful Maven result is `BUILD SUCCESS`. +`NativeIntegrationTest` covers settings, setting-file round trips, mutable +data-model fields, LP/MILP/QP solves, solution statistics, native lifecycle, +error propagation, and MPS read/write paths. -Some tests intentionally skip instead of fail when prerequisites are missing: +`DataModelIntegrationTest` constructs ten LP, MILP, and QP cases entirely in +Java. Each dynamic test verifies that problem data round-trips through JNI. The +LP/MILP cases also check solve status, variable bounds, integrality, constraint +feasibility, objective values, and type-specific solution behavior. The QP +case verifies quadratic-objective and quadratic-constraint marshalling; QP +solve callability is covered by `NativeIntegrationTest`. The cases cover +minimization and maximization, equality and ranged constraints, mixed bounds, +mixed integer/continuous variables, metadata, and infeasibility. -- native tests skip when `cuopt.native.dir` is unset or `libcuopt_jni` is not - present; -- GPU solve tests skip when `nvidia-smi` cannot see a CUDA driver; -- Python parity tests skip when Python cuOpt cannot be imported. +## Prerequisite behavior -If a test fails or the forked JVM crashes, inspect: +- Pure modeling tests run without JNI or a GPU. +- Native tests skip when `cuopt.native.dir` is unset or `libcuopt_jni` is not + present. +- Solve tests skip when a CUDA driver is unavailable. -```text -/home/cbrissette/cuopt/java/cuopt/target/surefire-reports -``` +The expected successful Maven result is `BUILD SUCCESS`. If a forked JVM +crashes, inspect `target/surefire-reports`. diff --git a/java/cuopt/pom.xml b/java/cuopt/pom.xml index 7393bc0bbe..6584f703c7 100644 --- a/java/cuopt/pom.xml +++ b/java/cuopt/pom.xml @@ -8,9 +8,10 @@ SPDX-License-Identifier: Apache-2.0 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - com.nvidia + com.nvidia.cuopt cuopt - 26.8.0-SNAPSHOT + + 26.08.00 cuOpt Java Bindings Java JNI bindings for cuOpt numerical optimization. @@ -31,6 +32,11 @@ SPDX-License-Identifier: Apache-2.0 + + org.apache.maven.plugins + maven-jar-plugin + 3.4.2 + org.apache.maven.plugins maven-compiler-plugin diff --git a/java/cuopt/scripts/generate_constants.sh b/java/cuopt/scripts/generate_constants.sh index 2245e26a62..faf5a2d1b9 100755 --- a/java/cuopt/scripts/generate_constants.sh +++ b/java/cuopt/scripts/generate_constants.sh @@ -6,13 +6,21 @@ set -euo pipefail HEADER=${1:?missing constants.h path} OUT_DIR=${2:?missing output directory} -PACKAGE_DIR="${OUT_DIR}/com/nvidia/cuopt/linearprogramming" +PACKAGE_DIR="${OUT_DIR}/com/nvidia/cuopt/mathematicalprogramming" OUT_FILE="${PACKAGE_DIR}/CuOptConstants.java" mkdir -p "${PACKAGE_DIR}" { - echo "package com.nvidia.cuopt.linearprogramming;" + echo "/*" + echo " * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved." + echo " * SPDX-License-Identifier: Apache-2.0" + echo " *" + echo " * AUTO-GENERATED FILE. DO NOT EDIT." + echo " * Generated from cpp/include/cuopt/linear_programming/constants.h." + echo " * Run 'mvn generate-sources' from java/cuopt to regenerate." + echo " */" + echo "package com.nvidia.cuopt.mathematicalprogramming;" echo echo "public final class CuOptConstants {" echo " private CuOptConstants() {}" @@ -25,7 +33,7 @@ mkdir -p "${PACKAGE_DIR}" if (value ~ /^[-]?[0-9]+$/) { printf(" public static final int %s = %s;%s", name, value, "\n") } else if (value ~ /^'\''.'\''$/) { - printf(" public static final byte %s = (byte) %s;%s", name, value, "\n") + printf(" public static final byte %s = %s;%s", name, value, "\n") } else if (value ~ /^".*"$/) { printf(" public static final String %s = %s;%s", name, value, "\n") } diff --git a/java/cuopt/scripts/test.sh b/java/cuopt/scripts/test.sh index a1c9f09dee..4300a29ad3 100644 --- a/java/cuopt/scripts/test.sh +++ b/java/cuopt/scripts/test.sh @@ -33,7 +33,6 @@ fi export LD_LIBRARY_PATH="${library_path}${existing_ld_library_path:+:${existing_ld_library_path}}" cd "${MODULE_DIR}" -mvn test \ +mvn verify \ -Dcuopt.native.dir="${NATIVE_BUILD_DIR}" \ - -Dcuopt.python="${CUOPT_PYTHON:-${CUOPT_PREFIX}/bin/python}" \ "$@" diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/BatchSolve.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/BatchSolve.java deleted file mode 100644 index 36dd6e0263..0000000000 --- a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/BatchSolve.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. - * SPDX-License-Identifier: Apache-2.0 - */ -package com.nvidia.cuopt.linearprogramming; - -import java.util.ArrayList; -import java.util.List; - -/** Compatibility entry point for Python's deprecated LP BatchSolve API. */ -public final class BatchSolve { - private BatchSolve() {} - - /** - * Solve each model and return the solutions plus aggregate elapsed time. - * - *

The Python API marks batch solving deprecated; Java deliberately uses sequential solves so - * callers can control their own concurrency without adding another native batch ABI. - */ - public static BatchSolveResult solve(List dataModels, SolverSettings settings) { - List solutions = new ArrayList<>(); - long start = System.nanoTime(); - try { - for (DataModel dataModel : dataModels) { - solutions.add(dataModel.solve(settings)); - } - return new BatchSolveResult(solutions, (System.nanoTime() - start) / 1.0e9); - } catch (RuntimeException e) { - solutions.forEach(Solution::close); - throw e; - } - } - - public static BatchSolveResult solve(List dataModels) { - try (SolverSettings settings = new SolverSettings()) { - BatchSolveResult result = solve(dataModels, settings); - // The result owns the solutions; only the temporary settings are closed here. - return result; - } - } -} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/BatchSolveResult.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/BatchSolveResult.java deleted file mode 100644 index 373086e4b9..0000000000 --- a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/BatchSolveResult.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. - * SPDX-License-Identifier: Apache-2.0 - */ -package com.nvidia.cuopt.linearprogramming; - -import java.util.List; - -/** Result of the Java compatibility implementation of Python BatchSolve. */ -public final class BatchSolveResult implements AutoCloseable { - private final List solutions; - private final double solveTime; - - BatchSolveResult(List solutions, double solveTime) { - this.solutions = List.copyOf(solutions); - this.solveTime = solveTime; - } - - public List getSolutions() { - return solutions; - } - - public double getSolveTime() { - return solveTime; - } - - @Override - public void close() { - solutions.forEach(Solution::close); - } -} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/PDLPSolverMode.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/PDLPSolverMode.java deleted file mode 100644 index c6ca69a024..0000000000 --- a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/PDLPSolverMode.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. - * SPDX-License-Identifier: Apache-2.0 - */ -package com.nvidia.cuopt.linearprogramming; - -public enum PDLPSolverMode { - STABLE1(0), - STABLE2(1), - METHODICAL1(2), - FAST1(3), - STABLE3(4); - - private final int nativeValue; - - PDLPSolverMode(int nativeValue) { - this.nativeValue = nativeValue; - } - - public int nativeValue() { - return nativeValue; - } -} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/PDLPWarmStartData.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/PDLPWarmStartData.java deleted file mode 100644 index fe6818650f..0000000000 --- a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/PDLPWarmStartData.java +++ /dev/null @@ -1,198 +0,0 @@ -/* - * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. - * SPDX-License-Identifier: Apache-2.0 - */ -package com.nvidia.cuopt.linearprogramming; - -import java.util.Arrays; - -public final class PDLPWarmStartData { - private final double[] currentPrimalSolution; - private final double[] currentDualSolution; - private final double[] initialPrimalAverage; - private final double[] initialDualAverage; - private final double[] currentAty; - private final double[] sumPrimalSolutions; - private final double[] sumDualSolutions; - private final double[] lastRestartDualityGapPrimalSolution; - private final double[] lastRestartDualityGapDualSolution; - private final double initialPrimalWeight; - private final double initialStepSize; - private final int totalPdlpIterations; - private final int totalPdhgIterations; - private final double lastCandidateKktScore; - private final double lastRestartKktScore; - private final double sumSolutionWeight; - private final int iterationsSinceLastRestart; - - public PDLPWarmStartData( - double[] currentPrimalSolution, - double[] currentDualSolution, - double[] initialPrimalAverage, - double[] initialDualAverage, - double[] currentAty, - double[] sumPrimalSolutions, - double[] sumDualSolutions, - double[] lastRestartDualityGapPrimalSolution, - double[] lastRestartDualityGapDualSolution, - double initialPrimalWeight, - double initialStepSize, - int totalPdlpIterations, - int totalPdhgIterations, - double lastCandidateKktScore, - double lastRestartKktScore, - double sumSolutionWeight, - int iterationsSinceLastRestart) { - this.currentPrimalSolution = copy(currentPrimalSolution); - this.currentDualSolution = copy(currentDualSolution); - this.initialPrimalAverage = copy(initialPrimalAverage); - this.initialDualAverage = copy(initialDualAverage); - this.currentAty = copy(currentAty); - this.sumPrimalSolutions = copy(sumPrimalSolutions); - this.sumDualSolutions = copy(sumDualSolutions); - this.lastRestartDualityGapPrimalSolution = copy(lastRestartDualityGapPrimalSolution); - this.lastRestartDualityGapDualSolution = copy(lastRestartDualityGapDualSolution); - this.initialPrimalWeight = initialPrimalWeight; - this.initialStepSize = initialStepSize; - this.totalPdlpIterations = totalPdlpIterations; - this.totalPdhgIterations = totalPdhgIterations; - this.lastCandidateKktScore = lastCandidateKktScore; - this.lastRestartKktScore = lastRestartKktScore; - this.sumSolutionWeight = sumSolutionWeight; - this.iterationsSinceLastRestart = iterationsSinceLastRestart; - } - - static PDLPWarmStartData fromSolution(long solutionHandle) { - return new PDLPWarmStartData( - NativeCuOpt.getPdlpWarmStartVector( - solutionHandle, NativeCuOpt.PDLP_WARM_START_CURRENT_PRIMAL_SOLUTION), - NativeCuOpt.getPdlpWarmStartVector( - solutionHandle, NativeCuOpt.PDLP_WARM_START_CURRENT_DUAL_SOLUTION), - NativeCuOpt.getPdlpWarmStartVector( - solutionHandle, NativeCuOpt.PDLP_WARM_START_INITIAL_PRIMAL_AVERAGE), - NativeCuOpt.getPdlpWarmStartVector( - solutionHandle, NativeCuOpt.PDLP_WARM_START_INITIAL_DUAL_AVERAGE), - NativeCuOpt.getPdlpWarmStartVector( - solutionHandle, NativeCuOpt.PDLP_WARM_START_CURRENT_ATY), - NativeCuOpt.getPdlpWarmStartVector( - solutionHandle, NativeCuOpt.PDLP_WARM_START_SUM_PRIMAL_SOLUTIONS), - NativeCuOpt.getPdlpWarmStartVector( - solutionHandle, NativeCuOpt.PDLP_WARM_START_SUM_DUAL_SOLUTIONS), - NativeCuOpt.getPdlpWarmStartVector( - solutionHandle, - NativeCuOpt.PDLP_WARM_START_LAST_RESTART_DUALITY_GAP_PRIMAL_SOLUTION), - NativeCuOpt.getPdlpWarmStartVector( - solutionHandle, - NativeCuOpt.PDLP_WARM_START_LAST_RESTART_DUALITY_GAP_DUAL_SOLUTION), - NativeCuOpt.getPdlpWarmStartScalar( - solutionHandle, NativeCuOpt.PDLP_WARM_START_INITIAL_PRIMAL_WEIGHT), - NativeCuOpt.getPdlpWarmStartScalar( - solutionHandle, NativeCuOpt.PDLP_WARM_START_INITIAL_STEP_SIZE), - NativeCuOpt.getPdlpWarmStartInteger( - solutionHandle, NativeCuOpt.PDLP_WARM_START_TOTAL_PDLP_ITERATIONS), - NativeCuOpt.getPdlpWarmStartInteger( - solutionHandle, NativeCuOpt.PDLP_WARM_START_TOTAL_PDHG_ITERATIONS), - NativeCuOpt.getPdlpWarmStartScalar( - solutionHandle, NativeCuOpt.PDLP_WARM_START_LAST_CANDIDATE_KKT_SCORE), - NativeCuOpt.getPdlpWarmStartScalar( - solutionHandle, NativeCuOpt.PDLP_WARM_START_LAST_RESTART_KKT_SCORE), - NativeCuOpt.getPdlpWarmStartScalar( - solutionHandle, NativeCuOpt.PDLP_WARM_START_SUM_SOLUTION_WEIGHT), - NativeCuOpt.getPdlpWarmStartInteger( - solutionHandle, NativeCuOpt.PDLP_WARM_START_ITERATIONS_SINCE_LAST_RESTART)); - } - - void applyTo(long settingsHandle) { - NativeCuOpt.setPdlpWarmStartData( - settingsHandle, - currentPrimalSolution, - currentDualSolution, - initialPrimalAverage, - initialDualAverage, - currentAty, - sumPrimalSolutions, - sumDualSolutions, - lastRestartDualityGapPrimalSolution, - lastRestartDualityGapDualSolution, - initialPrimalWeight, - initialStepSize, - totalPdlpIterations, - totalPdhgIterations, - lastCandidateKktScore, - lastRestartKktScore, - sumSolutionWeight, - iterationsSinceLastRestart); - } - - private static double[] copy(double[] values) { - return Arrays.copyOf(values, values.length); - } - - public double[] getCurrentPrimalSolution() { - return copy(currentPrimalSolution); - } - - public double[] getCurrentDualSolution() { - return copy(currentDualSolution); - } - - public double[] getInitialPrimalAverage() { - return copy(initialPrimalAverage); - } - - public double[] getInitialDualAverage() { - return copy(initialDualAverage); - } - - public double[] getCurrentAty() { - return copy(currentAty); - } - - public double[] getSumPrimalSolutions() { - return copy(sumPrimalSolutions); - } - - public double[] getSumDualSolutions() { - return copy(sumDualSolutions); - } - - public double[] getLastRestartDualityGapPrimalSolution() { - return copy(lastRestartDualityGapPrimalSolution); - } - - public double[] getLastRestartDualityGapDualSolution() { - return copy(lastRestartDualityGapDualSolution); - } - - public double getInitialPrimalWeight() { - return initialPrimalWeight; - } - - public double getInitialStepSize() { - return initialStepSize; - } - - public int getTotalPdlpIterations() { - return totalPdlpIterations; - } - - public int getTotalPdhgIterations() { - return totalPdhgIterations; - } - - public double getLastCandidateKktScore() { - return lastCandidateKktScore; - } - - public double getLastRestartKktScore() { - return lastRestartKktScore; - } - - public double getSumSolutionWeight() { - return sumSolutionWeight; - } - - public int getIterationsSinceLastRestart() { - return iterationsSinceLastRestart; - } -} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/SolverSettings.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/SolverSettings.java deleted file mode 100644 index 756b301179..0000000000 --- a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/SolverSettings.java +++ /dev/null @@ -1,223 +0,0 @@ -/* - * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. - * SPDX-License-Identifier: Apache-2.0 - */ -package com.nvidia.cuopt.linearprogramming; - -import java.lang.ref.Cleaner; -import java.util.Arrays; -import java.util.ArrayList; -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -public final class SolverSettings implements AutoCloseable { - private static final Cleaner CLEANER = Cleaner.create(); - private final NativeHandle nativeHandle; - private final Cleaner.Cleanable cleanable; - private PDLPWarmStartData pdlpWarmStartData; - private final List mipCallbacks = new ArrayList<>(); - - public SolverSettings() { - this.nativeHandle = new NativeHandle(NativeCuOpt.createSolverSettings()); - this.cleanable = CLEANER.register(this, nativeHandle); - } - - long handle() { - nativeHandle.requireOpen(); - return nativeHandle.handle; - } - - public static Set getSolverParameterNames() { - return new LinkedHashSet<>(Arrays.asList(NativeCuOpt.getSolverParameterNames())); - } - - public static String getSolverSetting(String name) { - try (SolverSettings settings = new SolverSettings()) { - return settings.getParameterAsString(name); - } - } - - public static Object getTypedSolverSetting(String name) { - return typedValue(getSolverSetting(name)); - } - - public static String getSolverSettingAsString(String name) { - try (SolverSettings settings = new SolverSettings()) { - return settings.getParameterAsString(name); - } - } - - public SolverSettings setParameter(String name, String value) { - NativeCuOpt.setParameter(handle(), name, value); - return this; - } - - public SolverSettings setParameter(String name, int value) { - NativeCuOpt.setIntegerParameter(handle(), name, value); - return this; - } - - public SolverSettings setParameter(String name, double value) { - NativeCuOpt.setFloatParameter(handle(), name, value); - return this; - } - - public SolverSettings setParameter(String name, boolean value) { - NativeCuOpt.setIntegerParameter(handle(), name, value ? 1 : 0); - return this; - } - - public String getParameter(String name) { - return getParameterAsString(name); - } - - public Object getTypedParameter(String name) { - return typedValue(getParameterAsString(name)); - } - - public String getParameterAsString(String name) { - return NativeCuOpt.getParameter(handle(), name); - } - - public SolverSettings setMethod(SolverMethod method) { - return setParameter(CuOptConstants.CUOPT_METHOD, method.nativeValue()); - } - - public SolverSettings setPdlpSolverMode(PDLPSolverMode mode) { - return setParameter(CuOptConstants.CUOPT_PDLP_SOLVER_MODE, mode.nativeValue()); - } - - public SolverSettings setOptimalityTolerance(double tolerance) { - for (String parameter : getSolverParameterNames()) { - if (parameter.endsWith("tolerance") - && !parameter.startsWith("mip") - && !parameter.contains("infeasible")) { - setParameter(parameter, tolerance); - } - } - return this; - } - - public SolverSettings setInitialPrimalSolution(double[] values) { - NativeCuOpt.setInitialPrimalSolution(handle(), Arrays.copyOf(values, values.length)); - return this; - } - - public SolverSettings setInitialDualSolution(double[] values) { - NativeCuOpt.setInitialDualSolution(handle(), Arrays.copyOf(values, values.length)); - return this; - } - - public SolverSettings addMipStart(double[] values) { - NativeCuOpt.addMipStart(handle(), Arrays.copyOf(values, values.length)); - return this; - } - - public SolverSettings setPdlpWarmStartData(PDLPWarmStartData warmStartData) { - if (warmStartData == null) { - throw new IllegalArgumentException("warmStartData must not be null"); - } - warmStartData.applyTo(handle()); - this.pdlpWarmStartData = warmStartData; - return this; - } - - public SolverSettings setMipCallback( - MipSolutionCallback callback, Object userData, int numVariables) { - NativeCuOpt.registerMipGetSolutionCallback(handle(), callback, userData, numVariables); - mipCallbacks.add(callback); - return this; - } - - public SolverSettings setMipCallback( - MipSetSolutionCallback callback, Object userData, int numVariables) { - NativeCuOpt.registerMipSetSolutionCallback(handle(), callback, userData, numVariables); - mipCallbacks.add(callback); - return this; - } - - public List getMipCallbacks() { - return Collections.unmodifiableList(mipCallbacks); - } - - public PDLPWarmStartData getPdlpWarmStartData() { - return pdlpWarmStartData; - } - - public boolean dumpParametersToFile(String path, boolean hyperparametersOnly) { - return NativeCuOpt.dumpParametersToFile(handle(), path, hyperparametersOnly); - } - - public boolean dumpParametersToFile(String path) { - return dumpParametersToFile(path, true); - } - - public SolverSettings loadParametersFromFile(String path) { - NativeCuOpt.loadParametersFromFile(handle(), path); - return this; - } - - public Map toDict() { - Map result = new LinkedHashMap<>(); - Map tolerances = new LinkedHashMap<>(); - for (String parameter : getSolverParameterNames()) { - Object value = getTypedParameter(parameter); - if (parameter.endsWith("tolerance")) { - tolerances.put(parameter, value); - } else { - result.put(parameter, value instanceof Double && ((Double) value).isInfinite() ? null : value); - } - } - result.put("tolerances", tolerances); - return Collections.unmodifiableMap(result); - } - - private static Object typedValue(String value) { - if ("true".equalsIgnoreCase(value)) { - return true; - } - if ("false".equalsIgnoreCase(value)) { - return false; - } - try { - return Integer.valueOf(value); - } catch (NumberFormatException ignored) { - try { - return Double.valueOf(value); - } catch (NumberFormatException ignoredAgain) { - return value; - } - } - } - - @Override - public void close() { - cleanable.clean(); - } - - private static final class NativeHandle implements Runnable { - private long handle; - - NativeHandle(long handle) { - this.handle = handle; - } - - void requireOpen() { - if (handle == 0) { - throw new IllegalStateException("SolverSettings is closed"); - } - } - - @Override - public void run() { - if (handle != 0) { - NativeCuOpt.destroySolverSettings(handle); - handle = 0; - } - } - } -} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/TerminationStatus.java b/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/TerminationStatus.java deleted file mode 100644 index eaa7cc3140..0000000000 --- a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/TerminationStatus.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. - * SPDX-License-Identifier: Apache-2.0 - */ -package com.nvidia.cuopt.linearprogramming; - -public enum TerminationStatus { - NO_TERMINATION(0), - OPTIMAL(1), - INFEASIBLE(2), - UNBOUNDED(3), - ITERATION_LIMIT(4), - TIME_LIMIT(5), - NUMERICAL_ERROR(6), - PRIMAL_FEASIBLE(7), - FEASIBLE_FOUND(8), - CONCURRENT_LIMIT(9), - WORK_LIMIT(10), - UNBOUNDED_OR_INFEASIBLE(11), - UNKNOWN(Integer.MIN_VALUE); - - private final int nativeValue; - - TerminationStatus(int nativeValue) { - this.nativeValue = nativeValue; - } - - public int nativeValue() { - return nativeValue; - } - - static TerminationStatus fromNative(int value) { - for (TerminationStatus status : values()) { - if (status.nativeValue == value) { - return status; - } - } - return UNKNOWN; - } -} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/CsrMatrix.java b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/CSRMatrix.java similarity index 81% rename from java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/CsrMatrix.java rename to java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/CSRMatrix.java index 74598971fd..055ec20e0e 100644 --- a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/CsrMatrix.java +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/CSRMatrix.java @@ -2,16 +2,17 @@ * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ -package com.nvidia.cuopt.linearprogramming; +package com.nvidia.cuopt.mathematicalprogramming; import java.util.Arrays; -public final class CsrMatrix { +public final class CSRMatrix { private final int[] rowOffsets; private final int[] columnIndices; private final double[] values; - public CsrMatrix(int[] rowOffsets, int[] columnIndices, double[] values) { + /** Construct a CSR matrix using the cuOpt values, indices, offsets argument order. */ + public CSRMatrix(double[] values, int[] columnIndices, int[] rowOffsets) { this.rowOffsets = Arrays.copyOf(rowOffsets, rowOffsets.length); this.columnIndices = Arrays.copyOf(columnIndices, columnIndices.length); this.values = Arrays.copyOf(values, values.length); diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Constraint.java b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/Constraint.java similarity index 98% rename from java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Constraint.java rename to java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/Constraint.java index d60dba2294..b6f7ef0b27 100644 --- a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Constraint.java +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/Constraint.java @@ -2,7 +2,7 @@ * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ -package com.nvidia.cuopt.linearprogramming; +package com.nvidia.cuopt.mathematicalprogramming; import java.util.Map; diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/ConstraintSense.java b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/ConstraintSense.java similarity index 92% rename from java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/ConstraintSense.java rename to java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/ConstraintSense.java index 07c644cfb4..7c585b10c6 100644 --- a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/ConstraintSense.java +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/ConstraintSense.java @@ -2,7 +2,7 @@ * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ -package com.nvidia.cuopt.linearprogramming; +package com.nvidia.cuopt.mathematicalprogramming; public enum ConstraintSense { LE((byte) 'L'), diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/CuOptException.java b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/CuOptException.java similarity index 89% rename from java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/CuOptException.java rename to java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/CuOptException.java index 504ffaa284..b0c1137580 100644 --- a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/CuOptException.java +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/CuOptException.java @@ -2,7 +2,7 @@ * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ -package com.nvidia.cuopt.linearprogramming; +package com.nvidia.cuopt.mathematicalprogramming; public class CuOptException extends RuntimeException { private final int statusCode; diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/DataModel.java b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/DataModel.java similarity index 94% rename from java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/DataModel.java rename to java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/DataModel.java index 478444e5b8..3c31813445 100644 --- a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/DataModel.java +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/DataModel.java @@ -2,7 +2,7 @@ * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ -package com.nvidia.cuopt.linearprogramming; +package com.nvidia.cuopt.mathematicalprogramming; import java.lang.ref.Cleaner; import java.util.ArrayList; @@ -11,6 +11,12 @@ import java.util.List; import java.util.Map; +/** + * Low-level native problem representation. + * + * @deprecated Use {@link Problem}; this compatibility API is planned for removal. + */ +@Deprecated(since = "26.08") public final class DataModel implements AutoCloseable { private static final Cleaner CLEANER = Cleaner.create(); private final NativeHandle nativeHandle; @@ -42,7 +48,7 @@ public static DataModel createProblem( ObjectiveSense objectiveSense, double objectiveOffset, double[] objectiveCoefficients, - CsrMatrix constraintMatrix, + CSRMatrix constraintMatrix, byte[] constraintSense, double[] rhs, double[] variableLowerBounds, @@ -72,7 +78,7 @@ public static DataModel createRangedProblem( ObjectiveSense objectiveSense, double objectiveOffset, double[] objectiveCoefficients, - CsrMatrix constraintMatrix, + CSRMatrix constraintMatrix, double[] constraintLowerBounds, double[] constraintUpperBounds, double[] variableLowerBounds, @@ -100,17 +106,17 @@ public static DataModel read(String path) { return new DataModel(NativeCuOpt.readProblem(path)); } - public static DataModel read(String path, boolean fixedMpsFormat) { - return new DataModel(NativeCuOpt.readProblemWithFormat(path, fixedMpsFormat)); + public static DataModel read(String path, boolean fixedMPSFormat) { + return new DataModel(NativeCuOpt.readProblemWithFormat(path, fixedMPSFormat)); } /** Parse an MPS/QPS file directly, optionally using fixed-format parsing. */ - public static DataModel parseMps(String path) { - return parseMps(path, false); + public static DataModel parseMPS(String path) { + return parseMPS(path, false); } - public static DataModel parseMps(String path, boolean fixedMpsFormat) { - return new DataModel(NativeCuOpt.parseMpsProblem(path, fixedMpsFormat)); + public static DataModel parseMPS(String path, boolean fixedMPSFormat) { + return new DataModel(NativeCuOpt.parseMPSProblem(path, fixedMPSFormat)); } long handle() { @@ -153,9 +159,9 @@ public double[] getObjectiveCoefficients() { return NativeCuOpt.getObjectiveCoefficients(handle()); } - public CsrMatrix getConstraintMatrix() { + public CSRMatrix getConstraintMatrix() { Object[] matrix = NativeCuOpt.getConstraintMatrix(handle()); - return new CsrMatrix((int[]) matrix[0], (int[]) matrix[1], (double[]) matrix[2]); + return new CSRMatrix((double[]) matrix[2], (int[]) matrix[1], (int[]) matrix[0]); } public double[] getConstraintMatrixValues() { @@ -178,12 +184,12 @@ public byte[] getRowTypes() { return getConstraintSense(); } - public double[] getConstraintRhs() { - return NativeCuOpt.getConstraintRhs(handle()); + public double[] getConstraintRHS() { + return NativeCuOpt.getConstraintRHS(handle()); } public double[] getConstraintBounds() { - return getConstraintRhs(); + return getConstraintRHS(); } public double[] getConstraintLowerBounds() { @@ -206,8 +212,8 @@ public byte[] getVariableTypes() { return NativeCuOpt.getVariableTypes(handle()); } - public boolean isMip() { - return NativeCuOpt.isMip(handle()); + public boolean isMIP() { + return NativeCuOpt.isMIP(handle()); } public ProblemCategory getProblemCategory() { @@ -219,7 +225,7 @@ public DataModel setMaximize(boolean maximize) { return this; } - public DataModel setCsrConstraintMatrix(double[] values, int[] indices, int[] offsets) { + public DataModel setCSRConstraintMatrix(double[] values, int[] indices, int[] offsets) { NativeCuOpt.setConstraintMatrix(handle(), copy(values), copy(indices), copy(offsets)); return this; } @@ -360,20 +366,20 @@ public String getProblemName() { return NativeCuOpt.getProblemName(handle()); } - public byte[] getAsciiRowTypes() { + public byte[] getASCIIRowTypes() { return getConstraintSense(); } /** Return a Java map with the same logical fields as Python's parser.toDict. */ public Map toDict() { - CsrMatrix matrix = getConstraintMatrix(); + CSRMatrix matrix = getConstraintMatrix(); Map csr = new LinkedHashMap<>(); csr.put("offsets", matrix.getRowOffsets()); csr.put("indices", matrix.getColumnIndices()); csr.put("values", matrix.getValues()); Map bounds = new LinkedHashMap<>(); - bounds.put("bounds", getConstraintRhs()); + bounds.put("bounds", getConstraintRHS()); bounds.put("upper_bounds", getConstraintUpperBounds()); bounds.put("lower_bounds", getConstraintLowerBounds()); bounds.put("types", getConstraintSense()); diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/LPStats.java b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/LPStats.java similarity index 94% rename from java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/LPStats.java rename to java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/LPStats.java index 6d4e7e1c11..18090a646e 100644 --- a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/LPStats.java +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/LPStats.java @@ -2,7 +2,7 @@ * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ -package com.nvidia.cuopt.linearprogramming; +package com.nvidia.cuopt.mathematicalprogramming; public final class LPStats { private final double primalResidual; diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/LinearExpression.java b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/LinearExpression.java similarity index 94% rename from java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/LinearExpression.java rename to java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/LinearExpression.java index 641eb47ac4..efe58c408e 100644 --- a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/LinearExpression.java +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/LinearExpression.java @@ -2,7 +2,7 @@ * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ -package com.nvidia.cuopt.linearprogramming; +package com.nvidia.cuopt.mathematicalprogramming; import java.util.ArrayList; import java.util.Collections; @@ -10,7 +10,7 @@ import java.util.List; import java.util.Map; -public final class LinearExpression { +public final class LinearExpression implements ObjectiveExpression { private final LinkedHashMap terms; private final double constant; @@ -169,10 +169,22 @@ public double getCoefficient(Variable variable) { return terms.getOrDefault(variable, 0.0); } + @Override public double getConstant() { return constant; } + @Override + public LinearExpression getLinearExpression() { + return this; + } + + @Override + public boolean isQuadratic() { + return false; + } + + @Override public double getValue() { double value = constant; for (Map.Entry entry : terms.entrySet()) { diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/MIPCallback.java b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/MIPCallback.java new file mode 100644 index 0000000000..6155f6aeaa --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/MIPCallback.java @@ -0,0 +1,8 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.mathematicalprogramming; + +/** Marker interface for callbacks registered with MIP solver settings. */ +public interface MIPCallback {} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MipCallbackSolution.java b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/MIPCallbackSolution.java similarity index 76% rename from java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MipCallbackSolution.java rename to java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/MIPCallbackSolution.java index 58258c4b1b..258e02053a 100644 --- a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MipCallbackSolution.java +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/MIPCallbackSolution.java @@ -2,15 +2,15 @@ * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ -package com.nvidia.cuopt.linearprogramming; +package com.nvidia.cuopt.mathematicalprogramming; import java.util.Arrays; -public final class MipCallbackSolution { +public final class MIPCallbackSolution { final double[] solution; final double objectiveValue; - public MipCallbackSolution(double[] solution, double objectiveValue) { + public MIPCallbackSolution(double[] solution, double objectiveValue) { this.solution = Arrays.copyOf(solution, solution.length); this.objectiveValue = objectiveValue; } diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MipSetSolutionCallback.java b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/MIPSetSolutionCallback.java similarity index 50% rename from java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MipSetSolutionCallback.java rename to java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/MIPSetSolutionCallback.java index c55d477e44..2e2a010d2b 100644 --- a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MipSetSolutionCallback.java +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/MIPSetSolutionCallback.java @@ -2,9 +2,9 @@ * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ -package com.nvidia.cuopt.linearprogramming; +package com.nvidia.cuopt.mathematicalprogramming; @FunctionalInterface -public interface MipSetSolutionCallback { - MipCallbackSolution getSolution(double solutionBound, Object userData); +public interface MIPSetSolutionCallback extends MIPCallback { + MIPCallbackSolution getSolution(double solutionBound, Object userData); } diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MipSolutionCallback.java b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/MIPSolutionCallback.java similarity index 71% rename from java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MipSolutionCallback.java rename to java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/MIPSolutionCallback.java index 1b5a5b0adc..859d745887 100644 --- a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MipSolutionCallback.java +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/MIPSolutionCallback.java @@ -2,9 +2,9 @@ * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ -package com.nvidia.cuopt.linearprogramming; +package com.nvidia.cuopt.mathematicalprogramming; @FunctionalInterface -public interface MipSolutionCallback { +public interface MIPSolutionCallback extends MIPCallback { void onSolution(double[] solution, double objectiveValue, double solutionBound, Object userData); } diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MIPStats.java b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/MIPStats.java similarity index 95% rename from java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MIPStats.java rename to java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/MIPStats.java index 75081aeeaf..49c4d4d660 100644 --- a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MIPStats.java +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/MIPStats.java @@ -2,7 +2,7 @@ * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ -package com.nvidia.cuopt.linearprogramming; +package com.nvidia.cuopt.mathematicalprogramming; public final class MIPStats { private final double presolveTime; diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/NativeCuOpt.java b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/NativeCuOpt.java similarity index 62% rename from java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/NativeCuOpt.java rename to java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/NativeCuOpt.java index 36df31ca68..42ffef1033 100644 --- a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/NativeCuOpt.java +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/NativeCuOpt.java @@ -2,29 +2,11 @@ * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ -package com.nvidia.cuopt.linearprogramming; +package com.nvidia.cuopt.mathematicalprogramming; import java.nio.file.Path; final class NativeCuOpt { - static final int PDLP_WARM_START_CURRENT_PRIMAL_SOLUTION = 0; - static final int PDLP_WARM_START_CURRENT_DUAL_SOLUTION = 1; - static final int PDLP_WARM_START_INITIAL_PRIMAL_AVERAGE = 2; - static final int PDLP_WARM_START_INITIAL_DUAL_AVERAGE = 3; - static final int PDLP_WARM_START_CURRENT_ATY = 4; - static final int PDLP_WARM_START_SUM_PRIMAL_SOLUTIONS = 5; - static final int PDLP_WARM_START_SUM_DUAL_SOLUTIONS = 6; - static final int PDLP_WARM_START_LAST_RESTART_DUALITY_GAP_PRIMAL_SOLUTION = 7; - static final int PDLP_WARM_START_LAST_RESTART_DUALITY_GAP_DUAL_SOLUTION = 8; - static final int PDLP_WARM_START_INITIAL_PRIMAL_WEIGHT = 9; - static final int PDLP_WARM_START_INITIAL_STEP_SIZE = 10; - static final int PDLP_WARM_START_TOTAL_PDLP_ITERATIONS = 11; - static final int PDLP_WARM_START_TOTAL_PDHG_ITERATIONS = 12; - static final int PDLP_WARM_START_LAST_CANDIDATE_KKT_SCORE = 13; - static final int PDLP_WARM_START_LAST_RESTART_KKT_SCORE = 14; - static final int PDLP_WARM_START_SUM_SOLUTION_WEIGHT = 15; - static final int PDLP_WARM_START_ITERATIONS_SINCE_LAST_RESTART = 16; - static { String nativeDir = System.getProperty("cuopt.native.dir"); if (nativeDir == null || nativeDir.isBlank()) { @@ -37,46 +19,24 @@ final class NativeCuOpt { private NativeCuOpt() {} static native int getFloatSize(); - static native String[] getSolverParameterNames(); + static native String[] getSolverSettingNames(); static native long createEmptyProblem(); - static native long parseMpsProblem(String path, boolean fixedMpsFormat); - static native long readProblemWithFormat(String path, boolean fixedMpsFormat); + static native long parseMPSProblem(String path, boolean fixedMPSFormat); + static native long readProblemWithFormat(String path, boolean fixedMPSFormat); static native long createSolverSettings(); static native void destroySolverSettings(long handle); - static native void setParameter(long handle, String name, String value); - static native void setIntegerParameter(long handle, String name, int value); - static native void setFloatParameter(long handle, String name, double value); - static native String getParameter(long handle, String name); - static native void loadParametersFromFile(long handle, String path); - static native boolean dumpParametersToFile(long handle, String path, boolean hyperparametersOnly); - static native void setInitialPrimalSolution(long handle, double[] values); - static native void setInitialDualSolution(long handle, double[] values); - static native void addMipStart(long handle, double[] values); - static native void registerMipGetSolutionCallback( - long handle, MipSolutionCallback callback, Object userData, int numVariables); - static native void registerMipSetSolutionCallback( - long handle, MipSetSolutionCallback callback, Object userData, int numVariables); - static native void setPdlpWarmStartData( - long handle, - double[] currentPrimalSolution, - double[] currentDualSolution, - double[] initialPrimalAverage, - double[] initialDualAverage, - double[] currentAty, - double[] sumPrimalSolutions, - double[] sumDualSolutions, - double[] lastRestartDualityGapPrimalSolution, - double[] lastRestartDualityGapDualSolution, - double initialPrimalWeight, - double initialStepSize, - int totalPdlpIterations, - int totalPdhgIterations, - double lastCandidateKktScore, - double lastRestartKktScore, - double sumSolutionWeight, - int iterationsSinceLastRestart); - + static native void setSetting(long handle, String name, String value); + static native void setIntegerSetting(long handle, String name, int value); + static native void setFloatSetting(long handle, String name, double value); + static native String getSetting(long handle, String name); + static native void loadSettingsFromFile(long handle, String path); + static native boolean dumpSettingsToFile(long handle, String path, boolean hyperparametersOnly); + static native void addMIPStart(long handle, double[] values); + static native void registerMIPGetSolutionCallback( + long handle, MIPSolutionCallback callback, Object userData, int numVariables); + static native void registerMIPSetSolutionCallback( + long handle, MIPSetSolutionCallback callback, Object userData, int numVariables); static native long createProblem( int numConstraints, int numVariables, @@ -129,7 +89,7 @@ static native void addQuadraticConstraint( static native double[] getObjectiveCoefficients(long handle); static native Object[] getConstraintMatrix(long handle); static native byte[] getConstraintSense(long handle); - static native double[] getConstraintRhs(long handle); + static native double[] getConstraintRHS(long handle); static native double[] getConstraintLowerBounds(long handle); static native double[] getConstraintUpperBounds(long handle); static native double[] getVariableLowerBounds(long handle); @@ -165,11 +125,11 @@ static native void addQuadraticConstraint( static native int getProblemCategory(long handle); static native Object[] getQuadraticConstraints(long handle); static native void clearQuadraticConstraints(long handle); - static native boolean isMip(long handle); + static native boolean isMIP(long handle); static native long solve(long problemHandle, long settingsHandle); static native void destroySolution(long handle); - static native boolean solutionIsMip(long handle); + static native boolean solutionIsMIP(long handle); static native int getTerminationStatus(long handle); static native int getErrorStatus(long handle); static native String getErrorString(long handle); @@ -180,12 +140,8 @@ static native void addQuadraticConstraint( static native double getObjectiveValue(long handle); static native double getDualObjectiveValue(long handle); static native double getSolveTime(long handle); - static native double getMipGap(long handle); + static native double getMIPGap(long handle); static native double getSolutionBound(long handle); - static native double[] getLpStats(long handle); - static native double[] getMipStats(long handle); - static native boolean hasPdlpWarmStartData(long handle); - static native double[] getPdlpWarmStartVector(long handle, int fieldId); - static native double getPdlpWarmStartScalar(long handle, int fieldId); - static native int getPdlpWarmStartInteger(long handle, int fieldId); + static native double[] getLPStats(long handle); + static native double[] getMIPStats(long handle); } diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/ObjectiveExpression.java b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/ObjectiveExpression.java new file mode 100644 index 0000000000..95caba170b --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/ObjectiveExpression.java @@ -0,0 +1,17 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.mathematicalprogramming; + +/** Common API for linear and quadratic objective expressions. */ +public interface ObjectiveExpression { + /** Return the linear portion of this expression. */ + LinearExpression getLinearExpression(); + + double getConstant(); + + double getValue(); + + boolean isQuadratic(); +} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/ObjectiveSense.java b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/ObjectiveSense.java similarity index 88% rename from java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/ObjectiveSense.java rename to java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/ObjectiveSense.java index b28d9eeb72..b4161426f3 100644 --- a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/ObjectiveSense.java +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/ObjectiveSense.java @@ -2,7 +2,7 @@ * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ -package com.nvidia.cuopt.linearprogramming; +package com.nvidia.cuopt.mathematicalprogramming; public enum ObjectiveSense { MAXIMIZE(-1), diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/PDLPSolverMode.java b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/PDLPSolverMode.java new file mode 100644 index 0000000000..e0bf9a771e --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/PDLPSolverMode.java @@ -0,0 +1,24 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.mathematicalprogramming; + +/** PDLP solver modes backed by constants generated from the C++ public header. */ +public enum PDLPSolverMode { + STABLE1(CuOptConstants.CUOPT_PDLP_SOLVER_MODE_STABLE1), + STABLE2(CuOptConstants.CUOPT_PDLP_SOLVER_MODE_STABLE2), + METHODICAL1(CuOptConstants.CUOPT_PDLP_SOLVER_MODE_METHODICAL1), + FAST1(CuOptConstants.CUOPT_PDLP_SOLVER_MODE_FAST1), + STABLE3(CuOptConstants.CUOPT_PDLP_SOLVER_MODE_STABLE3); + + private final int nativeValue; + + PDLPSolverMode(int nativeValue) { + this.nativeValue = nativeValue; + } + + public int nativeValue() { + return nativeValue; + } +} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Problem.java b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/Problem.java similarity index 94% rename from java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Problem.java rename to java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/Problem.java index 3ab7799ed9..77ba3feae2 100644 --- a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Problem.java +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/Problem.java @@ -2,7 +2,7 @@ * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ -package com.nvidia.cuopt.linearprogramming; +package com.nvidia.cuopt.mathematicalprogramming; import java.util.ArrayList; import java.util.Arrays; @@ -23,7 +23,6 @@ public final class Problem implements AutoCloseable { private TerminationStatus status = TerminationStatus.NO_TERMINATION; private double objectiveValue = Double.NaN; private double solveTime = Double.NaN; - private PDLPWarmStartData warmStartData; public Problem() { this(""); @@ -139,7 +138,7 @@ public int getNumConstraints() { return constraints.size(); } - public boolean isMip() { + public boolean isMIP() { return variables.stream().anyMatch(v -> v.getVariableType() != VariableType.CONTINUOUS); } @@ -159,10 +158,16 @@ public double getSolveTime() { return solveTime; } - public CsrMatrix getCSR() { + public CSRMatrix getCSR() { return buildLinearConstraintMatrix().matrix; } + /** + * Materialize this problem as the deprecated low-level data representation. + * + * @deprecated Use {@link Problem} directly. + */ + @Deprecated(since = "26.08") public DataModel toDataModel() { MatrixBuild matrixBuild = buildLinearConstraintMatrix(); double[] objectiveCoefficients = objectiveCoefficients(); @@ -217,7 +222,7 @@ public Solution solve() { public Solution solve(SolverSettings settings) { SolverSettings actualSettings = settings == null ? new SolverSettings() : settings; boolean closeSettings = settings == null; - addMipStarts(actualSettings); + addMIPStarts(actualSettings); try (DataModel dataModel = toDataModel()) { Solution solution = dataModel.solve(actualSettings); populateSolution(solution); @@ -239,8 +244,8 @@ public static Problem read(String path) { return read(path, false); } - public static Problem read(String path, boolean fixedMpsFormat) { - try (DataModel dataModel = DataModel.read(path, fixedMpsFormat)) { + public static Problem read(String path, boolean fixedMPSFormat) { + try (DataModel dataModel = DataModel.read(path, fixedMPSFormat)) { return fromDataModel(dataModel); } } @@ -261,12 +266,12 @@ private static Problem fromDataModel(DataModel dataModel) { variableNames.length > i && !variableNames[i].isEmpty() ? variableNames[i] : "x" + i); } - CsrMatrix matrix = dataModel.getConstraintMatrix(); + CSRMatrix matrix = dataModel.getConstraintMatrix(); int[] rowOffsets = matrix.getRowOffsets(); int[] columnIndices = matrix.getColumnIndices(); double[] values = matrix.getValues(); byte[] senses = dataModel.getConstraintSense(); - double[] rhs = dataModel.getConstraintRhs(); + double[] rhs = dataModel.getConstraintRHS(); double[] constraintLowerBounds = dataModel.getConstraintLowerBounds(); double[] constraintUpperBounds = dataModel.getConstraintUpperBounds(); String[] rowNames = dataModel.getRowNames(); @@ -361,8 +366,8 @@ public static Problem readMPS(String path) { return readMPS(path, false); } - public static Problem readMPS(String path, boolean fixedMpsFormat) { - try (DataModel dataModel = DataModel.parseMps(path, fixedMpsFormat)) { + public static Problem readMPS(String path, boolean fixedMPSFormat) { + try (DataModel dataModel = DataModel.parseMPS(path, fixedMPSFormat)) { return fromDataModel(dataModel); } } @@ -383,7 +388,6 @@ public void resetSolvedValues() { status = TerminationStatus.NO_TERMINATION; objectiveValue = Double.NaN; solveTime = Double.NaN; - warmStartData = null; } public void updateConstraint(Constraint constraint, Map coefficients, Double rhs) { @@ -463,7 +467,7 @@ public void updateObjective(Map coefficients, Double constant, resetSolvedValues(); } - public Object getObjective() { + public ObjectiveExpression getObjective() { return quadraticObjective == null ? linearObjective : quadraticObjective; } @@ -489,7 +493,7 @@ public List getQuadraticConstraints() { return List.copyOf(result); } - public CsrMatrix getQCSR() { + public CSRMatrix getQCSR() { if (quadraticObjective == null) { return null; } @@ -519,11 +523,7 @@ public CsrMatrix getQCSR() { coefficients[position++] = entry.getValue(); } } - return new CsrMatrix(offsets, columns, coefficients); - } - - public CsrMatrix getQcsr() { - return getQCSR(); + return new CSRMatrix(coefficients, columns, offsets); } public List getIncumbentValues(double[] solution, List requestedVariables) { @@ -538,18 +538,6 @@ public List get_incumbent_values(double[] solution, List reque return getIncumbentValues(solution, requestedVariables); } - public PDLPWarmStartData getWarmstartData() { - return warmStartData; - } - - public PDLPWarmStartData getPdlpWarmStartData() { - return getWarmstartData(); - } - - public PDLPWarmStartData get_pdlp_warm_start_data() { - return getWarmstartData(); - } - public Problem relax() { Map mapping = new LinkedHashMap<>(); Problem relaxed = new Problem(name); @@ -614,7 +602,7 @@ private void populateSolution(Solution solution) { for (int i = 0; i < variables.size(); i++) { variables.get(i).setValue(primal[i]); } - if (!solution.isMip()) { + if (!solution.isMIP()) { double[] reducedCosts = solution.getReducedCost(); for (int i = 0; i < variables.size(); i++) { variables.get(i).setReducedCost(reducedCosts[i]); @@ -633,22 +621,21 @@ private void populateSolution(Solution solution) { status = solution.getTerminationStatus(); objectiveValue = solution.getPrimalObjective(); solveTime = solution.getSolveTime(); - warmStartData = solution.isMip() ? null : solution.getPdlpWarmStartData(); solved = true; } - private void addMipStarts(SolverSettings settings) { - if (!isMip()) { + private void addMIPStarts(SolverSettings settings) { + if (!isMIP()) { return; } double[] starts = new double[variables.size()]; boolean any = false; for (Variable variable : variables) { - starts[variable.getIndex()] = variable.getMipStart(); - any |= !Double.isNaN(variable.getMipStart()); + starts[variable.getIndex()] = variable.getMIPStart(); + any |= !Double.isNaN(variable.getMIPStart()); } if (any) { - settings.addMipStart(starts); + settings.addMIPStart(starts); } } @@ -711,17 +698,17 @@ private MatrixBuild buildLinearConstraintMatrix() { } rowOffsets[linearConstraints.size()] = position; return new MatrixBuild( - new CsrMatrix(rowOffsets, columnIndices, values), linearConstraints, senses, rhs); + new CSRMatrix(values, columnIndices, rowOffsets), linearConstraints, senses, rhs); } private static final class MatrixBuild { - private final CsrMatrix matrix; + private final CSRMatrix matrix; private final List linearConstraints; private final byte[] constraintSense; private final double[] rhs; private MatrixBuild( - CsrMatrix matrix, List linearConstraints, byte[] constraintSense, double[] rhs) { + CSRMatrix matrix, List linearConstraints, byte[] constraintSense, double[] rhs) { this.matrix = matrix; this.linearConstraints = linearConstraints; this.constraintSense = Arrays.copyOf(constraintSense, constraintSense.length); diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/ProblemCategory.java b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/ProblemCategory.java similarity index 76% rename from java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/ProblemCategory.java rename to java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/ProblemCategory.java index c4fa971acd..945a91c1ec 100644 --- a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/ProblemCategory.java +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/ProblemCategory.java @@ -2,12 +2,14 @@ * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ -package com.nvidia.cuopt.linearprogramming; +package com.nvidia.cuopt.mathematicalprogramming; /** Problem categories returned by cuOpt solutions. */ public enum ProblemCategory { LP(0), MIP(1), + /** @deprecated Integer problems are categorized as {@link #MIP}. */ + @Deprecated(since = "26.08") IP(2); private final int nativeValue; @@ -21,6 +23,9 @@ public int nativeValue() { } static ProblemCategory fromNative(int value) { + if (value == IP.nativeValue) { + return MIP; + } for (ProblemCategory category : values()) { if (category.nativeValue == value) { return category; diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/QuadraticConstraint.java b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/QuadraticConstraint.java similarity index 97% rename from java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/QuadraticConstraint.java rename to java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/QuadraticConstraint.java index c9416da842..dffc0afc2c 100644 --- a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/QuadraticConstraint.java +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/QuadraticConstraint.java @@ -2,7 +2,7 @@ * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ -package com.nvidia.cuopt.linearprogramming; +package com.nvidia.cuopt.mathematicalprogramming; import java.util.Arrays; diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/QuadraticExpression.java b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/QuadraticExpression.java similarity index 96% rename from java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/QuadraticExpression.java rename to java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/QuadraticExpression.java index 8c43671f11..c250ed52a2 100644 --- a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/QuadraticExpression.java +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/QuadraticExpression.java @@ -2,13 +2,13 @@ * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ -package com.nvidia.cuopt.linearprogramming; +package com.nvidia.cuopt.mathematicalprogramming; import java.util.ArrayList; import java.util.Collections; import java.util.List; -public final class QuadraticExpression { +public final class QuadraticExpression implements ObjectiveExpression { public static final class QuadraticTerm { private final Variable first; private final Variable second; @@ -141,18 +141,21 @@ public Constraint ge(QuadraticExpression expression) { return minus(expression).ge(0.0); } - public Constraint eq(double rhs) { - throw new IllegalArgumentException("Equality quadratic constraints are not supported"); - } - + @Override public LinearExpression getLinearExpression() { return linearExpression; } + @Override public double getConstant() { return linearExpression.getConstant(); } + @Override + public boolean isQuadratic() { + return true; + } + public List getQuadraticTerms() { return Collections.unmodifiableList(quadraticTerms); } @@ -185,6 +188,7 @@ public double getCoefficient(int index) { return quadraticTerms.get(index).coefficient; } + @Override public double getValue() { double value = linearExpression.getValue(); for (QuadraticTerm term : quadraticTerms) { diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Solution.java b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/Solution.java similarity index 78% rename from java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Solution.java rename to java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/Solution.java index 6ba6ccf3a0..2643873e90 100644 --- a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Solution.java +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/Solution.java @@ -2,7 +2,7 @@ * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ -package com.nvidia.cuopt.linearprogramming; +package com.nvidia.cuopt.mathematicalprogramming; import java.lang.ref.Cleaner; import java.util.Arrays; @@ -34,7 +34,7 @@ public final class Solution implements AutoCloseable { this.cleanable = CLEANER.register(this, nativeHandle); this.numVariables = numVariables; this.numConstraints = numConstraints; - this.mip = NativeCuOpt.solutionIsMip(handle); + this.mip = NativeCuOpt.solutionIsMIP(handle); this.problemCategory = problemCategory; this.variableNames = variableNames == null ? new String[0] : Arrays.copyOf(variableNames, variableNames.length); } @@ -44,7 +44,7 @@ long handle() { return nativeHandle.handle; } - public boolean isMip() { + public boolean isMIP() { return mip; } @@ -57,12 +57,12 @@ public double[] getPrimalSolution() { } public double[] getDualSolution() { - requireLp("getDualSolution"); + requireLP("getDualSolution"); return NativeCuOpt.getDualSolution(handle(), NativeCuOpt.getDualSolutionSize(handle())); } public double[] getReducedCost() { - requireLp("getReducedCost"); + requireLP("getReducedCost"); return NativeCuOpt.getReducedCosts(handle(), numVariables); } @@ -71,7 +71,7 @@ public double getPrimalObjective() { } public double getDualObjective() { - requireLp("getDualObjective"); + requireLP("getDualObjective"); return NativeCuOpt.getDualObjectiveValue(handle()); } @@ -96,10 +96,10 @@ public double getSolveTime() { } public SolverMethod getSolvedBy() { - return mip ? SolverMethod.UNSET : getLpStats().getSolvedBy(); + return mip ? SolverMethod.UNSET : getLPStats().getSolvedBy(); } - public boolean getSolvedByPdlp() { + public boolean getSolvedByPDLP() { return !mip && getSolvedBy() == SolverMethod.PDLP; } @@ -113,34 +113,24 @@ public Map getVars() { return Collections.unmodifiableMap(result); } - public double getMipGap() { - requireMip("getMipGap"); - return NativeCuOpt.getMipGap(handle()); + public double getMIPGap() { + requireMIP("getMIPGap"); + return NativeCuOpt.getMIPGap(handle()); } public double getSolutionBound() { - requireMip("getSolutionBound"); + requireMIP("getSolutionBound"); return NativeCuOpt.getSolutionBound(handle()); } - public LPStats getLpStats() { - requireLp("getLpStats"); - return new LPStats(NativeCuOpt.getLpStats(handle())); + public LPStats getLPStats() { + requireLP("getLPStats"); + return new LPStats(NativeCuOpt.getLPStats(handle())); } - public MIPStats getMipStats() { - requireMip("getMipStats"); - return new MIPStats(NativeCuOpt.getMipStats(handle())); - } - - public boolean hasPdlpWarmStartData() { - requireLp("hasPdlpWarmStartData"); - return NativeCuOpt.hasPdlpWarmStartData(handle()); - } - - public PDLPWarmStartData getPdlpWarmStartData() { - requireLp("getPdlpWarmStartData"); - return PDLPWarmStartData.fromSolution(handle()); + public MIPStats getMIPStats() { + requireMIP("getMIPStats"); + return new MIPStats(NativeCuOpt.getMIPStats(handle())); } @Override @@ -148,13 +138,13 @@ public void close() { cleanable.clean(); } - private void requireLp(String method) { + private void requireLP(String method) { if (mip) { throw new IllegalStateException(method + " is not available for MIP solutions"); } } - private void requireMip(String method) { + private void requireMIP(String method) { if (!mip) { throw new IllegalStateException(method + " is not available for LP solutions"); } diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/SolverMethod.java b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/SolverMethod.java similarity index 58% rename from java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/SolverMethod.java rename to java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/SolverMethod.java index a94a5e31e6..5efb053cda 100644 --- a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/SolverMethod.java +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/SolverMethod.java @@ -2,14 +2,15 @@ * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ -package com.nvidia.cuopt.linearprogramming; +package com.nvidia.cuopt.mathematicalprogramming; +/** Solver methods backed by constants generated from the C++ public header. */ public enum SolverMethod { - CONCURRENT(0), - PDLP(1), - DUAL_SIMPLEX(2), - BARRIER(3), - UNSET(4); + CONCURRENT(CuOptConstants.CUOPT_METHOD_CONCURRENT), + PDLP(CuOptConstants.CUOPT_METHOD_PDLP), + DUAL_SIMPLEX(CuOptConstants.CUOPT_METHOD_DUAL_SIMPLEX), + BARRIER(CuOptConstants.CUOPT_METHOD_BARRIER), + UNSET(CuOptConstants.CUOPT_METHOD_UNSET); private final int nativeValue; diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/SolverSettings.java b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/SolverSettings.java new file mode 100644 index 0000000000..7c07c612e4 --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/SolverSettings.java @@ -0,0 +1,226 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.mathematicalprogramming; + +import java.lang.ref.Cleaner; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +public final class SolverSettings implements AutoCloseable { + private static final Cleaner CLEANER = Cleaner.create(); + private final NativeHandle nativeHandle; + private final Cleaner.Cleanable cleanable; + private final List mipCallbacks = new ArrayList<>(); + + public SolverSettings() { + this.nativeHandle = new NativeHandle(NativeCuOpt.createSolverSettings()); + this.cleanable = CLEANER.register(this, nativeHandle); + } + + long handle() { + nativeHandle.requireOpen(); + return nativeHandle.handle; + } + + public static Set getSolverSettingNames() { + return new LinkedHashSet<>(Arrays.asList(NativeCuOpt.getSolverSettingNames())); + } + + public static String getSolverSetting(String name) { + try (SolverSettings settings = new SolverSettings()) { + return settings.getSettingAsString(name); + } + } + + public static T getSolverSetting(String name, Class type) { + return parseValue(getSolverSetting(name), type); + } + + public static String getSolverSettingAsString(String name) { + try (SolverSettings settings = new SolverSettings()) { + return settings.getSettingAsString(name); + } + } + + public SolverSettings setSetting(String name, String value) { + NativeCuOpt.setSetting(handle(), name, value); + return this; + } + + public SolverSettings setSetting(String name, int value) { + NativeCuOpt.setIntegerSetting(handle(), name, value); + return this; + } + + public SolverSettings setSetting(String name, double value) { + NativeCuOpt.setFloatSetting(handle(), name, value); + return this; + } + + public SolverSettings setSetting(String name, boolean value) { + NativeCuOpt.setIntegerSetting(handle(), name, value ? 1 : 0); + return this; + } + + public String getSetting(String name) { + return getSettingAsString(name); + } + + public T getSetting(String name, Class type) { + return parseValue(getSettingAsString(name), type); + } + + public String getSettingAsString(String name) { + return NativeCuOpt.getSetting(handle(), name); + } + + public SolverSettings setMethod(SolverMethod method) { + return setSetting(CuOptConstants.CUOPT_METHOD, method.nativeValue()); + } + + public SolverSettings setPDLPSolverMode(PDLPSolverMode mode) { + return setSetting(CuOptConstants.CUOPT_PDLP_SOLVER_MODE, mode.nativeValue()); + } + + public SolverSettings setOptimalityTolerance(double tolerance) { + for (String setting : getSolverSettingNames()) { + if (setting.endsWith("tolerance") + && !setting.startsWith("mip") + && !setting.contains("infeasible")) { + setSetting(setting, tolerance); + } + } + return this; + } + + public SolverSettings addMIPStart(double[] values) { + NativeCuOpt.addMIPStart(handle(), Arrays.copyOf(values, values.length)); + return this; + } + + public SolverSettings setMIPCallback( + MIPSolutionCallback callback, Object userData, int numVariables) { + NativeCuOpt.registerMIPGetSolutionCallback(handle(), callback, userData, numVariables); + mipCallbacks.add(callback); + return this; + } + + public SolverSettings setMIPCallback( + MIPSetSolutionCallback callback, Object userData, int numVariables) { + NativeCuOpt.registerMIPSetSolutionCallback(handle(), callback, userData, numVariables); + mipCallbacks.add(callback); + return this; + } + + public List getMIPCallbacks() { + return Collections.unmodifiableList(mipCallbacks); + } + + public boolean dumpSettingsToFile(String path, boolean hyperparametersOnly) { + return NativeCuOpt.dumpSettingsToFile(handle(), path, hyperparametersOnly); + } + + public boolean dumpSettingsToFile(String path) { + return dumpSettingsToFile(path, true); + } + + public SolverSettings loadSettingsFromFile(String path) { + NativeCuOpt.loadSettingsFromFile(handle(), path); + return this; + } + + public Map toDict() { + Map result = new LinkedHashMap<>(); + Map tolerances = new LinkedHashMap<>(); + for (String setting : getSolverSettingNames()) { + Object value = inferredValue(getSettingAsString(setting)); + if (setting.endsWith("tolerance")) { + tolerances.put(setting, value); + } else { + result.put(setting, value instanceof Double && ((Double) value).isInfinite() ? null : value); + } + } + result.put("tolerances", tolerances); + return Collections.unmodifiableMap(result); + } + + private static T parseValue(String value, Class type) { + if (type == String.class) { + return type.cast(value); + } + if (type == Boolean.class) { + if (!"true".equalsIgnoreCase(value) && !"false".equalsIgnoreCase(value)) { + throw new IllegalArgumentException("Setting value is not a boolean: " + value); + } + return type.cast(Boolean.valueOf(value)); + } + try { + if (type == Integer.class) { + return type.cast(Integer.valueOf(value)); + } + if (type == Double.class) { + return type.cast(Double.valueOf(value)); + } + } catch (NumberFormatException exception) { + throw new IllegalArgumentException( + "Setting value cannot be converted to " + type.getSimpleName() + ": " + value, + exception); + } + throw new IllegalArgumentException( + "Unsupported setting type: " + type.getName() + + "; use String, Boolean, Integer, or Double"); + } + + private static Object inferredValue(String value) { + if ("true".equalsIgnoreCase(value)) { + return true; + } + if ("false".equalsIgnoreCase(value)) { + return false; + } + try { + return Integer.valueOf(value); + } catch (NumberFormatException ignored) { + try { + return Double.valueOf(value); + } catch (NumberFormatException ignoredAgain) { + return value; + } + } + } + + @Override + public void close() { + cleanable.clean(); + } + + private static final class NativeHandle implements Runnable { + private long handle; + + NativeHandle(long handle) { + this.handle = handle; + } + + void requireOpen() { + if (handle == 0) { + throw new IllegalStateException("SolverSettings is closed"); + } + } + + @Override + public void run() { + if (handle != 0) { + NativeCuOpt.destroySolverSettings(handle); + handle = 0; + } + } + } +} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/TerminationStatus.java b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/TerminationStatus.java new file mode 100644 index 0000000000..126418f22f --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/TerminationStatus.java @@ -0,0 +1,42 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.mathematicalprogramming; + +/** Termination statuses backed by constants generated from the C++ public header. */ +public enum TerminationStatus { + NO_TERMINATION(CuOptConstants.CUOPT_TERMINATION_STATUS_NO_TERMINATION), + OPTIMAL(CuOptConstants.CUOPT_TERMINATION_STATUS_OPTIMAL), + INFEASIBLE(CuOptConstants.CUOPT_TERMINATION_STATUS_INFEASIBLE), + UNBOUNDED(CuOptConstants.CUOPT_TERMINATION_STATUS_UNBOUNDED), + ITERATION_LIMIT(CuOptConstants.CUOPT_TERMINATION_STATUS_ITERATION_LIMIT), + TIME_LIMIT(CuOptConstants.CUOPT_TERMINATION_STATUS_TIME_LIMIT), + NUMERICAL_ERROR(CuOptConstants.CUOPT_TERMINATION_STATUS_NUMERICAL_ERROR), + PRIMAL_FEASIBLE(CuOptConstants.CUOPT_TERMINATION_STATUS_PRIMAL_FEASIBLE), + FEASIBLE_FOUND(CuOptConstants.CUOPT_TERMINATION_STATUS_FEASIBLE_FOUND), + CONCURRENT_LIMIT(CuOptConstants.CUOPT_TERMINATION_STATUS_CONCURRENT_LIMIT), + WORK_LIMIT(CuOptConstants.CUOPT_TERMINATION_STATUS_WORK_LIMIT), + UNBOUNDED_OR_INFEASIBLE( + CuOptConstants.CUOPT_TERMINATION_STATUS_UNBOUNDED_OR_INFEASIBLE), + UNKNOWN(Integer.MIN_VALUE); + + private final int nativeValue; + + TerminationStatus(int nativeValue) { + this.nativeValue = nativeValue; + } + + public int nativeValue() { + return nativeValue; + } + + static TerminationStatus fromNative(int value) { + for (TerminationStatus status : values()) { + if (status.nativeValue == value) { + return status; + } + } + return UNKNOWN; + } +} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Variable.java b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/Variable.java similarity index 94% rename from java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Variable.java rename to java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/Variable.java index 2cf3b7640e..b3c33f4fd6 100644 --- a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Variable.java +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/Variable.java @@ -2,7 +2,7 @@ * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ -package com.nvidia.cuopt.linearprogramming; +package com.nvidia.cuopt.mathematicalprogramming; public final class Variable { private final int index; @@ -95,11 +95,11 @@ void setReducedCost(double reducedCost) { this.reducedCost = reducedCost; } - public double getMipStart() { + public double getMIPStart() { return mipStart; } - public Variable setMipStart(double mipStart) { + public Variable setMIPStart(double mipStart) { this.mipStart = mipStart; return this; } diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/VariableType.java b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/VariableType.java similarity index 93% rename from java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/VariableType.java rename to java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/VariableType.java index 8730d3fc98..96da4c43c2 100644 --- a/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/VariableType.java +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/VariableType.java @@ -2,7 +2,7 @@ * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ -package com.nvidia.cuopt.linearprogramming; +package com.nvidia.cuopt.mathematicalprogramming; public enum VariableType { CONTINUOUS((byte) 'C'), diff --git a/java/cuopt/src/main/native/cuopt_java_native_api.cpp b/java/cuopt/src/main/native/cuopt_java_native_api.cpp index 9b4cab9255..6745386a68 100644 --- a/java/cuopt/src/main/native/cuopt_java_native_api.cpp +++ b/java/cuopt/src/main/native/cuopt_java_native_api.cpp @@ -3,21 +3,14 @@ * SPDX-License-Identifier: Apache-2.0 */ -#include -#include -#include -#include -#include -#include -#include -#include -#include - #include "cuopt_java_native_api.hpp" #include #include +#include +#include + namespace { using namespace cuopt::linear_programming; @@ -37,21 +30,6 @@ java_solver_settings_t* settings_from_handle(cuOptSolverSettings handle) return handle == nullptr ? nullptr : static_cast(handle)->settings; } -struct warm_start_storage_t { - std::vector current_primal_solution; - std::vector current_dual_solution; - std::vector initial_primal_average; - std::vector initial_dual_average; - std::vector current_aty; - std::vector sum_primal_solutions; - std::vector sum_dual_solutions; - std::vector last_restart_primal_solution; - std::vector last_restart_dual_solution; -}; - -std::mutex warm_start_mutex; -std::unordered_map> warm_starts; - java_lp_solution_t* get_lp_solution(cuOptSolution solution) { auto* view = static_cast(solution); @@ -64,38 +42,8 @@ java_mip_solution_t* get_mip_solution(cuOptSolution solution) return view == nullptr || !view->is_mip ? nullptr : view->mip_solution_interface_ptr; } -std::vector get_warm_start_vector(java_lp_solution_t* solution, cuopt_int_t field_id) -{ - switch (field_id) { - case CUOPT_JAVA_PDLP_WARM_START_CURRENT_PRIMAL_SOLUTION: - return solution->get_current_primal_solution_host(); - case CUOPT_JAVA_PDLP_WARM_START_CURRENT_DUAL_SOLUTION: - return solution->get_current_dual_solution_host(); - case CUOPT_JAVA_PDLP_WARM_START_INITIAL_PRIMAL_AVERAGE: - return solution->get_initial_primal_average_host(); - case CUOPT_JAVA_PDLP_WARM_START_INITIAL_DUAL_AVERAGE: - return solution->get_initial_dual_average_host(); - case CUOPT_JAVA_PDLP_WARM_START_CURRENT_ATY: return solution->get_current_ATY_host(); - case CUOPT_JAVA_PDLP_WARM_START_SUM_PRIMAL_SOLUTIONS: - return solution->get_sum_primal_solutions_host(); - case CUOPT_JAVA_PDLP_WARM_START_SUM_DUAL_SOLUTIONS: - return solution->get_sum_dual_solutions_host(); - case CUOPT_JAVA_PDLP_WARM_START_LAST_RESTART_DUALITY_GAP_PRIMAL_SOLUTION: - return solution->get_last_restart_duality_gap_primal_solution_host(); - case CUOPT_JAVA_PDLP_WARM_START_LAST_RESTART_DUALITY_GAP_DUAL_SOLUTION: - return solution->get_last_restart_duality_gap_dual_solution_host(); - default: throw std::invalid_argument("Invalid PDLP warm-start vector field"); - } -} - } // namespace -void cuopt_java_release_settings_state(cuOptSolverSettings settings) -{ - std::lock_guard lock(warm_start_mutex); - warm_starts.erase(settings); -} - extern "C" cuopt_int_t cuOptLoadParametersFromFile(cuOptSolverSettings settings, const char* path) { if (settings == nullptr || path == nullptr || path[0] == '\0') { return CUOPT_INVALID_ARGUMENT; } @@ -157,81 +105,6 @@ extern "C" cuopt_int_t cuOptGetSolverParameterName(cuopt_int_t index, return CUOPT_SUCCESS; } -extern "C" cuopt_int_t cuOptSetPDLPWarmStartData( - cuOptSolverSettings settings, - const cuopt_float_t* current_primal_solution, - const cuopt_float_t* current_dual_solution, - const cuopt_float_t* initial_primal_average, - const cuopt_float_t* initial_dual_average, - const cuopt_float_t* current_ATY, - const cuopt_float_t* sum_primal_solutions, - const cuopt_float_t* sum_dual_solutions, - const cuopt_float_t* last_restart_duality_gap_primal_solution, - const cuopt_float_t* last_restart_duality_gap_dual_solution, - cuopt_int_t primal_size, - cuopt_int_t dual_size, - cuopt_float_t initial_primal_weight, - cuopt_float_t initial_step_size, - cuopt_int_t total_pdlp_iterations, - cuopt_int_t total_pdhg_iterations, - cuopt_float_t last_candidate_kkt_score, - cuopt_float_t last_restart_kkt_score, - cuopt_float_t sum_solution_weight, - cuopt_int_t iterations_since_last_restart) -{ - if (settings == nullptr || primal_size <= 0 || dual_size <= 0) { return CUOPT_INVALID_ARGUMENT; } - if (current_primal_solution == nullptr || current_dual_solution == nullptr || - initial_primal_average == nullptr || initial_dual_average == nullptr || - current_ATY == nullptr || sum_primal_solutions == nullptr || sum_dual_solutions == nullptr || - last_restart_duality_gap_primal_solution == nullptr || - last_restart_duality_gap_dual_solution == nullptr) { - return CUOPT_INVALID_ARGUMENT; - } - - auto storage = std::make_unique(); - storage->current_primal_solution.assign(current_primal_solution, - current_primal_solution + primal_size); - storage->current_dual_solution.assign(current_dual_solution, current_dual_solution + dual_size); - storage->initial_primal_average.assign(initial_primal_average, - initial_primal_average + primal_size); - storage->initial_dual_average.assign(initial_dual_average, initial_dual_average + dual_size); - storage->current_aty.assign(current_ATY, current_ATY + primal_size); - storage->sum_primal_solutions.assign(sum_primal_solutions, sum_primal_solutions + primal_size); - storage->sum_dual_solutions.assign(sum_dual_solutions, sum_dual_solutions + dual_size); - storage->last_restart_primal_solution.assign( - last_restart_duality_gap_primal_solution, - last_restart_duality_gap_primal_solution + primal_size); - storage->last_restart_dual_solution.assign(last_restart_duality_gap_dual_solution, - last_restart_duality_gap_dual_solution + dual_size); - try { - settings_from_handle(settings)->set_pdlp_warm_start_data( - storage->current_primal_solution.data(), - storage->current_dual_solution.data(), - storage->initial_primal_average.data(), - storage->initial_dual_average.data(), - storage->current_aty.data(), - storage->sum_primal_solutions.data(), - storage->sum_dual_solutions.data(), - storage->last_restart_primal_solution.data(), - storage->last_restart_dual_solution.data(), - primal_size, - dual_size, - initial_primal_weight, - initial_step_size, - total_pdlp_iterations, - total_pdhg_iterations, - last_candidate_kkt_score, - last_restart_kkt_score, - sum_solution_weight, - iterations_since_last_restart); - } catch (const std::exception&) { - return CUOPT_INVALID_ARGUMENT; - } - std::lock_guard lock(warm_start_mutex); - warm_starts[settings] = std::move(storage); - return CUOPT_SUCCESS; -} - extern "C" cuopt_int_t cuOptSolutionIsMIP(cuOptSolution solution, cuopt_int_t* is_mip_ptr) { if (solution == nullptr || is_mip_ptr == nullptr) { return CUOPT_INVALID_ARGUMENT; } @@ -289,107 +162,3 @@ extern "C" cuopt_int_t cuOptGetMIPSolverStats(cuOptSolution solution, } return CUOPT_SUCCESS; } - -extern "C" cuopt_int_t cuOptHasPDLPWarmStartData(cuOptSolution solution, - cuopt_int_t* has_warm_start_ptr) -{ - auto* lp = get_lp_solution(solution); - if (lp == nullptr || has_warm_start_ptr == nullptr) { return CUOPT_INVALID_ARGUMENT; } - try { - *has_warm_start_ptr = static_cast(lp->has_warm_start_data()); - } catch (const std::exception&) { - return CUOPT_RUNTIME_ERROR; - } - return CUOPT_SUCCESS; -} - -extern "C" cuopt_int_t cuOptGetPDLPWarmStartVectorSize(cuOptSolution solution, - cuopt_int_t field_id, - cuopt_int_t* size_ptr) -{ - auto* lp = get_lp_solution(solution); - if (lp == nullptr || size_ptr == nullptr) { return CUOPT_INVALID_ARGUMENT; } - try { - *size_ptr = static_cast(get_warm_start_vector(lp, field_id).size()); - } catch (const std::invalid_argument&) { - return CUOPT_INVALID_ARGUMENT; - } catch (const std::exception&) { - return CUOPT_RUNTIME_ERROR; - } - return CUOPT_SUCCESS; -} - -extern "C" cuopt_int_t cuOptGetPDLPWarmStartVector(cuOptSolution solution, - cuopt_int_t field_id, - cuopt_float_t* values) -{ - auto* lp = get_lp_solution(solution); - if (lp == nullptr || values == nullptr) { return CUOPT_INVALID_ARGUMENT; } - try { - const auto vector = get_warm_start_vector(lp, field_id); - if (!vector.empty()) { - std::memcpy(values, vector.data(), vector.size() * sizeof(cuopt_float_t)); - } - } catch (const std::invalid_argument&) { - return CUOPT_INVALID_ARGUMENT; - } catch (const std::exception&) { - return CUOPT_RUNTIME_ERROR; - } - return CUOPT_SUCCESS; -} - -extern "C" cuopt_int_t cuOptGetPDLPWarmStartScalar(cuOptSolution solution, - cuopt_int_t field_id, - cuopt_float_t* value_ptr) -{ - auto* lp = get_lp_solution(solution); - if (lp == nullptr || value_ptr == nullptr) { return CUOPT_INVALID_ARGUMENT; } - try { - switch (field_id) { - case CUOPT_JAVA_PDLP_WARM_START_INITIAL_PRIMAL_WEIGHT: - *value_ptr = lp->get_initial_primal_weight(); - break; - case CUOPT_JAVA_PDLP_WARM_START_INITIAL_STEP_SIZE: - *value_ptr = lp->get_initial_step_size(); - break; - case CUOPT_JAVA_PDLP_WARM_START_LAST_CANDIDATE_KKT_SCORE: - *value_ptr = lp->get_last_candidate_kkt_score(); - break; - case CUOPT_JAVA_PDLP_WARM_START_LAST_RESTART_KKT_SCORE: - *value_ptr = lp->get_last_restart_kkt_score(); - break; - case CUOPT_JAVA_PDLP_WARM_START_SUM_SOLUTION_WEIGHT: - *value_ptr = lp->get_sum_solution_weight(); - break; - default: return CUOPT_INVALID_ARGUMENT; - } - } catch (const std::exception&) { - return CUOPT_RUNTIME_ERROR; - } - return CUOPT_SUCCESS; -} - -extern "C" cuopt_int_t cuOptGetPDLPWarmStartInteger(cuOptSolution solution, - cuopt_int_t field_id, - cuopt_int_t* value_ptr) -{ - auto* lp = get_lp_solution(solution); - if (lp == nullptr || value_ptr == nullptr) { return CUOPT_INVALID_ARGUMENT; } - try { - switch (field_id) { - case CUOPT_JAVA_PDLP_WARM_START_TOTAL_PDLP_ITERATIONS: - *value_ptr = lp->get_total_pdlp_iterations(); - break; - case CUOPT_JAVA_PDLP_WARM_START_TOTAL_PDHG_ITERATIONS: - *value_ptr = lp->get_total_pdhg_iterations(); - break; - case CUOPT_JAVA_PDLP_WARM_START_ITERATIONS_SINCE_LAST_RESTART: - *value_ptr = lp->get_iterations_since_last_restart(); - break; - default: return CUOPT_INVALID_ARGUMENT; - } - } catch (const std::exception&) { - return CUOPT_RUNTIME_ERROR; - } - return CUOPT_SUCCESS; -} diff --git a/java/cuopt/src/main/native/cuopt_java_native_api.hpp b/java/cuopt/src/main/native/cuopt_java_native_api.hpp index 050dea195a..1c22e24e1e 100644 --- a/java/cuopt/src/main/native/cuopt_java_native_api.hpp +++ b/java/cuopt/src/main/native/cuopt_java_native_api.hpp @@ -7,8 +7,6 @@ #include -void cuopt_java_release_settings_state(cuOptSolverSettings settings); - extern "C" { cuopt_int_t cuOptLoadParametersFromFile(cuOptSolverSettings settings, const char* path); @@ -21,27 +19,6 @@ cuopt_int_t cuOptGetSolverParameterName(cuopt_int_t index, cuopt_int_t parameter_name_size, char* parameter_name); -cuopt_int_t cuOptSetPDLPWarmStartData(cuOptSolverSettings settings, - const cuopt_float_t* current_primal_solution, - const cuopt_float_t* current_dual_solution, - const cuopt_float_t* initial_primal_average, - const cuopt_float_t* initial_dual_average, - const cuopt_float_t* current_ATY, - const cuopt_float_t* sum_primal_solutions, - const cuopt_float_t* sum_dual_solutions, - const cuopt_float_t* last_restart_duality_gap_primal_solution, - const cuopt_float_t* last_restart_duality_gap_dual_solution, - cuopt_int_t primal_size, - cuopt_int_t dual_size, - cuopt_float_t initial_primal_weight, - cuopt_float_t initial_step_size, - cuopt_int_t total_pdlp_iterations, - cuopt_int_t total_pdhg_iterations, - cuopt_float_t last_candidate_kkt_score, - cuopt_float_t last_restart_kkt_score, - cuopt_float_t sum_solution_weight, - cuopt_int_t iterations_since_last_restart); - cuopt_int_t cuOptSolutionIsMIP(cuOptSolution solution, cuopt_int_t* is_mip_ptr); cuopt_int_t cuOptGetLPSolverStats(cuOptSolution solution, cuopt_float_t* primal_residual_ptr, @@ -56,37 +33,4 @@ cuopt_int_t cuOptGetMIPSolverStats(cuOptSolution solution, cuopt_float_t* max_variable_bound_violation_ptr, cuopt_int_t* num_nodes_ptr, cuopt_int_t* num_simplex_iterations_ptr); -cuopt_int_t cuOptHasPDLPWarmStartData(cuOptSolution solution, cuopt_int_t* has_warm_start_ptr); -cuopt_int_t cuOptGetPDLPWarmStartVectorSize(cuOptSolution solution, - cuopt_int_t field_id, - cuopt_int_t* size_ptr); -cuopt_int_t cuOptGetPDLPWarmStartVector(cuOptSolution solution, - cuopt_int_t field_id, - cuopt_float_t* values); -cuopt_int_t cuOptGetPDLPWarmStartScalar(cuOptSolution solution, - cuopt_int_t field_id, - cuopt_float_t* value_ptr); -cuopt_int_t cuOptGetPDLPWarmStartInteger(cuOptSolution solution, - cuopt_int_t field_id, - cuopt_int_t* value_ptr); } - -enum cuopt_java_pdlp_warm_start_field : cuopt_int_t { - CUOPT_JAVA_PDLP_WARM_START_CURRENT_PRIMAL_SOLUTION = 0, - CUOPT_JAVA_PDLP_WARM_START_CURRENT_DUAL_SOLUTION = 1, - CUOPT_JAVA_PDLP_WARM_START_INITIAL_PRIMAL_AVERAGE = 2, - CUOPT_JAVA_PDLP_WARM_START_INITIAL_DUAL_AVERAGE = 3, - CUOPT_JAVA_PDLP_WARM_START_CURRENT_ATY = 4, - CUOPT_JAVA_PDLP_WARM_START_SUM_PRIMAL_SOLUTIONS = 5, - CUOPT_JAVA_PDLP_WARM_START_SUM_DUAL_SOLUTIONS = 6, - CUOPT_JAVA_PDLP_WARM_START_LAST_RESTART_DUALITY_GAP_PRIMAL_SOLUTION = 7, - CUOPT_JAVA_PDLP_WARM_START_LAST_RESTART_DUALITY_GAP_DUAL_SOLUTION = 8, - CUOPT_JAVA_PDLP_WARM_START_INITIAL_PRIMAL_WEIGHT = 9, - CUOPT_JAVA_PDLP_WARM_START_INITIAL_STEP_SIZE = 10, - CUOPT_JAVA_PDLP_WARM_START_TOTAL_PDLP_ITERATIONS = 11, - CUOPT_JAVA_PDLP_WARM_START_TOTAL_PDHG_ITERATIONS = 12, - CUOPT_JAVA_PDLP_WARM_START_LAST_CANDIDATE_KKT_SCORE = 13, - CUOPT_JAVA_PDLP_WARM_START_LAST_RESTART_KKT_SCORE = 14, - CUOPT_JAVA_PDLP_WARM_START_SUM_SOLUTION_WEIGHT = 15, - CUOPT_JAVA_PDLP_WARM_START_ITERATIONS_SINCE_LAST_RESTART = 16 -}; diff --git a/java/cuopt/src/main/native/cuopt_jni.cpp b/java/cuopt/src/main/native/cuopt_jni.cpp index b5b05d81c0..2aef760c3e 100644 --- a/java/cuopt/src/main/native/cuopt_jni.cpp +++ b/java/cuopt/src/main/native/cuopt_jni.cpp @@ -173,7 +173,7 @@ std::string get_string(JNIEnv* env, jstring value) void throw_cuopt_exception(JNIEnv* env, cuopt_int_t status, const std::string& message) { - jclass cls = env->FindClass("com/nvidia/cuopt/linearprogramming/CuOptException"); + jclass cls = env->FindClass("com/nvidia/cuopt/mathematicalprogramming/CuOptException"); if (cls == nullptr) { return; } jmethodID ctor = env->GetMethodID(cls, "", "(ILjava/lang/String;)V"); if (ctor == nullptr) { return; } @@ -302,7 +302,7 @@ void mip_set_solution_callback(cuopt_float_t* solution, jclass cls = env->GetObjectClass(context->callback); jmethodID method = env->GetMethodID( - cls, "getSolution", "(DLjava/lang/Object;)Lcom/nvidia/cuopt/linearprogramming/MipCallbackSolution;"); + cls, "getSolution", "(DLjava/lang/Object;)Lcom/nvidia/cuopt/mathematicalprogramming/MIPCallbackSolution;"); if (method != nullptr) { jobject callback_solution = env->CallObjectMethod(context->callback, method, static_cast(*solution_bound), context->user_data); @@ -335,13 +335,13 @@ extern "C" jint JNI_OnLoad(JavaVM* vm, void*) } extern "C" JNIEXPORT jint JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getFloatSize(JNIEnv*, jclass) +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getFloatSize(JNIEnv*, jclass) { return cuOptGetFloatSize(); } extern "C" JNIEXPORT jobjectArray JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getSolverParameterNames(JNIEnv* env, jclass) +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getSolverSettingNames(JNIEnv* env, jclass) { cuopt_int_t count = 0; if (!check_status(env, cuOptGetNumSolverParameters(&count), "cuOptGetNumSolverParameters")) { @@ -361,7 +361,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getSolverParameterNames(JNIE } extern "C" JNIEXPORT jlong JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_createEmptyProblem(JNIEnv* env, jclass) +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_createEmptyProblem(JNIEnv* env, jclass) { try { auto problem = std::make_unique( @@ -377,7 +377,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_createEmptyProblem(JNIEnv* e } extern "C" JNIEXPORT jlong JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_parseMpsProblem(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_parseMPSProblem(JNIEnv* env, jclass, jstring path, jboolean fixed_mps_format) @@ -399,13 +399,13 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_parseMpsProblem(JNIEnv* env, std::string(e.what()).find("Error opening input file") != std::string::npos ? CUOPT_MPS_FILE_ERROR : CUOPT_MPS_PARSE_ERROR; - throw_cuopt_exception(env, status, std::string("parseMpsProblem failed: ") + e.what()); + throw_cuopt_exception(env, status, std::string("parseMPSProblem failed: ") + e.what()); return 0; } } extern "C" JNIEXPORT jlong JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_readProblemWithFormat(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_readProblemWithFormat(JNIEnv* env, jclass, jstring path, jboolean fixed_mps_format) @@ -433,7 +433,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_readProblemWithFormat(JNIEnv } extern "C" JNIEXPORT jlong JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_createSolverSettings(JNIEnv* env, jclass) +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_createSolverSettings(JNIEnv* env, jclass) { cuOptSolverSettings settings = nullptr; if (!check_status(env, cuOptCreateSolverSettings(&settings), "cuOptCreateSolverSettings")) { @@ -443,19 +443,18 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_createSolverSettings(JNIEnv* } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_destroySolverSettings(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_destroySolverSettings(JNIEnv* env, jclass, jlong handle) { if (handle == 0) { return; } cleanup_callback_contexts(env, handle); - cuopt_java_release_settings_state(to_settings(handle)); cuOptSolverSettings settings = to_settings(handle); cuOptDestroySolverSettings(&settings); } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setParameter(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setSetting(JNIEnv* env, jclass, jlong handle, jstring name, @@ -469,7 +468,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setParameter(JNIEnv* env, } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setIntegerParameter(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setIntegerSetting(JNIEnv* env, jclass, jlong handle, jstring name, @@ -482,7 +481,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setIntegerParameter(JNIEnv* } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setFloatParameter(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setFloatSetting(JNIEnv* env, jclass, jlong handle, jstring name, @@ -496,7 +495,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setFloatParameter(JNIEnv* en } extern "C" JNIEXPORT jstring JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getParameter(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getSetting(JNIEnv* env, jclass, jlong handle, jstring name) @@ -512,7 +511,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getParameter(JNIEnv* env, } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_loadParametersFromFile(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_loadSettingsFromFile(JNIEnv* env, jclass, jlong handle, jstring path) @@ -524,7 +523,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_loadParametersFromFile(JNIEn } extern "C" JNIEXPORT jboolean JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_dumpParametersToFile(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_dumpSettingsToFile(JNIEnv* env, jclass, jlong handle, jstring path, @@ -544,33 +543,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_dumpParametersToFile(JNIEnv* } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setInitialPrimalSolution(JNIEnv* env, - jclass, - jlong handle, - jdoubleArray values) -{ - const auto data = get_double_array(env, values); - check_status(env, - cuOptSetInitialPrimalSolution( - to_settings(handle), data.data(), static_cast(data.size())), - "cuOptSetInitialPrimalSolution"); -} - -extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setInitialDualSolution(JNIEnv* env, - jclass, - jlong handle, - jdoubleArray values) -{ - const auto data = get_double_array(env, values); - check_status(env, - cuOptSetInitialDualSolution( - to_settings(handle), data.data(), static_cast(data.size())), - "cuOptSetInitialDualSolution"); -} - -extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_addMipStart(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_addMIPStart(JNIEnv* env, jclass, jlong handle, jdoubleArray values) @@ -582,7 +555,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_addMipStart(JNIEnv* env, } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_registerMipGetSolutionCallback( +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_registerMIPGetSolutionCallback( JNIEnv* env, jclass, jlong handle, jobject callback, jobject user_data, jint num_variables) { auto* context = new java_callback_context_t; @@ -601,7 +574,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_registerMipGetSolutionCallba } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_registerMipSetSolutionCallback( +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_registerMIPSetSolutionCallback( JNIEnv* env, jclass, jlong handle, jobject callback, jobject user_data, jint num_variables) { auto* context = new java_callback_context_t; @@ -619,66 +592,8 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_registerMipSetSolutionCallba remember_callback_context(handle, context); } -extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setPdlpWarmStartData( - JNIEnv* env, - jclass, - jlong handle, - jdoubleArray current_primal_solution, - jdoubleArray current_dual_solution, - jdoubleArray initial_primal_average, - jdoubleArray initial_dual_average, - jdoubleArray current_aty, - jdoubleArray sum_primal_solutions, - jdoubleArray sum_dual_solutions, - jdoubleArray last_restart_duality_gap_primal_solution, - jdoubleArray last_restart_duality_gap_dual_solution, - jdouble initial_primal_weight, - jdouble initial_step_size, - jint total_pdlp_iterations, - jint total_pdhg_iterations, - jdouble last_candidate_kkt_score, - jdouble last_restart_kkt_score, - jdouble sum_solution_weight, - jint iterations_since_last_restart) -{ - const auto current_primal = get_double_array(env, current_primal_solution); - const auto current_dual = get_double_array(env, current_dual_solution); - const auto initial_primal = get_double_array(env, initial_primal_average); - const auto initial_dual = get_double_array(env, initial_dual_average); - const auto aty = get_double_array(env, current_aty); - const auto sum_primal = get_double_array(env, sum_primal_solutions); - const auto sum_dual = get_double_array(env, sum_dual_solutions); - const auto last_primal = get_double_array(env, last_restart_duality_gap_primal_solution); - const auto last_dual = get_double_array(env, last_restart_duality_gap_dual_solution); - - check_status( - env, - cuOptSetPDLPWarmStartData(to_settings(handle), - current_primal.data(), - current_dual.data(), - initial_primal.data(), - initial_dual.data(), - aty.data(), - sum_primal.data(), - sum_dual.data(), - last_primal.data(), - last_dual.data(), - static_cast(current_primal.size()), - static_cast(current_dual.size()), - static_cast(initial_primal_weight), - static_cast(initial_step_size), - total_pdlp_iterations, - total_pdhg_iterations, - static_cast(last_candidate_kkt_score), - static_cast(last_restart_kkt_score), - static_cast(sum_solution_weight), - iterations_since_last_restart), - "cuOptSetPDLPWarmStartData"); -} - extern "C" JNIEXPORT jlong JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_createProblem(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_createProblem(JNIEnv* env, jclass, jint num_constraints, jint num_variables, @@ -726,7 +641,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_createProblem(JNIEnv* env, } extern "C" JNIEXPORT jlong JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_createRangedProblem( +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_createRangedProblem( JNIEnv* env, jclass, jint num_constraints, @@ -775,7 +690,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_createRangedProblem( } extern "C" JNIEXPORT jlong JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_readProblem(JNIEnv* env, jclass, jstring path) +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_readProblem(JNIEnv* env, jclass, jstring path) { const auto filename = get_string(env, path); cuOptOptimizationProblem problem = nullptr; @@ -786,7 +701,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_readProblem(JNIEnv* env, jcl } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_writeProblem(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_writeProblem(JNIEnv* env, jclass, jlong handle, jstring path) @@ -797,7 +712,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_writeProblem(JNIEnv* env, } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_destroyProblem(JNIEnv*, jclass, jlong handle) +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_destroyProblem(JNIEnv*, jclass, jlong handle) { if (handle == 0) { return; } { @@ -813,7 +728,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_destroyProblem(JNIEnv*, jcla } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setQuadraticObjective(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setQuadraticObjective(JNIEnv* env, jclass, jlong handle, jintArray rows, @@ -833,7 +748,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setQuadraticObjective(JNIEnv } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_addQuadraticConstraint(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_addQuadraticConstraint(JNIEnv* env, jclass, jlong handle, jintArray rows, @@ -864,7 +779,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_addQuadraticConstraint(JNIEn } extern "C" JNIEXPORT jint JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getNumVariables(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getNumVariables(JNIEnv* env, jclass, jlong handle) { @@ -874,7 +789,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getNumVariables(JNIEnv* env, } extern "C" JNIEXPORT jint JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getNumConstraints(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getNumConstraints(JNIEnv* env, jclass, jlong handle) { @@ -884,7 +799,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getNumConstraints(JNIEnv* en } extern "C" JNIEXPORT jint JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getNumNonZeros(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getNumNonZeros(JNIEnv* env, jclass, jlong handle) { @@ -894,7 +809,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getNumNonZeros(JNIEnv* env, } extern "C" JNIEXPORT jint JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getObjectiveSense(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getObjectiveSense(JNIEnv* env, jclass, jlong handle) { @@ -904,7 +819,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getObjectiveSense(JNIEnv* en } extern "C" JNIEXPORT jdouble JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getObjectiveOffset(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getObjectiveOffset(JNIEnv* env, jclass, jlong handle) { @@ -914,11 +829,11 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getObjectiveOffset(JNIEnv* e } extern "C" JNIEXPORT jdoubleArray JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getObjectiveCoefficients(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getObjectiveCoefficients(JNIEnv* env, jclass, jlong handle) { - const int n = Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getNumVariables(env, nullptr, handle); + const int n = Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getNumVariables(env, nullptr, handle); std::vector values(static_cast(n)); if (!check_status(env, cuOptGetObjectiveCoefficients(to_problem(handle), values.data()), @@ -929,12 +844,12 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getObjectiveCoefficients(JNI } extern "C" JNIEXPORT jobjectArray JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getConstraintMatrix(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getConstraintMatrix(JNIEnv* env, jclass, jlong handle) { - const int rows_size = Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getNumConstraints(env, nullptr, handle) + 1; - const int nnz = Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getNumNonZeros(env, nullptr, handle); + const int rows_size = Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getNumConstraints(env, nullptr, handle) + 1; + const int nnz = Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getNumNonZeros(env, nullptr, handle); std::vector rows(static_cast(rows_size)); std::vector cols(static_cast(nnz)); std::vector values(static_cast(nnz)); @@ -952,7 +867,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getConstraintMatrix(JNIEnv* } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setMaximize(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setMaximize(JNIEnv* env, jclass, jlong handle, jboolean maximize) @@ -963,7 +878,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setMaximize(JNIEnv* env, } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setConstraintMatrix(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setConstraintMatrix(JNIEnv* env, jclass, jlong handle, jdoubleArray values, @@ -980,7 +895,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setConstraintMatrix(JNIEnv* } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setConstraintBounds(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setConstraintBounds(JNIEnv* env, jclass, jlong handle, jdoubleArray values) @@ -992,7 +907,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setConstraintBounds(JNIEnv* } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setObjectiveCoefficients(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setObjectiveCoefficients(JNIEnv* env, jclass, jlong handle, jdoubleArray values) @@ -1004,7 +919,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setObjectiveCoefficients(JNI } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setObjectiveScalingFactor(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setObjectiveScalingFactor(JNIEnv* env, jclass, jlong handle, jdouble value) @@ -1015,7 +930,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setObjectiveScalingFactor(JN } extern "C" JNIEXPORT jdouble JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getObjectiveScalingFactor(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getObjectiveScalingFactor(JNIEnv* env, jclass, jlong handle) { @@ -1029,7 +944,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getObjectiveScalingFactor(JN } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setObjectiveOffset(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setObjectiveOffset(JNIEnv* env, jclass, jlong handle, jdouble value) @@ -1040,7 +955,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setObjectiveOffset(JNIEnv* e } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setQuadraticObjectiveMatrix(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setQuadraticObjectiveMatrix(JNIEnv* env, jclass, jlong handle, jdoubleArray values, @@ -1057,7 +972,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setQuadraticObjectiveMatrix( } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setVariableLowerBounds(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setVariableLowerBounds(JNIEnv* env, jclass, jlong handle, jdoubleArray values) @@ -1069,7 +984,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setVariableLowerBounds(JNIEn } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setVariableUpperBounds(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setVariableUpperBounds(JNIEnv* env, jclass, jlong handle, jdoubleArray values) @@ -1081,7 +996,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setVariableUpperBounds(JNIEn } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setConstraintLowerBounds(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setConstraintLowerBounds(JNIEnv* env, jclass, jlong handle, jdoubleArray values) @@ -1093,7 +1008,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setConstraintLowerBounds(JNI } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setConstraintUpperBounds(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setConstraintUpperBounds(JNIEnv* env, jclass, jlong handle, jdoubleArray values) @@ -1105,7 +1020,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setConstraintUpperBounds(JNI } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setRowTypes(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setRowTypes(JNIEnv* env, jclass, jlong handle, jbyteArray values) @@ -1117,7 +1032,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setRowTypes(JNIEnv* env, } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setVariableTypes(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setVariableTypes(JNIEnv* env, jclass, jlong handle, jbyteArray values) @@ -1134,7 +1049,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setVariableTypes(JNIEnv* env } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setVariableNames(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setVariableNames(JNIEnv* env, jclass, jlong handle, jobjectArray values) @@ -1146,7 +1061,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setVariableNames(JNIEnv* env } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setRowNames(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setRowNames(JNIEnv* env, jclass, jlong handle, jobjectArray values) @@ -1158,7 +1073,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setRowNames(JNIEnv* env, } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setObjectiveName(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setObjectiveName(JNIEnv* env, jclass, jlong handle, jstring value) @@ -1170,7 +1085,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setObjectiveName(JNIEnv* env } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setProblemName(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setProblemName(JNIEnv* env, jclass, jlong handle, jstring value) @@ -1182,7 +1097,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setProblemName(JNIEnv* env, } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setInitialPrimalSolutionOnProblem(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setInitialPrimalSolutionOnProblem(JNIEnv* env, jclass, jlong handle, jdoubleArray values) @@ -1195,7 +1110,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setInitialPrimalSolutionOnPr } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setInitialDualSolutionOnProblem(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setInitialDualSolutionOnProblem(JNIEnv* env, jclass, jlong handle, jdoubleArray values) @@ -1208,7 +1123,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_setInitialDualSolutionOnProb } extern "C" JNIEXPORT jdoubleArray JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getQuadraticObjectiveValues(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getQuadraticObjectiveValues(JNIEnv* env, jclass, jlong handle) { @@ -1216,7 +1131,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getQuadraticObjectiveValues( } extern "C" JNIEXPORT jintArray JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getQuadraticObjectiveIndices(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getQuadraticObjectiveIndices(JNIEnv* env, jclass, jlong handle) { @@ -1224,7 +1139,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getQuadraticObjectiveIndices } extern "C" JNIEXPORT jintArray JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getQuadraticObjectiveOffsets(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getQuadraticObjectiveOffsets(JNIEnv* env, jclass, jlong handle) { @@ -1232,7 +1147,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getQuadraticObjectiveOffsets } extern "C" JNIEXPORT jobjectArray JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getVariableNames(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getVariableNames(JNIEnv* env, jclass, jlong handle) { @@ -1240,7 +1155,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getVariableNames(JNIEnv* env } extern "C" JNIEXPORT jobjectArray JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getRowNames(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getRowNames(JNIEnv* env, jclass, jlong handle) { @@ -1248,7 +1163,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getRowNames(JNIEnv* env, } extern "C" JNIEXPORT jstring JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getObjectiveName(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getObjectiveName(JNIEnv* env, jclass, jlong handle) { @@ -1256,7 +1171,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getObjectiveName(JNIEnv* env } extern "C" JNIEXPORT jstring JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getProblemName(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getProblemName(JNIEnv* env, jclass, jlong handle) { @@ -1264,7 +1179,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getProblemName(JNIEnv* env, } extern "C" JNIEXPORT jint JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getProblemCategory(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getProblemCategory(JNIEnv* env, jclass, jlong handle) { @@ -1278,7 +1193,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getProblemCategory(JNIEnv* e } extern "C" JNIEXPORT jobjectArray JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getQuadraticConstraints(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getQuadraticConstraints(JNIEnv* env, jclass, jlong handle) { @@ -1304,7 +1219,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getQuadraticConstraints(JNIE } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_clearQuadraticConstraints(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_clearQuadraticConstraints(JNIEnv* env, jclass, jlong handle) { @@ -1317,7 +1232,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_clearQuadraticConstraints(JN #define DEFINE_DOUBLE_PROBLEM_GETTER(JAVA_NAME, C_NAME, COUNT_EXPR) \ extern "C" JNIEXPORT jdoubleArray JNICALL \ - Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_##JAVA_NAME( \ + Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_##JAVA_NAME( \ JNIEnv* env, jclass, jlong handle) \ { \ const int count = (COUNT_EXPR); \ @@ -1328,7 +1243,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_clearQuadraticConstraints(JN #define DEFINE_BYTE_PROBLEM_GETTER(JAVA_NAME, C_NAME, COUNT_EXPR) \ extern "C" JNIEXPORT jbyteArray JNICALL \ - Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_##JAVA_NAME( \ + Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_##JAVA_NAME( \ JNIEnv* env, jclass, jlong handle) \ { \ const int count = (COUNT_EXPR); \ @@ -1337,12 +1252,12 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_clearQuadraticConstraints(JN return to_byte_array(env, values); \ } -DEFINE_DOUBLE_PROBLEM_GETTER(getConstraintRhs, +DEFINE_DOUBLE_PROBLEM_GETTER(getConstraintRHS, cuOptGetConstraintRightHandSide, - Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getNumConstraints(env, nullptr, handle)) + Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getNumConstraints(env, nullptr, handle)) extern "C" JNIEXPORT jdoubleArray JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getConstraintLowerBounds(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getConstraintLowerBounds(JNIEnv* env, jclass, jlong handle) { @@ -1356,7 +1271,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getConstraintLowerBounds(JNI } extern "C" JNIEXPORT jdoubleArray JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getConstraintUpperBounds(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getConstraintUpperBounds(JNIEnv* env, jclass, jlong handle) { @@ -1370,7 +1285,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getConstraintUpperBounds(JNI } extern "C" JNIEXPORT jdoubleArray JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getVariableLowerBounds(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getVariableLowerBounds(JNIEnv* env, jclass, jlong handle) { @@ -1384,7 +1299,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getVariableLowerBounds(JNIEn } extern "C" JNIEXPORT jdoubleArray JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getVariableUpperBounds(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getVariableUpperBounds(JNIEnv* env, jclass, jlong handle) { @@ -1399,16 +1314,16 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getVariableUpperBounds(JNIEn DEFINE_BYTE_PROBLEM_GETTER(getConstraintSense, cuOptGetConstraintSense, - Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getNumConstraints(env, nullptr, handle)) + Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getNumConstraints(env, nullptr, handle)) DEFINE_BYTE_PROBLEM_GETTER(getVariableTypes, cuOptGetVariableTypes, - Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getNumVariables(env, nullptr, handle)) + Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getNumVariables(env, nullptr, handle)) #undef DEFINE_DOUBLE_PROBLEM_GETTER #undef DEFINE_BYTE_PROBLEM_GETTER extern "C" JNIEXPORT jboolean JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_isMip(JNIEnv* env, jclass, jlong handle) +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_isMIP(JNIEnv* env, jclass, jlong handle) { cuopt_int_t value = 0; check_status(env, cuOptIsMIP(to_problem(handle), &value), "cuOptIsMIP"); @@ -1416,7 +1331,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_isMip(JNIEnv* env, jclass, j } extern "C" JNIEXPORT jlong JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_solve(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_solve(JNIEnv* env, jclass, jlong problem_handle, jlong settings_handle) @@ -1470,7 +1385,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_solve(JNIEnv* env, } extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_destroySolution(JNIEnv*, jclass, jlong handle) +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_destroySolution(JNIEnv*, jclass, jlong handle) { if (handle == 0) { return; } cuOptSolution solution = to_solution(handle); @@ -1478,7 +1393,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_destroySolution(JNIEnv*, jcl } extern "C" JNIEXPORT jboolean JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_solutionIsMip(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_solutionIsMIP(JNIEnv* env, jclass, jlong handle) { @@ -1488,7 +1403,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_solutionIsMip(JNIEnv* env, } extern "C" JNIEXPORT jint JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getTerminationStatus(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getTerminationStatus(JNIEnv* env, jclass, jlong handle) { @@ -1498,7 +1413,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getTerminationStatus(JNIEnv* } extern "C" JNIEXPORT jint JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getErrorStatus(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getErrorStatus(JNIEnv* env, jclass, jlong handle) { @@ -1508,7 +1423,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getErrorStatus(JNIEnv* env, } extern "C" JNIEXPORT jstring JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getErrorString(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getErrorString(JNIEnv* env, jclass, jlong handle) { @@ -1520,7 +1435,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getErrorString(JNIEnv* env, } extern "C" JNIEXPORT jdoubleArray JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getPrimalSolution(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getPrimalSolution(JNIEnv* env, jclass, jlong handle, jint size) @@ -1533,7 +1448,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getPrimalSolution(JNIEnv* en } extern "C" JNIEXPORT jint JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getDualSolutionSize(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getDualSolutionSize(JNIEnv* env, jclass, jlong handle) { @@ -1543,7 +1458,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getDualSolutionSize(JNIEnv* } extern "C" JNIEXPORT jdoubleArray JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getDualSolution(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getDualSolution(JNIEnv* env, jclass, jlong handle, jint) @@ -1560,7 +1475,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getDualSolution(JNIEnv* env, } extern "C" JNIEXPORT jdoubleArray JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getReducedCosts(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getReducedCosts(JNIEnv* env, jclass, jlong handle, jint) @@ -1577,7 +1492,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getReducedCosts(JNIEnv* env, } extern "C" JNIEXPORT jdouble JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getObjectiveValue(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getObjectiveValue(JNIEnv* env, jclass, jlong handle) { @@ -1587,7 +1502,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getObjectiveValue(JNIEnv* en } extern "C" JNIEXPORT jdouble JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getDualObjectiveValue(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getDualObjectiveValue(JNIEnv* env, jclass, jlong handle) { @@ -1603,7 +1518,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getDualObjectiveValue(JNIEnv } extern "C" JNIEXPORT jdouble JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getSolveTime(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getSolveTime(JNIEnv* env, jclass, jlong handle) { @@ -1613,7 +1528,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getSolveTime(JNIEnv* env, } extern "C" JNIEXPORT jdouble JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getMipGap(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getMIPGap(JNIEnv* env, jclass, jlong handle) { @@ -1623,7 +1538,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getMipGap(JNIEnv* env, } extern "C" JNIEXPORT jdouble JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getSolutionBound(JNIEnv* env, +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getSolutionBound(JNIEnv* env, jclass, jlong handle) { @@ -1633,7 +1548,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getSolutionBound(JNIEnv* env } extern "C" JNIEXPORT jdoubleArray JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getLpStats(JNIEnv* env, jclass, jlong handle) +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getLPStats(JNIEnv* env, jclass, jlong handle) { cuopt_float_t primal = 0; cuopt_float_t dual = 0; @@ -1649,7 +1564,7 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getLpStats(JNIEnv* env, jcla } extern "C" JNIEXPORT jdoubleArray JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getMipStats(JNIEnv* env, jclass, jlong handle) +Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getMIPStats(JNIEnv* env, jclass, jlong handle) { cuopt_float_t presolve = 0; cuopt_float_t max_constraint = 0; @@ -1665,61 +1580,3 @@ Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getMipStats(JNIEnv* env, jcl } return to_double_array(env, {presolve, max_constraint, max_int, max_bound, static_cast(nodes), static_cast(simplex)}); } - -extern "C" JNIEXPORT jboolean JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_hasPdlpWarmStartData(JNIEnv* env, - jclass, - jlong handle) -{ - cuopt_int_t value = 0; - check_status(env, cuOptHasPDLPWarmStartData(to_solution(handle), &value), "cuOptHasPDLPWarmStartData"); - return static_cast(value != 0); -} - -extern "C" JNIEXPORT jdoubleArray JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getPdlpWarmStartVector(JNIEnv* env, - jclass, - jlong handle, - jint field_id) -{ - cuopt_int_t size = 0; - if (!check_status(env, - cuOptGetPDLPWarmStartVectorSize(to_solution(handle), field_id, &size), - "cuOptGetPDLPWarmStartVectorSize")) { - return nullptr; - } - std::vector values(static_cast(size)); - if (size > 0 && - !check_status(env, - cuOptGetPDLPWarmStartVector(to_solution(handle), field_id, values.data()), - "cuOptGetPDLPWarmStartVector")) { - return nullptr; - } - return to_double_array(env, values); -} - -extern "C" JNIEXPORT jdouble JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getPdlpWarmStartScalar(JNIEnv* env, - jclass, - jlong handle, - jint field_id) -{ - cuopt_float_t value = 0; - check_status(env, - cuOptGetPDLPWarmStartScalar(to_solution(handle), field_id, &value), - "cuOptGetPDLPWarmStartScalar"); - return value; -} - -extern "C" JNIEXPORT jint JNICALL -Java_com_nvidia_cuopt_linearprogramming_NativeCuOpt_getPdlpWarmStartInteger(JNIEnv* env, - jclass, - jlong handle, - jint field_id) -{ - cuopt_int_t value = 0; - check_status(env, - cuOptGetPDLPWarmStartInteger(to_solution(handle), field_id, &value), - "cuOptGetPDLPWarmStartInteger"); - return value; -} diff --git a/java/cuopt/src/test/java/com/nvidia/cuopt/linearprogramming/PythonParityTest.java b/java/cuopt/src/test/java/com/nvidia/cuopt/linearprogramming/PythonParityTest.java deleted file mode 100644 index 0177d1aece..0000000000 --- a/java/cuopt/src/test/java/com/nvidia/cuopt/linearprogramming/PythonParityTest.java +++ /dev/null @@ -1,1367 +0,0 @@ -/* - * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. - * SPDX-License-Identifier: Apache-2.0 - */ -package com.nvidia.cuopt.linearprogramming; - -import static org.junit.jupiter.api.Assertions.assertArrayEquals; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import java.io.IOException; -import java.net.URISyntaxException; -import java.net.URL; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Stream; -import org.junit.jupiter.api.Assumptions; -import org.junit.jupiter.api.DynamicTest; -import org.junit.jupiter.api.TestFactory; - -final class PythonParityTest { - private static final double MODEL_TOLERANCE = 0.0; - private static final double SOLVE_TOLERANCE = 1.0e-4; - private static ProcessResult pythonProbe; - - @TestFactory - Stream pythonAndJavaBindingsMatch() { - return cases().stream() - .map( - testCase -> - DynamicTest.dynamicTest(testCase.name, () -> assertMatchesPython(testCase))); - } - - private static void assertMatchesPython(CaseSpec testCase) - throws IOException, InterruptedException, URISyntaxException { - assumeNativeLibrary(); - assumeCudaDriverAvailable(); - assumePythonCuOptAvailable(); - - PythonResult pythonResult = runPython(testCase); - try (DataModel model = testCase.createDataModel()) { - assertModelMatchesPython(testCase, model, pythonResult); - - try (SolverSettings settings = createSettings(testCase); - Solution solution = model.solve(settings)) { - JavaResult javaResult = JavaResult.from(solution); - assertSolutionMatchesPython(testCase, javaResult, pythonResult); - } - } - } - - private static void assertModelMatchesPython( - CaseSpec testCase, DataModel javaModel, PythonResult pythonResult) { - assertEquals( - javaModel.getNumVariables(), - pythonResult.intValue("model.num_variables"), - testCase.name + " num variables"); - assertEquals( - javaModel.getNumConstraints(), - pythonResult.intValue("model.num_constraints"), - testCase.name + " num constraints"); - assertEquals( - javaModel.getNumNonZeros(), - pythonResult.intValue("model.num_nonzeros"), - testCase.name + " num nonzeros"); - assertEquals( - javaModel.getObjectiveSense().nativeValue(), - pythonResult.intValue("model.objective_sense"), - testCase.name + " objective sense"); - assertEquals( - javaModel.getObjectiveOffset(), - pythonResult.doubleValue("model.objective_offset"), - MODEL_TOLERANCE, - testCase.name + " objective offset"); - assertEquals( - javaModel.getObjectiveScalingFactor(), - pythonResult.doubleValue("model.objective_scaling_factor"), - MODEL_TOLERANCE, - testCase.name + " objective scaling factor"); - assertDoubleArrayEquals( - testCase.name + " objective coefficients", - javaModel.getObjectiveCoefficients(), - pythonResult.doubleArray("model.objective_coefficients"), - MODEL_TOLERANCE); - - CsrMatrix matrix = javaModel.getConstraintMatrix(); - assertDoubleArrayEquals( - testCase.name + " CSR values", - matrix.getValues(), - pythonResult.doubleArray("model.csr_values"), - MODEL_TOLERANCE); - assertArrayEquals( - matrix.getColumnIndices(), - pythonResult.intArray("model.csr_column_indices"), - testCase.name + " CSR column indices"); - assertArrayEquals( - matrix.getRowOffsets(), - pythonResult.intArray("model.csr_row_offsets"), - testCase.name + " CSR row offsets"); - - assertDoubleArrayEquals( - testCase.name + " variable lower bounds", - javaModel.getVariableLowerBounds(), - pythonResult.doubleArray("model.variable_lower_bounds"), - MODEL_TOLERANCE); - assertDoubleArrayEquals( - testCase.name + " variable upper bounds", - javaModel.getVariableUpperBounds(), - pythonResult.doubleArray("model.variable_upper_bounds"), - MODEL_TOLERANCE); - assertEquals( - byteArrayAsCsv(javaModel.getVariableTypes()), - pythonResult.stringValue("model.variable_types"), - testCase.name + " variable types"); - assertEquals( - stringArrayAsCsv(javaModel.getVariableNames()), - pythonResult.stringValue("model.variable_names"), - testCase.name + " variable names"); - assertEquals( - stringArrayAsCsv(javaModel.getRowNames()), - pythonResult.stringValue("model.row_names"), - testCase.name + " row names"); - assertEquals( - javaModel.getObjectiveName(), - pythonResult.stringValue("model.objective_name"), - testCase.name + " objective name"); - assertEquals( - javaModel.getProblemName(), - pythonResult.stringValue("model.problem_name"), - testCase.name + " problem name"); - - if (testCase.hasQuadraticObjective()) { - assertDoubleArrayEquals( - testCase.name + " quadratic objective values", - javaModel.getQuadraticObjectiveValues(), - pythonResult.doubleArray("model.quadratic_objective_values"), - MODEL_TOLERANCE); - assertArrayEquals( - javaModel.getQuadraticObjectiveIndices(), - pythonResult.intArray("model.quadratic_objective_column_indices"), - testCase.name + " quadratic objective column indices"); - assertArrayEquals( - javaModel.getQuadraticObjectiveOffsets(), - pythonResult.intArray("model.quadratic_objective_row_offsets"), - testCase.name + " quadratic objective row offsets"); - } - - List quadraticConstraints = javaModel.getQuadraticConstraints(); - assertEquals( - quadraticConstraints.size(), - pythonResult.intValue("model.quadratic_constraint_count"), - testCase.name + " quadratic constraint count"); - for (int i = 0; i < quadraticConstraints.size(); i++) { - QuadraticConstraint constraint = quadraticConstraints.get(i); - String prefix = "model.quadratic_constraint." + i; - assertEquals( - constraint.getRowIndex(), - pythonResult.intValue(prefix + ".row_index"), - testCase.name + " quadratic constraint row index"); - assertEquals( - constraint.getRowName(), - pythonResult.stringValue(prefix + ".row_name"), - testCase.name + " quadratic constraint row name"); - assertEquals( - (char) constraint.getSense().nativeValue(), - pythonResult.stringValue(prefix + ".sense").charAt(0), - testCase.name + " quadratic constraint sense"); - assertDoubleArrayEquals( - testCase.name + " quadratic constraint linear values", - constraint.getLinearValues(), - pythonResult.doubleArray(prefix + ".linear_values"), - MODEL_TOLERANCE); - assertArrayEquals( - constraint.getLinearIndices(), - pythonResult.intArray(prefix + ".linear_indices"), - testCase.name + " quadratic constraint linear indices"); - assertDoubleEquals( - testCase.name + " quadratic constraint rhs", - constraint.getRHS(), - pythonResult.doubleValue(prefix + ".rhs"), - MODEL_TOLERANCE); - assertArrayEquals( - constraint.getRows(), - pythonResult.intArray(prefix + ".rows"), - testCase.name + " quadratic constraint rows"); - assertArrayEquals( - constraint.getColumns(), - pythonResult.intArray(prefix + ".columns"), - testCase.name + " quadratic constraint columns"); - assertDoubleArrayEquals( - testCase.name + " quadratic constraint values", - constraint.getValues(), - pythonResult.doubleArray(prefix + ".values"), - MODEL_TOLERANCE); - } - - if (testCase.isRanged()) { - assertDoubleArrayEquals( - testCase.name + " constraint lower bounds", - javaModel.getConstraintLowerBounds(), - pythonResult.doubleArray("model.constraint_lower_bounds"), - MODEL_TOLERANCE); - assertDoubleArrayEquals( - testCase.name + " constraint upper bounds", - javaModel.getConstraintUpperBounds(), - pythonResult.doubleArray("model.constraint_upper_bounds"), - MODEL_TOLERANCE); - } else { - assertDoubleArrayEquals( - testCase.name + " rhs", - javaModel.getConstraintRhs(), - pythonResult.doubleArray("model.rhs"), - MODEL_TOLERANCE); - assertEquals( - byteArrayAsCsv(javaModel.getConstraintSense()), - pythonResult.stringValue("model.constraint_sense"), - testCase.name + " constraint sense"); - } - } - - private static void assertSolutionMatchesPython( - CaseSpec testCase, JavaResult javaResult, PythonResult pythonResult) { - assertEquals( - javaResult.isMip, - pythonResult.booleanValue("solution.is_mip"), - testCase.name + " solution category"); - assertEquals( - javaResult.status.nativeValue(), - pythonResult.intValue("solution.status"), - testCase.name + " termination status"); - assertEquals( - javaResult.errorStatus, - pythonResult.intValue("solution.error_status"), - testCase.name + " error status"); - assertEquals( - javaResult.errorMessage, - pythonResult.stringValue("solution.error_message"), - testCase.name + " error message"); - assertNonNegativeIfAvailable(testCase.name + " Java solve time", javaResult.solveTime); - assertNonNegativeIfAvailable( - testCase.name + " Python solve time", pythonResult.doubleValue("solution.solve_time")); - assertEquals( - javaResult.dualUnavailable, - pythonResult.booleanValue("solution.dual_unavailable"), - testCase.name + " dual availability"); - assertEquals( - javaResult.dualObjectiveUnavailable, - pythonResult.booleanValue("solution.dual_objective_unavailable"), - testCase.name + " dual objective availability"); - assertEquals( - javaResult.reducedCostUnavailable, - pythonResult.booleanValue("solution.reduced_cost_unavailable"), - testCase.name + " reduced-cost availability"); - assertEquals( - javaResult.lpStatsUnavailable, - pythonResult.booleanValue("solution.lp_stats_unavailable"), - testCase.name + " LP stats availability"); - assertEquals( - javaResult.mipStatsUnavailable, - pythonResult.booleanValue("solution.mip_stats_unavailable"), - testCase.name + " MIP stats availability"); - - if (!testCase.expectSolutionValues) { - return; - } - - assertDoubleArrayEquals( - testCase.name + " primal solution", - javaResult.primal, - pythonResult.doubleArray("solution.primal"), - testCase.solutionTolerance); - assertDoubleEquals( - testCase.name + " objective", - javaResult.objective, - pythonResult.doubleValue("solution.objective"), - testCase.solutionTolerance); - - if (!javaResult.dualUnavailable) { - assertDoubleArrayEquals( - testCase.name + " dual solution", - javaResult.dual, - pythonResult.doubleArray("solution.dual"), - testCase.solutionTolerance); - } - if (!javaResult.dualObjectiveUnavailable) { - assertDoubleEquals( - testCase.name + " dual objective", - javaResult.dualObjective, - pythonResult.doubleValue("solution.dual_objective"), - testCase.solutionTolerance); - } - if (!javaResult.reducedCostUnavailable) { - assertDoubleArrayEquals( - testCase.name + " reduced cost", - javaResult.reducedCost, - pythonResult.doubleArray("solution.reduced_cost"), - testCase.solutionTolerance); - } - if (!javaResult.lpStatsUnavailable) { - assertDoubleEquals( - testCase.name + " LP primal residual", - javaResult.lpPrimalResidual, - pythonResult.doubleValue("solution.lp_primal_residual"), - testCase.solutionTolerance); - assertDoubleEquals( - testCase.name + " LP dual residual", - javaResult.lpDualResidual, - pythonResult.doubleValue("solution.lp_dual_residual"), - testCase.solutionTolerance); - assertDoubleEquals( - testCase.name + " LP gap", - javaResult.lpGap, - pythonResult.doubleValue("solution.lp_gap"), - testCase.solutionTolerance); - assertEquals( - javaResult.lpIterations, - pythonResult.intValue("solution.lp_iterations"), - testCase.name + " LP iterations"); - assertEquals( - javaResult.lpSolvedBy, - pythonResult.intValue("solution.solved_by"), - testCase.name + " LP solved-by method"); - } - if (!javaResult.mipStatsUnavailable) { - assertDoubleEquals( - testCase.name + " MIP gap", - javaResult.mipGap, - pythonResult.doubleValue("solution.mip_gap"), - testCase.solutionTolerance); - assertDoubleEquals( - testCase.name + " solution bound", - javaResult.solutionBound, - pythonResult.doubleValue("solution.solution_bound"), - testCase.solutionTolerance); - assertNonNegativeIfAvailable( - testCase.name + " Java MIP presolve time", javaResult.mipPresolveTime); - assertNonNegativeIfAvailable( - testCase.name + " Python MIP presolve time", - pythonResult.doubleValue("solution.mip_presolve_time")); - assertDoubleEquals( - testCase.name + " max constraint violation", - javaResult.maxConstraintViolation, - pythonResult.doubleValue("solution.max_constraint_violation"), - testCase.solutionTolerance); - assertDoubleEquals( - testCase.name + " max integer violation", - javaResult.maxIntViolation, - pythonResult.doubleValue("solution.max_int_violation"), - testCase.solutionTolerance); - assertDoubleEquals( - testCase.name + " max variable bound violation", - javaResult.maxVariableBoundViolation, - pythonResult.doubleValue("solution.max_variable_bound_violation"), - testCase.solutionTolerance); - assertEquals( - javaResult.numNodes, - pythonResult.intValue("solution.num_nodes"), - testCase.name + " MIP node count"); - assertEquals( - javaResult.numSimplexIterations, - pythonResult.intValue("solution.num_simplex_iterations"), - testCase.name + " MIP simplex iterations"); - } - } - - private static SolverSettings createSettings(CaseSpec testCase) { - SolverSettings settings = new SolverSettings(); - settings.setParameter(CuOptConstants.CUOPT_LOG_TO_CONSOLE, false); - settings.setParameter(CuOptConstants.CUOPT_TIME_LIMIT, 30.0); - settings.setParameter(CuOptConstants.CUOPT_RANDOM_SEED, 1); - if (testCase.hasIntegerVariables()) { - settings.setParameter( - CuOptConstants.CUOPT_MIP_DETERMINISM_MODE, CuOptConstants.CUOPT_MODE_DETERMINISTIC); - settings.setParameter(CuOptConstants.CUOPT_MIP_ABSOLUTE_GAP, 1.0e-8); - settings.setParameter(CuOptConstants.CUOPT_MIP_RELATIVE_GAP, 1.0e-8); - } else if (testCase.hasQuadraticObjective()) { - settings.setParameter(CuOptConstants.CUOPT_ITERATION_LIMIT, 50); - } else { - settings.setMethod(SolverMethod.PDLP); - settings.setPdlpSolverMode(PDLPSolverMode.STABLE1); - settings.setParameter(CuOptConstants.CUOPT_ABSOLUTE_PRIMAL_TOLERANCE, 1.0e-7); - settings.setParameter(CuOptConstants.CUOPT_RELATIVE_PRIMAL_TOLERANCE, 1.0e-7); - settings.setParameter(CuOptConstants.CUOPT_ABSOLUTE_DUAL_TOLERANCE, 1.0e-7); - settings.setParameter(CuOptConstants.CUOPT_RELATIVE_DUAL_TOLERANCE, 1.0e-7); - settings.setParameter(CuOptConstants.CUOPT_ABSOLUTE_GAP_TOLERANCE, 1.0e-7); - settings.setParameter(CuOptConstants.CUOPT_RELATIVE_GAP_TOLERANCE, 1.0e-7); - } - return settings; - } - - private static PythonResult runPython(CaseSpec testCase) - throws IOException, InterruptedException, URISyntaxException { - Path caseFile = Files.createTempFile("cuopt-java-python-parity-", ".json"); - try { - Files.writeString(caseFile, testCase.toJson(), StandardCharsets.UTF_8); - ProcessResult result = - runPythonProcess(List.of(pythonHelperPath().toString(), caseFile.toString())); - assertEquals(0, result.exitCode, "Python oracle failed:\n" + result.output); - return new PythonResult(result.output); - } finally { - Files.deleteIfExists(caseFile); - } - } - - private static void assumeNativeLibrary() { - String nativeDir = System.getProperty("cuopt.native.dir"); - Assumptions.assumeTrue(nativeDir != null && !nativeDir.isBlank(), "cuopt.native.dir is unset"); - Assumptions.assumeTrue( - Files.exists(Path.of(nativeDir, System.mapLibraryName("cuopt_jni"))), - "libcuopt_jni is not built"); - } - - private static void assumeCudaDriverAvailable() { - try { - Process process = new ProcessBuilder("nvidia-smi").redirectErrorStream(true).start(); - boolean exited = process.waitFor() == 0; - Assumptions.assumeTrue(exited, "CUDA driver is unavailable"); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - Assumptions.assumeTrue(false, "CUDA driver check was interrupted"); - } catch (Exception e) { - Assumptions.assumeTrue(false, "CUDA driver check failed: " + e.getMessage()); - } - } - - private static void assumePythonCuOptAvailable() - throws IOException, InterruptedException, URISyntaxException { - if (pythonProbe == null) { - pythonProbe = runPythonProcess(List.of(pythonHelperPath().toString(), "--probe")); - } - Assumptions.assumeTrue( - pythonProbe.exitCode == 0, "Python cuOpt import failed:\n" + pythonProbe.output); - } - - private static ProcessResult runPythonProcess(List arguments) - throws IOException, InterruptedException { - List command = new ArrayList<>(); - command.add(pythonExecutable()); - command.addAll(arguments); - ProcessBuilder builder = new ProcessBuilder(command); - builder.redirectErrorStream(true); - builder.environment().put("CUOPT_EXTRA_TIMESTAMPS", "false"); - Process process = builder.start(); - String output = new String(process.getInputStream().readAllBytes(), StandardCharsets.UTF_8); - int exitCode = process.waitFor(); - return new ProcessResult(exitCode, output); - } - - private static String pythonExecutable() { - String property = System.getProperty("cuopt.python"); - if (property != null && !property.isBlank()) { - return property; - } - String environment = System.getenv("PYTHON"); - if (environment != null && !environment.isBlank()) { - return environment; - } - return "python3"; - } - - private static Path pythonHelperPath() throws URISyntaxException { - URL resource = PythonParityTest.class.getResource("/python_binding_parity.py"); - assertNotNull(resource, "python_binding_parity.py test resource is missing"); - return Path.of(resource.toURI()); - } - - private static void assertDoubleArrayEquals( - String message, double[] actual, double[] expected, double tolerance) { - assertEquals(expected.length, actual.length, message + " length"); - for (int i = 0; i < expected.length; i++) { - assertDoubleEquals(message + "[" + i + "]", actual[i], expected[i], tolerance); - } - } - - private static void assertDoubleEquals( - String message, double actual, double expected, double tolerance) { - if (Double.isNaN(actual) || Double.isNaN(expected)) { - assertTrue( - Double.isNaN(actual) && Double.isNaN(expected), - message + " expected both values to be NaN, actual=" + actual + ", expected=" + expected); - return; - } - if (Double.isInfinite(actual) || Double.isInfinite(expected)) { - assertTrue( - Double.compare(actual, expected) == 0, - message + " expected matching infinities, actual=" + actual + ", expected=" + expected); - return; - } - assertEquals(expected, actual, tolerance, message); - } - - private static void assertNonNegativeIfAvailable(String message, double value) { - assertTrue( - Double.isNaN(value) || value >= 0.0, - message + " should be NaN when unavailable or non-negative when available"); - } - - private static String byteArrayAsCsv(byte[] values) { - StringBuilder builder = new StringBuilder(); - for (int i = 0; i < values.length; i++) { - if (i > 0) { - builder.append(','); - } - builder.append((char) values[i]); - } - return builder.toString(); - } - - private static String stringArrayAsCsv(String[] values) { - return String.join(",", values); - } - - private static List cases() { - return List.of( - new CaseSpec( - "lp_min_ge_unique_solution", - 1, - 2, - ObjectiveSense.MINIMIZE, - 0.25, - new double[] {1.0, 2.0}, - new int[] {0, 2}, - new int[] {0, 1}, - new double[] {1.0, 1.0}, - new byte[] {(byte) 'G'}, - new double[] {3.0}, - null, - null, - new double[] {0.0, 0.0}, - new double[] {10.0, 10.0}, - new byte[] {(byte) 'C', (byte) 'C'}, - true, - SOLVE_TOLERANCE), - new CaseSpec( - "lp_max_le_unique_solution", - 3, - 2, - ObjectiveSense.MAXIMIZE, - -1.0, - new double[] {3.0, 2.0}, - new int[] {0, 2, 3, 4}, - new int[] {0, 1, 0, 1}, - new double[] {1.0, 1.0, 1.0, 1.0}, - new byte[] {(byte) 'L', (byte) 'L', (byte) 'L'}, - new double[] {4.0, 2.0, 3.0}, - null, - null, - new double[] {0.0, 0.0}, - new double[] {10.0, 10.0}, - new byte[] {(byte) 'C', (byte) 'C'}, - true, - SOLVE_TOLERANCE), - new CaseSpec( - "lp_equal_with_offset", - 1, - 2, - ObjectiveSense.MINIMIZE, - 7.0, - new double[] {0.0, 1.0}, - new int[] {0, 2}, - new int[] {0, 1}, - new double[] {1.0, 1.0}, - new byte[] {(byte) 'E'}, - new double[] {5.0}, - null, - null, - new double[] {0.0, 0.0}, - new double[] {5.0, 5.0}, - new byte[] {(byte) 'C', (byte) 'C'}, - true, - SOLVE_TOLERANCE), - new CaseSpec( - "lp_ranged_bounds", - 2, - 2, - ObjectiveSense.MINIMIZE, - 0.0, - new double[] {0.2, 1.0}, - new int[] {0, 2, 4}, - new int[] {0, 1, 0, 1}, - new double[] {1.0, 1.0, 2.0, 1.0}, - null, - null, - new double[] {1.0, 2.0}, - new double[] {3.0, 4.0}, - new double[] {0.0, 0.0}, - new double[] {10.0, 10.0}, - new byte[] {(byte) 'C', (byte) 'C'}, - true, - SOLVE_TOLERANCE), - new CaseSpec( - "lp_mixed_bounds_negative_coefficients", - 1, - 2, - ObjectiveSense.MINIMIZE, - -2.0, - new double[] {-1.0, 2.0}, - new int[] {0, 2}, - new int[] {0, 1}, - new double[] {1.0, 1.0}, - new byte[] {(byte) 'E'}, - new double[] {1.0}, - null, - null, - new double[] {-2.0, -1.0}, - new double[] {2.0, 3.0}, - new byte[] {(byte) 'C', (byte) 'C'}, - true, - SOLVE_TOLERANCE), - new CaseSpec( - "lp_max_ranged_bounds", - 1, - 2, - ObjectiveSense.MAXIMIZE, - 0.0, - new double[] {2.0, 1.0}, - new int[] {0, 2}, - new int[] {0, 1}, - new double[] {1.0, 1.0}, - null, - null, - new double[] {0.0}, - new double[] {3.0}, - new double[] {0.0, 0.0}, - new double[] {2.0, 2.0}, - new byte[] {(byte) 'C', (byte) 'C'}, - true, - SOLVE_TOLERANCE), - new CaseSpec( - "milp_integer_unique_solution", - 1, - 2, - ObjectiveSense.MINIMIZE, - 0.0, - new double[] {1.0, 2.0}, - new int[] {0, 2}, - new int[] {0, 1}, - new double[] {1.0, 1.0}, - new byte[] {(byte) 'G'}, - new double[] {2.5}, - null, - null, - new double[] {0.0, 0.0}, - new double[] {10.0, 10.0}, - new byte[] {(byte) 'I', (byte) 'I'}, - true, - SOLVE_TOLERANCE), - new CaseSpec( - "milp_mixed_integer_continuous_max", - 1, - 2, - ObjectiveSense.MAXIMIZE, - 0.0, - new double[] {5.0, 1.0}, - new int[] {0, 2}, - new int[] {0, 1}, - new double[] {1.0, 1.0}, - new byte[] {(byte) 'L'}, - new double[] {2.5}, - null, - null, - new double[] {0.0, 0.0}, - new double[] {3.0, 10.0}, - new byte[] {(byte) 'I', (byte) 'C'}, - true, - SOLVE_TOLERANCE), - new CaseSpec( - "qp_diagonal_objective", - 1, - 2, - ObjectiveSense.MINIMIZE, - 0.0, - new double[] {-8.0, -16.0}, - new int[] {0, 2}, - new int[] {0, 1}, - new double[] {1.0, 1.0}, - null, - null, - new double[] {5.0}, - new double[] {1.0e20}, - new double[] {0.0, 0.0}, - new double[] {10.0, 10.0}, - new byte[] {(byte) 'C', (byte) 'C'}, - true, - 1.0e-3) - .withQuadraticObjective( - new int[] {0, 1, 2}, new int[] {0, 1}, new double[] {1.0, 4.0}) - .withMetadata( - 2.0, - new String[] {"x0", "long_variable_1"}, - new String[] {"constraint_0"}, - "qp_objective", - "qp_model") - .withQuadraticConstraint( - "qc0", - (byte) 'L', - 100.0, - new double[] {1.0}, - new int[] {0}, - new double[] {1.0}, - new int[] {0}, - new int[] {0}), - new CaseSpec( - "lp_infeasible_status", - 2, - 1, - ObjectiveSense.MINIMIZE, - 0.0, - new double[] {1.0}, - new int[] {0, 1, 2}, - new int[] {0, 0}, - new double[] {1.0, 1.0}, - new byte[] {(byte) 'G', (byte) 'L'}, - new double[] {1.0, 0.0}, - null, - null, - new double[] {0.0}, - new double[] {10.0}, - new byte[] {(byte) 'C'}, - false, - SOLVE_TOLERANCE)); - } - - private static final class CaseSpec { - private final String name; - private final int numConstraints; - private final int numVariables; - private final ObjectiveSense objectiveSense; - private final double objectiveOffset; - private final double[] objectiveCoefficients; - private final int[] rowOffsets; - private final int[] columnIndices; - private final double[] values; - private final byte[] constraintSense; - private final double[] rhs; - private final double[] constraintLowerBounds; - private final double[] constraintUpperBounds; - private final double[] variableLowerBounds; - private final double[] variableUpperBounds; - private final byte[] variableTypes; - private final boolean expectSolutionValues; - private final double solutionTolerance; - private double objectiveScalingFactor = 1.0; - private String[] variableNames = new String[0]; - private String[] rowNames = new String[0]; - private String objectiveName = ""; - private String problemName = ""; - private String quadraticConstraintName; - private byte quadraticConstraintSense; - private double quadraticConstraintRhs; - private double[] quadraticConstraintLinearValues; - private int[] quadraticConstraintLinearIndices; - private double[] quadraticConstraintValues; - private int[] quadraticConstraintRows; - private int[] quadraticConstraintColumns; - private int[] quadraticObjectiveRowOffsets; - private int[] quadraticObjectiveColumnIndices; - private double[] quadraticObjectiveValues; - - private CaseSpec( - String name, - int numConstraints, - int numVariables, - ObjectiveSense objectiveSense, - double objectiveOffset, - double[] objectiveCoefficients, - int[] rowOffsets, - int[] columnIndices, - double[] values, - byte[] constraintSense, - double[] rhs, - double[] constraintLowerBounds, - double[] constraintUpperBounds, - double[] variableLowerBounds, - double[] variableUpperBounds, - byte[] variableTypes, - boolean expectSolutionValues, - double solutionTolerance) { - this.name = name; - this.numConstraints = numConstraints; - this.numVariables = numVariables; - this.objectiveSense = objectiveSense; - this.objectiveOffset = objectiveOffset; - this.objectiveCoefficients = - Arrays.copyOf(objectiveCoefficients, objectiveCoefficients.length); - this.rowOffsets = Arrays.copyOf(rowOffsets, rowOffsets.length); - this.columnIndices = Arrays.copyOf(columnIndices, columnIndices.length); - this.values = Arrays.copyOf(values, values.length); - this.constraintSense = - constraintSense == null ? null : Arrays.copyOf(constraintSense, constraintSense.length); - this.rhs = rhs == null ? null : Arrays.copyOf(rhs, rhs.length); - this.constraintLowerBounds = - constraintLowerBounds == null - ? null - : Arrays.copyOf(constraintLowerBounds, constraintLowerBounds.length); - this.constraintUpperBounds = - constraintUpperBounds == null - ? null - : Arrays.copyOf(constraintUpperBounds, constraintUpperBounds.length); - this.variableLowerBounds = Arrays.copyOf(variableLowerBounds, variableLowerBounds.length); - this.variableUpperBounds = Arrays.copyOf(variableUpperBounds, variableUpperBounds.length); - this.variableTypes = Arrays.copyOf(variableTypes, variableTypes.length); - this.expectSolutionValues = expectSolutionValues; - this.solutionTolerance = solutionTolerance; - } - - private DataModel createDataModel() { - CsrMatrix matrix = new CsrMatrix(rowOffsets, columnIndices, values); - DataModel model; - if (isRanged()) { - model = - DataModel.createRangedProblem( - numConstraints, - numVariables, - objectiveSense, - objectiveOffset, - objectiveCoefficients, - matrix, - constraintLowerBounds, - constraintUpperBounds, - variableLowerBounds, - variableUpperBounds, - variableTypes); - } else { - model = - DataModel.createProblem( - numConstraints, - numVariables, - objectiveSense, - objectiveOffset, - objectiveCoefficients, - matrix, - constraintSense, - rhs, - variableLowerBounds, - variableUpperBounds, - variableTypes); - } - if (hasQuadraticObjective()) { - model.setQuadraticObjectiveMatrix( - quadraticObjectiveValues, - quadraticObjectiveColumnIndices, - quadraticObjectiveRowOffsets); - } - model - .setObjectiveScalingFactor(objectiveScalingFactor) - .setVariableNames(variableNames) - .setRowNames(rowNames) - .setObjectiveName(objectiveName) - .setProblemName(problemName); - if (hasQuadraticConstraint()) { - model.addQuadraticConstraint( - quadraticConstraintName, - quadraticConstraintLinearValues, - quadraticConstraintLinearIndices, - quadraticConstraintRhs, - quadraticConstraintValues, - quadraticConstraintRows, - quadraticConstraintColumns, - ConstraintSense.fromNative(quadraticConstraintSense)); - } - return model; - } - - private boolean isRanged() { - return constraintLowerBounds != null; - } - - private boolean hasQuadraticObjective() { - return quadraticObjectiveValues != null; - } - - private boolean hasQuadraticConstraint() { - return quadraticConstraintValues != null; - } - - private boolean hasIntegerVariables() { - for (byte type : variableTypes) { - if (type == (byte) 'I' || type == (byte) 'S') { - return true; - } - } - return false; - } - - private CaseSpec withQuadraticObjective( - int[] rowOffsets, int[] columnIndices, double[] values) { - this.quadraticObjectiveRowOffsets = Arrays.copyOf(rowOffsets, rowOffsets.length); - this.quadraticObjectiveColumnIndices = Arrays.copyOf(columnIndices, columnIndices.length); - this.quadraticObjectiveValues = Arrays.copyOf(values, values.length); - return this; - } - - private CaseSpec withMetadata( - double scalingFactor, - String[] variableNames, - String[] rowNames, - String objectiveName, - String problemName) { - this.objectiveScalingFactor = scalingFactor; - this.variableNames = Arrays.copyOf(variableNames, variableNames.length); - this.rowNames = Arrays.copyOf(rowNames, rowNames.length); - this.objectiveName = objectiveName; - this.problemName = problemName; - return this; - } - - private CaseSpec withQuadraticConstraint( - String name, - byte sense, - double rhs, - double[] linearValues, - int[] linearIndices, - double[] values, - int[] rows, - int[] columns) { - this.quadraticConstraintName = name; - this.quadraticConstraintSense = sense; - this.quadraticConstraintRhs = rhs; - this.quadraticConstraintLinearValues = Arrays.copyOf(linearValues, linearValues.length); - this.quadraticConstraintLinearIndices = Arrays.copyOf(linearIndices, linearIndices.length); - this.quadraticConstraintValues = Arrays.copyOf(values, values.length); - this.quadraticConstraintRows = Arrays.copyOf(rows, rows.length); - this.quadraticConstraintColumns = Arrays.copyOf(columns, columns.length); - return this; - } - - private QuadraticExpression createQuadraticObjective() { - Problem shell = new Problem(); - Variable[] variables = new Variable[numVariables]; - for (int i = 0; i < numVariables; i++) { - variables[i] = shell.addVariable(); - } - - QuadraticExpression expression = new QuadraticExpression(); - for (int row = 0; row < quadraticObjectiveRowOffsets.length - 1; row++) { - for (int offset = quadraticObjectiveRowOffsets[row]; - offset < quadraticObjectiveRowOffsets[row + 1]; - offset++) { - expression = - expression.plus( - variables[row], - variables[quadraticObjectiveColumnIndices[offset]], - quadraticObjectiveValues[offset]); - } - } - return expression; - } - - private String toJson() { - StringBuilder builder = new StringBuilder(); - builder.append('{'); - appendField(builder, "name", name); - appendField(builder, "num_constraints", numConstraints); - appendField(builder, "num_variables", numVariables); - appendField(builder, "objective_sense", objectiveSense.nativeValue()); - appendField(builder, "objective_offset", objectiveOffset); - appendField(builder, "objective_scaling_factor", objectiveScalingFactor); - appendField(builder, "objective_coefficients", objectiveCoefficients); - appendField(builder, "csr_row_offsets", rowOffsets); - appendField(builder, "csr_column_indices", columnIndices); - appendField(builder, "csr_values", values); - if (hasQuadraticObjective()) { - appendField(builder, "quadratic_objective_row_offsets", quadraticObjectiveRowOffsets); - appendField(builder, "quadratic_objective_column_indices", quadraticObjectiveColumnIndices); - appendField(builder, "quadratic_objective_values", quadraticObjectiveValues); - } - if (hasQuadraticConstraint()) { - appendField(builder, "quadratic_constraint_name", quadraticConstraintName); - appendField(builder, "quadratic_constraint_sense", String.valueOf((char) quadraticConstraintSense)); - appendField(builder, "quadratic_constraint_rhs", quadraticConstraintRhs); - appendField(builder, "quadratic_constraint_linear_values", quadraticConstraintLinearValues); - appendField(builder, "quadratic_constraint_linear_indices", quadraticConstraintLinearIndices); - appendField(builder, "quadratic_constraint_values", quadraticConstraintValues); - appendField(builder, "quadratic_constraint_rows", quadraticConstraintRows); - appendField(builder, "quadratic_constraint_columns", quadraticConstraintColumns); - } - if (isRanged()) { - appendField(builder, "constraint_lower_bounds", constraintLowerBounds); - appendField(builder, "constraint_upper_bounds", constraintUpperBounds); - } else { - appendField(builder, "constraint_sense", constraintSense); - appendField(builder, "rhs", rhs); - } - appendField(builder, "variable_lower_bounds", variableLowerBounds); - appendField(builder, "variable_upper_bounds", variableUpperBounds); - appendField(builder, "variable_types", variableTypes); - if (variableNames.length > 0) { - appendField(builder, "variable_names", variableNames); - } - if (rowNames.length > 0) { - appendField(builder, "row_names", rowNames); - } - if (!objectiveName.isEmpty()) { - appendField(builder, "objective_name", objectiveName); - } - if (!problemName.isEmpty()) { - appendField(builder, "problem_name", problemName); - } - builder.append('}'); - return builder.toString(); - } - } - - private static final class JavaResult { - private final boolean isMip; - private final TerminationStatus status; - private final int errorStatus; - private final String errorMessage; - private final double solveTime; - private final double objective; - private final double dualObjective; - private final double[] primal; - private final double[] dual; - private final double[] reducedCost; - private final boolean dualUnavailable; - private final boolean dualObjectiveUnavailable; - private final boolean reducedCostUnavailable; - private final boolean lpStatsUnavailable; - private final boolean mipStatsUnavailable; - private final double lpPrimalResidual; - private final double lpDualResidual; - private final double lpGap; - private final int lpIterations; - private final int lpSolvedBy; - private final double mipGap; - private final double solutionBound; - private final double mipPresolveTime; - private final double maxConstraintViolation; - private final double maxIntViolation; - private final double maxVariableBoundViolation; - private final int numNodes; - private final int numSimplexIterations; - - private JavaResult( - boolean isMip, - TerminationStatus status, - int errorStatus, - String errorMessage, - double solveTime, - double objective, - double dualObjective, - double[] primal, - double[] dual, - double[] reducedCost, - boolean dualUnavailable, - boolean dualObjectiveUnavailable, - boolean reducedCostUnavailable, - boolean lpStatsUnavailable, - boolean mipStatsUnavailable, - double lpPrimalResidual, - double lpDualResidual, - double lpGap, - int lpIterations, - int lpSolvedBy, - double mipGap, - double solutionBound, - double mipPresolveTime, - double maxConstraintViolation, - double maxIntViolation, - double maxVariableBoundViolation, - int numNodes, - int numSimplexIterations) { - this.isMip = isMip; - this.status = status; - this.errorStatus = errorStatus; - this.errorMessage = errorMessage; - this.solveTime = solveTime; - this.objective = objective; - this.dualObjective = dualObjective; - this.primal = Arrays.copyOf(primal, primal.length); - this.dual = Arrays.copyOf(dual, dual.length); - this.reducedCost = Arrays.copyOf(reducedCost, reducedCost.length); - this.dualUnavailable = dualUnavailable; - this.dualObjectiveUnavailable = dualObjectiveUnavailable; - this.reducedCostUnavailable = reducedCostUnavailable; - this.lpStatsUnavailable = lpStatsUnavailable; - this.mipStatsUnavailable = mipStatsUnavailable; - this.lpPrimalResidual = lpPrimalResidual; - this.lpDualResidual = lpDualResidual; - this.lpGap = lpGap; - this.lpIterations = lpIterations; - this.lpSolvedBy = lpSolvedBy; - this.mipGap = mipGap; - this.solutionBound = solutionBound; - this.mipPresolveTime = mipPresolveTime; - this.maxConstraintViolation = maxConstraintViolation; - this.maxIntViolation = maxIntViolation; - this.maxVariableBoundViolation = maxVariableBoundViolation; - this.numNodes = numNodes; - this.numSimplexIterations = numSimplexIterations; - } - - private static JavaResult from(Solution solution) { - boolean dualUnavailable = false; - boolean dualObjectiveUnavailable = false; - boolean reducedCostUnavailable = false; - boolean lpStatsUnavailable = false; - boolean mipStatsUnavailable = false; - double[] dual = new double[0]; - double[] reducedCost = new double[0]; - double dualObjective = 0.0; - double lpPrimalResidual = 0.0; - double lpDualResidual = 0.0; - double lpGap = 0.0; - int lpIterations = 0; - int lpSolvedBy = SolverMethod.UNSET.nativeValue(); - double mipGap = 0.0; - double solutionBound = 0.0; - double mipPresolveTime = 0.0; - double maxConstraintViolation = 0.0; - double maxIntViolation = 0.0; - double maxVariableBoundViolation = 0.0; - int numNodes = 0; - int numSimplexIterations = 0; - - try { - dual = solution.getDualSolution(); - } catch (IllegalStateException e) { - dualUnavailable = true; - } - try { - dualObjective = solution.getDualObjective(); - } catch (IllegalStateException e) { - dualObjectiveUnavailable = true; - } - try { - reducedCost = solution.getReducedCost(); - } catch (IllegalStateException e) { - reducedCostUnavailable = true; - } - try { - LPStats lpStats = solution.getLpStats(); - lpPrimalResidual = lpStats.getPrimalResidual(); - lpDualResidual = lpStats.getDualResidual(); - lpGap = lpStats.getGap(); - lpIterations = lpStats.getNumIterations(); - lpSolvedBy = lpStats.getSolvedBy().nativeValue(); - } catch (IllegalStateException e) { - lpStatsUnavailable = true; - } - try { - MIPStats mipStats = solution.getMipStats(); - mipGap = solution.getMipGap(); - solutionBound = solution.getSolutionBound(); - mipPresolveTime = mipStats.getPresolveTime(); - maxConstraintViolation = mipStats.getMaxConstraintViolation(); - maxIntViolation = mipStats.getMaxIntViolation(); - maxVariableBoundViolation = mipStats.getMaxVariableBoundViolation(); - numNodes = mipStats.getNumNodes(); - numSimplexIterations = mipStats.getNumSimplexIterations(); - } catch (IllegalStateException e) { - mipStatsUnavailable = true; - } - - if (solution.isMip()) { - assertThrows(IllegalStateException.class, solution::getDualSolution); - assertThrows(IllegalStateException.class, solution::getDualObjective); - assertThrows(IllegalStateException.class, solution::getReducedCost); - assertFalse(mipStatsUnavailable); - assertTrue(lpStatsUnavailable); - } else { - assertThrows(IllegalStateException.class, solution::getMipStats); - assertFalse(dualUnavailable); - assertFalse(reducedCostUnavailable); - assertFalse(lpStatsUnavailable); - assertTrue(mipStatsUnavailable); - } - - return new JavaResult( - solution.isMip(), - solution.getTerminationStatus(), - solution.getErrorStatus(), - solution.getErrorMessage(), - solution.getSolveTime(), - solution.getPrimalObjective(), - dualObjective, - solution.getPrimalSolution(), - dual, - reducedCost, - dualUnavailable, - dualObjectiveUnavailable, - reducedCostUnavailable, - lpStatsUnavailable, - mipStatsUnavailable, - lpPrimalResidual, - lpDualResidual, - lpGap, - lpIterations, - lpSolvedBy, - mipGap, - solutionBound, - mipPresolveTime, - maxConstraintViolation, - maxIntViolation, - maxVariableBoundViolation, - numNodes, - numSimplexIterations); - } - } - - private static final class PythonResult { - private final Map values = new LinkedHashMap<>(); - - private PythonResult(String output) { - for (String line : output.split("\\R")) { - if (!line.startsWith("CUOPT_COMPARE ")) { - continue; - } - String result = line.substring("CUOPT_COMPARE ".length()); - int equals = result.indexOf('='); - if (equals > 0) { - values.put(result.substring(0, equals), result.substring(equals + 1)); - } - } - } - - private String stringValue(String key) { - String value = values.get(key); - assertNotNull(value, "Python result is missing " + key); - return value; - } - - private int intValue(String key) { - return Integer.parseInt(stringValue(key)); - } - - private boolean booleanValue(String key) { - return Boolean.parseBoolean(stringValue(key)); - } - - private double doubleValue(String key) { - return parseDouble(stringValue(key)); - } - - private int[] intArray(String key) { - String value = stringValue(key); - if (value.isEmpty()) { - return new int[0]; - } - String[] parts = value.split(","); - int[] result = new int[parts.length]; - for (int i = 0; i < parts.length; i++) { - result[i] = Integer.parseInt(parts[i]); - } - return result; - } - - private double[] doubleArray(String key) { - String value = stringValue(key); - if (value.isEmpty()) { - return new double[0]; - } - String[] parts = value.split(","); - double[] result = new double[parts.length]; - for (int i = 0; i < parts.length; i++) { - result[i] = parseDouble(parts[i]); - } - return result; - } - - private static double parseDouble(String value) { - if ("nan".equalsIgnoreCase(value)) { - return Double.NaN; - } - if ("inf".equalsIgnoreCase(value) || "+inf".equalsIgnoreCase(value)) { - return Double.POSITIVE_INFINITY; - } - if ("-inf".equalsIgnoreCase(value)) { - return Double.NEGATIVE_INFINITY; - } - return Double.parseDouble(value); - } - } - - private static final class ProcessResult { - private final int exitCode; - private final String output; - - private ProcessResult(int exitCode, String output) { - this.exitCode = exitCode; - this.output = output; - } - } - - private static void appendField(StringBuilder builder, String name, String value) { - appendSeparator(builder); - builder.append('"').append(name).append("\":\""); - builder.append(value.replace("\\", "\\\\").replace("\"", "\\\"")); - builder.append('"'); - } - - private static void appendField(StringBuilder builder, String name, int value) { - appendSeparator(builder); - builder.append('"').append(name).append("\":").append(value); - } - - private static void appendField(StringBuilder builder, String name, double value) { - appendSeparator(builder); - builder.append('"').append(name).append("\":").append(Double.toString(value)); - } - - private static void appendField(StringBuilder builder, String name, int[] values) { - appendSeparator(builder); - builder.append('"').append(name).append("\":["); - for (int i = 0; i < values.length; i++) { - if (i > 0) { - builder.append(','); - } - builder.append(values[i]); - } - builder.append(']'); - } - - private static void appendField(StringBuilder builder, String name, double[] values) { - appendSeparator(builder); - builder.append('"').append(name).append("\":["); - for (int i = 0; i < values.length; i++) { - if (i > 0) { - builder.append(','); - } - builder.append(Double.toString(values[i])); - } - builder.append(']'); - } - - private static void appendField(StringBuilder builder, String name, byte[] values) { - appendSeparator(builder); - builder.append('"').append(name).append("\":["); - for (int i = 0; i < values.length; i++) { - if (i > 0) { - builder.append(','); - } - builder.append('"').append((char) values[i]).append('"'); - } - builder.append(']'); - } - - private static void appendField(StringBuilder builder, String name, String[] values) { - appendSeparator(builder); - builder.append('"').append(name).append("\":["); - for (int i = 0; i < values.length; i++) { - if (i > 0) { - builder.append(','); - } - builder.append('"') - .append(values[i].replace("\\", "\\\\").replace("\"", "\\\"")) - .append('"'); - } - builder.append(']'); - } - - private static void appendSeparator(StringBuilder builder) { - if (builder.charAt(builder.length() - 1) != '{') { - builder.append(','); - } - } -} diff --git a/java/cuopt/src/test/java/com/nvidia/cuopt/mathematicalprogramming/DataModelIntegrationTest.java b/java/cuopt/src/test/java/com/nvidia/cuopt/mathematicalprogramming/DataModelIntegrationTest.java new file mode 100644 index 0000000000..a6bc1f115c --- /dev/null +++ b/java/cuopt/src/test/java/com/nvidia/cuopt/mathematicalprogramming/DataModelIntegrationTest.java @@ -0,0 +1,678 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.mathematicalprogramming; + +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Stream; +import org.junit.jupiter.api.Assumptions; +import org.junit.jupiter.api.DynamicTest; +import org.junit.jupiter.api.TestFactory; + +final class DataModelIntegrationTest { + private static final double SOLVE_TOLERANCE = 1.0e-3; + + @TestFactory + Stream dataModelsRoundTripAndSolve() { + return cases().stream() + .map(testCase -> DynamicTest.dynamicTest(testCase.name, () -> verify(testCase))); + } + + private static void verify(CaseSpec testCase) { + assumeNativeLibrary(); + assumeCudaDriverAvailable(); + + try (DataModel model = testCase.createDataModel()) { + assertModelRoundTrip(testCase, model); + if (testCase.hasQuadraticObjective()) { + // QP callability is covered by NativeIntegrationTest. This case owns the independent + // Java-to-JNI marshalling contract for quadratic objectives and constraints. + return; + } + try (SolverSettings settings = createSettings(testCase); + Solution solution = model.solve(settings)) { + assertSolution(testCase, solution); + } + } + } + + private static void assertModelRoundTrip(CaseSpec testCase, DataModel model) { + assertEquals(testCase.numVariables, model.getNumVariables()); + assertEquals(testCase.numConstraints, model.getNumConstraints()); + assertEquals(testCase.values.length, model.getNumNonZeros()); + assertEquals(testCase.objectiveSense, model.getObjectiveSense()); + assertEquals(testCase.objectiveOffset, model.getObjectiveOffset(), 0.0); + assertEquals(testCase.objectiveScalingFactor, model.getObjectiveScalingFactor(), 0.0); + assertDoubleArrayEquals(testCase.objectiveCoefficients, model.getObjectiveCoefficients(), 0.0); + + CSRMatrix matrix = model.getConstraintMatrix(); + assertArrayEquals(testCase.rowOffsets, matrix.getRowOffsets()); + assertArrayEquals(testCase.columnIndices, matrix.getColumnIndices()); + assertDoubleArrayEquals(testCase.values, matrix.getValues(), 0.0); + assertDoubleArrayEquals(testCase.variableLowerBounds, model.getVariableLowerBounds(), 0.0); + assertDoubleArrayEquals(testCase.variableUpperBounds, model.getVariableUpperBounds(), 0.0); + assertArrayEquals(testCase.variableTypes, model.getVariableTypes()); + assertArrayEquals(testCase.variableNames, model.getVariableNames()); + assertArrayEquals(testCase.rowNames, model.getRowNames()); + assertEquals(testCase.objectiveName, model.getObjectiveName()); + assertEquals(testCase.problemName, model.getProblemName()); + + if (testCase.isRanged()) { + assertDoubleArrayEquals( + testCase.constraintLowerBounds, model.getConstraintLowerBounds(), 0.0); + assertDoubleArrayEquals( + testCase.constraintUpperBounds, model.getConstraintUpperBounds(), 0.0); + } else { + assertArrayEquals(testCase.constraintSense, model.getConstraintSense()); + assertDoubleArrayEquals(testCase.rhs, model.getConstraintRHS(), 0.0); + } + + if (testCase.hasQuadraticObjective()) { + assertArrayEquals( + testCase.quadraticObjectiveRowOffsets, model.getQuadraticObjectiveOffsets()); + assertArrayEquals( + testCase.quadraticObjectiveColumnIndices, model.getQuadraticObjectiveIndices()); + assertDoubleArrayEquals( + testCase.quadraticObjectiveValues, model.getQuadraticObjectiveValues(), 0.0); + } + + List constraints = model.getQuadraticConstraints(); + assertEquals(testCase.hasQuadraticConstraint() ? 1 : 0, constraints.size()); + if (testCase.hasQuadraticConstraint()) { + QuadraticConstraint constraint = constraints.get(0); + assertEquals(testCase.quadraticConstraintName, constraint.getRowName()); + assertEquals( + ConstraintSense.fromNative(testCase.quadraticConstraintSense), constraint.getSense()); + assertEquals(testCase.quadraticConstraintRHS, constraint.getRHS(), 0.0); + assertArrayEquals(testCase.quadraticConstraintLinearIndices, constraint.getLinearIndices()); + assertDoubleArrayEquals( + testCase.quadraticConstraintLinearValues, constraint.getLinearValues(), 0.0); + assertArrayEquals(testCase.quadraticConstraintRows, constraint.getRows()); + assertArrayEquals(testCase.quadraticConstraintColumns, constraint.getColumns()); + assertDoubleArrayEquals( + testCase.quadraticConstraintValues, constraint.getValues(), 0.0); + } + } + + private static void assertSolution(CaseSpec testCase, Solution solution) { + assertEquals(testCase.hasIntegerVariables(), solution.isMIP()); + assertEquals(testCase.expectedCategory(), solution.getProblemCategory()); + assertTrue( + Double.isNaN(solution.getSolveTime()) || solution.getSolveTime() >= 0.0, + "solve time must be non-negative when available"); + + if (!testCase.expectSolutionValues) { + assertTrue( + solution.getTerminationStatus() == TerminationStatus.INFEASIBLE + || solution.getTerminationStatus() == TerminationStatus.UNBOUNDED_OR_INFEASIBLE, + "expected an infeasible status, got " + solution.getTerminationStatus()); + return; + } + + assertEquals(TerminationStatus.OPTIMAL, solution.getTerminationStatus()); + double[] primal = solution.getPrimalSolution(); + assertEquals(testCase.numVariables, primal.length); + testCase.assertFeasible(primal); + + if (!Double.isNaN(testCase.expectedObjective)) { + assertEquals( + testCase.expectedObjective, + solution.getPrimalObjective(), + testCase.solutionTolerance, + "objective value"); + } + + if (testCase.hasIntegerVariables()) { + assertDoesNotThrow(solution::getMIPStats); + assertThrows(IllegalStateException.class, solution::getDualSolution); + assertThrows(IllegalStateException.class, solution::getLPStats); + } else { + assertDoesNotThrow(solution::getDualSolution); + assertDoesNotThrow(solution::getReducedCost); + assertDoesNotThrow(solution::getLPStats); + assertThrows(IllegalStateException.class, solution::getMIPStats); + } + } + + private static SolverSettings createSettings(CaseSpec testCase) { + SolverSettings settings = new SolverSettings(); + settings.setSetting(CuOptConstants.CUOPT_LOG_TO_CONSOLE, false); + settings.setSetting(CuOptConstants.CUOPT_TIME_LIMIT, 30.0); + settings.setSetting(CuOptConstants.CUOPT_RANDOM_SEED, 1); + if (testCase.hasIntegerVariables()) { + settings.setSetting( + CuOptConstants.CUOPT_MIP_DETERMINISM_MODE, CuOptConstants.CUOPT_MODE_DETERMINISTIC); + settings.setSetting(CuOptConstants.CUOPT_MIP_ABSOLUTE_GAP, 1.0e-8); + settings.setSetting(CuOptConstants.CUOPT_MIP_RELATIVE_GAP, 1.0e-8); + } else if (testCase.hasQuadraticObjective()) { + settings.setSetting(CuOptConstants.CUOPT_ITERATION_LIMIT, 50); + } else { + settings.setMethod(SolverMethod.PDLP); + settings.setPDLPSolverMode(PDLPSolverMode.STABLE1); + settings.setSetting(CuOptConstants.CUOPT_ABSOLUTE_PRIMAL_TOLERANCE, 1.0e-7); + settings.setSetting(CuOptConstants.CUOPT_RELATIVE_PRIMAL_TOLERANCE, 1.0e-7); + settings.setSetting(CuOptConstants.CUOPT_ABSOLUTE_DUAL_TOLERANCE, 1.0e-7); + settings.setSetting(CuOptConstants.CUOPT_RELATIVE_DUAL_TOLERANCE, 1.0e-7); + settings.setSetting(CuOptConstants.CUOPT_ABSOLUTE_GAP_TOLERANCE, 1.0e-7); + settings.setSetting(CuOptConstants.CUOPT_RELATIVE_GAP_TOLERANCE, 1.0e-7); + } + return settings; + } + + private static void assumeNativeLibrary() { + String nativeDir = System.getProperty("cuopt.native.dir"); + Assumptions.assumeTrue(nativeDir != null && !nativeDir.isBlank(), "cuopt.native.dir is unset"); + Assumptions.assumeTrue( + Files.exists(Path.of(nativeDir, System.mapLibraryName("cuopt_jni"))), + "libcuopt_jni is not built"); + } + + private static void assumeCudaDriverAvailable() { + try { + Process process = new ProcessBuilder("nvidia-smi").redirectErrorStream(true).start(); + Assumptions.assumeTrue(process.waitFor() == 0, "CUDA driver is unavailable"); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + Assumptions.assumeTrue(false, "CUDA driver check was interrupted"); + } catch (Exception e) { + Assumptions.assumeTrue(false, "CUDA driver check failed: " + e.getMessage()); + } + } + + private static void assertDoubleArrayEquals( + double[] expected, double[] actual, double tolerance) { + assertEquals(expected.length, actual.length, "array length"); + for (int i = 0; i < expected.length; i++) { + assertEquals(expected[i], actual[i], tolerance, "array value at index " + i); + } + } + + private static List cases() { + return List.of( + new CaseSpec( + "lp_min_ge_unique_solution", + 1, + 2, + ObjectiveSense.MINIMIZE, + 0.25, + new double[] {1.0, 2.0}, + new int[] {0, 2}, + new int[] {0, 1}, + new double[] {1.0, 1.0}, + new byte[] {'G'}, + new double[] {3.0}, + null, + null, + new double[] {0.0, 0.0}, + new double[] {10.0, 10.0}, + new byte[] {'C', 'C'}, + true, + 3.25), + new CaseSpec( + "lp_max_le_unique_solution", + 3, + 2, + ObjectiveSense.MAXIMIZE, + -1.0, + new double[] {3.0, 2.0}, + new int[] {0, 2, 3, 4}, + new int[] {0, 1, 0, 1}, + new double[] {1.0, 1.0, 1.0, 1.0}, + new byte[] {'L', 'L', 'L'}, + new double[] {4.0, 2.0, 3.0}, + null, + null, + new double[] {0.0, 0.0}, + new double[] {10.0, 10.0}, + new byte[] {'C', 'C'}, + true, + 9.0), + new CaseSpec( + "lp_equal_with_offset", + 1, + 2, + ObjectiveSense.MINIMIZE, + 7.0, + new double[] {0.0, 1.0}, + new int[] {0, 2}, + new int[] {0, 1}, + new double[] {1.0, 1.0}, + new byte[] {'E'}, + new double[] {5.0}, + null, + null, + new double[] {0.0, 0.0}, + new double[] {5.0, 5.0}, + new byte[] {'C', 'C'}, + true, + 7.0), + new CaseSpec( + "lp_ranged_bounds", + 2, + 2, + ObjectiveSense.MINIMIZE, + 0.0, + new double[] {0.2, 1.0}, + new int[] {0, 2, 4}, + new int[] {0, 1, 0, 1}, + new double[] {1.0, 1.0, 2.0, 1.0}, + null, + null, + new double[] {1.0, 2.0}, + new double[] {3.0, 4.0}, + new double[] {0.0, 0.0}, + new double[] {10.0, 10.0}, + new byte[] {'C', 'C'}, + true, + 0.2), + new CaseSpec( + "lp_mixed_bounds_negative_coefficients", + 1, + 2, + ObjectiveSense.MINIMIZE, + -2.0, + new double[] {-1.0, 2.0}, + new int[] {0, 2}, + new int[] {0, 1}, + new double[] {1.0, 1.0}, + new byte[] {'E'}, + new double[] {1.0}, + null, + null, + new double[] {-2.0, -1.0}, + new double[] {2.0, 3.0}, + new byte[] {'C', 'C'}, + true, + -6.0), + new CaseSpec( + "lp_max_ranged_bounds", + 1, + 2, + ObjectiveSense.MAXIMIZE, + 0.0, + new double[] {2.0, 1.0}, + new int[] {0, 2}, + new int[] {0, 1}, + new double[] {1.0, 1.0}, + null, + null, + new double[] {0.0}, + new double[] {3.0}, + new double[] {0.0, 0.0}, + new double[] {2.0, 2.0}, + new byte[] {'C', 'C'}, + true, + 5.0), + new CaseSpec( + "milp_integer_unique_solution", + 1, + 2, + ObjectiveSense.MINIMIZE, + 0.0, + new double[] {1.0, 2.0}, + new int[] {0, 2}, + new int[] {0, 1}, + new double[] {1.0, 1.0}, + new byte[] {'G'}, + new double[] {2.5}, + null, + null, + new double[] {0.0, 0.0}, + new double[] {10.0, 10.0}, + new byte[] {'I', 'I'}, + true, + 3.0), + new CaseSpec( + "milp_mixed_integer_continuous_max", + 1, + 2, + ObjectiveSense.MAXIMIZE, + 0.0, + new double[] {5.0, 1.0}, + new int[] {0, 2}, + new int[] {0, 1}, + new double[] {1.0, 1.0}, + new byte[] {'L'}, + new double[] {2.5}, + null, + null, + new double[] {0.0, 0.0}, + new double[] {3.0, 10.0}, + new byte[] {'I', 'C'}, + true, + 10.5), + new CaseSpec( + "qp_diagonal_objective", + 1, + 2, + ObjectiveSense.MINIMIZE, + 0.0, + new double[] {-8.0, -16.0}, + new int[] {0, 2}, + new int[] {0, 1}, + new double[] {1.0, 1.0}, + null, + null, + new double[] {5.0}, + new double[] {1.0e20}, + new double[] {0.0, 0.0}, + new double[] {10.0, 10.0}, + new byte[] {'C', 'C'}, + true, + Double.NaN) + .withQuadraticObjective( + new int[] {0, 1, 2}, new int[] {0, 1}, new double[] {1.0, 4.0}) + .withMetadata( + 2.0, + new String[] {"x0", "long_variable_1"}, + new String[] {"constraint_0"}, + "qp_objective", + "qp_model") + .withQuadraticConstraint( + "qc0", + (byte) 'L', + 100.0, + new double[] {1.0}, + new int[] {0}, + new double[] {1.0}, + new int[] {0}, + new int[] {0}), + new CaseSpec( + "lp_infeasible_status", + 2, + 1, + ObjectiveSense.MINIMIZE, + 0.0, + new double[] {1.0}, + new int[] {0, 1, 2}, + new int[] {0, 0}, + new double[] {1.0, 1.0}, + new byte[] {'G', 'L'}, + new double[] {1.0, 0.0}, + null, + null, + new double[] {0.0}, + new double[] {10.0}, + new byte[] {'C'}, + false, + Double.NaN)); + } + + private static final class CaseSpec { + private final String name; + private final int numConstraints; + private final int numVariables; + private final ObjectiveSense objectiveSense; + private final double objectiveOffset; + private final double[] objectiveCoefficients; + private final int[] rowOffsets; + private final int[] columnIndices; + private final double[] values; + private final byte[] constraintSense; + private final double[] rhs; + private final double[] constraintLowerBounds; + private final double[] constraintUpperBounds; + private final double[] variableLowerBounds; + private final double[] variableUpperBounds; + private final byte[] variableTypes; + private final boolean expectSolutionValues; + private final double expectedObjective; + private final double solutionTolerance = SOLVE_TOLERANCE; + private double objectiveScalingFactor = 1.0; + private String[] variableNames = new String[0]; + private String[] rowNames = new String[0]; + private String objectiveName = ""; + private String problemName = ""; + private String quadraticConstraintName; + private byte quadraticConstraintSense; + private double quadraticConstraintRHS; + private double[] quadraticConstraintLinearValues; + private int[] quadraticConstraintLinearIndices; + private double[] quadraticConstraintValues; + private int[] quadraticConstraintRows; + private int[] quadraticConstraintColumns; + private int[] quadraticObjectiveRowOffsets; + private int[] quadraticObjectiveColumnIndices; + private double[] quadraticObjectiveValues; + + private CaseSpec( + String name, + int numConstraints, + int numVariables, + ObjectiveSense objectiveSense, + double objectiveOffset, + double[] objectiveCoefficients, + int[] rowOffsets, + int[] columnIndices, + double[] values, + byte[] constraintSense, + double[] rhs, + double[] constraintLowerBounds, + double[] constraintUpperBounds, + double[] variableLowerBounds, + double[] variableUpperBounds, + byte[] variableTypes, + boolean expectSolutionValues, + double expectedObjective) { + this.name = name; + this.numConstraints = numConstraints; + this.numVariables = numVariables; + this.objectiveSense = objectiveSense; + this.objectiveOffset = objectiveOffset; + this.objectiveCoefficients = Arrays.copyOf(objectiveCoefficients, objectiveCoefficients.length); + this.rowOffsets = Arrays.copyOf(rowOffsets, rowOffsets.length); + this.columnIndices = Arrays.copyOf(columnIndices, columnIndices.length); + this.values = Arrays.copyOf(values, values.length); + this.constraintSense = + constraintSense == null ? null : Arrays.copyOf(constraintSense, constraintSense.length); + this.rhs = rhs == null ? null : Arrays.copyOf(rhs, rhs.length); + this.constraintLowerBounds = + constraintLowerBounds == null + ? null + : Arrays.copyOf(constraintLowerBounds, constraintLowerBounds.length); + this.constraintUpperBounds = + constraintUpperBounds == null + ? null + : Arrays.copyOf(constraintUpperBounds, constraintUpperBounds.length); + this.variableLowerBounds = Arrays.copyOf(variableLowerBounds, variableLowerBounds.length); + this.variableUpperBounds = Arrays.copyOf(variableUpperBounds, variableUpperBounds.length); + this.variableTypes = Arrays.copyOf(variableTypes, variableTypes.length); + this.expectSolutionValues = expectSolutionValues; + this.expectedObjective = expectedObjective; + } + + private DataModel createDataModel() { + CSRMatrix matrix = new CSRMatrix(values, columnIndices, rowOffsets); + DataModel model = + isRanged() + ? DataModel.createRangedProblem( + numConstraints, + numVariables, + objectiveSense, + objectiveOffset, + objectiveCoefficients, + matrix, + constraintLowerBounds, + constraintUpperBounds, + variableLowerBounds, + variableUpperBounds, + variableTypes) + : DataModel.createProblem( + numConstraints, + numVariables, + objectiveSense, + objectiveOffset, + objectiveCoefficients, + matrix, + constraintSense, + rhs, + variableLowerBounds, + variableUpperBounds, + variableTypes); + if (hasQuadraticObjective()) { + model.setQuadraticObjectiveMatrix( + quadraticObjectiveValues, + quadraticObjectiveColumnIndices, + quadraticObjectiveRowOffsets); + } + model + .setObjectiveScalingFactor(objectiveScalingFactor) + .setVariableNames(variableNames) + .setRowNames(rowNames) + .setObjectiveName(objectiveName) + .setProblemName(problemName); + if (hasQuadraticConstraint()) { + model.addQuadraticConstraint( + quadraticConstraintName, + quadraticConstraintLinearValues, + quadraticConstraintLinearIndices, + quadraticConstraintRHS, + quadraticConstraintValues, + quadraticConstraintRows, + quadraticConstraintColumns, + ConstraintSense.fromNative(quadraticConstraintSense)); + } + return model; + } + + private boolean isRanged() { + return constraintLowerBounds != null; + } + + private boolean hasQuadraticObjective() { + return quadraticObjectiveValues != null; + } + + private boolean hasQuadraticConstraint() { + return quadraticConstraintValues != null; + } + + private boolean hasIntegerVariables() { + for (byte type : variableTypes) { + if (type == 'I' || type == 'S') { + return true; + } + } + return false; + } + + private ProblemCategory expectedCategory() { + return hasIntegerVariables() ? ProblemCategory.MIP : ProblemCategory.LP; + } + + private CaseSpec withQuadraticObjective( + int[] rowOffsets, int[] columnIndices, double[] values) { + this.quadraticObjectiveRowOffsets = Arrays.copyOf(rowOffsets, rowOffsets.length); + this.quadraticObjectiveColumnIndices = Arrays.copyOf(columnIndices, columnIndices.length); + this.quadraticObjectiveValues = Arrays.copyOf(values, values.length); + return this; + } + + private CaseSpec withMetadata( + double scalingFactor, + String[] variableNames, + String[] rowNames, + String objectiveName, + String problemName) { + this.objectiveScalingFactor = scalingFactor; + this.variableNames = Arrays.copyOf(variableNames, variableNames.length); + this.rowNames = Arrays.copyOf(rowNames, rowNames.length); + this.objectiveName = objectiveName; + this.problemName = problemName; + return this; + } + + private CaseSpec withQuadraticConstraint( + String name, + byte sense, + double rhs, + double[] linearValues, + int[] linearIndices, + double[] values, + int[] rows, + int[] columns) { + this.quadraticConstraintName = name; + this.quadraticConstraintSense = sense; + this.quadraticConstraintRHS = rhs; + this.quadraticConstraintLinearValues = Arrays.copyOf(linearValues, linearValues.length); + this.quadraticConstraintLinearIndices = Arrays.copyOf(linearIndices, linearIndices.length); + this.quadraticConstraintValues = Arrays.copyOf(values, values.length); + this.quadraticConstraintRows = Arrays.copyOf(rows, rows.length); + this.quadraticConstraintColumns = Arrays.copyOf(columns, columns.length); + return this; + } + + private void assertFeasible(double[] primal) { + for (int variable = 0; variable < numVariables; variable++) { + assertTrue( + primal[variable] >= variableLowerBounds[variable] - solutionTolerance, + "variable " + variable + " violates its lower bound"); + assertTrue( + primal[variable] <= variableUpperBounds[variable] + solutionTolerance, + "variable " + variable + " violates its upper bound"); + if (variableTypes[variable] == 'I') { + assertEquals( + Math.rint(primal[variable]), + primal[variable], + solutionTolerance, + "variable " + variable + " must be integral"); + } + } + + for (int row = 0; row < numConstraints; row++) { + double activity = 0.0; + for (int index = rowOffsets[row]; index < rowOffsets[row + 1]; index++) { + activity += values[index] * primal[columnIndices[index]]; + } + if (isRanged()) { + assertTrue( + activity >= constraintLowerBounds[row] - solutionTolerance, + "row " + row + " violates its lower bound"); + assertTrue( + activity <= constraintUpperBounds[row] + solutionTolerance, + "row " + row + " violates its upper bound"); + } else if (constraintSense[row] == 'L') { + assertTrue(activity <= rhs[row] + solutionTolerance, "row " + row + " violates <="); + } else if (constraintSense[row] == 'G') { + assertTrue(activity >= rhs[row] - solutionTolerance, "row " + row + " violates >="); + } else { + assertEquals(rhs[row], activity, solutionTolerance, "row " + row + " violates ="); + } + } + + if (hasQuadraticConstraint()) { + double activity = 0.0; + for (int i = 0; i < quadraticConstraintLinearValues.length; i++) { + activity += + quadraticConstraintLinearValues[i] + * primal[quadraticConstraintLinearIndices[i]]; + } + for (int i = 0; i < quadraticConstraintValues.length; i++) { + activity += + quadraticConstraintValues[i] + * primal[quadraticConstraintRows[i]] + * primal[quadraticConstraintColumns[i]]; + } + if (quadraticConstraintSense == 'L') { + assertTrue( + activity <= quadraticConstraintRHS + solutionTolerance, + "quadratic constraint violates <="); + } else { + assertTrue( + activity >= quadraticConstraintRHS - solutionTolerance, + "quadratic constraint violates >="); + } + } + } + } +} diff --git a/java/cuopt/src/test/java/com/nvidia/cuopt/linearprogramming/NativeIntegrationTest.java b/java/cuopt/src/test/java/com/nvidia/cuopt/mathematicalprogramming/NativeIntegrationTest.java similarity index 70% rename from java/cuopt/src/test/java/com/nvidia/cuopt/linearprogramming/NativeIntegrationTest.java rename to java/cuopt/src/test/java/com/nvidia/cuopt/mathematicalprogramming/NativeIntegrationTest.java index 70fe31ba7d..3d3a446606 100644 --- a/java/cuopt/src/test/java/com/nvidia/cuopt/linearprogramming/NativeIntegrationTest.java +++ b/java/cuopt/src/test/java/com/nvidia/cuopt/mathematicalprogramming/NativeIntegrationTest.java @@ -2,7 +2,7 @@ * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ -package com.nvidia.cuopt.linearprogramming; +package com.nvidia.cuopt.mathematicalprogramming; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertArrayEquals; @@ -13,7 +13,6 @@ import java.nio.file.Files; import java.nio.file.Path; -import java.util.List; import org.junit.jupiter.api.Assumptions; import org.junit.jupiter.api.Test; @@ -27,35 +26,43 @@ private static void assumeNativeLibrary() { } @Test - void solverParameterNamesAreAvailable() { + void solverSettingNamesAreAvailable() { assumeNativeLibrary(); - assertTrue(SolverSettings.getSolverParameterNames().contains(CuOptConstants.CUOPT_TIME_LIMIT)); + assertTrue(SolverSettings.getSolverSettingNames().contains(CuOptConstants.CUOPT_TIME_LIMIT)); } @Test - void settingsExposeTypedValuesAndParameterFileRoundTrip() throws Exception { + void settingsExposeTypedValuesAndSettingsFileRoundTrip() throws Exception { assumeNativeLibrary(); Path file = Files.createTempFile("cuopt-java-settings-", ".cfg"); try (SolverSettings settings = new SolverSettings()) { - settings.setParameter(CuOptConstants.CUOPT_LOG_TO_CONSOLE, false); - settings.setParameter(CuOptConstants.CUOPT_TIME_LIMIT, 12.5); + settings.setSetting(CuOptConstants.CUOPT_LOG_TO_CONSOLE, false); + settings.setSetting(CuOptConstants.CUOPT_TIME_LIMIT, 12.5); settings.setOptimalityTolerance(1.0e-6); - assertEquals(Boolean.FALSE, settings.getTypedParameter(CuOptConstants.CUOPT_LOG_TO_CONSOLE)); - assertEquals(12.5, (Double) settings.getTypedParameter(CuOptConstants.CUOPT_TIME_LIMIT), 1e-12); + assertEquals( + Boolean.FALSE, + settings.getSetting(CuOptConstants.CUOPT_LOG_TO_CONSOLE, Boolean.class)); + assertEquals( + 12.5, + settings.getSetting(CuOptConstants.CUOPT_TIME_LIMIT, Double.class), + 1e-12); + assertEquals( + SolverSettings.getSolverSetting(CuOptConstants.CUOPT_TIME_LIMIT), + SolverSettings.getSolverSetting(CuOptConstants.CUOPT_TIME_LIMIT, String.class)); assertEquals( 1.0e-6, - (Double) settings.getTypedParameter(CuOptConstants.CUOPT_ABSOLUTE_PRIMAL_TOLERANCE), + settings.getSetting(CuOptConstants.CUOPT_ABSOLUTE_PRIMAL_TOLERANCE, Double.class), 1e-12); assertEquals( 12.5, - Double.parseDouble(settings.getParameterAsString(CuOptConstants.CUOPT_TIME_LIMIT)), + Double.parseDouble(settings.getSettingAsString(CuOptConstants.CUOPT_TIME_LIMIT)), 1e-12); assertTrue(settings.toDict().containsKey("tolerances")); - MipSolutionCallback callback = (solution, objective, bound, userData) -> {}; - settings.setMipCallback(callback, "test-user-data", 2); - assertTrue(settings.getMipCallbacks().contains(callback)); - assertDoesNotThrow(() -> settings.dumpParametersToFile(file.toString(), true)); - settings.loadParametersFromFile(file.toString()); + MIPSolutionCallback callback = (solution, objective, bound, userData) -> {}; + settings.setMIPCallback(callback, "test-user-data", 2); + assertTrue(settings.getMIPCallbacks().contains(callback)); + assertDoesNotThrow(() -> settings.dumpSettingsToFile(file.toString(), true)); + settings.loadSettingsFromFile(file.toString()); } finally { Files.deleteIfExists(file); } @@ -71,11 +78,11 @@ void emptyDataModelCanBeClosed() { } @Test - void mutableDataModelExposesPythonMetadataAndQuadraticFields() { + void mutableDataModelExposesMetadataAndQuadraticFields() { assumeNativeLibrary(); assumeCudaDriverAvailable(); try (DataModel model = new DataModel()) { - model.setCsrConstraintMatrix( + model.setCSRConstraintMatrix( new double[] {1.0, 2.0}, new int[] {0, 1}, new int[] {0, 2}) .setObjectiveCoefficients(new double[] {3.0, 4.0}) .setObjectiveScalingFactor(2.0) @@ -100,7 +107,7 @@ void mutableDataModelExposesPythonMetadataAndQuadraticFields() { assertEquals("obj", model.getObjectiveName()); assertArrayEquals(new String[] {"x", "y"}, model.getVariableNames()); assertArrayEquals(new String[] {"c"}, model.getRowNames()); - assertArrayEquals(new byte[] {'L'}, model.getAsciiRowTypes()); + assertArrayEquals(new byte[] {'L'}, model.getASCIIRowTypes()); assertArrayEquals(new double[0], model.getConstraintLowerBounds()); assertArrayEquals(new double[0], model.getConstraintUpperBounds()); assertArrayEquals(new double[] {1.0, 2.0}, model.getQuadraticObjectiveValues()); @@ -122,37 +129,36 @@ void mutableDataModelExposesPythonMetadataAndQuadraticFields() { } @Test - void solvesSmallLpAndReportsStats() { + void solvesSmallLPAndReportsStats() { assumeNativeLibrary(); assumeCudaDriverAvailable(); - try (DataModel model = tinyLp(); + try (DataModel model = tinyLP(); SolverSettings settings = new SolverSettings().setMethod(SolverMethod.PDLP); Solution solution = model.solve(settings)) { - assertFalse(solution.isMip()); + assertFalse(solution.isMIP()); assertEquals(TerminationStatus.OPTIMAL, solution.getTerminationStatus()); assertEquals(1.0, solution.getPrimalObjective(), 1e-3); double[] primal = solution.getPrimalSolution(); assertEquals(1.0, primal[0] + primal[1], 1e-3); - assertDoesNotThrow(solution::getLpStats); - assertDoesNotThrow(solution::getPdlpWarmStartData); - assertThrows(IllegalStateException.class, solution::getMipStats); + assertDoesNotThrow(solution::getLPStats); + assertThrows(IllegalStateException.class, solution::getMIPStats); } } @Test - void solvesProblemApiMilpAndLifecycleCloseIsIdempotent() { + void solvesProblemApiMIPAndLifecycleCloseIsIdempotent() { assumeNativeLibrary(); assumeCudaDriverAvailable(); Problem problem = new Problem("integer"); Variable x = problem.addVariable(0, 10, 1.0, VariableType.INTEGER, "x"); problem.addConstraint(LinearExpression.of(x).ge(1.0)); - try (SolverSettings settings = new SolverSettings().setParameter(CuOptConstants.CUOPT_TIME_LIMIT, 10.0); + try (SolverSettings settings = new SolverSettings().setSetting(CuOptConstants.CUOPT_TIME_LIMIT, 10.0); Solution solution = problem.solve(settings)) { - assertTrue(solution.isMip()); + assertTrue(solution.isMIP()); assertEquals(TerminationStatus.OPTIMAL, solution.getTerminationStatus()); assertEquals(1.0, x.getValue(), 1e-6); - assertDoesNotThrow(solution::getMipStats); + assertDoesNotThrow(solution::getMIPStats); assertThrows(IllegalStateException.class, solution::getDualSolution); solution.close(); solution.close(); @@ -160,18 +166,18 @@ void solvesProblemApiMilpAndLifecycleCloseIsIdempotent() { } @Test - void solvesSmallQp() { + void solvesSmallQP() { assumeNativeLibrary(); assumeCudaDriverAvailable(); - try (DataModel model = tinyLp()) { + try (DataModel model = tinyLP()) { Problem shell = new Problem(); Variable x0 = shell.addVariable(); Variable x1 = shell.addVariable(); model.setQuadraticObjective( QuadraticExpression.of(x0, x0, 1.0).plus(x1, x1, 4.0)); - try (SolverSettings settings = new SolverSettings().setParameter(CuOptConstants.CUOPT_ITERATION_LIMIT, 50); + try (SolverSettings settings = new SolverSettings().setSetting(CuOptConstants.CUOPT_ITERATION_LIMIT, 50); Solution solution = model.solve(settings)) { - assertFalse(solution.isMip()); + assertFalse(solution.isMIP()); assertDoesNotThrow(solution::getPrimalSolution); } } @@ -186,16 +192,16 @@ void rejectsMissingFileThroughCuOptException() { } @Test - void writesAndReadsMpsThroughReadAndParseMps() throws Exception { + void writesAndReadsMPSThroughReadAndParseMPS() throws Exception { assumeNativeLibrary(); assumeCudaDriverAvailable(); Path file = Files.createTempFile("cuopt-java-roundtrip-", ".mps"); try { - try (DataModel source = tinyLp()) { + try (DataModel source = tinyLP()) { source.writeMPS(file.toString()); } try (DataModel read = DataModel.read(file.toString()); - DataModel parsed = DataModel.parseMps(file.toString()); + DataModel parsed = DataModel.parseMPS(file.toString()); Problem problem = Problem.read(file.toString(), false)) { assertEquals(2, read.getNumVariables()); assertEquals(1, read.getNumConstraints()); @@ -209,23 +215,9 @@ void writesAndReadsMpsThroughReadAndParseMps() throws Exception { } } - @Test - void batchSolveCompatibilityReturnsAllSolutions() { - assumeNativeLibrary(); - assumeCudaDriverAvailable(); - try (DataModel first = tinyLp(); - DataModel second = tinyLp(); - SolverSettings settings = new SolverSettings().setMethod(SolverMethod.PDLP); - BatchSolveResult result = BatchSolve.solve(List.of(first, second), settings)) { - assertEquals(2, result.getSolutions().size()); - assertTrue(result.getSolveTime() >= 0.0); - assertEquals(TerminationStatus.OPTIMAL, result.getSolutions().get(0).getTerminationStatus()); - assertEquals(TerminationStatus.OPTIMAL, result.getSolutions().get(1).getTerminationStatus()); - } - } - - private static DataModel tinyLp() { - CsrMatrix matrix = new CsrMatrix(new int[] {0, 2}, new int[] {0, 1}, new double[] {1.0, 1.0}); + private static DataModel tinyLP() { + CSRMatrix matrix = + new CSRMatrix(new double[] {1.0, 1.0}, new int[] {0, 1}, new int[] {0, 2}); return DataModel.createProblem( 1, 2, @@ -233,11 +225,11 @@ private static DataModel tinyLp() { 0.0, new double[] {1.0, 1.0}, matrix, - new byte[] {(byte) 'G'}, + new byte[] {'G'}, new double[] {1.0}, new double[] {0.0, 0.0}, new double[] {Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY}, - new byte[] {(byte) 'C', (byte) 'C'}); + new byte[] {'C', 'C'}); } private static void assumeCudaDriverAvailable() { diff --git a/java/cuopt/src/test/java/com/nvidia/cuopt/linearprogramming/ProblemModelingTest.java b/java/cuopt/src/test/java/com/nvidia/cuopt/mathematicalprogramming/ProblemModelingTest.java similarity index 76% rename from java/cuopt/src/test/java/com/nvidia/cuopt/linearprogramming/ProblemModelingTest.java rename to java/cuopt/src/test/java/com/nvidia/cuopt/mathematicalprogramming/ProblemModelingTest.java index 8bc941764a..dec4963ef8 100644 --- a/java/cuopt/src/test/java/com/nvidia/cuopt/linearprogramming/ProblemModelingTest.java +++ b/java/cuopt/src/test/java/com/nvidia/cuopt/mathematicalprogramming/ProblemModelingTest.java @@ -2,7 +2,7 @@ * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ -package com.nvidia.cuopt.linearprogramming; +package com.nvidia.cuopt.mathematicalprogramming; import static org.junit.jupiter.api.Assertions.assertArrayEquals; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -14,20 +14,40 @@ final class ProblemModelingTest { @Test - void buildsLinearModelAndCsr() { + void generatedSolverEnumsMatchCuOptConstants() { + assertEquals(CuOptConstants.CUOPT_METHOD_PDLP, SolverMethod.PDLP.nativeValue()); + assertEquals( + CuOptConstants.CUOPT_PDLP_SOLVER_MODE_STABLE1, + PDLPSolverMode.STABLE1.nativeValue()); + assertEquals( + CuOptConstants.CUOPT_TERMINATION_STATUS_OPTIMAL, + TerminationStatus.OPTIMAL.nativeValue()); + } + + @Test + void mapsLegacyIPCategoryToMIP() { + assertEquals(ProblemCategory.MIP, ProblemCategory.fromNative(2)); + } + + @Test + void buildsLinearProblemAndCSR() { Problem problem = new Problem("Simple MIP"); Variable x = problem.addVariable(0, Double.POSITIVE_INFINITY, 0, VariableType.INTEGER, "x"); Variable y = problem.addVariable(10, 50, 0, VariableType.INTEGER, "y"); assertEquals(0, x.getIndex()); assertEquals(1, y.getIndex()); - assertTrue(problem.isMip()); + assertTrue(problem.isMIP()); problem.addConstraint(LinearExpression.of(x, 2).plus(y, 4).ge(230), "c1"); problem.addConstraint(LinearExpression.of(x, 3).plus(y, 2).constant(10).le(200), "c2"); problem.setObjective(LinearExpression.of(x, 5).plus(y, 3).constant(50), ObjectiveSense.MAXIMIZE); - CsrMatrix csr = problem.getCSR(); + ObjectiveExpression objective = problem.getObjective(); + assertFalse(objective.isQuadratic()); + assertEquals(50.0, objective.getConstant()); + + CSRMatrix csr = problem.getCSR(); assertArrayEquals(new int[] {0, 2, 4}, csr.getRowOffsets()); assertArrayEquals(new int[] {0, 1, 0, 1}, csr.getColumnIndices()); assertArrayEquals(new double[] {2.0, 4.0, 3.0, 2.0}, csr.getValues()); @@ -48,12 +68,12 @@ void duplicateLinearTermsAreMergedForSlack() { assertEquals(12.0, constraint.getCoefficient(x)); assertEquals(6.0, constraint.computeSlack()); - assertFalse(problem.isMip()); + assertFalse(problem.isMIP()); } @Test - void updateRelaxAndQuadraticInspectionMatchPythonModelingContracts() { - Problem problem = new Problem("model"); + void updateRelaxAndQuadraticInspectionMatchProblemContracts() { + Problem problem = new Problem("problem"); Variable x = problem.addVariable(0.0, 5.0, 1.0, VariableType.INTEGER, "x"); Variable y = problem.addVariable(0.0, 5.0, 2.0, VariableType.CONTINUOUS, "y"); Constraint constraint = @@ -71,7 +91,9 @@ void updateRelaxAndQuadraticInspectionMatchPythonModelingContracts() { QuadraticExpression quadratic = QuadraticExpression.of(x, x, 2.0).plus(y, y, 3.0); problem.setObjective(quadratic, ObjectiveSense.MINIMIZE); - CsrMatrix qcsr = problem.getQCSR(); + assertTrue(problem.getObjective().isQuadratic()); + assertEquals(quadratic, problem.getObjective()); + CSRMatrix qcsr = problem.getQCSR(); assertArrayEquals(new int[] {0, 1, 2}, qcsr.getRowOffsets()); assertArrayEquals(new int[] {0, 1}, qcsr.getColumnIndices()); assertArrayEquals(new double[] {2.0, 3.0}, qcsr.getValues()); @@ -87,7 +109,7 @@ void updateRelaxAndQuadraticInspectionMatchPythonModelingContracts() { assertEquals(1, problem.getQuadraticConstraints().size()); Problem relaxed = problem.relax(); - assertFalse(relaxed.isMip()); + assertFalse(relaxed.isMIP()); assertEquals(VariableType.CONTINUOUS, relaxed.getVariable(0).getVariableType()); assertEquals("x", relaxed.getVariable(0).getVariableName()); assertEquals("y", relaxed.getVariable(1).getVariableName()); diff --git a/java/cuopt/src/test/resources/python_binding_parity.py b/java/cuopt/src/test/resources/python_binding_parity.py deleted file mode 100644 index 95b2dd9a6e..0000000000 --- a/java/cuopt/src/test/resources/python_binding_parity.py +++ /dev/null @@ -1,291 +0,0 @@ -#!/usr/bin/env python3 -# SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 - -"""Python-side oracle for Java/Python cuOpt binding parity tests.""" - -import argparse -import json -import math -import sys - -import numpy as np - - -PREFIX = "CUOPT_COMPARE " - - -def emit(name, value): - print(f"{PREFIX}{name}={value}") - - -def emit_float(name, value): - value = float(value) - if math.isnan(value): - emit(name, "nan") - elif math.isinf(value): - emit(name, "inf" if value > 0 else "-inf") - else: - emit(name, f"{value:.17g}") - - -def emit_float_array(name, values): - emit(name, ",".join(f"{float(v):.17g}" for v in values)) - - -def emit_int_array(name, values): - emit(name, ",".join(str(int(v)) for v in values)) - - -def emit_char_array(name, values): - chars = [] - for value in values: - if isinstance(value, bytes): - chars.append(value.decode("ascii")) - elif isinstance(value, np.bytes_): - chars.append(bytes(value).decode("ascii")) - else: - chars.append(str(value)) - emit(name, ",".join(chars)) - - -def as_float_array(values): - return np.array(values, dtype=np.float64) - - -def as_int_array(values): - return np.array(values, dtype=np.int32) - - -def as_char_array(values): - return np.array(values, dtype="xY0pSEZ(-HPihxw2d~?WOdj^b4iD zW33n&fvBe@0`~{AcjSspSAEk;XHCz~gmD#kar1`n)3KKs3S-mQe%A1+mQN6EMd`~N z`C0-;!}vJAu1{k@^zYTcTaxr6*(07}m zymj1m8iYjNsk#N@qN!R%X9L<%Roy!F<6VK>jY>b~x^h*OyM~)OZs98(U*oopZ}6>- z?;r(IAv(%NV(K`E1sw$xSxF%b8~AFyKmjD~{QN|pCWKbhusKMfMTxXI(JpO)#0EbFdD*fgBvk72+b_q zF$!!C9gRa!@n>Ie2(I{sD}Be^Vwhj`e1oLowzQo&cDUfCV3UcP8|ulyp-o+3-3?1! zD@kwKxW{dHyWHaKVh4+!b^U;44H~r<2E*k2*2sk`wvGNnAhO6T*;B8S%>Wd@p5_Y5 zoFAG`;CnDA+uHD>hgpGRVX@cxpt@>fvY_q?f&TSy1h?Q~)h?)>o}OY~ua*s0#c|Pb zFUUek;J{{pud6D*(Sqf8Jf>Y_ny*$W>?)o?&igiV-bk&?(7Xm;M-{6Y?h71h)Khc;Yj`Ju-sp2~uOo{bI?)<{8z2Z^ z4_~lJe%Xg%GCNI9V`P;huo-IIB6J0Qf>egF3m@PxXEW%)5ey)zK;uIUa#XV+>aZc< zIz}jq(Cam%Fv?gR<@Y2dHT^Wln$|JOj&rpeEicid;Y6#3lmFoepU0i}h#w+26~yXe z&QzfP;@HY@;2F9ZtKHe*ktgWMrKTBD1^W>`gtVcAP;-^0$|?`Z(6e z?ZfOr%rbqFL5ua1G4I+O1kd6Niatw#^f#CSv-l2|j>5ua^Z33_ z*HvS?X5qR8$HEPPqmlNL*waBIQ0u;yBk6GKJ6$h|+jRH5?Lfv!s01EPxtF@G9yr0s z>wD616FrO_-wTushoRmM z$*N!Dl^q z&cu{kzoYmo7lpL!Olq7@OJyMCyj0fG*YtmbZ}~L;Fb=cEAf>lcAZI=TLN&3FCqKxO ztA@dQl!3o6Q-F~m<5J-ptTo3Z(|X3In)4}A3KMw&YkXG-x{9ahu*EBRY=crY(Zb?? De9PLI diff --git a/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Constraint.class b/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Constraint.class deleted file mode 100644 index fe5b8ee3f7b8511a4b6638e2f7f5c5f34ac46c41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5055 zcmb7IYj+!072P9^HIh8>D~@YBNlQc0$Z`^eyd2`#P3i}6<2XqjQfSL#B8{C%WJ!@m zt^{({2CSuDEr(QjmC<|H)tZM;2UpROPWOkEi9alEh7XLS~;# z;u(BOUO$~g8=h^)bNGzRo|hj!+m6rS^Ro6rJHCJy+hOC2^7xX0m)bFiFU#XA23}5L zC%&2_;Mc_DMFU??;z4{v9E{jJK&&E-sd>r6s4Zn3-)b8`ZG&M%BudE!WA0(T=x*cJXdY z0=8A`LdDi_q!oyXVxi)eEvMklixthI<*OAsIjKP}SWCp|nZ0H$TbaB?{_}2`Zm2`@ zR`$AvM6PP(FI)L4H^xpn1;-uNu#{@$=(}Rkicurq$)U?6I#JB={7ylft1ex!%a^Px zc}2aL6?$by-u*@0z3R}z%;t`x&q+I!?ovxWHp|fF&h^rw-0WVo-MasCDmlHWp=Rlc zbL)&J*Jx^pf{j;#1wAz*LF?v9BicmjZm^-v@nxL0%)8XaIjf`sZs6NIo_v%i8jg{1 z3zbr*Rug877>}Kqr$SRhRA*ncl(SsBQAHXSTFOkL-RLG+(a(g(Kyf;hn%q1W5N6*Az95iu69z#f*7{)#m`*Fa) zEfe3xSrZu?H1ItWm+(Oo-^UM3{187f@M9A{!B0)RCVPH{pBwmviQ9PG#4qu>fnS;U zHQq4s8(H}+?oiz7?2S1$@h0w=cuRgCZlMR&;w*MN_A(yVFxi4#AcT8~!^8yv{2ksl z@ebZ*>9&Ac5BP@2p1*R<&a!ueg6-YXyt(T!n4#7!w^-J2xP_w{i<`BrS{1()Ea_9n zTEJ)$1W%Vz9n@5J?dGcGh!tZj%a_FY1=g(e(?q6v*zxcM z=0#>S1mmxSk^Lolm{S$xf6K^S8+hO|?%BY2)~UE8)KMoSEA+vsOf8jMwxhUeOY=4t zH#*CujjpIYaVN-8--eTFxsw20wJLM=3K8{!8aCelfirU7*1pO(J!=acPNto*aLlyU zd~5pW!3i4A+u33v$I{-zPj?`Wh?F~L5h-SlJyOqVWJ#-aRh2b<8|&WP_IrJd}K_mkWMA=+aB z?J@qcPthI=Xpc!hC2bAkc-W_%;V90vrQd=6CMRChVrp@hf;PPkKD35YIL#GFQrI~1 zMuYJ~O^ks@FyR}I^C$^sEWMrCttTw0R?`gUutMnbb_Jfrl+J|nB&K|{0Fg%x?0J{d2uA}S2u2NOFw?|) zvoUmsn|QC`QJf8oBb<40@31rO?Rh!M*qsb{X#`#x zftcrTJ^+g`@x9d z63TKA8#T7rBmux8uKL*< zXWFHg$D{z_jg9C!lap5ncQ+!rz(fg7QzD5*BE_aet~Do;Xe3f05%(TMP6sDQXee)fLZJ%pomtl~Wl-FROtbK+)Rqh&$Gtu%QrYe-@xfgW*K5Z50j&?oj{0{voNRk6kpDHj>0 z%cfV$yT|r{>l{s|R_t4Ov;Go%?_(>JYETePL;Uo&nJfy{r^$bk-DOC^S+lH$2#QBvVYjDS#D7L(zNP@H<2S-wS?glh&z1c!L%Me$bUqY&)!Vq%YVHiK>XS>H<)e7IJR+3e22A+Rk z#V(D0+4HK+I)h$vUCWmhi+BCo_6#9LOZj!~9ynHGycKwfI&IW01a9B2TbH=+wfTo_ zXs0?YDH3KEK`ck&Z15iopSBr`eG^jSte#N@~+;uE94K>bPjh@72tE7mx=(18^31Jx6u zRmU5$9`R396h)R!BgoM@fQgV_o_0}DY~p9AKT3!5Qo1Evi&`v%OJEXjhQVJGXpCZ} zA0bhme0nRoI6Cq@h9*a+=9EE&0EfOqd{BAtRh0ek_n%LY+#UMnF*M*59lujtRLamN zG5V=310?hyo%Pd;J#tn`Hx=*}l_Er##tqRN(+XXzg_yaYo4 diff --git a/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/CsrMatrix.class b/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/CsrMatrix.class deleted file mode 100644 index 8876eaf55abc130847b86744ae2e70f14d3c025b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1305 zcmb7CZBNrs6n^ejRyI1oA&QDv5p^4bil~cXOvun=$&iHU62qrU*KNhVEL}U{*Z3DS zkzh2L-~CbQx$Ssc`o(m+J?Hd3=RD7I@9#f91^~(^XE1^L89czlG&0DGr6AIxh?ZrP z#<7xtj8z$$j7JO^&;7L1YV{1i$B@{oGGukv3T&t9G)>*0Vye%rKm>`sEy`Y+j_JQ* zNay#e^lTLx3{u5y8Vpl4(=px#_P*i0ay3`yR)c${$cIJA@0iqXwWhna=Jd^` z$u&K2yS`=-o_k%-ZF}6dO{c9@dfqnoJ@asbh}C_rf86HXu#b$ajA^R24S)B71}R?< zDyFGixhy12rN&T;*hOll&(*(odb~xHXD-P$kN$-?Yvc;j?QUs6dG8g`!_*%G>M$B zgrb~qC47@7^p?Shd5+c@%8qHLMDG{H6R_g)^58oXR4bNBQ6v>tRwx=fMymJ?sR1q0 z;4`v6A%Dn?pCJ9~E1{FPO6vmk22GR5{YjcNM{^cwl17uBW0oGE7)`@9T&IlYhAdea z37&~C5=@hX2VvM>0!uP7GH!&wn^b1Fh54a`GJ!;cEOASUzhM4_3W<J(GZXK|f~8S# XJ{G)qM*rgE)F`+V17^4v+Pw4+fllp? diff --git a/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/CuOptConstants.class b/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/CuOptConstants.class deleted file mode 100644 index 712ced93121ee933d2f69bcdd96362413783bc5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9640 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 diff --git a/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/CuOptException.class b/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/CuOptException.class deleted file mode 100644 index 57975a130fdcb373d7f469fac6d38ee533123881..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 573 zcmb7>O-sW-5Qg7v)5fN$t=87Bi{9EI2Jzsb;-x4Qf})k)w`qtg`6AgAf0P$N5j^+< z{88d;TKqsS?qPRkcIKIPXW!mmUI83o(}0Gx3W{jyXzN&KFjC27mJXt+%fN;VF zdBV`{4DDM!DqpoDhx=om2<0z=n!FJy z!=dd&ffdfgRB+45qF7o!)$=4yA}`@VKy+)6UBvSA&T(TYqOi}P2X2~jFK7SK!cg;E zIr^r**y+*>j8T*&j(aAQrshxPzM`1Wv0pnGgxo?35AC|$)J6Ceno{Q4AfAi*v=wmlCM@Z s$Fkg7Mm@(ju(H5gbgH{j?-7N2G71C&=}^H&4m9Tp)ItH3PL diff --git a/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/DataModel$NativeHandle.class b/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/DataModel$NativeHandle.class deleted file mode 100644 index 4ff87972e6d9d7b7dc2f16504c7e869f7b409a45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 953 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 J@OIR7_cw1$?bQGP diff --git a/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/LinearExpression.class b/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/LinearExpression.class deleted file mode 100644 index bdb481d0ee596b196092aea811512cdfe536d9ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8253 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 mxK@K#;zIs!R@rnlO{_4LACY56-SPu` z2@*o0LSn%O@KJ~}PKu~y7Rbsy<9p}abMJ|N{`&p{zzaC@n8WrQs(7NqQyp45v~{p_ zunjyjup?lOB6l2m6Zcg4u7KDVSoY=RUKotyNU9+2snC zZ^9%P{B^q;B>qu2aL4T06}ZFK6XlOQ_p%$iQQDHF$}1J9__aW}b++H`36%E8q1J&4 z+@r)lccW9?U7&Fg_N8~NHcOV`_ljM14*H?*1QRt-(&;DRD0V#ZWi*PyVI+ND1w-es zdwdehc>I#86X_*-vcee`t_|Jz_=XL|R-5@I^N0WNqA{)Av}1Leyq+=Z$O6k;X=VyF zXv@kpm*dR*Nti@^_pQ>)FJ2G7dm$&%L<74f=CNSH)L~JFTRPNGH*p(v0sB8J5vc3F zjwk8UyYmaT9}9569ysSs9hk8hOZt@|89-~m==<2bw{SSwp!QTWWmRHBk5n`s+!dSTW^U@ezi z%#zn~$q#eMr7U?fm%N@!E@#Qxx#SIO{@Gc3Fx|QGDYJ7sm%NorHnQZMT=Jt-;_+{E C-^_CW diff --git a/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/MipCallbackSolution.class b/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/MipCallbackSolution.class deleted file mode 100644 index c5401f43e0515de7cda156361797092d534ca24c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 709 zcmbVJTWb?R7(KJu?6&FV()8-JRbP@6TzqMTiXaVw5bZ-HF9l(;UE|crPT1}S`m40i zQt_cbz#k=^*{mYPCt3Ep&3Dds=9?cszuy4Z!;>03Y}RlGcNbB`J!|g!c;Mrqz`~i) zd8SMv;2ie_8fJ7FN12+%L#gvvK(Oe&P>IT3GUy!l``w{{dtgp@*c_-NewR;1ar$14 zG%M|aiKHINRN1^Ny4fdnCh&X^nMs(;)QOT|l$&W5YT{)&P0cu!lZi^k;afF5kXnyq z^!cciwlAr+2zm>oSXnx8znjU7pmAOrA#ZYh@*E{)6)Ashr6GOW5+U9pDij z2k@~FU=cNe-T%`m(6Y3lmb}MYm;eQFU-JVlT8FRFRGxDiUSy`{haUxeF7*vBglBvh zk5A^HWyLURSv~X>a0Lix>&!kdcj;Gq*ATs(ottlPu2AW9uHas2E_&*;4Sr3m zkgdu3Hqpc~Tc)>>oh6FMPIDNy**%}NSL8swcgYF-?Xa(Go)7T~;7UPk<*~6O79?IP YNy3t(N&@%GE%3%);OZandeOD<3pNspNdN!< diff --git a/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/MipSetSolutionCallback.class b/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/MipSetSolutionCallback.class deleted file mode 100644 index 3f55614bc67c76a21b4fbf68395760ce0b3023d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 336 zcma)&!Ab)$5QhJ$bywSq*W#g9dof3moF}TmR+Ns>W$HHK3i(vDz}rh zu+qtQQCV?@Ll=A#xNRk~E9vgp+M4y-VceWBs(cFCEW{eZWoD`$+X27sg@nm-a#33I zB3r4gxpU4(?o(|E(_f($$?3k$_R&QXURj$gx;-x9KYGH&-;E0bVUX_x(2#I~Vg3zp Ox_=9lxfYo?1HJ*5x@T+v diff --git a/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/MipSolutionCallback.class b/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/MipSolutionCallback.class deleted file mode 100644 index 284051ffab0873633d76dd5ca7bfac0bb4202a1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 277 zcmZvXF-rqM5QX2wc&D+k)XLU0Zl^^m@dyZtkU$!%xy>3T?#&*X-TXKUe}F$q+!F*5 zo0(yF@0&LtpKtE~Zg5iLxWd44cSZCneNBw+W|zLstaCs5}eMm~en`nMOGLt`+LitD-mp Fz5vfiPuTzf diff --git a/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/NativeCuOpt.class b/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/NativeCuOpt.class deleted file mode 100644 index 2d8d1d74bdac70d3e2bb46fc862cd5c1d0b387b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5582 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 XRe?EpHYS@@ zAKmp)!B0^tvMI5#__#8A@B7K7ijN$HqPePV8zpDfHj8>8YZa=FX_XY}T1+c6)R;_H z+ovLC$#hJ;P=}1K8MdA`6bd(nd2w^l-`HW?S;vY>wb*%1MWGM|+xN%No`PO+t{N3b zw;i4`o%M@)xf7|-Zt1G_t&l)Rs0)UfUqQ|aQVTX_vW`*Cn)eX@kYhPWYPnF(I7o@F z0kJ5V*33%2eJ0B1Pw1s(b6Izc%Xgh@&a!!*wzyiOgGh7pb~oeLZZ;3fnx&jE)k<3- z?ftrv@CDW956Pt7jqb}=i6&>ekDA@z=J zH4{T zMe1GC3snO-#q)+UAy>0!SS*dTR&?rQ8zwSRRYzMh3~35`ptY6IHm}P{EobThlGQGiFXEd0-&=w&_mY^EGqq66rIh zEv=UNBbdPLxC>w>hFc}IwFdlIt7_+r3nr^0wndJktNNO*(qXEq^cI~}X(uIB+QsH& zHoMup!e$Sfy=?Ze+0W)x8dhn9jYbDlI>_b_e~z+Av3ZRSD0JjSDn+5u{{frEE3;-y zRA zi~KS*pQn1%_*W^U#%)_)hx)x-!83PI?5JT55XnaHe@HY)VI~n?n0XXEs1!Ze6g>zP zJvbFTXcaw}6+OrmJ@^$pC>A|f7Cnd-J-8M<=oUQ~7d=QvA0>q;fPI5V`Hs428%96V zo{^#**r2W&b!!Jj@6is4zDG-VgyYo`J;L#639oQ^wS-SNeOjVdIDReBC!BsQ?yr%m z#nl=OXwg880$Ma!qo5WK)hMLJ!!;Vz;*lDKwP>tHLq8*oE;<4`O+&DU$OFZ)U?b4$ z4g|dqVUHs0<5+c;j#7q>(N%n1rxSFGPSP^HNvkwQWjY1XorcKH(5EP%quA{iTs+bQ z;y8Ntm<~mFOh}jTn38VcF)1G5F)cm9V`99*V`_ZDV{&?h$Mp0Gj|uV%k10}x$0P-W z$20|n$3%sM$5hqhW3nP*jOmJD?-R&OkVSvfb`j^wZxp$a?B1YQ62!!kASIRrA+aRL zh$TTpEEy8tAu$lDkARnL$&g>z{tb#JL#nU?Vk97JP}mU0pHboo;%H~&9I~IFemak+ zFG5He#B&*PejCipAlfV7Xb$(gfV;nem5W$$6EnBz8tM4T!5WmObAl07-2MtU8^bvS z&Q3S-d_-}axf{GGhqC&+l#{oWoedLh)(Z^9_2bbt_&m{ID$>AB{r=s4L_+ z(SUQQF`R=2XI*am=WY1jMj#5MrFgDGH~tGL{=5{=w1#ZOA{D4s3&@1^+5Qas9T3;qWwehO7puliI& zep~?RPY_bQBtB#gL>_SX7`saCwPRs7O*!Q2WrQjlD{?IJ?o>34g$^ z@C--@A=D4xqY$$uq7Qv3NZy$_OL6ek_&XW@7Zv@bOrxq2JOfNe!1O?F*F% zhTPE}L-}b)p)!5WkZ&{(7z!;N(a*&W5%i|xfiQ3RASTaJM~6H<;6_?JcP{i(9=@Xv z=Gg7)sR_ldv>D!OqbYR!;F!-iQMOeW>x6pgigctS2kTV7CzAA~PErRO9(>&O;NpUZ zd#HP8pvkaevxAtcVbIh4X*k-IB97X|XyakihTTVvk%&u{o~@xuc8=bq?3E53 gis=3oC}1fIxJ+aqv`q49=2^xnX_siqq){#Z1`K@IzyJUM diff --git a/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Problem$MatrixBuild.class b/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Problem$MatrixBuild.class deleted file mode 100644 index be8d2b5dcbffba118b66ff2541f551e83d1e2525..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 zcmbtTU2hUW6g{(S`RZC))LQCyr3%}^`V}>yX;MIA6KqW|ec@?XRyxhHOJ)}$KgJ*7 z1JU@3hn6cmhs(b7yOQ^M!s}YKK)#6bD-27M z>zeNcq2$5~1BS)M5g&4E5DM37h#;i2R8w?49uB0#uyf{mYo?mh0+nsz%h=Pn>39LL zYON|mOde8wtyQO%wuC3bZHA|XnfRwYol#e5Ra^Dq0fS!iJ5(prpn2>KdTmF(;%%2s zvJKzn?g5uV#V3b)cqmB9{A5tofp9wv#;)f%vgYz2aOm>MEW%z&pICeO--xLHC>uy)-hhE~30Ma1 z;+}y;EGcx~Ko;j29?f9Hzs!c*7n#rHWYqokkzJAJGgf(O+rUs*PYL9lZDNW)ct;-a> zMGSMaubc0|%#ATLb90QCSt=cWfIh~YnbUJR;rJMdca#{zC0bVzC-%?KwJ%6%U$LNl z!;1DDdF=;Q=>Fk^6gga>i0C76EJ8}279k}p79k}~$5p}x2~_z8N!L!AxJFsm=~TlF S+>G`$T&6uuxk;>%n$=&guPO@w diff --git a/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Problem.class b/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Problem.class deleted file mode 100644 index 11b297761bfd7843090d010f84102f5791333ac0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30615 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 L_>x?cMbG^YX>;uF diff --git a/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/QuadraticExpression$QuadraticTerm.class b/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/QuadraticExpression$QuadraticTerm.class deleted file mode 100644 index 1951d7b09bd4504983f7ab9e80c30138397e7efd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1080 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 b=R)`t?&DwiX4Hx+_$2@9+sev+IXeFj`s`#n diff --git a/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Solution$NativeHandle.class b/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Solution$NativeHandle.class deleted file mode 100644 index 5787f990c176580aeeee643f4915b1f05bb44b2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 949 zcmbV~!EVz)5QhIvLY=ryQ_?0tDI`FFG?f}|Ad0v|RBaU!i9jWe8)ubnacr};BX|!k z@Bn}WLIMg!Ai5?cw^+IC%`nhp;FLDicr+Z#6Ak?c#}up`e88xGOA@|8DG zd^nWupwac5D3qSNGL70`m{sC&B$ep+!evO;w8nflqW{In^LRI zPk8J5e8d^DZ4rc9UJx3%YQaL;f{9s%iY_-CP71aiM+~?_>`>f!Vhdl(p?6P6RT)%m z#|uPX18N3VE!2@`xN+R)G0Y#0@AUSC9n!p`)V;`cWAoSkV+2E~);fZ8Lq+~>Xy4ZV zffC!_j5jy~Xp1nZ+8`2MpnM0iT zq3P)<`Wqs@#RA@q=~jF%p`RM}vIR<>{sVuIz{@fGISM-Xf|+_Q5g+4=)CYVZ{6|6` iki5@RBg%h|D3PW!)Ski;&W`tG(xhL<$iZb4vGf~RQr1QQ diff --git a/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Solution.class b/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/Solution.class deleted file mode 100644 index 4ee3c6256a1c78c8812820fc60de88ae11ad5419..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6972 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 diff --git a/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/SolverMethod.class b/java/cuopt/target/classes/com/nvidia/cuopt/linearprogramming/SolverMethod.class deleted file mode 100644 index cc387da7bf8067549f7f59a6d5e86c538dc39f75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1694 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 H^k4c9IL-gS diff --git a/java/cuopt/target/generated-sources/cuopt/com/nvidia/cuopt/linearprogramming/CuOptConstants.java b/java/cuopt/target/generated-sources/cuopt/com/nvidia/cuopt/linearprogramming/CuOptConstants.java deleted file mode 100644 index 9a5788b21b..0000000000 --- a/java/cuopt/target/generated-sources/cuopt/com/nvidia/cuopt/linearprogramming/CuOptConstants.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.nvidia.cuopt.linearprogramming; - -public final class CuOptConstants { - private CuOptConstants() {} - - public static final int CUOPT_INSTANTIATE_FLOAT = 0; - public static final int CUOPT_INSTANTIATE_DOUBLE = 1; - public static final int CUOPT_INSTANTIATE_INT32 = 1; - public static final int CUOPT_INSTANTIATE_INT64 = 0; - public static final String CUOPT_ABSOLUTE_DUAL_TOLERANCE = "absolute_dual_tolerance"; - public static final String CUOPT_RELATIVE_DUAL_TOLERANCE = "relative_dual_tolerance"; - public static final String CUOPT_ABSOLUTE_PRIMAL_TOLERANCE = "absolute_primal_tolerance"; - public static final String CUOPT_RELATIVE_PRIMAL_TOLERANCE = "relative_primal_tolerance"; - public static final String CUOPT_ABSOLUTE_GAP_TOLERANCE = "absolute_gap_tolerance"; - public static final String CUOPT_RELATIVE_GAP_TOLERANCE = "relative_gap_tolerance"; - public static final String CUOPT_INFEASIBILITY_DETECTION = "infeasibility_detection"; - public static final String CUOPT_STRICT_INFEASIBILITY = "strict_infeasibility"; - public static final String CUOPT_PRIMAL_INFEASIBLE_TOLERANCE = "primal_infeasible_tolerance"; - public static final String CUOPT_DUAL_INFEASIBLE_TOLERANCE = "dual_infeasible_tolerance"; - public static final String CUOPT_ITERATION_LIMIT = "iteration_limit"; - public static final String CUOPT_TIME_LIMIT = "time_limit"; - public static final String CUOPT_WORK_LIMIT = "work_limit"; - public static final String CUOPT_NODE_LIMIT = "node_limit"; - public static final String CUOPT_PDLP_SOLVER_MODE = "pdlp_solver_mode"; - public static final String CUOPT_METHOD = "method"; - public static final String CUOPT_PER_CONSTRAINT_RESIDUAL = "per_constraint_residual"; - public static final String CUOPT_SAVE_BEST_PRIMAL_SO_FAR = "save_best_primal_so_far"; - public static final String CUOPT_FIRST_PRIMAL_FEASIBLE = "first_primal_feasible"; - public static final String CUOPT_LOG_FILE = "log_file"; - public static final String CUOPT_LOG_TO_CONSOLE = "log_to_console"; - public static final String CUOPT_CROSSOVER = "crossover"; - public static final String CUOPT_FOLDING = "folding"; - public static final String CUOPT_AUGMENTED = "augmented"; - public static final String CUOPT_DUALIZE = "dualize"; - public static final String CUOPT_ORDERING = "ordering"; - public static final String CUOPT_BARRIER_DUAL_INITIAL_POINT = "barrier_dual_initial_point"; - public static final String CUOPT_BARRIER_ITERATIVE_REFINEMENT = "barrier_iterative_refinement"; - public static final String CUOPT_BARRIER_STEP_SCALE = "barrier_step_scale"; - public static final String CUOPT_ELIMINATE_DENSE_COLUMNS = "eliminate_dense_columns"; - public static final String CUOPT_CUDSS_DETERMINISTIC = "cudss_deterministic"; - public static final String CUOPT_PRESOLVE = "presolve"; - public static final String CUOPT_MIP_PROBING = "mip_probing"; - public static final String CUOPT_DUAL_POSTSOLVE = "dual_postsolve"; - public static final String CUOPT_MIP_DETERMINISM_MODE = "mip_determinism_mode"; - public static final String CUOPT_MIP_ABSOLUTE_TOLERANCE = "mip_absolute_tolerance"; - public static final String CUOPT_MIP_RELATIVE_TOLERANCE = "mip_relative_tolerance"; - public static final String CUOPT_MIP_INTEGRALITY_TOLERANCE = "mip_integrality_tolerance"; - public static final String CUOPT_MIP_ABSOLUTE_GAP = "mip_absolute_gap"; - public static final String CUOPT_MIP_RELATIVE_GAP = "mip_relative_gap"; - public static final String CUOPT_MIP_HEURISTICS_ONLY = "mip_heuristics_only"; - public static final String CUOPT_MIP_SCALING = "mip_scaling"; - public static final String CUOPT_MIP_PRESOLVE = "mip_presolve"; - public static final String CUOPT_MIP_SYMMETRY = "mip_symmetry"; - public static final String CUOPT_MIP_RELIABILITY_BRANCHING = "mip_reliability_branching"; - public static final String CUOPT_MIP_CUT_PASSES = "mip_cut_passes"; - public static final String CUOPT_MIP_MIXED_INTEGER_ROUNDING_CUTS = "mip_mixed_integer_rounding_cuts"; - public static final String CUOPT_MIP_MIXED_INTEGER_GOMORY_CUTS = "mip_mixed_integer_gomory_cuts"; - public static final String CUOPT_MIP_KNAPSACK_CUTS = "mip_knapsack_cuts"; - public static final String CUOPT_MIP_FLOW_COVER_CUTS = "mip_flow_cover_cuts"; - public static final String CUOPT_MIP_IMPLIED_BOUND_CUTS = "mip_implied_bound_cuts"; - public static final String CUOPT_MIP_CLIQUE_CUTS = "mip_clique_cuts"; - public static final String CUOPT_MIP_STRONG_CHVATAL_GOMORY_CUTS = "mip_strong_chvatal_gomory_cuts"; - public static final String CUOPT_MIP_REDUCED_COST_STRENGTHENING = "mip_reduced_cost_strengthening"; - public static final String CUOPT_MIP_OBJECTIVE_STEP = "mip_objective_step"; - public static final String CUOPT_MIP_CUT_CHANGE_THRESHOLD = "mip_cut_change_threshold"; - public static final String CUOPT_MIP_CUT_MIN_ORTHOGONALITY = "mip_cut_min_orthogonality"; - public static final String CUOPT_MIP_BATCH_PDLP_STRONG_BRANCHING = "mip_batch_pdlp_strong_branching"; - public static final String CUOPT_MIP_BATCH_PDLP_RELIABILITY_BRANCHING = "mip_batch_pdlp_reliability_branching"; - public static final String CUOPT_SOLUTION_FILE = "solution_file"; - public static final String CUOPT_NUM_CPU_THREADS = "num_cpu_threads"; - public static final String CUOPT_NUM_GPUS = "num_gpus"; - public static final String CUOPT_USER_PROBLEM_FILE = "user_problem_file"; - public static final String CUOPT_PRESOLVE_FILE = "presolve_file"; - public static final String CUOPT_RANDOM_SEED = "random_seed"; - public static final String CUOPT_PDLP_PRECISION = "pdlp_precision"; - public static final String CUOPT_MIP_SEMICONTINUOUS_BIG_M = "mip_semi_continuous_big_m"; - public static final String CUOPT_MIP_HYPER_HEURISTIC_POPULATION_SIZE = "mip_hyper_heuristic_population_size"; - public static final String CUOPT_MIP_HYPER_HEURISTIC_NUM_CPUFJ_THREADS = "mip_hyper_heuristic_num_cpufj_threads"; - public static final String CUOPT_MIP_HYPER_HEURISTIC_PRESOLVE_TIME_RATIO = "mip_hyper_heuristic_presolve_time_ratio"; - public static final String CUOPT_MIP_HYPER_HEURISTIC_PRESOLVE_MAX_TIME = "mip_hyper_heuristic_presolve_max_time"; - public static final String CUOPT_MIP_HYPER_HEURISTIC_ROOT_LP_TIME_RATIO = "mip_hyper_heuristic_root_lp_time_ratio"; - public static final String CUOPT_MIP_HYPER_HEURISTIC_ROOT_LP_MAX_TIME = "mip_hyper_heuristic_root_lp_max_time"; - public static final String CUOPT_MIP_HYPER_HEURISTIC_RINS_TIME_LIMIT = "mip_hyper_heuristic_rins_time_limit"; - public static final String CUOPT_MIP_HYPER_HEURISTIC_RINS_MAX_TIME_LIMIT = "mip_hyper_heuristic_rins_max_time_limit"; - public static final String CUOPT_MIP_HYPER_HEURISTIC_RINS_FIX_RATE = "mip_hyper_heuristic_rins_fix_rate"; - public static final String CUOPT_MIP_HYPER_HEURISTIC_STAGNATION_TRIGGER = "mip_hyper_heuristic_stagnation_trigger"; - public static final String CUOPT_MIP_HYPER_HEURISTIC_ENABLED_RECOMBINERS = "mip_hyper_heuristic_enabled_recombiners"; - public static final String CUOPT_MIP_HYPER_HEURISTIC_RELAXED_LP_TIME_LIMIT = "mip_hyper_heuristic_relaxed_lp_time_limit"; - public static final String CUOPT_MIP_HYPER_DIVING_LINE_SEARCH = "mip_hyper_diving_line_search"; - public static final String CUOPT_MIP_HYPER_DIVING_PSEUDOCOST = "mip_hyper_diving_pseudocost"; - public static final String CUOPT_MIP_HYPER_DIVING_GUIDED = "mip_hyper_diving_guided"; - public static final String CUOPT_MIP_HYPER_DIVING_COEFFICIENT = "mip_hyper_diving_coefficient"; - public static final String CUOPT_MIP_HYPER_DIVING_MIN_NODE_DEPTH = "mip_hyper_diving_min_node_depth"; - public static final String CUOPT_MIP_HYPER_DIVING_NODE_LIMIT = "mip_hyper_diving_node_limit"; - public static final String CUOPT_MIP_HYPER_DIVING_ITERATION_LIMIT_FACTOR = "mip_hyper_diving_iteration_limit_factor"; - public static final String CUOPT_MIP_HYPER_DIVING_BACKTRACK_LIMIT = "mip_hyper_diving_backtrack_limit"; - public static final String CUOPT_MIP_HYPER_DIVING_SHOW_TYPE = "mip_hyper_diving_show_type"; - public static final int CUOPT_MODE_OPPORTUNISTIC = 0; - public static final int CUOPT_MODE_DETERMINISTIC = 1; - public static final int CUOPT_TERMINATION_STATUS_NO_TERMINATION = 0; - public static final int CUOPT_TERMINATION_STATUS_OPTIMAL = 1; - public static final int CUOPT_TERMINATION_STATUS_INFEASIBLE = 2; - public static final int CUOPT_TERMINATION_STATUS_UNBOUNDED = 3; - public static final int CUOPT_TERMINATION_STATUS_ITERATION_LIMIT = 4; - public static final int CUOPT_TERMINATION_STATUS_TIME_LIMIT = 5; - public static final int CUOPT_TERMINATION_STATUS_NUMERICAL_ERROR = 6; - public static final int CUOPT_TERMINATION_STATUS_PRIMAL_FEASIBLE = 7; - public static final int CUOPT_TERMINATION_STATUS_FEASIBLE_FOUND = 8; - public static final int CUOPT_TERMINATION_STATUS_CONCURRENT_LIMIT = 9; - public static final int CUOPT_TERMINATION_STATUS_WORK_LIMIT = 10; - public static final int CUOPT_TERMINATION_STATUS_UNBOUNDED_OR_INFEASIBLE = 11; - public static final int CUOPT_MINIMIZE = 1; - public static final int CUOPT_MAXIMIZE = -1; - public static final byte CUOPT_LESS_THAN = (byte) 'L'; - public static final byte CUOPT_GREATER_THAN = (byte) 'G'; - public static final byte CUOPT_EQUAL = (byte) 'E'; - public static final byte CUOPT_CONTINUOUS = (byte) 'C'; - public static final byte CUOPT_INTEGER = (byte) 'I'; - public static final byte CUOPT_SEMI_CONTINUOUS = (byte) 'S'; - public static final int CUOPT_PDLP_SOLVER_MODE_STABLE1 = 0; - public static final int CUOPT_PDLP_SOLVER_MODE_STABLE2 = 1; - public static final int CUOPT_PDLP_SOLVER_MODE_METHODICAL1 = 2; - public static final int CUOPT_PDLP_SOLVER_MODE_FAST1 = 3; - public static final int CUOPT_PDLP_SOLVER_MODE_STABLE3 = 4; - public static final int CUOPT_METHOD_CONCURRENT = 0; - public static final int CUOPT_METHOD_PDLP = 1; - public static final int CUOPT_METHOD_DUAL_SIMPLEX = 2; - public static final int CUOPT_METHOD_BARRIER = 3; - public static final int CUOPT_METHOD_UNSET = 4; - public static final int CUOPT_PDLP_DEFAULT_PRECISION = -1; - public static final int CUOPT_PDLP_SINGLE_PRECISION = 0; - public static final int CUOPT_PDLP_DOUBLE_PRECISION = 1; - public static final int CUOPT_PDLP_MIXED_PRECISION = 2; - public static final int CUOPT_FILE_FORMAT_MPS = 0; - public static final int CUOPT_SUCCESS = 0; - public static final int CUOPT_INVALID_ARGUMENT = 1; - public static final int CUOPT_MPS_FILE_ERROR = 2; - public static final int CUOPT_MPS_PARSE_ERROR = 3; - public static final int CUOPT_VALIDATION_ERROR = 4; - public static final int CUOPT_OUT_OF_MEMORY = 5; - public static final int CUOPT_RUNTIME_ERROR = 6; - public static final int CUOPT_PRESOLVE_DEFAULT = -1; - public static final int CUOPT_PRESOLVE_OFF = 0; - public static final int CUOPT_PRESOLVE_PAPILO = 1; - public static final int CUOPT_PRESOLVE_PSLP = 2; - public static final int CUOPT_MIP_SCALING_OFF = 0; - public static final int CUOPT_MIP_SCALING_ON = 1; - public static final int CUOPT_MIP_SCALING_NO_OBJECTIVE = 2; - public static final int CUOPT_BARRIER_ITERATIVE_REFINEMENT_OFF = 0; - public static final int CUOPT_BARRIER_ITERATIVE_REFINEMENT_ON = 1; -} diff --git a/java/cuopt/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/java/cuopt/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst deleted file mode 100644 index f2f5884bd4..0000000000 --- a/java/cuopt/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ /dev/null @@ -1,34 +0,0 @@ -com/nvidia/cuopt/linearprogramming/SolverSettings$NativeHandle.class -com/nvidia/cuopt/linearprogramming/LinearExpression.class -com/nvidia/cuopt/linearprogramming/Constraint.class -com/nvidia/cuopt/linearprogramming/BatchSolve.class -com/nvidia/cuopt/linearprogramming/SolverSettings.class -com/nvidia/cuopt/linearprogramming/Solution.class -com/nvidia/cuopt/linearprogramming/SolverMethod.class -com/nvidia/cuopt/linearprogramming/QuadraticExpression$QuadraticTerm.class -com/nvidia/cuopt/linearprogramming/LPStats.class -com/nvidia/cuopt/linearprogramming/ObjectiveSense.class -com/nvidia/cuopt/linearprogramming/CuOptConstants.class -com/nvidia/cuopt/linearprogramming/VariableType.class -com/nvidia/cuopt/linearprogramming/DataModel.class -com/nvidia/cuopt/linearprogramming/QuadraticExpression.class -com/nvidia/cuopt/linearprogramming/QuadraticConstraint.class -com/nvidia/cuopt/linearprogramming/Variable.class -com/nvidia/cuopt/linearprogramming/MIPStats.class -com/nvidia/cuopt/linearprogramming/MipCallbackSolution.class -com/nvidia/cuopt/linearprogramming/CuOptException.class -com/nvidia/cuopt/linearprogramming/ConstraintSense.class -com/nvidia/cuopt/linearprogramming/PDLPSolverMode.class -com/nvidia/cuopt/linearprogramming/PDLPWarmStartData.class -com/nvidia/cuopt/linearprogramming/TerminationStatus.class -com/nvidia/cuopt/linearprogramming/ProblemCategory.class -com/nvidia/cuopt/linearprogramming/Solution$NativeHandle.class -com/nvidia/cuopt/linearprogramming/BatchSolveResult.class -com/nvidia/cuopt/linearprogramming/NativeCuOpt.class -com/nvidia/cuopt/linearprogramming/CsrMatrix.class -com/nvidia/cuopt/linearprogramming/MipSetSolutionCallback.class -com/nvidia/cuopt/linearprogramming/DataModel$NativeHandle.class -com/nvidia/cuopt/linearprogramming/Problem$1.class -com/nvidia/cuopt/linearprogramming/MipSolutionCallback.class -com/nvidia/cuopt/linearprogramming/Problem$MatrixBuild.class -com/nvidia/cuopt/linearprogramming/Problem.class diff --git a/java/cuopt/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/java/cuopt/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst deleted file mode 100644 index 259b513caa..0000000000 --- a/java/cuopt/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ /dev/null @@ -1,28 +0,0 @@ -/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/BatchSolve.java -/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/BatchSolveResult.java -/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Constraint.java -/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/ConstraintSense.java -/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/CsrMatrix.java -/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/CuOptException.java -/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/DataModel.java -/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/LPStats.java -/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/LinearExpression.java -/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MIPStats.java -/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MipCallbackSolution.java -/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MipSetSolutionCallback.java -/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/MipSolutionCallback.java -/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/NativeCuOpt.java -/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/ObjectiveSense.java -/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/PDLPSolverMode.java -/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/PDLPWarmStartData.java -/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Problem.java -/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/ProblemCategory.java -/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/QuadraticConstraint.java -/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/QuadraticExpression.java -/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Solution.java -/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/SolverMethod.java -/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/SolverSettings.java -/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/TerminationStatus.java -/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/Variable.java -/home/cbrissette/cuopt/java/cuopt/src/main/java/com/nvidia/cuopt/linearprogramming/VariableType.java -/home/cbrissette/cuopt/java/cuopt/target/generated-sources/cuopt/com/nvidia/cuopt/linearprogramming/CuOptConstants.java diff --git a/java/cuopt/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/java/cuopt/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst deleted file mode 100644 index 7f7832c62b..0000000000 --- a/java/cuopt/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst +++ /dev/null @@ -1,7 +0,0 @@ -com/nvidia/cuopt/linearprogramming/NativeIntegrationTest.class -com/nvidia/cuopt/linearprogramming/PythonParityTest$ProcessResult.class -com/nvidia/cuopt/linearprogramming/PythonParityTest$JavaResult.class -com/nvidia/cuopt/linearprogramming/ProblemModelingTest.class -com/nvidia/cuopt/linearprogramming/PythonParityTest$CaseSpec.class -com/nvidia/cuopt/linearprogramming/PythonParityTest.class -com/nvidia/cuopt/linearprogramming/PythonParityTest$PythonResult.class diff --git a/java/cuopt/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/java/cuopt/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst deleted file mode 100644 index 5e18263b3a..0000000000 --- a/java/cuopt/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst +++ /dev/null @@ -1,3 +0,0 @@ -/home/cbrissette/cuopt/java/cuopt/src/test/java/com/nvidia/cuopt/linearprogramming/NativeIntegrationTest.java -/home/cbrissette/cuopt/java/cuopt/src/test/java/com/nvidia/cuopt/linearprogramming/ProblemModelingTest.java -/home/cbrissette/cuopt/java/cuopt/src/test/java/com/nvidia/cuopt/linearprogramming/PythonParityTest.java diff --git a/java/cuopt/target/surefire-reports/2026-07-07T10-51-16_754-jvmRun1.dumpstream b/java/cuopt/target/surefire-reports/2026-07-07T10-51-16_754-jvmRun1.dumpstream deleted file mode 100644 index 0410112a47..0000000000 --- a/java/cuopt/target/surefire-reports/2026-07-07T10-51-16_754-jvmRun1.dumpstream +++ /dev/null @@ -1,345 +0,0 @@ -# Created at 2026-07-07T10:51:18.319 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Error parsing input file: {"MPS_PARSER_ERROR_TYPE": "ValidationError", "msg": "Error opening input file! Given path: missing-file-does-not-exist.mps"}'. - -# Created at 2026-07-07T10:51:18.320 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Setting parameter method to 1'. - -# Created at 2026-07-07T10:51:18.320 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'cuOpt version: 26.8.0, git hash: c58e6fe8, host arch: x86_64, device archs: 86-real'. - -# Created at 2026-07-07T10:51:18.320 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'CPU: 13th Gen Intel(R) Core(TM) i7-13800H, threads (physical/logical): 10/20, RAM: 10.68 GiB'. - -# Created at 2026-07-07T10:51:18.321 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'CUDA 13.2, device: NVIDIA RTX A1000 6GB Laptop GPU (ID 0), VRAM: 6.00 GiB'. - -# Created at 2026-07-07T10:51:18.341 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'CUDA device UUID: fb968757-0d05-4cc2-229b-dc9fe8668e48'. - -# Created at 2026-07-07T10:51:18.341 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Solving a problem with 1 constraints, 2 variables (0 integers), and 2 nonzeros'. - -# Created at 2026-07-07T10:51:18.341 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Problem scaling:'. - -# Created at 2026-07-07T10:51:18.341 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Objective coefficents range: [1e+00, 1e+00]'. - -# Created at 2026-07-07T10:51:18.342 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Constraint matrix coefficients range: [1e+00, 1e+00]'. - -# Created at 2026-07-07T10:51:18.342 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Constraint rhs / bounds range: [0e+00, 1e+00]'. - -# Created at 2026-07-07T10:51:18.436 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Variable bounds range: [0e+00, 0e+00]'. - -# Created at 2026-07-07T10:51:18.437 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Using PSLP presolver'. - -# Created at 2026-07-07T10:51:18.437 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'PSLP Presolved problem: 0 constraints, 0 variables, 0 non-zeros'. - -# Created at 2026-07-07T10:51:18.437 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Presolve completely solved the problem'. - -# Created at 2026-07-07T10:51:18.437 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'PSLP presolve time: 0.10s'. - -# Created at 2026-07-07T10:51:18.438 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Status: Optimal Objective: 1.000000'. - -# Created at 2026-07-07T10:51:18.439 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'cuOpt version: 26.8.0, git hash: c58e6fe8, host arch: x86_64, device archs: 86-real'. - -# Created at 2026-07-07T10:51:18.439 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'CPU: 13th Gen Intel(R) Core(TM) i7-13800H, threads (physical/logical): 10/20, RAM: 10.59 GiB'. - -# Created at 2026-07-07T10:51:18.439 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'CUDA 13.2, device: NVIDIA RTX A1000 6GB Laptop GPU (ID 0), VRAM: 6.00 GiB'. - -# Created at 2026-07-07T10:51:18.440 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'CUDA device UUID: fb968757-0d05-4cc2-229b-dc9fe8668e48'. - -# Created at 2026-07-07T10:51:18.440 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Solving a problem with 1 constraints, 2 variables (0 integers), and 2 nonzeros'. - -# Created at 2026-07-07T10:51:18.441 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Problem scaling:'. - -# Created at 2026-07-07T10:51:18.441 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Objective coefficents range: [1e+00, 1e+00]'. - -# Created at 2026-07-07T10:51:18.441 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Constraint matrix coefficients range: [1e+00, 1e+00]'. - -# Created at 2026-07-07T10:51:18.441 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Constraint rhs / bounds range: [0e+00, 1e+00]'. - -# Created at 2026-07-07T10:51:18.443 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Variable bounds range: [0e+00, 0e+00]'. - -# Created at 2026-07-07T10:51:18.443 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Using PSLP presolver'. - -# Created at 2026-07-07T10:51:18.443 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'PSLP Presolved problem: 0 constraints, 0 variables, 0 non-zeros'. - -# Created at 2026-07-07T10:51:18.443 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Presolve completely solved the problem'. - -# Created at 2026-07-07T10:51:18.443 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'PSLP presolve time: 0.00s'. - -# Created at 2026-07-07T10:51:18.445 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Status: Optimal Objective: 1.000000'. - -# Created at 2026-07-07T10:51:18.539 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Setting parameter iteration_limit to 50'. - -# Created at 2026-07-07T10:51:18.540 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'cuOpt version: 26.8.0, git hash: c58e6fe8, host arch: x86_64, device archs: 86-real'. - -# Created at 2026-07-07T10:51:18.540 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'CPU: 13th Gen Intel(R) Core(TM) i7-13800H, threads (physical/logical): 10/20, RAM: 10.59 GiB'. - -# Created at 2026-07-07T10:51:18.540 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'CUDA 13.2, device: NVIDIA RTX A1000 6GB Laptop GPU (ID 0), VRAM: 6.00 GiB'. - -# Created at 2026-07-07T10:51:18.541 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'CUDA device UUID: fb968757-0d05-4cc2-229b-dc9fe8668e48'. - -# Created at 2026-07-07T10:51:18.544 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Problem has a quadratic objective. Solving with barrier.'. - -# Created at 2026-07-07T10:51:18.544 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Presolved problem: 1 constraints 3 variables 3 nonzeros'. - -# Created at 2026-07-07T10:51:18.544 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Skipping Ruiz equilibration (row norm ratio 1.0 < 100)'. - -# Created at 2026-07-07T10:51:18.545 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Barrier solver started at 0.00 seconds'. - -# Created at 2026-07-07T10:51:18.545 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Barrier solver: 1 constraints, 3 variables, 3 nonzeros'. - -# Created at 2026-07-07T10:51:18.550 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Quadratic objective matrix : 2 nonzeros'. - -# Created at 2026-07-07T10:51:18.550 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Density estimator time : 0.00s'. - -# Created at 2026-07-07T10:51:18.571 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Linear system : ADAT'. - -# Created at 2026-07-07T10:51:20.846 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'cuDSS Version : 0.7.1'. - -# Created at 2026-07-07T10:51:20.884 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'cuDSS Threading layer : libcudss_mtlayer_gomp.so.0'. - -# Created at 2026-07-07T10:51:20.884 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'ADAT time : 0.02s'. - -# Created at 2026-07-07T10:51:20.884 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'ADAT nonzeros : 1.00e+00'. - -# Created at 2026-07-07T10:51:20.901 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'ADAT density : 1.00'. - -# Created at 2026-07-07T10:51:20.927 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Reordering time : 0.02s'. - -# Created at 2026-07-07T10:51:20.927 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Symbolic factorization time : 0.03s'. - -# Created at 2026-07-07T10:51:20.927 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Total symbolic time : 0.04s'. - -# Created at 2026-07-07T10:51:20.981 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Symbolic nonzeros in factor : 5.00e-01'. - -# Created at 2026-07-07T10:51:20.982 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream ' Objective Infeasibility Time'. - -# Created at 2026-07-07T10:51:20.982 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Iter Primal Dual Primal Dual Compl. Elapsed'. - -# Created at 2026-07-07T10:51:21.005 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream ' 0 +6.049112426036e+02 -5.832189349112e+02 5.35e+00 3.86e+01 1.80e-01 2.4'. - -# Created at 2026-07-07T10:51:21.010 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream ' 1 +4.469460257991e+01 -3.485280616596e+01 5.35e-01 3.86e+00 4.58e-01 2.5'. - -# Created at 2026-07-07T10:51:21.015 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream ' 2 +8.367439798893e+00 -3.492279228860e+00 5.35e-02 3.86e-01 4.30e-01 2.5'. - -# Created at 2026-07-07T10:51:21.019 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream ' 3 +2.503548924546e+00 +6.142256097856e-01 5.35e-03 3.86e-02 2.19e-01 2.5'. - -# Created at 2026-07-07T10:51:21.023 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream ' 4 +1.871082024496e+00 +1.567052140041e+00 9.06e-04 6.54e-03 4.55e-02 2.5'. - -# Created at 2026-07-07T10:51:21.027 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream ' 5 +1.806936125983e+00 +1.772196769365e+00 9.76e-05 7.04e-04 5.81e-03 2.5'. - -# Created at 2026-07-07T10:51:21.032 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream ' 6 +1.800675069041e+00 +1.797202839171e+00 9.78e-06 7.06e-05 5.78e-04 2.5'. - -# Created at 2026-07-07T10:51:21.036 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream ' 7 +1.800067297846e+00 +1.799720448966e+00 9.78e-07 7.06e-06 5.76e-05 2.5'. - -# Created at 2026-07-07T10:51:21.040 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream ' 8 +1.800006727679e+00 +1.799972046957e+00 9.78e-08 7.06e-07 5.76e-06 2.5'. - -# Created at 2026-07-07T10:51:21.045 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream ' 9 +1.800000672747e+00 +1.799997204717e+00 9.78e-09 7.06e-08 5.76e-07 2.5'. - -# Created at 2026-07-07T10:51:21.050 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream ' 10 +1.800000067274e+00 +1.799999720472e+00 9.78e-10 7.06e-09 5.76e-08 2.5'. - -# Created at 2026-07-07T10:51:21.051 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream ' 11 +1.800000006727e+00 +1.799999972047e+00 9.78e-11 7.06e-10 5.76e-09 2.5'. - -# Created at 2026-07-07T10:51:21.051 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Optimal solution found in 11 iterations and 2.510s'. - -# Created at 2026-07-07T10:51:21.051 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Objective +1.80000001e+00'. - -# Created at 2026-07-07T10:51:21.051 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Primal infeasibility (abs/rel): 1.96e-10/9.78e-11'. - -# Created at 2026-07-07T10:51:21.051 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Dual infeasibility (abs/rel): 1.41e-09/7.06e-10'. - -# Created at 2026-07-07T10:51:21.054 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Complementarity gap (abs/rel): 1.61e-08/5.76e-09'. - -# Created at 2026-07-07T10:51:21.054 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Unscaled Primal infeasibility (abs/rel): 1.96e-10/9.78e-11'. - -# Created at 2026-07-07T10:51:21.054 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Post-solve Primal infeasibility (abs/rel): 1.96e-10/9.78e-11'. - -# Created at 2026-07-07T10:51:21.058 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Barrier finished in 2.51 seconds'. - -# Created at 2026-07-07T10:51:21.118 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Setting parameter method to 1'. - -# Created at 2026-07-07T10:51:21.118 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'cuOpt version: 26.8.0, git hash: c58e6fe8, host arch: x86_64, device archs: 86-real'. - -# Created at 2026-07-07T10:51:21.118 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'CPU: 13th Gen Intel(R) Core(TM) i7-13800H, threads (physical/logical): 10/20, RAM: 10.45 GiB'. - -# Created at 2026-07-07T10:51:21.119 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'CUDA 13.2, device: NVIDIA RTX A1000 6GB Laptop GPU (ID 0), VRAM: 6.00 GiB'. - -# Created at 2026-07-07T10:51:21.120 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'CUDA device UUID: fb968757-0d05-4cc2-229b-dc9fe8668e48'. - -# Created at 2026-07-07T10:51:21.120 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Solving a problem with 1 constraints, 2 variables (0 integers), and 2 nonzeros'. - -# Created at 2026-07-07T10:51:21.120 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Problem scaling:'. - -# Created at 2026-07-07T10:51:21.120 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Objective coefficents range: [1e+00, 1e+00]'. - -# Created at 2026-07-07T10:51:21.121 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Constraint matrix coefficients range: [1e+00, 1e+00]'. - -# Created at 2026-07-07T10:51:21.121 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Constraint rhs / bounds range: [0e+00, 1e+00]'. - -# Created at 2026-07-07T10:51:21.122 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Variable bounds range: [0e+00, 0e+00]'. - -# Created at 2026-07-07T10:51:21.122 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Using PSLP presolver'. - -# Created at 2026-07-07T10:51:21.122 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'PSLP Presolved problem: 0 constraints, 0 variables, 0 non-zeros'. - -# Created at 2026-07-07T10:51:21.123 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Presolve completely solved the problem'. - -# Created at 2026-07-07T10:51:21.123 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'PSLP presolve time: 0.00s'. - -# Created at 2026-07-07T10:51:21.133 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Status: Optimal Objective: 1.000000'. - -# Created at 2026-07-07T10:51:21.192 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Setting parameter time_limit to 1.000000e+01'. - -# Created at 2026-07-07T10:51:21.193 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'cuOpt version: 26.8.0, git hash: c58e6fe8, host arch: x86_64, device archs: 86-real'. - -# Created at 2026-07-07T10:51:21.193 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'CPU: 13th Gen Intel(R) Core(TM) i7-13800H, threads (physical/logical): 10/20, RAM: 10.44 GiB'. - -# Created at 2026-07-07T10:51:21.194 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'CUDA 13.2, device: NVIDIA RTX A1000 6GB Laptop GPU (ID 0), VRAM: 6.00 GiB'. - -# Created at 2026-07-07T10:51:21.194 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'CUDA device UUID: fb968757-0d05-4cc2-229b-dc9fe8668e48'. - -# Created at 2026-07-07T10:51:21.196 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Solving a problem with 1 constraints, 1 variables (1 integers), and 1 nonzeros'. - -# Created at 2026-07-07T10:51:21.196 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Problem scaling:'. - -# Created at 2026-07-07T10:51:21.196 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Objective coefficents range: [1e+00, 1e+00]'. - -# Created at 2026-07-07T10:51:21.196 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Constraint matrix coefficients range: [1e+00, 1e+00]'. - -# Created at 2026-07-07T10:51:21.196 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Constraint rhs / bounds range: [0e+00, 1e+00]'. - -# Created at 2026-07-07T10:51:21.209 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Variable bounds range: [0e+00, 1e+01]'. - -# Created at 2026-07-07T10:51:21.244 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'MIP row scaling completed'. - -# Created at 2026-07-07T10:51:21.262 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'New solution from early primal heuristics (CPUFJ). Objective +1.000000e+00. Time 0.03'. - -# Created at 2026-07-07T10:51:21.262 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Original problem: 1 constraints, 1 variables, 1 nonzeros'. - -# Created at 2026-07-07T10:51:21.266 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Calling Papilo presolver (git hash 741a2b9c)'. - -# Created at 2026-07-07T10:51:21.266 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Presolve status: reduced the problem'. - -# Created at 2026-07-07T10:51:21.266 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Presolve removed: 1 constraints, 1 variables, 1 nonzeros'. - -# Created at 2026-07-07T10:51:21.267 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Presolved problem: 0 constraints, 0 variables (0 integer), 0 nonzeros'. - -# Created at 2026-07-07T10:51:21.267 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Optimal solution found during presolve'. - -# Created at 2026-07-07T10:51:21.290 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Papilo presolve time: 0.07'. - -# Created at 2026-07-07T10:51:21.293 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Best feasible: 1.000000'. - -# Created at 2026-07-07T10:51:21.303 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'Solution objective: 1.000000 , relative_mip_gap 0.000000 solution_bound 1.000000 presolve_time 0.073746 total_solve_time 0.000000 max constraint violation 0.000000 max int violation 0.000000 max var bounds violation 0.000000 nodes 0 simplex_iterations 0'. - -# Created at 2026-07-07T10:51:39.577 -Corrupted channel by directly writing to native stream in forked JVM 1. Stream 'PSLP declares problem as infeasible.'. - diff --git a/java/cuopt/target/surefire-reports/TEST-com.nvidia.cuopt.linearprogramming.NativeIntegrationTest.xml b/java/cuopt/target/surefire-reports/TEST-com.nvidia.cuopt.linearprogramming.NativeIntegrationTest.xml deleted file mode 100644 index e0aa4aac49..0000000000 --- a/java/cuopt/target/surefire-reports/TEST-com.nvidia.cuopt.linearprogramming.NativeIntegrationTest.xml +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/java/cuopt/target/surefire-reports/TEST-com.nvidia.cuopt.linearprogramming.ProblemModelingTest.xml b/java/cuopt/target/surefire-reports/TEST-com.nvidia.cuopt.linearprogramming.ProblemModelingTest.xml deleted file mode 100644 index 8a989c0ad0..0000000000 --- a/java/cuopt/target/surefire-reports/TEST-com.nvidia.cuopt.linearprogramming.ProblemModelingTest.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/java/cuopt/target/surefire-reports/TEST-com.nvidia.cuopt.linearprogramming.PythonParityTest.xml b/java/cuopt/target/surefire-reports/TEST-com.nvidia.cuopt.linearprogramming.PythonParityTest.xml deleted file mode 100644 index 6ab7c8ad17..0000000000 --- a/java/cuopt/target/surefire-reports/TEST-com.nvidia.cuopt.linearprogramming.PythonParityTest.xml +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/java/cuopt/target/surefire-reports/com.nvidia.cuopt.linearprogramming.NativeIntegrationTest.txt b/java/cuopt/target/surefire-reports/com.nvidia.cuopt.linearprogramming.NativeIntegrationTest.txt deleted file mode 100644 index 7bebc78cfb..0000000000 --- a/java/cuopt/target/surefire-reports/com.nvidia.cuopt.linearprogramming.NativeIntegrationTest.txt +++ /dev/null @@ -1,4 +0,0 @@ -------------------------------------------------------------------------------- -Test set: com.nvidia.cuopt.linearprogramming.NativeIntegrationTest -------------------------------------------------------------------------------- -Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.125 s -- in com.nvidia.cuopt.linearprogramming.NativeIntegrationTest diff --git a/java/cuopt/target/surefire-reports/com.nvidia.cuopt.linearprogramming.ProblemModelingTest.txt b/java/cuopt/target/surefire-reports/com.nvidia.cuopt.linearprogramming.ProblemModelingTest.txt deleted file mode 100644 index d023fc040a..0000000000 --- a/java/cuopt/target/surefire-reports/com.nvidia.cuopt.linearprogramming.ProblemModelingTest.txt +++ /dev/null @@ -1,4 +0,0 @@ -------------------------------------------------------------------------------- -Test set: com.nvidia.cuopt.linearprogramming.ProblemModelingTest -------------------------------------------------------------------------------- -Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.035 s -- in com.nvidia.cuopt.linearprogramming.ProblemModelingTest diff --git a/java/cuopt/target/surefire-reports/com.nvidia.cuopt.linearprogramming.PythonParityTest.txt b/java/cuopt/target/surefire-reports/com.nvidia.cuopt.linearprogramming.PythonParityTest.txt deleted file mode 100644 index 0e446162f0..0000000000 --- a/java/cuopt/target/surefire-reports/com.nvidia.cuopt.linearprogramming.PythonParityTest.txt +++ /dev/null @@ -1,4 +0,0 @@ -------------------------------------------------------------------------------- -Test set: com.nvidia.cuopt.linearprogramming.PythonParityTest -------------------------------------------------------------------------------- -Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 18.00 s -- in com.nvidia.cuopt.linearprogramming.PythonParityTest diff --git a/java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/NativeIntegrationTest.class b/java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/NativeIntegrationTest.class deleted file mode 100644 index bf64b10f1ec52abee8add9fb5cd27dda7bcaeb4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18609 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 diff --git a/java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/PythonParityTest$CaseSpec.class b/java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/PythonParityTest$CaseSpec.class deleted file mode 100644 index 8ba66aea0e32d46675e036765b81f3cc781d7808..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9779 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 diff --git a/java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/PythonParityTest$JavaResult.class b/java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/PythonParityTest$JavaResult.class deleted file mode 100644 index 977c505c454b007fbadc41159de586f738c20173..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5946 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 V@-kRLX^dqo5W3Vjhcf1|_5rF$oMZq1 diff --git a/java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/PythonParityTest$PythonResult.class b/java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/PythonParityTest$PythonResult.class deleted file mode 100644 index 78233c44960d6038f1a9de49e161f3fc68ce30de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3423 zcmbtXTWlO>75--T-fC72x3zCZjZdxK!#6d61~{O6qSobQ}*etPx!WdLu$g%q}9T*IjpVi>Q(HoPT?2UBRoLrF}?`C&P{RSs{H z!y|Gyy#WR$4Nn$>U zx2tDgd}aHXdabffVKYh^7Bsv=fjV#4Wz$#C*gs>;8@X~|*|`CubWlOvs8w`~pzN6n z_N~4>6m4z8Ddt84&vJ?fZ#?Ot4)u`bSV511OxukDJH{1=ygNnxjs2Em4wmO8O>fMY zw0V;5cMFC+Zg`g5R}NLr^viZ2Z$odZ9iTDuOxduBMd_nrn;JO<(-u$k;e}w@bw(=B z^*+Zjy}WJszQlgGzu?a0oOx@?GIE8oTMBaWwc(XKx9Ayja|D=+Gz`o?+V-rU-3{jj)ee+1@r-Ia|TlNa(F-tNdvo;gEBp2xKAhUAZ^;rk+)X{-=DY)Z0 zr%A9`bLzO^Pct(*?nWDpJv^f0-FT0JhWyE);ju^ZLj%LTBS*73&LXely?CFF_v3LL z=kNi!`k;mn>G&`{qT{3Zn1YRKS;(Wqt{X7jMrpt#<)-{b6(3LH6FNSLZVjK(@o9WU z$051-td7s2SHtIZd_mfK07rFv5np0lI~Bwo!_n~s@~iB;5|X&(JW6_ZMAOc2y6@G} zc$KB0$r-aiKHvL)Xr=dUvb+<1$+oED?wSOu#g~*HNIIRef@#*2Z8}A{pf<9t&M!|! zl_VQV-;P@EHOrYY9~+Xfp#&doYU`^lS$~}zqy%k*)q9}Y((AdDkfzfs6-N42~mfE$e#4+)SCh zm1D^YOfP4YtXwbqnHN};V;hpq%?k$IV6bf4Yf^9{uu2=3No%^!>OLnhi>Alo3hR;E zRoCRYY&UE?;q}T^v;3oTrGTA-iDSdr7&l!C3-jakmTJ8M=x zC=u*qMj>!LeyYAsGW5IdY?+CAqB=#DM^UjIH=HTk^tVQm)p@JHt76QmhhqyRvxaze zN2`&_ii*5p+oR0EK@Hzfuh+w6=d6qD75oD66-q8BLs~&~vDd=QpgulONOh#z4{{1`L5D~X>V$2WWFb}u3A#ywDR z0$J?Az0e5sFz@c+Eg@ka4se#MH}XtD7uQ*cYj`aZ8n$U@)NqiMf-7j|=4I@?%$G6Q zUZe2fGh`s&etip7M{slvEq*EWOlSHI@@;VE z@}*Rli0@Bi5<8bKAk!ka$RzeK7DML}U%I({2`$Xu?Rd>%`cAny4?W$wa=K+Peb>t7 zb&Ks6u~kwh%3Uj~72-1L#D9qFzt|$K;Pv7vI$55(6H16kj|_!bL6`v*qP{7v)7ueh mieVIE;e3+016y5;nLCO7{6ET9@HKpu`8Ii;q@G9lTl^oIOe_ij diff --git a/java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/PythonParityTest.class b/java/cuopt/target/test-classes/com/nvidia/cuopt/linearprogramming/PythonParityTest.class deleted file mode 100644 index f33a2bc47dfef8881ed8cbc4c478e0ce91dd9b19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29441 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 0 else "-inf") - else: - emit(name, f"{value:.17g}") - - -def emit_float_array(name, values): - emit(name, ",".join(f"{float(v):.17g}" for v in values)) - - -def emit_int_array(name, values): - emit(name, ",".join(str(int(v)) for v in values)) - - -def emit_char_array(name, values): - chars = [] - for value in values: - if isinstance(value, bytes): - chars.append(value.decode("ascii")) - elif isinstance(value, np.bytes_): - chars.append(bytes(value).decode("ascii")) - else: - chars.append(str(value)) - emit(name, ",".join(chars)) - - -def as_float_array(values): - return np.array(values, dtype=np.float64) - - -def as_int_array(values): - return np.array(values, dtype=np.int32) - - -def as_char_array(values): - return np.array(values, dtype=" Date: Thu, 9 Jul 2026 16:24:50 -0400 Subject: [PATCH 4/5] Fully removed DataModel --- .../source/cuopt-java/convex/convex-api.rst | 52 +- .../cuopt-java/convex/convex-examples.rst | 35 -- docs/cuopt/source/cuopt-java/convex/index.rst | 7 +- docs/cuopt/source/cuopt-java/quick-start.rst | 2 +- java/cuopt/TESTS.md | 30 +- .../mathematicalprogramming/DataModel.java | 592 ------------------ .../mathematicalprogramming/NativeCuOpt.java | 37 -- .../NativeProblem.java | 303 +++++++++ .../mathematicalprogramming/Problem.java | 192 +++--- java/cuopt/src/main/native/cuopt_jni.cpp | 375 ----------- .../NativeIntegrationTest.java | 112 +--- ...nTest.java => ProblemIntegrationTest.java} | 280 +++++---- 12 files changed, 604 insertions(+), 1413 deletions(-) delete mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/DataModel.java create mode 100644 java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/NativeProblem.java rename java/cuopt/src/test/java/com/nvidia/cuopt/mathematicalprogramming/{DataModelIntegrationTest.java => ProblemIntegrationTest.java} (72%) diff --git a/docs/cuopt/source/cuopt-java/convex/convex-api.rst b/docs/cuopt/source/cuopt-java/convex/convex-api.rst index 8d9a2b633c..28958ed2b8 100644 --- a/docs/cuopt/source/cuopt-java/convex/convex-api.rst +++ b/docs/cuopt/source/cuopt-java/convex/convex-api.rst @@ -46,52 +46,9 @@ High-level problem returns the common ``ObjectiveExpression`` type; ``isQuadratic`` distinguishes the concrete linear and quadratic forms without an ``Object`` downcast. -Deprecated low-level problem representation -------------------------------------------- - -.. deprecated:: 26.08 - Use ``Problem``. ``DataModel`` remains temporarily available for code that - requires direct access to native CSR and quadratic data. - -Create the deprecated representation with one of the following factories: - -.. code-block:: java - - DataModel.createProblem( - numConstraints, numVariables, objectiveSense, objectiveOffset, - objectiveCoefficients, constraintMatrix, constraintSense, rhs, - variableLowerBounds, variableUpperBounds, variableTypes); - - DataModel.createRangedProblem( - numConstraints, numVariables, objectiveSense, objectiveOffset, - objectiveCoefficients, constraintMatrix, constraintLowerBounds, - constraintUpperBounds, variableLowerBounds, variableUpperBounds, - variableTypes); - ``CSRMatrix`` takes ``values``, ``columnIndices``, and ``rowOffsets`` in the -same order as the lower-level cuOpt CSR setter. The arrays are available -through ``getValues``, ``getColumnIndices``, and ``getRowOffsets``. - -The mutable ``DataModel`` setters cover: - -* objective sense, coefficients, offset, and scaling factor; -* linear constraint CSR arrays, row types, RHS, and ranged bounds; -* variable bounds, types, names, and row names; -* objective and problem names; -* initial primal and dual solutions; and -* quadratic objective matrices and quadratic constraints. - -The corresponding getters include ``getConstraintMatrix``, -``getConstraintMatrixValues``, ``getConstraintMatrixIndices``, -``getConstraintMatrixOffsets``, ``getConstraintRHS``, -``getConstraintLowerBounds``, ``getConstraintUpperBounds``, -``getQuadraticObjectiveValues``, ``getQuadraticObjectiveIndices``, -``getQuadraticObjectiveOffsets``, ``getQuadraticConstraints``, -``getVariableNames``, ``getRowNames``, ``getObjectiveName``, -``getProblemName``, ``getProblemCategory``, and ``toDict``. - -Use ``clearQuadraticConstraints`` to remove all quadratic constraints from the -mutable representation. ``DataModel`` implements ``AutoCloseable``. +same order used by cuOpt CSR arrays. The arrays are available through +``getValues``, ``getColumnIndices``, and ``getRowOffsets``. Variables, expressions, and constraints ---------------------------------------- @@ -179,9 +136,8 @@ MPS and errors -------------- ``Problem.read`` and ``Problem.readMPS`` support MPS/QPS parsing, including a -fixed-format boolean overload. The deprecated ``DataModel`` equivalents are -``DataModel.read`` and ``DataModel.parseMPS``. ``writeMPS`` writes a problem -for round trips or use by another cuOpt interface. +fixed-format boolean overload. ``writeMPS`` writes a problem for round trips +or use by another cuOpt interface. Native failures are reported as ``CuOptException`` with a cuOpt status code available through ``getStatusCode``. Accessing an LP-only field on a MIP diff --git a/docs/cuopt/source/cuopt-java/convex/convex-examples.rst b/docs/cuopt/source/cuopt-java/convex/convex-examples.rst index 4061e753bb..2dc775305a 100644 --- a/docs/cuopt/source/cuopt-java/convex/convex-examples.rst +++ b/docs/cuopt/source/cuopt-java/convex/convex-examples.rst @@ -42,41 +42,6 @@ The high-level API uses fluent expressions and explicit comparison methods. the solve. The solution object remains available for detailed native results and statistics. -Deprecated low-level CSR linear program ----------------------------------------- - -``DataModel`` is deprecated in favor of ``Problem``. It remains temporarily -available when the input is already in CSR form: - -.. code-block:: java - - CSRMatrix matrix = new CSRMatrix( - new double[] {1.0, 1.0}, // values - new int[] {0, 1}, // column indices - new int[] {0, 2}); // row offsets - - try (DataModel model = DataModel.createProblem( - 1, 2, - ObjectiveSense.MINIMIZE, - 0.0, - new double[] {1.0, 1.0}, - matrix, - new byte[] {'G'}, - new double[] {10.0}, - new double[] {0.0, 0.0}, - new double[] {Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY}, - new byte[] {'C', 'C'}); - SolverSettings settings = new SolverSettings().setMethod(SolverMethod.PDLP); - Solution solution = model.solve(settings)) { - System.out.println(solution.getPrimalObjective()); - System.out.println(model.getConstraintMatrix().getRowOffsets().length); - } - -For ranged rows, use ``createRangedProblem`` with -``constraintLowerBounds`` and ``constraintUpperBounds`` instead of row sense -and RHS arrays. The mutable setters provide the same representation after an -empty ``new DataModel()``. - Simple quadratic programming ----------------------------- diff --git a/docs/cuopt/source/cuopt-java/convex/index.rst b/docs/cuopt/source/cuopt-java/convex/index.rst index 3fb0b00bb2..498fafcd85 100644 --- a/docs/cuopt/source/cuopt-java/convex/index.rst +++ b/docs/cuopt/source/cuopt-java/convex/index.rst @@ -3,12 +3,7 @@ Convex Optimization (LP/QP/QCQP/SOCP) ================================================ This section documents the Java bindings for LP, QP, QCQP, and SOCP. The Java -API includes both: - -* a high-level problem API based on ``Problem``, ``Variable``, expressions, - and constraints; and -* a deprecated lower-level ``DataModel`` API for compatibility with direct - CSR data, ranged bounds, quadratic matrices, MPS I/O, and solver results. +API is based on ``Problem``, ``Variable``, expressions, and constraints. Quadratic constraints are supported for ``LE`` and ``GE`` constraints. Equality quadratic constraints are rejected by the Java API. diff --git a/docs/cuopt/source/cuopt-java/quick-start.rst b/docs/cuopt/source/cuopt-java/quick-start.rst index d6e91cd6ec..a1853e2939 100644 --- a/docs/cuopt/source/cuopt-java/quick-start.rst +++ b/docs/cuopt/source/cuopt-java/quick-start.rst @@ -63,7 +63,7 @@ To run one test class, pass its Maven property to the helper: .. code-block:: bash - bash scripts/test.sh -Dtest=DataModelIntegrationTest + bash scripts/test.sh -Dtest=ProblemIntegrationTest Application code can use the same property: diff --git a/java/cuopt/TESTS.md b/java/cuopt/TESTS.md index 12e59a8339..526b530c0c 100644 --- a/java/cuopt/TESTS.md +++ b/java/cuopt/TESTS.md @@ -9,8 +9,8 @@ The Java module has three test classes under `src/test/java/com/nvidia/cuopt/mathematicalprogramming`: - `ProblemModelingTest`: five pure Java modeling tests. -- `NativeIntegrationTest`: nine JNI/native cuOpt smoke and lifecycle tests. -- `DataModelIntegrationTest`: ten standalone Java problem and solve tests. +- `NativeIntegrationTest`: seven JNI/native cuOpt smoke tests. +- `ProblemIntegrationTest`: ten standalone Java problem and solve tests. The suite has no dependency on the cuOpt Python interface. @@ -28,7 +28,7 @@ bash scripts/test.sh To run one test class: ```bash -bash scripts/test.sh -Dtest=DataModelIntegrationTest +bash scripts/test.sh -Dtest=ProblemIntegrationTest ``` When invoking Maven directly, build the JNI library first and provide the @@ -49,18 +49,18 @@ category mapping, expression construction, CSR generation, duplicate-term merging, problem updates, relaxation, and quadratic inspection without loading the native library. -`NativeIntegrationTest` covers settings, setting-file round trips, mutable -data-model fields, LP/MILP/QP solves, solution statistics, native lifecycle, -error propagation, and MPS read/write paths. - -`DataModelIntegrationTest` constructs ten LP, MILP, and QP cases entirely in -Java. Each dynamic test verifies that problem data round-trips through JNI. The -LP/MILP cases also check solve status, variable bounds, integrality, constraint -feasibility, objective values, and type-specific solution behavior. The QP -case verifies quadratic-objective and quadratic-constraint marshalling; QP -solve callability is covered by `NativeIntegrationTest`. The cases cover -minimization and maximization, equality and ranged constraints, mixed bounds, -mixed integer/continuous variables, metadata, and infeasibility. +`NativeIntegrationTest` covers settings, setting-file round trips, LP/MILP/QP +solves, solution statistics, error propagation, and MPS read/write paths. + +`ProblemIntegrationTest` constructs ten LP, MILP, and QP cases entirely in +Java. Each dynamic test verifies the public `Problem` model built from the +case data. The LP/MILP cases also check solve status, variable bounds, +integrality, constraint feasibility, objective values, and type-specific +solution behavior. The QP case verifies quadratic-objective and +quadratic-constraint construction; QP solve callability is covered by +`NativeIntegrationTest`. The cases cover minimization and maximization, +equality and ranged constraints, mixed bounds, mixed integer/continuous +variables, metadata, and infeasibility. ## Prerequisite behavior diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/DataModel.java b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/DataModel.java deleted file mode 100644 index 3c31813445..0000000000 --- a/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/DataModel.java +++ /dev/null @@ -1,592 +0,0 @@ -/* - * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. - * SPDX-License-Identifier: Apache-2.0 - */ -package com.nvidia.cuopt.mathematicalprogramming; - -import java.lang.ref.Cleaner; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * Low-level native problem representation. - * - * @deprecated Use {@link Problem}; this compatibility API is planned for removal. - */ -@Deprecated(since = "26.08") -public final class DataModel implements AutoCloseable { - private static final Cleaner CLEANER = Cleaner.create(); - private final NativeHandle nativeHandle; - private final Cleaner.Cleanable cleanable; - private double[] initialPrimalSolution = new double[0]; - private double[] initialDualSolution = new double[0]; - // Keep the user-facing CSR representation separate from cuOpt's internal GPU - // representation. The GPU setter stores Q + Q^T for solving, while Python's - // DataModel getters expose the matrix supplied by the caller. - private double[] quadraticObjectiveValues = new double[0]; - private int[] quadraticObjectiveIndices = new int[0]; - private int[] quadraticObjectiveOffsets = new int[0]; - private boolean quadraticObjectiveMatrixSet; - private final List quadraticConstraintNames = new ArrayList<>(); - - /** Create an empty mutable LP/MIP/QP data model. */ - public DataModel() { - this(NativeCuOpt.createEmptyProblem()); - } - - private DataModel(long handle) { - this.nativeHandle = new NativeHandle(handle); - this.cleanable = CLEANER.register(this, nativeHandle); - } - - public static DataModel createProblem( - int numConstraints, - int numVariables, - ObjectiveSense objectiveSense, - double objectiveOffset, - double[] objectiveCoefficients, - CSRMatrix constraintMatrix, - byte[] constraintSense, - double[] rhs, - double[] variableLowerBounds, - double[] variableUpperBounds, - byte[] variableTypes) { - long handle = - NativeCuOpt.createProblem( - numConstraints, - numVariables, - objectiveSense.nativeValue(), - objectiveOffset, - Arrays.copyOf(objectiveCoefficients, objectiveCoefficients.length), - constraintMatrix.getRowOffsets(), - constraintMatrix.getColumnIndices(), - constraintMatrix.getValues(), - Arrays.copyOf(constraintSense, constraintSense.length), - Arrays.copyOf(rhs, rhs.length), - Arrays.copyOf(variableLowerBounds, variableLowerBounds.length), - Arrays.copyOf(variableUpperBounds, variableUpperBounds.length), - Arrays.copyOf(variableTypes, variableTypes.length)); - return new DataModel(handle); - } - - public static DataModel createRangedProblem( - int numConstraints, - int numVariables, - ObjectiveSense objectiveSense, - double objectiveOffset, - double[] objectiveCoefficients, - CSRMatrix constraintMatrix, - double[] constraintLowerBounds, - double[] constraintUpperBounds, - double[] variableLowerBounds, - double[] variableUpperBounds, - byte[] variableTypes) { - long handle = - NativeCuOpt.createRangedProblem( - numConstraints, - numVariables, - objectiveSense.nativeValue(), - objectiveOffset, - Arrays.copyOf(objectiveCoefficients, objectiveCoefficients.length), - constraintMatrix.getRowOffsets(), - constraintMatrix.getColumnIndices(), - constraintMatrix.getValues(), - Arrays.copyOf(constraintLowerBounds, constraintLowerBounds.length), - Arrays.copyOf(constraintUpperBounds, constraintUpperBounds.length), - Arrays.copyOf(variableLowerBounds, variableLowerBounds.length), - Arrays.copyOf(variableUpperBounds, variableUpperBounds.length), - Arrays.copyOf(variableTypes, variableTypes.length)); - return new DataModel(handle); - } - - public static DataModel read(String path) { - return new DataModel(NativeCuOpt.readProblem(path)); - } - - public static DataModel read(String path, boolean fixedMPSFormat) { - return new DataModel(NativeCuOpt.readProblemWithFormat(path, fixedMPSFormat)); - } - - /** Parse an MPS/QPS file directly, optionally using fixed-format parsing. */ - public static DataModel parseMPS(String path) { - return parseMPS(path, false); - } - - public static DataModel parseMPS(String path, boolean fixedMPSFormat) { - return new DataModel(NativeCuOpt.parseMPSProblem(path, fixedMPSFormat)); - } - - long handle() { - nativeHandle.requireOpen(); - return nativeHandle.handle; - } - - public int getNumVariables() { - return NativeCuOpt.getNumVariables(handle()); - } - - public int getNumConstraints() { - return NativeCuOpt.getNumConstraints(handle()); - } - - public int getNumNonZeros() { - return NativeCuOpt.getNumNonZeros(handle()); - } - - public ObjectiveSense getObjectiveSense() { - return NativeCuOpt.getObjectiveSense(handle()) == ObjectiveSense.MAXIMIZE.nativeValue() - ? ObjectiveSense.MAXIMIZE - : ObjectiveSense.MINIMIZE; - } - - /** Return true for maximize and false for minimize, matching Python get_sense(). */ - public boolean getSense() { - return getObjectiveSense() == ObjectiveSense.MAXIMIZE; - } - - public double getObjectiveOffset() { - return NativeCuOpt.getObjectiveOffset(handle()); - } - - public double getObjectiveScalingFactor() { - return NativeCuOpt.getObjectiveScalingFactor(handle()); - } - - public double[] getObjectiveCoefficients() { - return NativeCuOpt.getObjectiveCoefficients(handle()); - } - - public CSRMatrix getConstraintMatrix() { - Object[] matrix = NativeCuOpt.getConstraintMatrix(handle()); - return new CSRMatrix((double[]) matrix[2], (int[]) matrix[1], (int[]) matrix[0]); - } - - public double[] getConstraintMatrixValues() { - return getConstraintMatrix().getValues(); - } - - public int[] getConstraintMatrixIndices() { - return getConstraintMatrix().getColumnIndices(); - } - - public int[] getConstraintMatrixOffsets() { - return getConstraintMatrix().getRowOffsets(); - } - - public byte[] getConstraintSense() { - return NativeCuOpt.getConstraintSense(handle()); - } - - public byte[] getRowTypes() { - return getConstraintSense(); - } - - public double[] getConstraintRHS() { - return NativeCuOpt.getConstraintRHS(handle()); - } - - public double[] getConstraintBounds() { - return getConstraintRHS(); - } - - public double[] getConstraintLowerBounds() { - return NativeCuOpt.getConstraintLowerBounds(handle()); - } - - public double[] getConstraintUpperBounds() { - return NativeCuOpt.getConstraintUpperBounds(handle()); - } - - public double[] getVariableLowerBounds() { - return NativeCuOpt.getVariableLowerBounds(handle()); - } - - public double[] getVariableUpperBounds() { - return NativeCuOpt.getVariableUpperBounds(handle()); - } - - public byte[] getVariableTypes() { - return NativeCuOpt.getVariableTypes(handle()); - } - - public boolean isMIP() { - return NativeCuOpt.isMIP(handle()); - } - - public ProblemCategory getProblemCategory() { - return ProblemCategory.fromNative(NativeCuOpt.getProblemCategory(handle())); - } - - public DataModel setMaximize(boolean maximize) { - NativeCuOpt.setMaximize(handle(), maximize); - return this; - } - - public DataModel setCSRConstraintMatrix(double[] values, int[] indices, int[] offsets) { - NativeCuOpt.setConstraintMatrix(handle(), copy(values), copy(indices), copy(offsets)); - return this; - } - - public DataModel setConstraintBounds(double[] bounds) { - NativeCuOpt.setConstraintBounds(handle(), copy(bounds)); - return this; - } - - public DataModel setObjectiveCoefficients(double[] coefficients) { - NativeCuOpt.setObjectiveCoefficients(handle(), copy(coefficients)); - return this; - } - - public DataModel setObjectiveScalingFactor(double scalingFactor) { - NativeCuOpt.setObjectiveScalingFactor(handle(), scalingFactor); - return this; - } - - public DataModel setObjectiveOffset(double offset) { - NativeCuOpt.setObjectiveOffset(handle(), offset); - return this; - } - - public DataModel setQuadraticObjectiveMatrix(double[] values, int[] indices, int[] offsets) { - double[] copiedValues = copy(values); - int[] copiedIndices = copy(indices); - int[] copiedOffsets = copy(offsets); - NativeCuOpt.setQuadraticObjectiveMatrix(handle(), copiedValues, copiedIndices, copiedOffsets); - quadraticObjectiveValues = copiedValues; - quadraticObjectiveIndices = copiedIndices; - quadraticObjectiveOffsets = copiedOffsets; - quadraticObjectiveMatrixSet = true; - return this; - } - - public DataModel setVariableLowerBounds(double[] bounds) { - NativeCuOpt.setVariableLowerBounds(handle(), copy(bounds)); - return this; - } - - public DataModel setVariableUpperBounds(double[] bounds) { - NativeCuOpt.setVariableUpperBounds(handle(), copy(bounds)); - return this; - } - - public DataModel setConstraintLowerBounds(double[] bounds) { - NativeCuOpt.setConstraintLowerBounds(handle(), copy(bounds)); - return this; - } - - public DataModel setConstraintUpperBounds(double[] bounds) { - NativeCuOpt.setConstraintUpperBounds(handle(), copy(bounds)); - return this; - } - - public DataModel setRowTypes(byte[] rowTypes) { - NativeCuOpt.setRowTypes(handle(), copy(rowTypes)); - return this; - } - - public DataModel setVariableTypes(byte[] variableTypes) { - NativeCuOpt.setVariableTypes(handle(), copy(variableTypes)); - return this; - } - - public DataModel setVariableNames(String[] variableNames) { - NativeCuOpt.setVariableNames(handle(), variableNames == null ? new String[0] : variableNames.clone()); - return this; - } - - public DataModel setRowNames(String[] rowNames) { - NativeCuOpt.setRowNames(handle(), rowNames == null ? new String[0] : rowNames.clone()); - return this; - } - - public DataModel setObjectiveName(String objectiveName) { - NativeCuOpt.setObjectiveName(handle(), objectiveName == null ? "" : objectiveName); - return this; - } - - public DataModel setProblemName(String problemName) { - NativeCuOpt.setProblemName(handle(), problemName == null ? "" : problemName); - return this; - } - - public DataModel setInitialPrimalSolution(double[] values) { - initialPrimalSolution = copy(values); - NativeCuOpt.setInitialPrimalSolutionOnProblem(handle(), initialPrimalSolution); - return this; - } - - public DataModel setInitialDualSolution(double[] values) { - initialDualSolution = copy(values); - NativeCuOpt.setInitialDualSolutionOnProblem(handle(), initialDualSolution); - return this; - } - - public double[] getInitialPrimalSolution() { - return copy(initialPrimalSolution); - } - - public double[] getInitialDualSolution() { - return copy(initialDualSolution); - } - - public double[] getQuadraticObjectiveValues() { - return quadraticObjectiveMatrixSet - ? copy(quadraticObjectiveValues) - : NativeCuOpt.getQuadraticObjectiveValues(handle()); - } - - public int[] getQuadraticObjectiveIndices() { - return quadraticObjectiveMatrixSet - ? copy(quadraticObjectiveIndices) - : NativeCuOpt.getQuadraticObjectiveIndices(handle()); - } - - public int[] getQuadraticObjectiveOffsets() { - return quadraticObjectiveMatrixSet - ? copy(quadraticObjectiveOffsets) - : NativeCuOpt.getQuadraticObjectiveOffsets(handle()); - } - - public String[] getVariableNames() { - return NativeCuOpt.getVariableNames(handle()); - } - - public String[] getRowNames() { - return NativeCuOpt.getRowNames(handle()); - } - - public String getObjectiveName() { - return NativeCuOpt.getObjectiveName(handle()); - } - - public String getProblemName() { - return NativeCuOpt.getProblemName(handle()); - } - - public byte[] getASCIIRowTypes() { - return getConstraintSense(); - } - - /** Return a Java map with the same logical fields as Python's parser.toDict. */ - public Map toDict() { - CSRMatrix matrix = getConstraintMatrix(); - Map csr = new LinkedHashMap<>(); - csr.put("offsets", matrix.getRowOffsets()); - csr.put("indices", matrix.getColumnIndices()); - csr.put("values", matrix.getValues()); - - Map bounds = new LinkedHashMap<>(); - bounds.put("bounds", getConstraintRHS()); - bounds.put("upper_bounds", getConstraintUpperBounds()); - bounds.put("lower_bounds", getConstraintLowerBounds()); - bounds.put("types", getConstraintSense()); - - Map objective = new LinkedHashMap<>(); - objective.put("coefficients", getObjectiveCoefficients()); - objective.put("scalability_factor", getObjectiveScalingFactor()); - objective.put("offset", getObjectiveOffset()); - - Map variableBounds = new LinkedHashMap<>(); - variableBounds.put("upper_bounds", getVariableUpperBounds()); - variableBounds.put("lower_bounds", getVariableLowerBounds()); - - Map result = new LinkedHashMap<>(); - result.put("csr_constraint_matrix", csr); - result.put("constraint_bounds", bounds); - result.put("objective_data", objective); - result.put("variable_bounds", variableBounds); - result.put("maximize", getObjectiveSense() == ObjectiveSense.MAXIMIZE); - result.put("variable_types", getVariableTypes()); - result.put("variable_names", getVariableNames()); - return result; - } - - public DataModel setQuadraticObjective(QuadraticExpression expression) { - NativeCuOpt.setQuadraticObjective( - handle(), quadraticRows(expression), quadraticColumns(expression), quadraticValues(expression)); - return this; - } - - public DataModel addQuadraticConstraint(Constraint constraint) { - if (!constraint.isQuadratic()) { - throw new IllegalArgumentException("Quadratic constraint requires quadratic terms"); - } - if (constraint.getSense() == ConstraintSense.EQ) { - throw new IllegalArgumentException("Equality quadratic constraints are not supported"); - } - QuadraticExpression expression = constraint.getQuadraticExpression(); - LinearExpression linear = constraint.getLinearExpression(); - int[] linearIndices = new int[linear.getTerms().size()]; - double[] linearCoefficients = new double[linear.getTerms().size()]; - int i = 0; - for (var entry : linear.getTerms().entrySet()) { - linearIndices[i] = entry.getKey().getIndex(); - linearCoefficients[i] = entry.getValue(); - i++; - } - NativeCuOpt.addQuadraticConstraint( - handle(), - quadraticRows(expression), - quadraticColumns(expression), - quadraticValues(expression), - linearIndices, - linearCoefficients, - constraint.getSense().nativeValue(), - constraint.getRHS()); - quadraticConstraintNames.add(constraint.getConstraintName()); - return this; - } - - public DataModel addQuadraticConstraint( - String rowName, - double[] linearValues, - int[] linearIndices, - double rhs, - double[] values, - int[] rows, - int[] columns, - ConstraintSense sense) { - if (sense == ConstraintSense.EQ) { - throw new IllegalArgumentException("Equality quadratic constraints are not supported"); - } - if (linearValues == null || linearIndices == null || linearValues.length != linearIndices.length) { - throw new IllegalArgumentException("linearValues and linearIndices must have the same length"); - } - if (values == null || rows == null || columns == null - || values.length != rows.length || values.length != columns.length) { - throw new IllegalArgumentException("quadratic COO arrays must have the same length"); - } - NativeCuOpt.addQuadraticConstraint( - handle(), - copy(rows), - copy(columns), - copy(values), - copy(linearIndices), - copy(linearValues), - sense.nativeValue(), - rhs); - quadraticConstraintNames.add(rowName == null ? "" : rowName); - return this; - } - - public List getQuadraticConstraints() { - Object[] nativeConstraints = NativeCuOpt.getQuadraticConstraints(handle()); - List result = new ArrayList<>(nativeConstraints.length); - for (int i = 0; i < nativeConstraints.length; i++) { - Object[] entry = (Object[]) nativeConstraints[i]; - int rowIndex = ((int[]) entry[0])[0]; - String rowName = (String) entry[1]; - if (i < quadraticConstraintNames.size() && !quadraticConstraintNames.get(i).isEmpty()) { - rowName = quadraticConstraintNames.get(i); - } - ConstraintSense sense = ConstraintSense.fromNative(((byte[]) entry[2])[0]); - double rhs = ((double[]) entry[5])[0]; - result.add( - new QuadraticConstraint( - rowIndex, - rowName, - sense, - (double[]) entry[3], - (int[]) entry[4], - rhs, - (int[]) entry[6], - (int[]) entry[7], - (double[]) entry[8])); - } - return List.copyOf(result); - } - - public DataModel clearQuadraticConstraints() { - NativeCuOpt.clearQuadraticConstraints(handle()); - quadraticConstraintNames.clear(); - return this; - } - - public Solution solve(SolverSettings settings) { - SolverSettings actualSettings = settings == null ? new SolverSettings() : settings; - boolean closeSettings = settings == null; - try { - long solutionHandle = NativeCuOpt.solve(handle(), actualSettings.handle()); - return new Solution( - solutionHandle, - getNumVariables(), - getNumConstraints(), - getProblemCategory(), - getVariableNames()); - } finally { - if (closeSettings) { - actualSettings.close(); - } - } - } - - public void writeMPS(String path) { - NativeCuOpt.writeProblem(handle(), path); - } - - @Override - public void close() { - cleanable.clean(); - } - - private static int[] quadraticRows(QuadraticExpression expression) { - int[] rows = new int[expression.getQuadraticTerms().size()]; - for (int i = 0; i < rows.length; i++) { - rows[i] = expression.getQuadraticTerms().get(i).getFirst().getIndex(); - } - return rows; - } - - private static double[] copy(double[] values) { - return values == null ? new double[0] : Arrays.copyOf(values, values.length); - } - - private static int[] copy(int[] values) { - return values == null ? new int[0] : Arrays.copyOf(values, values.length); - } - - private static byte[] copy(byte[] values) { - return values == null ? new byte[0] : Arrays.copyOf(values, values.length); - } - - private static int[] quadraticColumns(QuadraticExpression expression) { - int[] columns = new int[expression.getQuadraticTerms().size()]; - for (int i = 0; i < columns.length; i++) { - columns[i] = expression.getQuadraticTerms().get(i).getSecond().getIndex(); - } - return columns; - } - - private static double[] quadraticValues(QuadraticExpression expression) { - double[] values = new double[expression.getQuadraticTerms().size()]; - for (int i = 0; i < values.length; i++) { - values[i] = expression.getQuadraticTerms().get(i).getCoefficient(); - } - return values; - } - - private static final class NativeHandle implements Runnable { - private long handle; - - NativeHandle(long handle) { - this.handle = handle; - } - - void requireOpen() { - if (handle == 0) { - throw new IllegalStateException("DataModel is closed"); - } - } - - @Override - public void run() { - if (handle != 0) { - NativeCuOpt.destroyProblem(handle); - handle = 0; - } - } - } -} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/NativeCuOpt.java b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/NativeCuOpt.java index 42ffef1033..e862e57b79 100644 --- a/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/NativeCuOpt.java +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/NativeCuOpt.java @@ -20,7 +20,6 @@ private NativeCuOpt() {} static native int getFloatSize(); static native String[] getSolverSettingNames(); - static native long createEmptyProblem(); static native long parseMPSProblem(String path, boolean fixedMPSFormat); static native long readProblemWithFormat(String path, boolean fixedMPSFormat); @@ -52,22 +51,6 @@ static native long createProblem( double[] upperBounds, byte[] variableTypes); - static native long createRangedProblem( - int numConstraints, - int numVariables, - int objectiveSense, - double objectiveOffset, - double[] objectiveCoefficients, - int[] rowOffsets, - int[] columnIndices, - double[] values, - double[] constraintLowerBounds, - double[] constraintUpperBounds, - double[] variableLowerBounds, - double[] variableUpperBounds, - byte[] variableTypes); - - static native long readProblem(String path); static native void writeProblem(long handle, String path); static native void destroyProblem(long handle); static native void setQuadraticObjective(long handle, int[] rows, int[] columns, double[] values); @@ -95,37 +78,17 @@ static native void addQuadraticConstraint( static native double[] getVariableLowerBounds(long handle); static native double[] getVariableUpperBounds(long handle); static native byte[] getVariableTypes(long handle); - static native void setMaximize(long handle, boolean maximize); - static native void setConstraintMatrix(long handle, double[] values, int[] indices, int[] offsets); - static native void setConstraintBounds(long handle, double[] values); - static native void setObjectiveCoefficients(long handle, double[] values); - static native void setObjectiveScalingFactor(long handle, double value); - static native double getObjectiveScalingFactor(long handle); - static native void setObjectiveOffset(long handle, double value); - static native void setQuadraticObjectiveMatrix(long handle, double[] values, int[] indices, int[] offsets); - static native void setVariableLowerBounds(long handle, double[] values); - static native void setVariableUpperBounds(long handle, double[] values); - static native void setConstraintLowerBounds(long handle, double[] values); - static native void setConstraintUpperBounds(long handle, double[] values); - static native void setRowTypes(long handle, byte[] values); - static native void setVariableTypes(long handle, byte[] values); static native void setVariableNames(long handle, String[] values); static native void setRowNames(long handle, String[] values); - static native void setObjectiveName(long handle, String value); static native void setProblemName(long handle, String value); - static native void setInitialPrimalSolutionOnProblem(long handle, double[] values); - static native void setInitialDualSolutionOnProblem(long handle, double[] values); static native double[] getQuadraticObjectiveValues(long handle); static native int[] getQuadraticObjectiveIndices(long handle); static native int[] getQuadraticObjectiveOffsets(long handle); static native String[] getVariableNames(long handle); static native String[] getRowNames(long handle); - static native String getObjectiveName(long handle); static native String getProblemName(long handle); static native int getProblemCategory(long handle); static native Object[] getQuadraticConstraints(long handle); - static native void clearQuadraticConstraints(long handle); - static native boolean isMIP(long handle); static native long solve(long problemHandle, long settingsHandle); static native void destroySolution(long handle); diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/NativeProblem.java b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/NativeProblem.java new file mode 100644 index 0000000000..da8c0a30d3 --- /dev/null +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/NativeProblem.java @@ -0,0 +1,303 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package com.nvidia.cuopt.mathematicalprogramming; + +import java.lang.ref.Cleaner; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +final class NativeProblem implements AutoCloseable { + private static final Cleaner CLEANER = Cleaner.create(); + private final NativeHandle nativeHandle; + private final Cleaner.Cleanable cleanable; + private final List quadraticConstraintNames = new ArrayList<>(); + + private NativeProblem(long handle) { + this.nativeHandle = new NativeHandle(handle); + this.cleanable = CLEANER.register(this, nativeHandle); + } + + static NativeProblem createProblem( + int numConstraints, + int numVariables, + ObjectiveSense objectiveSense, + double objectiveOffset, + double[] objectiveCoefficients, + CSRMatrix constraintMatrix, + byte[] constraintSense, + double[] rhs, + double[] variableLowerBounds, + double[] variableUpperBounds, + byte[] variableTypes) { + long handle = + NativeCuOpt.createProblem( + numConstraints, + numVariables, + objectiveSense.nativeValue(), + objectiveOffset, + Arrays.copyOf(objectiveCoefficients, objectiveCoefficients.length), + constraintMatrix.getRowOffsets(), + constraintMatrix.getColumnIndices(), + constraintMatrix.getValues(), + Arrays.copyOf(constraintSense, constraintSense.length), + Arrays.copyOf(rhs, rhs.length), + Arrays.copyOf(variableLowerBounds, variableLowerBounds.length), + Arrays.copyOf(variableUpperBounds, variableUpperBounds.length), + Arrays.copyOf(variableTypes, variableTypes.length)); + return new NativeProblem(handle); + } + + static NativeProblem read(String path, boolean fixedMPSFormat) { + return new NativeProblem(NativeCuOpt.readProblemWithFormat(path, fixedMPSFormat)); + } + + static NativeProblem parseMPS(String path, boolean fixedMPSFormat) { + return new NativeProblem(NativeCuOpt.parseMPSProblem(path, fixedMPSFormat)); + } + + long handle() { + nativeHandle.requireOpen(); + return nativeHandle.handle; + } + + int getNumVariables() { + return NativeCuOpt.getNumVariables(handle()); + } + + int getNumConstraints() { + return NativeCuOpt.getNumConstraints(handle()); + } + + int getNumNonZeros() { + return NativeCuOpt.getNumNonZeros(handle()); + } + + ObjectiveSense getObjectiveSense() { + return NativeCuOpt.getObjectiveSense(handle()) == ObjectiveSense.MAXIMIZE.nativeValue() + ? ObjectiveSense.MAXIMIZE + : ObjectiveSense.MINIMIZE; + } + + double getObjectiveOffset() { + return NativeCuOpt.getObjectiveOffset(handle()); + } + + double[] getObjectiveCoefficients() { + return NativeCuOpt.getObjectiveCoefficients(handle()); + } + + CSRMatrix getConstraintMatrix() { + Object[] matrix = NativeCuOpt.getConstraintMatrix(handle()); + return new CSRMatrix((double[]) matrix[2], (int[]) matrix[1], (int[]) matrix[0]); + } + + byte[] getConstraintSense() { + return NativeCuOpt.getConstraintSense(handle()); + } + + double[] getConstraintRHS() { + return NativeCuOpt.getConstraintRHS(handle()); + } + + double[] getConstraintLowerBounds() { + return NativeCuOpt.getConstraintLowerBounds(handle()); + } + + double[] getConstraintUpperBounds() { + return NativeCuOpt.getConstraintUpperBounds(handle()); + } + + double[] getVariableLowerBounds() { + return NativeCuOpt.getVariableLowerBounds(handle()); + } + + double[] getVariableUpperBounds() { + return NativeCuOpt.getVariableUpperBounds(handle()); + } + + byte[] getVariableTypes() { + return NativeCuOpt.getVariableTypes(handle()); + } + + NativeProblem setVariableNames(String[] variableNames) { + NativeCuOpt.setVariableNames(handle(), variableNames == null ? new String[0] : variableNames.clone()); + return this; + } + + NativeProblem setRowNames(String[] rowNames) { + NativeCuOpt.setRowNames(handle(), rowNames == null ? new String[0] : rowNames.clone()); + return this; + } + + NativeProblem setProblemName(String problemName) { + NativeCuOpt.setProblemName(handle(), problemName == null ? "" : problemName); + return this; + } + + double[] getQuadraticObjectiveValues() { + return NativeCuOpt.getQuadraticObjectiveValues(handle()); + } + + int[] getQuadraticObjectiveIndices() { + return NativeCuOpt.getQuadraticObjectiveIndices(handle()); + } + + int[] getQuadraticObjectiveOffsets() { + return NativeCuOpt.getQuadraticObjectiveOffsets(handle()); + } + + String[] getVariableNames() { + return NativeCuOpt.getVariableNames(handle()); + } + + String[] getRowNames() { + return NativeCuOpt.getRowNames(handle()); + } + + String getProblemName() { + return NativeCuOpt.getProblemName(handle()); + } + + ProblemCategory getProblemCategory() { + return ProblemCategory.fromNative(NativeCuOpt.getProblemCategory(handle())); + } + + NativeProblem setQuadraticObjective(QuadraticExpression expression) { + NativeCuOpt.setQuadraticObjective( + handle(), quadraticRows(expression), quadraticColumns(expression), quadraticValues(expression)); + return this; + } + + NativeProblem addQuadraticConstraint(Constraint constraint) { + if (!constraint.isQuadratic()) { + throw new IllegalArgumentException("Quadratic constraint requires quadratic terms"); + } + if (constraint.getSense() == ConstraintSense.EQ) { + throw new IllegalArgumentException("Equality quadratic constraints are not supported"); + } + QuadraticExpression expression = constraint.getQuadraticExpression(); + LinearExpression linear = constraint.getLinearExpression(); + int[] linearIndices = new int[linear.getTerms().size()]; + double[] linearCoefficients = new double[linear.getTerms().size()]; + int i = 0; + for (var entry : linear.getTerms().entrySet()) { + linearIndices[i] = entry.getKey().getIndex(); + linearCoefficients[i] = entry.getValue(); + i++; + } + NativeCuOpt.addQuadraticConstraint( + handle(), + quadraticRows(expression), + quadraticColumns(expression), + quadraticValues(expression), + linearIndices, + linearCoefficients, + constraint.getSense().nativeValue(), + constraint.getRHS()); + quadraticConstraintNames.add(constraint.getConstraintName()); + return this; + } + + List getQuadraticConstraints() { + Object[] nativeConstraints = NativeCuOpt.getQuadraticConstraints(handle()); + List result = new ArrayList<>(nativeConstraints.length); + for (int i = 0; i < nativeConstraints.length; i++) { + Object[] entry = (Object[]) nativeConstraints[i]; + int rowIndex = ((int[]) entry[0])[0]; + String rowName = (String) entry[1]; + if (i < quadraticConstraintNames.size() && !quadraticConstraintNames.get(i).isEmpty()) { + rowName = quadraticConstraintNames.get(i); + } + ConstraintSense sense = ConstraintSense.fromNative(((byte[]) entry[2])[0]); + double rhs = ((double[]) entry[5])[0]; + result.add( + new QuadraticConstraint( + rowIndex, + rowName, + sense, + (double[]) entry[3], + (int[]) entry[4], + rhs, + (int[]) entry[6], + (int[]) entry[7], + (double[]) entry[8])); + } + return List.copyOf(result); + } + + Solution solve(SolverSettings settings) { + SolverSettings actualSettings = settings == null ? new SolverSettings() : settings; + boolean closeSettings = settings == null; + try { + long solutionHandle = NativeCuOpt.solve(handle(), actualSettings.handle()); + return new Solution( + solutionHandle, + getNumVariables(), + getNumConstraints(), + getProblemCategory(), + getVariableNames()); + } finally { + if (closeSettings) { + actualSettings.close(); + } + } + } + + void writeMPS(String path) { + NativeCuOpt.writeProblem(handle(), path); + } + + @Override + public void close() { + cleanable.clean(); + } + + private static int[] quadraticRows(QuadraticExpression expression) { + int[] rows = new int[expression.getQuadraticTerms().size()]; + for (int i = 0; i < rows.length; i++) { + rows[i] = expression.getQuadraticTerms().get(i).getFirst().getIndex(); + } + return rows; + } + + private static int[] quadraticColumns(QuadraticExpression expression) { + int[] columns = new int[expression.getQuadraticTerms().size()]; + for (int i = 0; i < columns.length; i++) { + columns[i] = expression.getQuadraticTerms().get(i).getSecond().getIndex(); + } + return columns; + } + + private static double[] quadraticValues(QuadraticExpression expression) { + double[] values = new double[expression.getQuadraticTerms().size()]; + for (int i = 0; i < values.length; i++) { + values[i] = expression.getQuadraticTerms().get(i).getCoefficient(); + } + return values; + } + + private static final class NativeHandle implements Runnable { + private long handle; + + NativeHandle(long handle) { + this.handle = handle; + } + + void requireOpen() { + if (handle == 0) { + throw new IllegalStateException("Native problem is closed"); + } + } + + @Override + public void run() { + if (handle != 0) { + NativeCuOpt.destroyProblem(handle); + handle = 0; + } + } + } +} diff --git a/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/Problem.java b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/Problem.java index 77ba3feae2..be201896e6 100644 --- a/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/Problem.java +++ b/java/cuopt/src/main/java/com/nvidia/cuopt/mathematicalprogramming/Problem.java @@ -162,13 +162,7 @@ public CSRMatrix getCSR() { return buildLinearConstraintMatrix().matrix; } - /** - * Materialize this problem as the deprecated low-level data representation. - * - * @deprecated Use {@link Problem} directly. - */ - @Deprecated(since = "26.08") - public DataModel toDataModel() { + private NativeProblem toNativeProblem() { MatrixBuild matrixBuild = buildLinearConstraintMatrix(); double[] objectiveCoefficients = objectiveCoefficients(); double[] lowerBounds = new double[variables.size()]; @@ -181,8 +175,8 @@ public DataModel toDataModel() { variableTypes[index] = variable.getVariableType().nativeValue(); } - DataModel dataModel = - DataModel.createProblem( + NativeProblem nativeProblem = + NativeProblem.createProblem( matrixBuild.linearConstraints.size(), variables.size(), objectiveSense, @@ -196,23 +190,23 @@ public DataModel toDataModel() { variableTypes); if (quadraticObjective != null && !quadraticObjective.getQuadraticTerms().isEmpty()) { - dataModel.setQuadraticObjective(quadraticObjective); + nativeProblem.setQuadraticObjective(quadraticObjective); } for (Constraint constraint : constraints) { if (constraint.isQuadratic()) { - dataModel.addQuadraticConstraint(constraint); + nativeProblem.addQuadraticConstraint(constraint); } } String[] variableNames = new String[variables.size()]; for (Variable variable : variables) { variableNames[variable.getIndex()] = variable.getVariableName(); } - String[] rowNames = new String[constraints.size()]; - for (int i = 0; i < constraints.size(); i++) { - rowNames[i] = constraints.get(i).getConstraintName(); + String[] rowNames = new String[matrixBuild.linearConstraints.size()]; + for (int i = 0; i < matrixBuild.linearConstraints.size(); i++) { + rowNames[i] = matrixBuild.linearConstraints.get(i).getConstraintName(); } - dataModel.setVariableNames(variableNames).setRowNames(rowNames).setProblemName(name); - return dataModel; + nativeProblem.setVariableNames(variableNames).setRowNames(rowNames).setProblemName(name); + return nativeProblem; } public Solution solve() { @@ -223,8 +217,8 @@ public Solution solve(SolverSettings settings) { SolverSettings actualSettings = settings == null ? new SolverSettings() : settings; boolean closeSettings = settings == null; addMIPStarts(actualSettings); - try (DataModel dataModel = toDataModel()) { - Solution solution = dataModel.solve(actualSettings); + try (NativeProblem nativeProblem = toNativeProblem()) { + Solution solution = nativeProblem.solve(actualSettings); populateSolution(solution); return solution; } finally { @@ -235,8 +229,8 @@ public Solution solve(SolverSettings settings) { } public void writeMPS(String path) { - try (DataModel dataModel = toDataModel()) { - dataModel.writeMPS(path); + try (NativeProblem nativeProblem = toNativeProblem()) { + nativeProblem.writeMPS(path); } } @@ -245,19 +239,19 @@ public static Problem read(String path) { } public static Problem read(String path, boolean fixedMPSFormat) { - try (DataModel dataModel = DataModel.read(path, fixedMPSFormat)) { - return fromDataModel(dataModel); + try (NativeProblem nativeProblem = NativeProblem.read(path, fixedMPSFormat)) { + return fromNativeProblem(nativeProblem); } } - private static Problem fromDataModel(DataModel dataModel) { - Problem problem = new Problem(dataModel.getProblemName()); - double[] lowerBounds = dataModel.getVariableLowerBounds(); - double[] upperBounds = dataModel.getVariableUpperBounds(); - byte[] variableTypes = dataModel.getVariableTypes(); - double[] objectiveCoefficients = dataModel.getObjectiveCoefficients(); - String[] variableNames = dataModel.getVariableNames(); - for (int i = 0; i < dataModel.getNumVariables(); i++) { + private static Problem fromNativeProblem(NativeProblem nativeProblem) { + Problem problem = new Problem(nativeProblem.getProblemName()); + double[] lowerBounds = nativeProblem.getVariableLowerBounds(); + double[] upperBounds = nativeProblem.getVariableUpperBounds(); + byte[] variableTypes = nativeProblem.getVariableTypes(); + double[] objectiveCoefficients = nativeProblem.getObjectiveCoefficients(); + String[] variableNames = nativeProblem.getVariableNames(); + for (int i = 0; i < nativeProblem.getNumVariables(); i++) { problem.addVariable( lowerBounds[i], upperBounds[i], @@ -266,79 +260,79 @@ private static Problem fromDataModel(DataModel dataModel) { variableNames.length > i && !variableNames[i].isEmpty() ? variableNames[i] : "x" + i); } - CSRMatrix matrix = dataModel.getConstraintMatrix(); - int[] rowOffsets = matrix.getRowOffsets(); - int[] columnIndices = matrix.getColumnIndices(); - double[] values = matrix.getValues(); - byte[] senses = dataModel.getConstraintSense(); - double[] rhs = dataModel.getConstraintRHS(); - double[] constraintLowerBounds = dataModel.getConstraintLowerBounds(); - double[] constraintUpperBounds = dataModel.getConstraintUpperBounds(); - String[] rowNames = dataModel.getRowNames(); - for (int row = 0; row < dataModel.getNumConstraints(); row++) { - LinearExpression expression = new LinearExpression(); - for (int p = rowOffsets[row]; p < rowOffsets[row + 1]; p++) { - expression = expression.plus(problem.getVariable(columnIndices[p]), values[p]); - } - ConstraintSense sense = ConstraintSense.fromNative(senses[row]); - if (constraintLowerBounds.length > row && constraintUpperBounds.length > row) { - if (Double.compare(constraintLowerBounds[row], constraintUpperBounds[row]) == 0) { - sense = ConstraintSense.EQ; - } else if (Double.compare(constraintLowerBounds[row], rhs[row]) == 0) { - sense = ConstraintSense.GE; - } else if (Double.compare(constraintUpperBounds[row], rhs[row]) == 0) { - sense = ConstraintSense.LE; - } - } - Constraint constraint; - switch (sense) { - case LE: - constraint = expression.le(rhs[row]); - break; - case GE: - constraint = expression.ge(rhs[row]); - break; - case EQ: - constraint = expression.eq(rhs[row]); - break; - default: - throw new IllegalStateException("Unsupported sense " + sense); + CSRMatrix matrix = nativeProblem.getConstraintMatrix(); + int[] rowOffsets = matrix.getRowOffsets(); + int[] columnIndices = matrix.getColumnIndices(); + double[] values = matrix.getValues(); + byte[] senses = nativeProblem.getConstraintSense(); + double[] rhs = nativeProblem.getConstraintRHS(); + double[] constraintLowerBounds = nativeProblem.getConstraintLowerBounds(); + double[] constraintUpperBounds = nativeProblem.getConstraintUpperBounds(); + String[] rowNames = nativeProblem.getRowNames(); + for (int row = 0; row < nativeProblem.getNumConstraints(); row++) { + LinearExpression expression = new LinearExpression(); + for (int p = rowOffsets[row]; p < rowOffsets[row + 1]; p++) { + expression = expression.plus(problem.getVariable(columnIndices[p]), values[p]); + } + ConstraintSense sense = ConstraintSense.fromNative(senses[row]); + if (constraintLowerBounds.length > row && constraintUpperBounds.length > row) { + if (Double.compare(constraintLowerBounds[row], constraintUpperBounds[row]) == 0) { + sense = ConstraintSense.EQ; + } else if (Double.compare(constraintLowerBounds[row], rhs[row]) == 0) { + sense = ConstraintSense.GE; + } else if (Double.compare(constraintUpperBounds[row], rhs[row]) == 0) { + sense = ConstraintSense.LE; } - problem.addConstraint( - constraint, - rowNames.length > row && !rowNames[row].isEmpty() ? rowNames[row] : "c" + row); } - - int[] qOffsets = dataModel.getQuadraticObjectiveOffsets(); - int[] qIndices = dataModel.getQuadraticObjectiveIndices(); - double[] qValues = dataModel.getQuadraticObjectiveValues(); - if (qValues.length == 0) { - LinearExpression objective = LinearExpression.ofConstant(dataModel.getObjectiveOffset()); - for (int i = 0; i < objectiveCoefficients.length; i++) { - if (objectiveCoefficients[i] != 0.0) { - objective = objective.plus(problem.getVariable(i), objectiveCoefficients[i]); - } + Constraint constraint; + switch (sense) { + case LE: + constraint = expression.le(rhs[row]); + break; + case GE: + constraint = expression.ge(rhs[row]); + break; + case EQ: + constraint = expression.eq(rhs[row]); + break; + default: + throw new IllegalStateException("Unsupported sense " + sense); + } + problem.addConstraint( + constraint, + rowNames.length > row && !rowNames[row].isEmpty() ? rowNames[row] : "c" + row); + } + + int[] qOffsets = nativeProblem.getQuadraticObjectiveOffsets(); + int[] qIndices = nativeProblem.getQuadraticObjectiveIndices(); + double[] qValues = nativeProblem.getQuadraticObjectiveValues(); + if (qValues.length == 0) { + LinearExpression objective = LinearExpression.ofConstant(nativeProblem.getObjectiveOffset()); + for (int i = 0; i < objectiveCoefficients.length; i++) { + if (objectiveCoefficients[i] != 0.0) { + objective = objective.plus(problem.getVariable(i), objectiveCoefficients[i]); } - problem.setObjective(objective, dataModel.getObjectiveSense()); - } else { - QuadraticExpression objective = - new QuadraticExpression().constant(dataModel.getObjectiveOffset()); - for (int i = 0; i < objectiveCoefficients.length; i++) { - if (objectiveCoefficients[i] != 0.0) { - objective = objective.plus(problem.getVariable(i), objectiveCoefficients[i]); - } + } + problem.setObjective(objective, nativeProblem.getObjectiveSense()); + } else { + QuadraticExpression objective = + new QuadraticExpression().constant(nativeProblem.getObjectiveOffset()); + for (int i = 0; i < objectiveCoefficients.length; i++) { + if (objectiveCoefficients[i] != 0.0) { + objective = objective.plus(problem.getVariable(i), objectiveCoefficients[i]); } - for (int row = 0; row + 1 < qOffsets.length; row++) { - for (int p = qOffsets[row]; p < qOffsets[row + 1]; p++) { - objective = - objective.plus( - problem.getVariable(row), problem.getVariable(qIndices[p]), qValues[p]); - } + } + for (int row = 0; row + 1 < qOffsets.length; row++) { + for (int p = qOffsets[row]; p < qOffsets[row + 1]; p++) { + objective = + objective.plus( + problem.getVariable(row), problem.getVariable(qIndices[p]), qValues[p]); } - problem.setObjective(objective, dataModel.getObjectiveSense()); } + problem.setObjective(objective, nativeProblem.getObjectiveSense()); + } - for (QuadraticConstraint quadraticConstraint : dataModel.getQuadraticConstraints()) { + for (QuadraticConstraint quadraticConstraint : nativeProblem.getQuadraticConstraints()) { QuadraticExpression expression = new QuadraticExpression(); double[] linearValues = quadraticConstraint.getLinearValues(); int[] linearIndices = quadraticConstraint.getLinearIndices(); @@ -367,14 +361,14 @@ public static Problem readMPS(String path) { } public static Problem readMPS(String path, boolean fixedMPSFormat) { - try (DataModel dataModel = DataModel.parseMPS(path, fixedMPSFormat)) { - return fromDataModel(dataModel); + try (NativeProblem nativeProblem = NativeProblem.parseMPS(path, fixedMPSFormat)) { + return fromNativeProblem(nativeProblem); } } @Override public void close() { - // Problem owns no native handle; DataModel and Solution carry native lifetimes. + // Problem is a Java-side model; native handles are scoped to solve/read/write calls. } public void update() { diff --git a/java/cuopt/src/main/native/cuopt_jni.cpp b/java/cuopt/src/main/native/cuopt_jni.cpp index 2aef760c3e..f67d28e614 100644 --- a/java/cuopt/src/main/native/cuopt_jni.cpp +++ b/java/cuopt/src/main/native/cuopt_jni.cpp @@ -36,14 +36,6 @@ struct java_callback_context_t { std::mutex g_callback_mutex; std::unordered_map> g_callback_contexts; -struct java_problem_state_t { - std::vector initial_primal_solution; - std::vector initial_dual_solution; -}; - -std::mutex g_problem_state_mutex; -std::unordered_map g_problem_states; - // Problems created directly by this JNI module must be destroyed here as well. // Passing these C++ objects to cuOptDestroyProblem in libcuopt.so crosses the // shared-library boundary with a private wrapper type. @@ -360,22 +352,6 @@ Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getSolverSettingNames( return result; } -extern "C" JNIEXPORT jlong JNICALL -Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_createEmptyProblem(JNIEnv* env, jclass) -{ - try { - auto problem = std::make_unique( - cuopt::linear_programming::get_memory_backend_type()); - auto* raw_problem = problem.get(); - remember_jni_owned_problem(raw_problem); - problem.release(); - return from_handle(raw_problem); - } catch (const std::exception& e) { - throw_cuopt_exception(env, CUOPT_RUNTIME_ERROR, std::string("createEmptyProblem failed: ") + e.what()); - return 0; - } -} - extern "C" JNIEXPORT jlong JNICALL Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_parseMPSProblem(JNIEnv* env, jclass, @@ -640,66 +616,6 @@ Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_createProblem(JNIEnv* return from_handle(problem); } -extern "C" JNIEXPORT jlong JNICALL -Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_createRangedProblem( - JNIEnv* env, - jclass, - jint num_constraints, - jint num_variables, - jint objective_sense, - jdouble objective_offset, - jdoubleArray objective_coefficients, - jintArray row_offsets, - jintArray column_indices, - jdoubleArray values, - jdoubleArray constraint_lower_bounds, - jdoubleArray constraint_upper_bounds, - jdoubleArray variable_lower_bounds, - jdoubleArray variable_upper_bounds, - jbyteArray variable_types) -{ - const auto obj = get_double_array(env, objective_coefficients); - const auto rows = get_int_array(env, row_offsets); - const auto cols = get_int_array(env, column_indices); - const auto coeffs = get_double_array(env, values); - const auto clb = get_double_array(env, constraint_lower_bounds); - const auto cub = get_double_array(env, constraint_upper_bounds); - const auto vlb = get_double_array(env, variable_lower_bounds); - const auto vub = get_double_array(env, variable_upper_bounds); - const auto types = get_byte_array(env, variable_types); - cuOptOptimizationProblem problem = nullptr; - if (!check_status(env, - cuOptCreateRangedProblem(num_constraints, - num_variables, - objective_sense, - static_cast(objective_offset), - obj.data(), - rows.data(), - cols.data(), - coeffs.data(), - clb.data(), - cub.data(), - vlb.data(), - vub.data(), - types.data(), - &problem), - "cuOptCreateRangedProblem")) { - return 0; - } - return from_handle(problem); -} - -extern "C" JNIEXPORT jlong JNICALL -Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_readProblem(JNIEnv* env, jclass, jstring path) -{ - const auto filename = get_string(env, path); - cuOptOptimizationProblem problem = nullptr; - if (!check_status(env, cuOptReadProblem(filename.c_str(), &problem), "cuOptReadProblem")) { - return 0; - } - return from_handle(problem); -} - extern "C" JNIEXPORT void JNICALL Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_writeProblem(JNIEnv* env, jclass, @@ -715,10 +631,6 @@ extern "C" JNIEXPORT void JNICALL Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_destroyProblem(JNIEnv*, jclass, jlong handle) { if (handle == 0) { return; } - { - std::lock_guard lock(g_problem_state_mutex); - g_problem_states.erase(handle); - } if (take_jni_owned_problem(handle)) { delete to_problem_view(handle); return; @@ -866,188 +778,6 @@ Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getConstraintMatrix(JN return result; } -extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setMaximize(JNIEnv* env, - jclass, - jlong handle, - jboolean maximize) -{ - run_problem_operation(env, "setMaximize", [&] { - to_problem_view(handle)->get_problem()->set_maximize(maximize != JNI_FALSE); - }); -} - -extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setConstraintMatrix(JNIEnv* env, - jclass, - jlong handle, - jdoubleArray values, - jintArray indices, - jintArray offsets) -{ - const auto h_values = get_double_array(env, values); - const auto h_indices = get_int_array(env, indices); - const auto h_offsets = get_int_array(env, offsets); - run_problem_operation(env, "setConstraintMatrix", [&] { - to_problem_view(handle)->get_problem()->set_csr_constraint_matrix( - h_values.data(), h_values.size(), h_indices.data(), h_indices.size(), h_offsets.data(), h_offsets.size()); - }); -} - -extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setConstraintBounds(JNIEnv* env, - jclass, - jlong handle, - jdoubleArray values) -{ - const auto h_values = get_double_array(env, values); - run_problem_operation(env, "setConstraintBounds", [&] { - to_problem_view(handle)->get_problem()->set_constraint_bounds(h_values.data(), h_values.size()); - }); -} - -extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setObjectiveCoefficients(JNIEnv* env, - jclass, - jlong handle, - jdoubleArray values) -{ - const auto h_values = get_double_array(env, values); - run_problem_operation(env, "setObjectiveCoefficients", [&] { - to_problem_view(handle)->get_problem()->set_objective_coefficients(h_values.data(), h_values.size()); - }); -} - -extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setObjectiveScalingFactor(JNIEnv* env, - jclass, - jlong handle, - jdouble value) -{ - run_problem_operation(env, "setObjectiveScalingFactor", [&] { - to_problem_view(handle)->get_problem()->set_objective_scaling_factor(value); - }); -} - -extern "C" JNIEXPORT jdouble JNICALL -Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getObjectiveScalingFactor(JNIEnv* env, - jclass, - jlong handle) -{ - jdouble value = 0.0; - if (!run_problem_operation(env, "getObjectiveScalingFactor", [&] { - value = to_problem_view(handle)->get_problem()->get_objective_scaling_factor(); - })) { - return 0.0; - } - return value; -} - -extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setObjectiveOffset(JNIEnv* env, - jclass, - jlong handle, - jdouble value) -{ - run_problem_operation(env, "setObjectiveOffset", [&] { - to_problem_view(handle)->get_problem()->set_objective_offset(value); - }); -} - -extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setQuadraticObjectiveMatrix(JNIEnv* env, - jclass, - jlong handle, - jdoubleArray values, - jintArray indices, - jintArray offsets) -{ - const auto h_values = get_double_array(env, values); - const auto h_indices = get_int_array(env, indices); - const auto h_offsets = get_int_array(env, offsets); - run_problem_operation(env, "setQuadraticObjectiveMatrix", [&] { - to_problem_view(handle)->get_problem()->set_quadratic_objective_matrix( - h_values.data(), h_values.size(), h_indices.data(), h_indices.size(), h_offsets.data(), h_offsets.size()); - }); -} - -extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setVariableLowerBounds(JNIEnv* env, - jclass, - jlong handle, - jdoubleArray values) -{ - const auto h_values = get_double_array(env, values); - run_problem_operation(env, "setVariableLowerBounds", [&] { - to_problem_view(handle)->get_problem()->set_variable_lower_bounds(h_values.data(), h_values.size()); - }); -} - -extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setVariableUpperBounds(JNIEnv* env, - jclass, - jlong handle, - jdoubleArray values) -{ - const auto h_values = get_double_array(env, values); - run_problem_operation(env, "setVariableUpperBounds", [&] { - to_problem_view(handle)->get_problem()->set_variable_upper_bounds(h_values.data(), h_values.size()); - }); -} - -extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setConstraintLowerBounds(JNIEnv* env, - jclass, - jlong handle, - jdoubleArray values) -{ - const auto h_values = get_double_array(env, values); - run_problem_operation(env, "setConstraintLowerBounds", [&] { - to_problem_view(handle)->get_problem()->set_constraint_lower_bounds(h_values.data(), h_values.size()); - }); -} - -extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setConstraintUpperBounds(JNIEnv* env, - jclass, - jlong handle, - jdoubleArray values) -{ - const auto h_values = get_double_array(env, values); - run_problem_operation(env, "setConstraintUpperBounds", [&] { - to_problem_view(handle)->get_problem()->set_constraint_upper_bounds(h_values.data(), h_values.size()); - }); -} - -extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setRowTypes(JNIEnv* env, - jclass, - jlong handle, - jbyteArray values) -{ - const auto h_values = get_byte_array(env, values); - run_problem_operation(env, "setRowTypes", [&] { - to_problem_view(handle)->get_problem()->set_row_types(h_values.data(), h_values.size()); - }); -} - -extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setVariableTypes(JNIEnv* env, - jclass, - jlong handle, - jbyteArray values) -{ - const auto h_values = get_byte_array(env, values); - run_problem_operation(env, "setVariableTypes", [&] { - std::vector variable_types; - variable_types.reserve(h_values.size()); - for (char value : h_values) { - variable_types.push_back(cuopt::linear_programming::detail::char_to_var_type(value)); - } - to_problem_view(handle)->get_problem()->set_variable_types(variable_types.data(), variable_types.size()); - }); -} - extern "C" JNIEXPORT void JNICALL Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setVariableNames(JNIEnv* env, jclass, @@ -1072,18 +802,6 @@ Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setRowNames(JNIEnv* en }); } -extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setObjectiveName(JNIEnv* env, - jclass, - jlong handle, - jstring value) -{ - const auto name = get_string(env, value); - run_problem_operation(env, "setObjectiveName", [&] { - to_problem_view(handle)->get_problem()->set_objective_name(name); - }); -} - extern "C" JNIEXPORT void JNICALL Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setProblemName(JNIEnv* env, jclass, @@ -1096,32 +814,6 @@ Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setProblemName(JNIEnv* }); } -extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setInitialPrimalSolutionOnProblem(JNIEnv* env, - jclass, - jlong handle, - jdoubleArray values) -{ - const auto h_values = get_double_array(env, values); - run_problem_operation(env, "setInitialPrimalSolutionOnProblem", [&] { - std::lock_guard lock(g_problem_state_mutex); - g_problem_states[handle].initial_primal_solution = h_values; - }); -} - -extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_setInitialDualSolutionOnProblem(JNIEnv* env, - jclass, - jlong handle, - jdoubleArray values) -{ - const auto h_values = get_double_array(env, values); - run_problem_operation(env, "setInitialDualSolutionOnProblem", [&] { - std::lock_guard lock(g_problem_state_mutex); - g_problem_states[handle].initial_dual_solution = h_values; - }); -} - extern "C" JNIEXPORT jdoubleArray JNICALL Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getQuadraticObjectiveValues(JNIEnv* env, jclass, @@ -1162,14 +854,6 @@ Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getRowNames(JNIEnv* en return to_string_array(env, to_problem_view(handle)->get_problem()->get_row_names()); } -extern "C" JNIEXPORT jstring JNICALL -Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getObjectiveName(JNIEnv* env, - jclass, - jlong handle) -{ - return env->NewStringUTF(to_problem_view(handle)->get_problem()->get_objective_name().c_str()); -} - extern "C" JNIEXPORT jstring JNICALL Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getProblemName(JNIEnv* env, jclass, @@ -1218,18 +902,6 @@ Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_getQuadraticConstraint return result; } -extern "C" JNIEXPORT void JNICALL -Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_clearQuadraticConstraints(JNIEnv* env, - jclass, - jlong handle) -{ - run_problem_operation(env, "clearQuadraticConstraints", [&] { - using problem_t = cuopt::linear_programming::optimization_problem_interface_t; - to_problem_view(handle)->get_problem()->set_quadratic_constraints( - std::vector{}); - }); -} - #define DEFINE_DOUBLE_PROBLEM_GETTER(JAVA_NAME, C_NAME, COUNT_EXPR) \ extern "C" JNIEXPORT jdoubleArray JNICALL \ Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_##JAVA_NAME( \ @@ -1322,59 +994,12 @@ DEFINE_BYTE_PROBLEM_GETTER(getVariableTypes, #undef DEFINE_DOUBLE_PROBLEM_GETTER #undef DEFINE_BYTE_PROBLEM_GETTER -extern "C" JNIEXPORT jboolean JNICALL -Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_isMIP(JNIEnv* env, jclass, jlong handle) -{ - cuopt_int_t value = 0; - check_status(env, cuOptIsMIP(to_problem(handle), &value), "cuOptIsMIP"); - return static_cast(value != 0); -} - extern "C" JNIEXPORT jlong JNICALL Java_com_nvidia_cuopt_mathematicalprogramming_NativeCuOpt_solve(JNIEnv* env, jclass, jlong problem_handle, jlong settings_handle) { - cuopt_int_t is_mip = 0; - if (!check_status(env, - cuOptIsMIP(to_problem(problem_handle), &is_mip), - "cuOptIsMIP")) { - return 0; - } - java_problem_state_t problem_state; - { - std::lock_guard lock(g_problem_state_mutex); - auto it = g_problem_states.find(problem_handle); - if (it != g_problem_states.end()) { problem_state = it->second; } - } - if (is_mip != 0) { - if (!problem_state.initial_primal_solution.empty() && - !check_status(env, - cuOptAddMIPStart(to_settings(settings_handle), - problem_state.initial_primal_solution.data(), - problem_state.initial_primal_solution.size()), - "cuOptAddMIPStart")) { - return 0; - } - } else { - if (!problem_state.initial_primal_solution.empty() && - !check_status(env, - cuOptSetInitialPrimalSolution(to_settings(settings_handle), - problem_state.initial_primal_solution.data(), - problem_state.initial_primal_solution.size()), - "cuOptSetInitialPrimalSolution")) { - return 0; - } - if (!problem_state.initial_dual_solution.empty() && - !check_status(env, - cuOptSetInitialDualSolution(to_settings(settings_handle), - problem_state.initial_dual_solution.data(), - problem_state.initial_dual_solution.size()), - "cuOptSetInitialDualSolution")) { - return 0; - } - } cuOptSolution solution = nullptr; if (!check_status(env, cuOptSolve(to_problem(problem_handle), to_settings(settings_handle), &solution), diff --git a/java/cuopt/src/test/java/com/nvidia/cuopt/mathematicalprogramming/NativeIntegrationTest.java b/java/cuopt/src/test/java/com/nvidia/cuopt/mathematicalprogramming/NativeIntegrationTest.java index 3d3a446606..10e0539f00 100644 --- a/java/cuopt/src/test/java/com/nvidia/cuopt/mathematicalprogramming/NativeIntegrationTest.java +++ b/java/cuopt/src/test/java/com/nvidia/cuopt/mathematicalprogramming/NativeIntegrationTest.java @@ -5,7 +5,6 @@ package com.nvidia.cuopt.mathematicalprogramming; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; -import static org.junit.jupiter.api.Assertions.assertArrayEquals; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -68,73 +67,13 @@ void settingsExposeTypedValuesAndSettingsFileRoundTrip() throws Exception { } } - @Test - void emptyDataModelCanBeClosed() { - assumeNativeLibrary(); - assumeCudaDriverAvailable(); - try (DataModel ignored = new DataModel()) { - // Lifecycle regression test for JNI-owned empty problems. - } - } - - @Test - void mutableDataModelExposesMetadataAndQuadraticFields() { - assumeNativeLibrary(); - assumeCudaDriverAvailable(); - try (DataModel model = new DataModel()) { - model.setCSRConstraintMatrix( - new double[] {1.0, 2.0}, new int[] {0, 1}, new int[] {0, 2}) - .setObjectiveCoefficients(new double[] {3.0, 4.0}) - .setObjectiveScalingFactor(2.0) - .setObjectiveOffset(5.0) - .setVariableLowerBounds(new double[] {0.0, 0.0}) - .setVariableUpperBounds(new double[] {10.0, 10.0}) - .setVariableTypes(new byte[] {'C', 'C'}) - .setConstraintBounds(new double[] {7.0}) - .setRowTypes(new byte[] {'L'}) - .setVariableNames(new String[] {"x", "y"}) - .setRowNames(new String[] {"c"}) - .setObjectiveName("obj") - .setProblemName("model") - .setQuadraticObjectiveMatrix( - new double[] {1.0, 2.0}, new int[] {0, 1}, new int[] {0, 1, 2}); - model - .setInitialPrimalSolution(new double[] {1.0, 2.0}) - .setInitialDualSolution(new double[] {3.0}); - - assertEquals(2.0, model.getObjectiveScalingFactor()); - assertEquals("model", model.getProblemName()); - assertEquals("obj", model.getObjectiveName()); - assertArrayEquals(new String[] {"x", "y"}, model.getVariableNames()); - assertArrayEquals(new String[] {"c"}, model.getRowNames()); - assertArrayEquals(new byte[] {'L'}, model.getASCIIRowTypes()); - assertArrayEquals(new double[0], model.getConstraintLowerBounds()); - assertArrayEquals(new double[0], model.getConstraintUpperBounds()); - assertArrayEquals(new double[] {1.0, 2.0}, model.getQuadraticObjectiveValues()); - assertArrayEquals(new int[] {0, 1}, model.getQuadraticObjectiveIndices()); - assertArrayEquals(new int[] {0, 1, 2}, model.getQuadraticObjectiveOffsets()); - assertEquals(ProblemCategory.LP, model.getProblemCategory()); - assertArrayEquals(new double[] {1.0, 2.0}, model.getInitialPrimalSolution()); - assertArrayEquals(new double[] {3.0}, model.getInitialDualSolution()); - assertTrue(model.toDict().containsKey("objective_data")); - - model.addQuadraticConstraint( - "qc", new double[] {1.0}, new int[] {0}, 4.0, - new double[] {2.0}, new int[] {0}, new int[] {0}, ConstraintSense.LE); - assertEquals(1, model.getQuadraticConstraints().size()); - assertEquals("qc", model.getQuadraticConstraints().get(0).getRowName()); - model.clearQuadraticConstraints(); - assertTrue(model.getQuadraticConstraints().isEmpty()); - } - } - @Test void solvesSmallLPAndReportsStats() { assumeNativeLibrary(); assumeCudaDriverAvailable(); - try (DataModel model = tinyLP(); + try (Problem problem = tinyLP(); SolverSettings settings = new SolverSettings().setMethod(SolverMethod.PDLP); - Solution solution = model.solve(settings)) { + Solution solution = problem.solve(settings)) { assertFalse(solution.isMIP()); assertEquals(TerminationStatus.OPTIMAL, solution.getTerminationStatus()); assertEquals(1.0, solution.getPrimalObjective(), 1e-3); @@ -169,14 +108,14 @@ void solvesProblemApiMIPAndLifecycleCloseIsIdempotent() { void solvesSmallQP() { assumeNativeLibrary(); assumeCudaDriverAvailable(); - try (DataModel model = tinyLP()) { - Problem shell = new Problem(); - Variable x0 = shell.addVariable(); - Variable x1 = shell.addVariable(); - model.setQuadraticObjective( - QuadraticExpression.of(x0, x0, 1.0).plus(x1, x1, 4.0)); + try (Problem problem = tinyLP()) { + Variable x0 = problem.getVariable(0); + Variable x1 = problem.getVariable(1); + problem.setObjective( + QuadraticExpression.of(x0, x0, 1.0).plus(x1, x1, 4.0), + ObjectiveSense.MINIMIZE); try (SolverSettings settings = new SolverSettings().setSetting(CuOptConstants.CUOPT_ITERATION_LIMIT, 50); - Solution solution = model.solve(settings)) { + Solution solution = problem.solve(settings)) { assertFalse(solution.isMIP()); assertDoesNotThrow(solution::getPrimalSolution); } @@ -187,7 +126,7 @@ void solvesSmallQP() { void rejectsMissingFileThroughCuOptException() { assumeNativeLibrary(); CuOptException exception = - assertThrows(CuOptException.class, () -> DataModel.read("missing-file-does-not-exist.mps")); + assertThrows(CuOptException.class, () -> Problem.read("missing-file-does-not-exist.mps")); assertEquals(CuOptConstants.CUOPT_MPS_FILE_ERROR, exception.getStatusCode()); } @@ -197,39 +136,28 @@ void writesAndReadsMPSThroughReadAndParseMPS() throws Exception { assumeCudaDriverAvailable(); Path file = Files.createTempFile("cuopt-java-roundtrip-", ".mps"); try { - try (DataModel source = tinyLP()) { + try (Problem source = tinyLP()) { source.writeMPS(file.toString()); } - try (DataModel read = DataModel.read(file.toString()); - DataModel parsed = DataModel.parseMPS(file.toString()); - Problem problem = Problem.read(file.toString(), false)) { + try (Problem read = Problem.read(file.toString(), false); + Problem parsed = Problem.readMPS(file.toString(), false)) { assertEquals(2, read.getNumVariables()); assertEquals(1, read.getNumConstraints()); assertEquals(read.getNumVariables(), parsed.getNumVariables()); assertEquals(read.getNumConstraints(), parsed.getNumConstraints()); - assertEquals(read.getNumVariables(), problem.getNumVariables()); - assertEquals(read.getNumConstraints(), problem.getNumConstraints()); } } finally { Files.deleteIfExists(file); } } - private static DataModel tinyLP() { - CSRMatrix matrix = - new CSRMatrix(new double[] {1.0, 1.0}, new int[] {0, 1}, new int[] {0, 2}); - return DataModel.createProblem( - 1, - 2, - ObjectiveSense.MINIMIZE, - 0.0, - new double[] {1.0, 1.0}, - matrix, - new byte[] {'G'}, - new double[] {1.0}, - new double[] {0.0, 0.0}, - new double[] {Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY}, - new byte[] {'C', 'C'}); + private static Problem tinyLP() { + Problem problem = new Problem("tiny"); + Variable x0 = problem.addVariable(0.0, Double.POSITIVE_INFINITY, 1.0, VariableType.CONTINUOUS, "x0"); + Variable x1 = problem.addVariable(0.0, Double.POSITIVE_INFINITY, 1.0, VariableType.CONTINUOUS, "x1"); + problem.addConstraint(LinearExpression.of(x0).plus(x1).ge(1.0), "c0"); + problem.setObjective(LinearExpression.of(x0).plus(x1), ObjectiveSense.MINIMIZE); + return problem; } private static void assumeCudaDriverAvailable() { diff --git a/java/cuopt/src/test/java/com/nvidia/cuopt/mathematicalprogramming/DataModelIntegrationTest.java b/java/cuopt/src/test/java/com/nvidia/cuopt/mathematicalprogramming/ProblemIntegrationTest.java similarity index 72% rename from java/cuopt/src/test/java/com/nvidia/cuopt/mathematicalprogramming/DataModelIntegrationTest.java rename to java/cuopt/src/test/java/com/nvidia/cuopt/mathematicalprogramming/ProblemIntegrationTest.java index a6bc1f115c..31f8f8177c 100644 --- a/java/cuopt/src/test/java/com/nvidia/cuopt/mathematicalprogramming/DataModelIntegrationTest.java +++ b/java/cuopt/src/test/java/com/nvidia/cuopt/mathematicalprogramming/ProblemIntegrationTest.java @@ -19,11 +19,11 @@ import org.junit.jupiter.api.DynamicTest; import org.junit.jupiter.api.TestFactory; -final class DataModelIntegrationTest { +final class ProblemIntegrationTest { private static final double SOLVE_TOLERANCE = 1.0e-3; @TestFactory - Stream dataModelsRoundTripAndSolve() { + Stream problemsBuildAndSolve() { return cases().stream() .map(testCase -> DynamicTest.dynamicTest(testCase.name, () -> verify(testCase))); } @@ -32,75 +32,65 @@ private static void verify(CaseSpec testCase) { assumeNativeLibrary(); assumeCudaDriverAvailable(); - try (DataModel model = testCase.createDataModel()) { - assertModelRoundTrip(testCase, model); + try (Problem problem = testCase.createProblem()) { + assertProblemConstruction(testCase, problem); if (testCase.hasQuadraticObjective()) { // QP callability is covered by NativeIntegrationTest. This case owns the independent - // Java-to-JNI marshalling contract for quadratic objectives and constraints. + // Problem construction contract for quadratic objectives and constraints. return; } try (SolverSettings settings = createSettings(testCase); - Solution solution = model.solve(settings)) { + Solution solution = problem.solve(settings)) { assertSolution(testCase, solution); } } } - private static void assertModelRoundTrip(CaseSpec testCase, DataModel model) { - assertEquals(testCase.numVariables, model.getNumVariables()); - assertEquals(testCase.numConstraints, model.getNumConstraints()); - assertEquals(testCase.values.length, model.getNumNonZeros()); - assertEquals(testCase.objectiveSense, model.getObjectiveSense()); - assertEquals(testCase.objectiveOffset, model.getObjectiveOffset(), 0.0); - assertEquals(testCase.objectiveScalingFactor, model.getObjectiveScalingFactor(), 0.0); - assertDoubleArrayEquals(testCase.objectiveCoefficients, model.getObjectiveCoefficients(), 0.0); - - CSRMatrix matrix = model.getConstraintMatrix(); - assertArrayEquals(testCase.rowOffsets, matrix.getRowOffsets()); - assertArrayEquals(testCase.columnIndices, matrix.getColumnIndices()); - assertDoubleArrayEquals(testCase.values, matrix.getValues(), 0.0); - assertDoubleArrayEquals(testCase.variableLowerBounds, model.getVariableLowerBounds(), 0.0); - assertDoubleArrayEquals(testCase.variableUpperBounds, model.getVariableUpperBounds(), 0.0); - assertArrayEquals(testCase.variableTypes, model.getVariableTypes()); - assertArrayEquals(testCase.variableNames, model.getVariableNames()); - assertArrayEquals(testCase.rowNames, model.getRowNames()); - assertEquals(testCase.objectiveName, model.getObjectiveName()); - assertEquals(testCase.problemName, model.getProblemName()); - - if (testCase.isRanged()) { - assertDoubleArrayEquals( - testCase.constraintLowerBounds, model.getConstraintLowerBounds(), 0.0); - assertDoubleArrayEquals( - testCase.constraintUpperBounds, model.getConstraintUpperBounds(), 0.0); - } else { - assertArrayEquals(testCase.constraintSense, model.getConstraintSense()); - assertDoubleArrayEquals(testCase.rhs, model.getConstraintRHS(), 0.0); + private static void assertProblemConstruction(CaseSpec testCase, Problem problem) { + assertEquals(testCase.numVariables, problem.getNumVariables()); + assertEquals(testCase.problemConstraintCount(), problem.getNumConstraints()); + assertEquals(testCase.linearProblemConstraintCount(), problem.getCSR().getRowOffsets().length - 1); + assertEquals(testCase.objectiveSense, problem.getObjectiveSense()); + assertEquals(testCase.objectiveOffset, problem.getObjectiveConstant(), 0.0); + assertEquals(testCase.problemName, problem.getName()); + + for (int i = 0; i < testCase.numVariables; i++) { + Variable variable = problem.getVariable(i); + assertEquals(testCase.variableLowerBounds[i], variable.getLowerBound(), 0.0); + assertEquals(testCase.variableUpperBounds[i], variable.getUpperBound(), 0.0); + assertEquals(VariableType.fromNative(testCase.variableTypes[i]), variable.getVariableType()); + assertEquals(testCase.objectiveCoefficients[i], variable.getObjectiveCoefficient(), 0.0); + assertEquals(testCase.variableName(i), variable.getVariableName()); + } + + if (!testCase.isRanged()) { + CSRMatrix matrix = problem.getCSR(); + assertArrayEquals(testCase.rowOffsets, matrix.getRowOffsets()); + assertArrayEquals(testCase.columnIndices, matrix.getColumnIndices()); + assertDoubleArrayEquals(testCase.values, matrix.getValues(), 0.0); + for (int row = 0; row < testCase.numConstraints; row++) { + Constraint constraint = problem.getConstraint(row); + assertEquals(ConstraintSense.fromNative(testCase.constraintSense[row]), constraint.getSense()); + assertEquals(testCase.rhs[row], constraint.getRHS(), 0.0); + assertEquals(testCase.rowName(row), constraint.getConstraintName()); + } } if (testCase.hasQuadraticObjective()) { - assertArrayEquals( - testCase.quadraticObjectiveRowOffsets, model.getQuadraticObjectiveOffsets()); - assertArrayEquals( - testCase.quadraticObjectiveColumnIndices, model.getQuadraticObjectiveIndices()); - assertDoubleArrayEquals( - testCase.quadraticObjectiveValues, model.getQuadraticObjectiveValues(), 0.0); + assertTrue(problem.getObjective().isQuadratic()); + CSRMatrix matrix = problem.getQCSR(); + assertArrayEquals(testCase.quadraticObjectiveRowOffsets, matrix.getRowOffsets()); + assertArrayEquals(testCase.quadraticObjectiveColumnIndices, matrix.getColumnIndices()); + assertDoubleArrayEquals(testCase.quadraticObjectiveValues, matrix.getValues(), 0.0); } - List constraints = model.getQuadraticConstraints(); - assertEquals(testCase.hasQuadraticConstraint() ? 1 : 0, constraints.size()); + List quadraticConstraints = problem.getQuadraticConstraints(); + assertEquals(testCase.hasQuadraticConstraint() ? 1 : 0, quadraticConstraints.size()); if (testCase.hasQuadraticConstraint()) { - QuadraticConstraint constraint = constraints.get(0); - assertEquals(testCase.quadraticConstraintName, constraint.getRowName()); - assertEquals( - ConstraintSense.fromNative(testCase.quadraticConstraintSense), constraint.getSense()); + Constraint constraint = quadraticConstraints.get(0); + assertEquals(testCase.quadraticConstraintName, constraint.getConstraintName()); + assertEquals(ConstraintSense.fromNative(testCase.quadraticConstraintSense), constraint.getSense()); assertEquals(testCase.quadraticConstraintRHS, constraint.getRHS(), 0.0); - assertArrayEquals(testCase.quadraticConstraintLinearIndices, constraint.getLinearIndices()); - assertDoubleArrayEquals( - testCase.quadraticConstraintLinearValues, constraint.getLinearValues(), 0.0); - assertArrayEquals(testCase.quadraticConstraintRows, constraint.getRows()); - assertArrayEquals(testCase.quadraticConstraintColumns, constraint.getColumns()); - assertDoubleArrayEquals( - testCase.quadraticConstraintValues, constraint.getValues(), 0.0); } } @@ -373,10 +363,8 @@ private static List cases() { .withQuadraticObjective( new int[] {0, 1, 2}, new int[] {0, 1}, new double[] {1.0, 4.0}) .withMetadata( - 2.0, new String[] {"x0", "long_variable_1"}, new String[] {"constraint_0"}, - "qp_objective", "qp_model") .withQuadraticConstraint( "qc0", @@ -428,10 +416,8 @@ private static final class CaseSpec { private final boolean expectSolutionValues; private final double expectedObjective; private final double solutionTolerance = SOLVE_TOLERANCE; - private double objectiveScalingFactor = 1.0; private String[] variableNames = new String[0]; private String[] rowNames = new String[0]; - private String objectiveName = ""; private String problemName = ""; private String quadraticConstraintName; private byte quadraticConstraintSense; @@ -491,58 +477,111 @@ private CaseSpec( this.expectedObjective = expectedObjective; } - private DataModel createDataModel() { - CSRMatrix matrix = new CSRMatrix(values, columnIndices, rowOffsets); - DataModel model = - isRanged() - ? DataModel.createRangedProblem( - numConstraints, - numVariables, - objectiveSense, - objectiveOffset, - objectiveCoefficients, - matrix, - constraintLowerBounds, - constraintUpperBounds, - variableLowerBounds, - variableUpperBounds, - variableTypes) - : DataModel.createProblem( - numConstraints, - numVariables, - objectiveSense, - objectiveOffset, - objectiveCoefficients, - matrix, - constraintSense, - rhs, - variableLowerBounds, - variableUpperBounds, - variableTypes); + private Problem createProblem() { + Problem problem = new Problem(problemName); + for (int i = 0; i < numVariables; i++) { + problem.addVariable( + variableLowerBounds[i], + variableUpperBounds[i], + objectiveCoefficients[i], + VariableType.fromNative(variableTypes[i]), + variableName(i)); + } + if (hasQuadraticObjective()) { - model.setQuadraticObjectiveMatrix( - quadraticObjectiveValues, - quadraticObjectiveColumnIndices, - quadraticObjectiveRowOffsets); + problem.setObjective(buildQuadraticObjective(problem), objectiveSense); + } else { + problem.setObjective(buildLinearObjective(problem), objectiveSense); + } + + for (int row = 0; row < numConstraints; row++) { + LinearExpression expression = buildRowExpression(problem, row); + if (isRanged()) { + if (!Double.isInfinite(constraintLowerBounds[row])) { + problem.addConstraint(expression.ge(constraintLowerBounds[row]), rangedRowName(row, "lower")); + } + if (!Double.isInfinite(constraintUpperBounds[row])) { + problem.addConstraint(expression.le(constraintUpperBounds[row]), rangedRowName(row, "upper")); + } + } else { + problem.addConstraint( + toConstraint(expression, ConstraintSense.fromNative(constraintSense[row]), rhs[row]), + rowName(row)); + } } - model - .setObjectiveScalingFactor(objectiveScalingFactor) - .setVariableNames(variableNames) - .setRowNames(rowNames) - .setObjectiveName(objectiveName) - .setProblemName(problemName); + if (hasQuadraticConstraint()) { - model.addQuadraticConstraint( - quadraticConstraintName, - quadraticConstraintLinearValues, - quadraticConstraintLinearIndices, - quadraticConstraintRHS, - quadraticConstraintValues, - quadraticConstraintRows, - quadraticConstraintColumns, - ConstraintSense.fromNative(quadraticConstraintSense)); + QuadraticExpression expression = new QuadraticExpression(); + for (int i = 0; i < quadraticConstraintLinearValues.length; i++) { + expression = + expression.plus( + problem.getVariable(quadraticConstraintLinearIndices[i]), + quadraticConstraintLinearValues[i]); + } + for (int i = 0; i < quadraticConstraintValues.length; i++) { + expression = + expression.plus( + problem.getVariable(quadraticConstraintRows[i]), + problem.getVariable(quadraticConstraintColumns[i]), + quadraticConstraintValues[i]); + } + Constraint constraint = + ConstraintSense.fromNative(quadraticConstraintSense) == ConstraintSense.LE + ? expression.le(quadraticConstraintRHS) + : expression.ge(quadraticConstraintRHS); + problem.addConstraint(constraint, quadraticConstraintName); + } + return problem; + } + + private LinearExpression buildLinearObjective(Problem problem) { + LinearExpression objective = LinearExpression.ofConstant(objectiveOffset); + for (int i = 0; i < objectiveCoefficients.length; i++) { + if (objectiveCoefficients[i] != 0.0) { + objective = objective.plus(problem.getVariable(i), objectiveCoefficients[i]); + } + } + return objective; + } + + private QuadraticExpression buildQuadraticObjective(Problem problem) { + QuadraticExpression objective = new QuadraticExpression().constant(objectiveOffset); + for (int i = 0; i < objectiveCoefficients.length; i++) { + if (objectiveCoefficients[i] != 0.0) { + objective = objective.plus(problem.getVariable(i), objectiveCoefficients[i]); + } + } + for (int row = 0; row + 1 < quadraticObjectiveRowOffsets.length; row++) { + for (int p = quadraticObjectiveRowOffsets[row]; p < quadraticObjectiveRowOffsets[row + 1]; p++) { + objective = + objective.plus( + problem.getVariable(row), + problem.getVariable(quadraticObjectiveColumnIndices[p]), + quadraticObjectiveValues[p]); + } + } + return objective; + } + + private LinearExpression buildRowExpression(Problem problem, int row) { + LinearExpression expression = new LinearExpression(); + for (int p = rowOffsets[row]; p < rowOffsets[row + 1]; p++) { + expression = expression.plus(problem.getVariable(columnIndices[p]), values[p]); + } + return expression; + } + + private Constraint toConstraint(LinearExpression expression, ConstraintSense sense, double rhs) { + switch (sense) { + case LE: + return expression.le(rhs); + case GE: + return expression.ge(rhs); + case EQ: + return expression.eq(rhs); + default: + throw new IllegalStateException("Unsupported sense " + sense); } - return model; } private boolean isRanged() { @@ -570,6 +609,27 @@ private ProblemCategory expectedCategory() { return hasIntegerVariables() ? ProblemCategory.MIP : ProblemCategory.LP; } + private int linearProblemConstraintCount() { + return isRanged() ? numConstraints * 2 : numConstraints; + } + + private int problemConstraintCount() { + return linearProblemConstraintCount() + (hasQuadraticConstraint() ? 1 : 0); + } + + private String variableName(int index) { + return variableNames.length > index ? variableNames[index] : ""; + } + + private String rowName(int index) { + return rowNames.length > index ? rowNames[index] : ""; + } + + private String rangedRowName(int index, String boundName) { + String base = rowName(index); + return base.isEmpty() ? "" : base + "_" + boundName; + } + private CaseSpec withQuadraticObjective( int[] rowOffsets, int[] columnIndices, double[] values) { this.quadraticObjectiveRowOffsets = Arrays.copyOf(rowOffsets, rowOffsets.length); @@ -579,15 +639,9 @@ private CaseSpec withQuadraticObjective( } private CaseSpec withMetadata( - double scalingFactor, - String[] variableNames, - String[] rowNames, - String objectiveName, - String problemName) { - this.objectiveScalingFactor = scalingFactor; + String[] variableNames, String[] rowNames, String problemName) { this.variableNames = Arrays.copyOf(variableNames, variableNames.length); this.rowNames = Arrays.copyOf(rowNames, rowNames.length); - this.objectiveName = objectiveName; this.problemName = problemName; return this; } From 85e5440d1e17b232b8ce5210dd1f12f682dbdf89 Mon Sep 17 00:00:00 2001 From: Christopher Brissette Date: Thu, 9 Jul 2026 16:45:02 -0400 Subject: [PATCH 5/5] Reorganized pr.yaml to avoid conflicts. --- .github/workflows/pr.yaml | 66 +++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 26c9f2320f..ab71b184cd 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -454,39 +454,6 @@ jobs: script-env-secret-2-value: ${{ secrets.CUOPT_AWS_ACCESS_KEY_ID }} script-env-secret-3-key: CUOPT_AWS_SECRET_ACCESS_KEY script-env-secret-3-value: ${{ secrets.CUOPT_AWS_SECRET_ACCESS_KEY }} - java-build-matrix: - needs: [conda-cpp-build, changed-files] - permissions: - contents: read - uses: rapidsai/shared-workflows/.github/workflows/compute-matrix.yaml@main - if: >- - fromJSON(needs.changed-files.outputs.changed_file_groups).test_java || - fromJSON(needs.changed-files.outputs.changed_file_groups).test_cpp - with: - build_type: pull-request - matrix_name: conda-cpp-build - matrix_filter: map(select(.ARCH == "amd64")) - java-build: - needs: java-build-matrix - permissions: - actions: read - contents: read - id-token: write - packages: read - pull-requests: read - secrets: inherit # zizmor: ignore[secrets-inherit] - uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main - strategy: - fail-fast: false - matrix: ${{ fromJSON(needs.java-build-matrix.outputs.matrix) }} - with: - build_type: pull-request - node_type: "gpu-l4-latest-1" - arch: "amd64" - container_image: "rapidsai/ci-conda:26.08-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }}" - script: "ci/test_java.sh" - artifact-name: "cuopt-java-cuda${{ matrix.CUDA_VER }}" - file_to_upload: "java/cuopt/target/" conda-python-build: needs: [conda-cpp-build, compute-matrix-filters, changed-files] # Consumed by conda-python-tests and docs-build. @@ -546,6 +513,39 @@ jobs: artifact-name: "cuopt_docs" container_image: "rapidsai/ci-conda:26.08-latest" script: "ci/build_docs.sh" + java-build-matrix: + needs: [conda-cpp-build, changed-files] + permissions: + contents: read + uses: rapidsai/shared-workflows/.github/workflows/compute-matrix.yaml@main + if: >- + fromJSON(needs.changed-files.outputs.changed_file_groups).test_java || + fromJSON(needs.changed-files.outputs.changed_file_groups).test_cpp + with: + build_type: pull-request + matrix_name: conda-cpp-build + matrix_filter: map(select(.ARCH == "amd64")) + java-build: + needs: java-build-matrix + permissions: + actions: read + contents: read + id-token: write + packages: read + pull-requests: read + secrets: inherit # zizmor: ignore[secrets-inherit] + uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main + strategy: + fail-fast: false + matrix: ${{ fromJSON(needs.java-build-matrix.outputs.matrix) }} + with: + build_type: pull-request + node_type: "gpu-l4-latest-1" + arch: "amd64" + container_image: "rapidsai/ci-conda:26.08-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }}" + script: "ci/test_java.sh" + artifact-name: "cuopt-java-cuda${{ matrix.CUDA_VER }}" + file_to_upload: "java/cuopt/target/" wheel-build-libcuopt: needs: [compute-matrix-filters, changed-files] if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python_wheels