diff --git a/README.md b/README.md
index bc3cf0d..b5c5b7c 100644
--- a/README.md
+++ b/README.md
@@ -63,7 +63,7 @@ python fetch-cuoptlink.py install -g /opt/gams/gams55.0 -c 12 -r v0.0.8
python fetch-cuoptlink.py uninstall -g /opt/gams/gams55.0
```
-> **Note:** Successful installations automatically verify the solver link by running the GAMS `trnsport` test model with `solver=cuopt`.
+> **Note:** Successful installations automatically verify the solver link by solving a small embedded LP model with `solver=cuopt`.
## Manual installation
diff --git a/examples/trnsport_cuopt.ipynb b/examples/trnsport_cuopt.ipynb
index 97bb6a0..15ae895 100644
--- a/examples/trnsport_cuopt.ipynb
+++ b/examples/trnsport_cuopt.ipynb
@@ -5,37 +5,47 @@
"execution_count": 1,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:27:48.359124Z",
- "iopub.status.busy": "2026-02-17T12:27:48.358924Z",
- "iopub.status.idle": "2026-02-17T12:33:00.999504Z",
- "shell.execute_reply": "2026-02-17T12:33:00.998575Z"
+ "iopub.execute_input": "2026-10-06T09:54:37.563618Z",
+ "iopub.status.busy": "2026-10-06T09:54:37.563487Z",
+ "iopub.status.idle": "2026-10-06T09:57:19.382802Z",
+ "shell.execute_reply": "2026-10-06T09:57:19.381921Z"
}
},
"outputs": [
{
- "data": {
- "text/plain": [
- "CompletedProcess(args='unzip -q -o cuopt-link-release-cu12-x86_64.zip -d /home/andre/cuoptlink-builder/venv/lib/python3.12/site-packages/gamspy_base', returncode=0)"
- ]
- },
- "execution_count": 1,
- "metadata": {},
- "output_type": "execute_result"
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Installing `cuopt` from release `v0.0.8e`...\n",
+ "cuopt-link-release-cu12-x86_64.zip: 100% (884.1MB/884.1MB)\n",
+ "cu12-runtime-x86_64.zip: 100% (1.3GB/1.3GB)\n",
+ "Merged `gamsconfig_cuopt.yaml` into `gamsconfig.yaml`.\n",
+ "Successfully installed `cuopt` into `/home/andre/cuoptlink-builder/venv/lib/python3.14/site-packages/gamspy_base`.\n",
+ "Testing installation with a small LP model...\n",
+ "Installation test completed successfully!\n",
+ " \n"
+ ]
}
],
"source": [
"# remove -q to debug issues with pip installs\n",
+ "import os\n",
"import subprocess\n",
"import sys\n",
- "import os\n",
+ "import tempfile\n",
+ "import urllib.request\n",
"cuversion = 12\n",
- "cputype = 'x86_64' if os.uname().machine == 'x86_64' else 'arm64'\n",
"!pip install -q gamspy\n",
"gams_base_path = subprocess.check_output([sys.executable, '-m', 'gamspy', 'show', 'base']).decode('utf-8').strip()\n",
- "subprocess.run(f'wget -nc -nv -q \"https://github.com/GAMS-dev/cuoptlink-builder/releases/latest/download/cu{cuversion}-runtime-{cputype}.zip\"', shell=True, check=True)\n",
- "subprocess.run(f'wget -nc -nv -q \"https://github.com/GAMS-dev/cuoptlink-builder/releases/latest/download/cuopt-link-release-cu{cuversion}-{cputype}.zip\"', shell=True, check=True)\n",
- "subprocess.run(f\"unzip -q -o cu{cuversion}-runtime-{cputype}.zip -d {gams_base_path}\", shell=True, check=True)\n",
- "subprocess.run(f\"unzip -q -o cuopt-link-release-cu{cuversion}-{cputype}.zip -d {gams_base_path}\", shell=True, check=True)"
+ "# fetch-cuoptlink.py downloads the cuOpt link and CUDA runtime, registers cuOpt in gamsconfig.yaml and runs a test solve\n",
+ "if not os.path.exists(os.path.join(gams_base_path, '.cuopt_installed_files.txt')):\n",
+ " with tempfile.TemporaryDirectory() as tmp:\n",
+ " script = os.path.join(tmp, 'fetch-cuoptlink.py')\n",
+ " urllib.request.urlretrieve('https://raw.githubusercontent.com/GAMS-dev/cuoptlink-builder/main/fetch-cuoptlink.py', script)\n",
+ " r = subprocess.run([sys.executable, script, 'install', '-g', gams_base_path, '-c', str(cuversion), '--cuda-runtime'], capture_output=True)\n",
+ " # only keep the final state of the download progress lines\n",
+ " print('\\n'.join(line.rsplit('\\r', 1)[-1] for line in r.stdout.decode().split('\\n')), r.stderr.decode())\n",
+ " r.check_returncode()"
]
},
{
@@ -94,10 +104,10 @@
"execution_count": 2,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:33:01.029895Z",
- "iopub.status.busy": "2026-02-17T12:33:01.029699Z",
- "iopub.status.idle": "2026-02-17T12:33:01.322509Z",
- "shell.execute_reply": "2026-02-17T12:33:01.321721Z"
+ "iopub.execute_input": "2026-10-06T09:57:19.402830Z",
+ "iopub.status.busy": "2026-10-06T09:57:19.402672Z",
+ "iopub.status.idle": "2026-10-06T09:57:19.572984Z",
+ "shell.execute_reply": "2026-10-06T09:57:19.572535Z"
}
},
"outputs": [
@@ -169,10 +179,10 @@
"execution_count": 3,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:33:01.324203Z",
- "iopub.status.busy": "2026-02-17T12:33:01.324003Z",
- "iopub.status.idle": "2026-02-17T12:33:01.330317Z",
- "shell.execute_reply": "2026-02-17T12:33:01.328814Z"
+ "iopub.execute_input": "2026-10-06T09:57:19.575293Z",
+ "iopub.status.busy": "2026-10-06T09:57:19.575150Z",
+ "iopub.status.idle": "2026-10-06T09:57:19.579776Z",
+ "shell.execute_reply": "2026-10-06T09:57:19.579061Z"
}
},
"outputs": [
@@ -247,10 +257,10 @@
"execution_count": 4,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:33:01.331882Z",
- "iopub.status.busy": "2026-02-17T12:33:01.331736Z",
- "iopub.status.idle": "2026-02-17T12:33:01.341305Z",
- "shell.execute_reply": "2026-02-17T12:33:01.340650Z"
+ "iopub.execute_input": "2026-10-06T09:57:19.581075Z",
+ "iopub.status.busy": "2026-10-06T09:57:19.580957Z",
+ "iopub.status.idle": "2026-10-06T09:57:19.586865Z",
+ "shell.execute_reply": "2026-10-06T09:57:19.586164Z"
}
},
"outputs": [
@@ -352,10 +362,10 @@
"execution_count": 5,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:33:01.342615Z",
- "iopub.status.busy": "2026-02-17T12:33:01.342481Z",
- "iopub.status.idle": "2026-02-17T12:33:01.345120Z",
- "shell.execute_reply": "2026-02-17T12:33:01.344310Z"
+ "iopub.execute_input": "2026-10-06T09:57:19.588235Z",
+ "iopub.status.busy": "2026-10-06T09:57:19.588121Z",
+ "iopub.status.idle": "2026-10-06T09:57:19.590658Z",
+ "shell.execute_reply": "2026-10-06T09:57:19.589628Z"
}
},
"outputs": [],
@@ -377,10 +387,10 @@
"execution_count": 6,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:33:01.346766Z",
- "iopub.status.busy": "2026-02-17T12:33:01.346641Z",
- "iopub.status.idle": "2026-02-17T12:33:01.473803Z",
- "shell.execute_reply": "2026-02-17T12:33:01.472747Z"
+ "iopub.execute_input": "2026-10-06T09:57:19.592143Z",
+ "iopub.status.busy": "2026-10-06T09:57:19.592011Z",
+ "iopub.status.idle": "2026-10-06T09:57:19.702570Z",
+ "shell.execute_reply": "2026-10-06T09:57:19.701700Z"
}
},
"outputs": [],
@@ -402,10 +412,10 @@
"execution_count": 7,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:33:01.475780Z",
- "iopub.status.busy": "2026-02-17T12:33:01.475620Z",
- "iopub.status.idle": "2026-02-17T12:33:01.491727Z",
- "shell.execute_reply": "2026-02-17T12:33:01.490906Z"
+ "iopub.execute_input": "2026-10-06T09:57:19.704350Z",
+ "iopub.status.busy": "2026-10-06T09:57:19.704187Z",
+ "iopub.status.idle": "2026-10-06T09:57:19.729464Z",
+ "shell.execute_reply": "2026-10-06T09:57:19.728650Z"
}
},
"outputs": [],
@@ -439,10 +449,10 @@
"execution_count": 8,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:33:01.493923Z",
- "iopub.status.busy": "2026-02-17T12:33:01.493763Z",
- "iopub.status.idle": "2026-02-17T12:33:01.506645Z",
- "shell.execute_reply": "2026-02-17T12:33:01.505868Z"
+ "iopub.execute_input": "2026-10-06T09:57:19.731161Z",
+ "iopub.status.busy": "2026-10-06T09:57:19.730973Z",
+ "iopub.status.idle": "2026-10-06T09:57:19.739787Z",
+ "shell.execute_reply": "2026-10-06T09:57:19.739013Z"
}
},
"outputs": [],
@@ -463,10 +473,10 @@
"execution_count": 9,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:33:01.508455Z",
- "iopub.status.busy": "2026-02-17T12:33:01.508317Z",
- "iopub.status.idle": "2026-02-17T12:33:01.516458Z",
- "shell.execute_reply": "2026-02-17T12:33:01.515734Z"
+ "iopub.execute_input": "2026-10-06T09:57:19.741413Z",
+ "iopub.status.busy": "2026-10-06T09:57:19.741278Z",
+ "iopub.status.idle": "2026-10-06T09:57:19.746417Z",
+ "shell.execute_reply": "2026-10-06T09:57:19.745761Z"
},
"tags": []
},
@@ -493,10 +503,10 @@
"execution_count": 10,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:33:01.518270Z",
- "iopub.status.busy": "2026-02-17T12:33:01.518104Z",
- "iopub.status.idle": "2026-02-17T12:33:01.522416Z",
- "shell.execute_reply": "2026-02-17T12:33:01.521725Z"
+ "iopub.execute_input": "2026-10-06T09:57:19.747771Z",
+ "iopub.status.busy": "2026-10-06T09:57:19.747643Z",
+ "iopub.status.idle": "2026-10-06T09:57:19.751532Z",
+ "shell.execute_reply": "2026-10-06T09:57:19.750838Z"
}
},
"outputs": [
@@ -560,10 +570,10 @@
"execution_count": 11,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:33:01.523944Z",
- "iopub.status.busy": "2026-02-17T12:33:01.523822Z",
- "iopub.status.idle": "2026-02-17T12:33:01.527799Z",
- "shell.execute_reply": "2026-02-17T12:33:01.527213Z"
+ "iopub.execute_input": "2026-10-06T09:57:19.753045Z",
+ "iopub.status.busy": "2026-10-06T09:57:19.752930Z",
+ "iopub.status.idle": "2026-10-06T09:57:19.756924Z",
+ "shell.execute_reply": "2026-10-06T09:57:19.755995Z"
}
},
"outputs": [
@@ -644,10 +654,10 @@
"execution_count": 12,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:33:01.529766Z",
- "iopub.status.busy": "2026-02-17T12:33:01.529619Z",
- "iopub.status.idle": "2026-02-17T12:33:01.539043Z",
- "shell.execute_reply": "2026-02-17T12:33:01.538353Z"
+ "iopub.execute_input": "2026-10-06T09:57:19.758484Z",
+ "iopub.status.busy": "2026-10-06T09:57:19.758360Z",
+ "iopub.status.idle": "2026-10-06T09:57:19.765598Z",
+ "shell.execute_reply": "2026-10-06T09:57:19.764802Z"
}
},
"outputs": [
@@ -718,10 +728,10 @@
"execution_count": 13,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:33:01.540694Z",
- "iopub.status.busy": "2026-02-17T12:33:01.540533Z",
- "iopub.status.idle": "2026-02-17T12:33:01.549508Z",
- "shell.execute_reply": "2026-02-17T12:33:01.548723Z"
+ "iopub.execute_input": "2026-10-06T09:57:19.767044Z",
+ "iopub.status.busy": "2026-10-06T09:57:19.766916Z",
+ "iopub.status.idle": "2026-10-06T09:57:19.774141Z",
+ "shell.execute_reply": "2026-10-06T09:57:19.773288Z"
}
},
"outputs": [
@@ -798,10 +808,10 @@
"execution_count": 14,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:33:01.550976Z",
- "iopub.status.busy": "2026-02-17T12:33:01.550839Z",
- "iopub.status.idle": "2026-02-17T12:33:01.555219Z",
- "shell.execute_reply": "2026-02-17T12:33:01.554530Z"
+ "iopub.execute_input": "2026-10-06T09:57:19.775568Z",
+ "iopub.status.busy": "2026-10-06T09:57:19.775445Z",
+ "iopub.status.idle": "2026-10-06T09:57:19.778013Z",
+ "shell.execute_reply": "2026-10-06T09:57:19.777164Z"
}
},
"outputs": [],
@@ -837,10 +847,10 @@
"execution_count": 15,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:33:01.556674Z",
- "iopub.status.busy": "2026-02-17T12:33:01.556512Z",
- "iopub.status.idle": "2026-02-17T12:33:01.561662Z",
- "shell.execute_reply": "2026-02-17T12:33:01.560824Z"
+ "iopub.execute_input": "2026-10-06T09:57:19.779371Z",
+ "iopub.status.busy": "2026-10-06T09:57:19.779252Z",
+ "iopub.status.idle": "2026-10-06T09:57:19.783888Z",
+ "shell.execute_reply": "2026-10-06T09:57:19.783212Z"
}
},
"outputs": [
@@ -931,10 +941,10 @@
"execution_count": 16,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:33:01.563129Z",
- "iopub.status.busy": "2026-02-17T12:33:01.563006Z",
- "iopub.status.idle": "2026-02-17T12:33:01.573513Z",
- "shell.execute_reply": "2026-02-17T12:33:01.572738Z"
+ "iopub.execute_input": "2026-10-06T09:57:19.785287Z",
+ "iopub.status.busy": "2026-10-06T09:57:19.785167Z",
+ "iopub.status.idle": "2026-10-06T09:57:19.792350Z",
+ "shell.execute_reply": "2026-10-06T09:57:19.791661Z"
}
},
"outputs": [
@@ -1039,10 +1049,10 @@
"execution_count": 17,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:33:01.574875Z",
- "iopub.status.busy": "2026-02-17T12:33:01.574738Z",
- "iopub.status.idle": "2026-02-17T12:33:01.585523Z",
- "shell.execute_reply": "2026-02-17T12:33:01.584825Z"
+ "iopub.execute_input": "2026-10-06T09:57:19.793812Z",
+ "iopub.status.busy": "2026-10-06T09:57:19.793694Z",
+ "iopub.status.idle": "2026-10-06T09:57:19.800956Z",
+ "shell.execute_reply": "2026-10-06T09:57:19.800094Z"
}
},
"outputs": [
@@ -1144,10 +1154,10 @@
"execution_count": 18,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:33:01.586850Z",
- "iopub.status.busy": "2026-02-17T12:33:01.586712Z",
- "iopub.status.idle": "2026-02-17T12:33:01.595132Z",
- "shell.execute_reply": "2026-02-17T12:33:01.594357Z"
+ "iopub.execute_input": "2026-10-06T09:57:19.802210Z",
+ "iopub.status.busy": "2026-10-06T09:57:19.802091Z",
+ "iopub.status.idle": "2026-10-06T09:57:19.808326Z",
+ "shell.execute_reply": "2026-10-06T09:57:19.807673Z"
}
},
"outputs": [
@@ -1259,10 +1269,10 @@
"execution_count": 19,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:33:01.596448Z",
- "iopub.status.busy": "2026-02-17T12:33:01.596331Z",
- "iopub.status.idle": "2026-02-17T12:33:01.600863Z",
- "shell.execute_reply": "2026-02-17T12:33:01.600034Z"
+ "iopub.execute_input": "2026-10-06T09:57:19.809765Z",
+ "iopub.status.busy": "2026-10-06T09:57:19.809653Z",
+ "iopub.status.idle": "2026-10-06T09:57:19.811973Z",
+ "shell.execute_reply": "2026-10-06T09:57:19.811317Z"
}
},
"outputs": [],
@@ -1302,10 +1312,10 @@
"execution_count": 20,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:33:01.602239Z",
- "iopub.status.busy": "2026-02-17T12:33:01.602117Z",
- "iopub.status.idle": "2026-02-17T12:33:01.608049Z",
- "shell.execute_reply": "2026-02-17T12:33:01.607379Z"
+ "iopub.execute_input": "2026-10-06T09:57:19.813473Z",
+ "iopub.status.busy": "2026-10-06T09:57:19.813367Z",
+ "iopub.status.idle": "2026-10-06T09:57:19.815846Z",
+ "shell.execute_reply": "2026-10-06T09:57:19.815189Z"
}
},
"outputs": [],
@@ -1339,10 +1349,10 @@
"execution_count": 21,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:33:01.609304Z",
- "iopub.status.busy": "2026-02-17T12:33:01.609189Z",
- "iopub.status.idle": "2026-02-17T12:33:01.613951Z",
- "shell.execute_reply": "2026-02-17T12:33:01.613323Z"
+ "iopub.execute_input": "2026-10-06T09:57:19.817170Z",
+ "iopub.status.busy": "2026-10-06T09:57:19.817065Z",
+ "iopub.status.idle": "2026-10-06T09:57:19.820231Z",
+ "shell.execute_reply": "2026-10-06T09:57:19.819477Z"
}
},
"outputs": [],
@@ -1362,10 +1372,10 @@
"execution_count": 22,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:33:01.615202Z",
- "iopub.status.busy": "2026-02-17T12:33:01.615079Z",
- "iopub.status.idle": "2026-02-17T12:33:01.619954Z",
- "shell.execute_reply": "2026-02-17T12:33:01.619238Z"
+ "iopub.execute_input": "2026-10-06T09:57:19.821528Z",
+ "iopub.status.busy": "2026-10-06T09:57:19.821410Z",
+ "iopub.status.idle": "2026-10-06T09:57:19.824839Z",
+ "shell.execute_reply": "2026-10-06T09:57:19.824060Z"
}
},
"outputs": [],
@@ -1393,10 +1403,10 @@
"execution_count": 23,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:33:01.621213Z",
- "iopub.status.busy": "2026-02-17T12:33:01.621092Z",
- "iopub.status.idle": "2026-02-17T12:33:01.623610Z",
- "shell.execute_reply": "2026-02-17T12:33:01.622967Z"
+ "iopub.execute_input": "2026-10-06T09:57:19.826299Z",
+ "iopub.status.busy": "2026-10-06T09:57:19.826172Z",
+ "iopub.status.idle": "2026-10-06T09:57:19.828654Z",
+ "shell.execute_reply": "2026-10-06T09:57:19.827968Z"
}
},
"outputs": [],
@@ -1427,10 +1437,10 @@
"execution_count": 24,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:33:01.624868Z",
- "iopub.status.busy": "2026-02-17T12:33:01.624757Z",
- "iopub.status.idle": "2026-02-17T12:33:01.629407Z",
- "shell.execute_reply": "2026-02-17T12:33:01.628722Z"
+ "iopub.execute_input": "2026-10-06T09:57:19.830147Z",
+ "iopub.status.busy": "2026-10-06T09:57:19.830032Z",
+ "iopub.status.idle": "2026-10-06T09:57:19.833595Z",
+ "shell.execute_reply": "2026-10-06T09:57:19.832812Z"
}
},
"outputs": [],
@@ -1458,10 +1468,10 @@
"execution_count": 25,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:33:01.630769Z",
- "iopub.status.busy": "2026-02-17T12:33:01.630644Z",
- "iopub.status.idle": "2026-02-17T12:33:01.635217Z",
- "shell.execute_reply": "2026-02-17T12:33:01.634580Z"
+ "iopub.execute_input": "2026-10-06T09:57:19.834929Z",
+ "iopub.status.busy": "2026-10-06T09:57:19.834816Z",
+ "iopub.status.idle": "2026-10-06T09:57:19.838352Z",
+ "shell.execute_reply": "2026-10-06T09:57:19.837656Z"
}
},
"outputs": [],
@@ -1505,10 +1515,10 @@
"execution_count": 26,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:33:01.636582Z",
- "iopub.status.busy": "2026-02-17T12:33:01.636438Z",
- "iopub.status.idle": "2026-02-17T12:33:02.190808Z",
- "shell.execute_reply": "2026-02-17T12:33:02.189784Z"
+ "iopub.execute_input": "2026-10-06T09:57:19.839999Z",
+ "iopub.status.busy": "2026-10-06T09:57:19.839883Z",
+ "iopub.status.idle": "2026-10-06T09:57:20.373075Z",
+ "shell.execute_reply": "2026-10-06T09:57:20.372239Z"
}
},
"outputs": [
@@ -1516,7 +1526,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "--- Job _awEgk__eRY_Dpt1YnRXK0Q.gms Start 02/17/26 13:33:01 52.5.0 9bc771bf LEX-LEG x86 64bit/Linux\n"
+ "--- Job _eAl_qrTqQLersipXc5g2Sw.gms Start 10/06/26 11:57:19 54.5.0 f2bc4e68 LEX-LEG x86 64bit/Linux\n"
]
},
{
@@ -1530,14 +1540,14 @@
"name": "stdout",
"output_type": "stream",
"text": [
- " /home/andre/cuoptlink-builder/venv/lib/python3.12/site-packages/gamspy_base/gmsprmun.txt\n"
+ " /home/andre/cuoptlink-builder/venv/lib/python3.14/site-packages/gamspy_base/gmsprmun.txt\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- " /home/andre/cuoptlink-builder/venv/lib/python3.12/site-packages/gamspy_base/gamsconfig.yaml\n"
+ " /home/andre/cuoptlink-builder/venv/lib/python3.14/site-packages/gamspy_base/gamsconfig.yaml\n"
]
},
{
@@ -1558,28 +1568,28 @@
"name": "stdout",
"output_type": "stream",
"text": [
- " Input /tmp/tmp69x_9ilt/_awEgk__eRY_Dpt1YnRXK0Q.gms\n"
+ " Input /tmp/tmph8_btntm/_eAl_qrTqQLersipXc5g2Sw.gms\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- " Output /tmp/tmp69x_9ilt/_awEgk__eRY_Dpt1YnRXK0Q.lst\n"
+ " Output /tmp/tmph8_btntm/_eAl_qrTqQLersipXc5g2Sw.lst\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- " ScrDir /tmp/tmp69x_9ilt/tmp9fvz4tfq/\n"
+ " ScrDir /tmp/tmph8_btntm/tmpruzbgccr/\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- " SysDir /home/andre/cuoptlink-builder/venv/lib/python3.12/site-packages/gamspy_base/\n"
+ " SysDir /home/andre/cuoptlink-builder/venv/lib/python3.14/site-packages/gamspy_base/\n"
]
},
{
@@ -1593,14 +1603,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
- " Trace /tmp/tmp69x_9ilt/_awEgk__eRY_Dpt1YnRXK0Q.txt\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- " License /home/andre/.local/share/GAMSPy/gamspy_license.txt\n"
+ " License /home/andre/cuoptlink-builder/venv/lib/python3.14/site-packages/gamspy_base/gamslice.txt\n"
]
},
{
@@ -1614,7 +1617,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
- " OptDir /tmp/tmp69x_9ilt/\n"
+ " OptDir /tmp/tmph8_btntm/\n"
]
},
{
@@ -1635,70 +1638,70 @@
"name": "stdout",
"output_type": "stream",
"text": [
- " TraceOpt 3\n"
+ " GDX /tmp/tmph8_btntm/_eAl_qrTqQLersipXc5g2Swout.gdx\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- " GDX /tmp/tmp69x_9ilt/_awEgk__eRY_Dpt1YnRXK0Qout.gdx\n"
+ " SolPrint 0\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- " SolPrint 0\n"
+ " SolveLink 2\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- " SolveLink 2\n"
+ " PreviousWork 1\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- " PreviousWork 1\n"
+ " gdxSymbols newOrChangedNoData\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- " gdxSymbols newOrChanged\n"
+ "System information: 10 physical cores and 24 Gb physical memory detected\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "System information: 10 physical cores and 16 Gb physical memory detected\n"
+ "--- Starting compilation\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "--- Starting compilation\n"
+ "--- _eAl_qrTqQLersipXc5g2Sw.gms(63) 4 Mb\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "--- _awEgk__eRY_Dpt1YnRXK0Q.gms(71) 4 Mb\n"
+ "--- Starting execution: elapsed 0:00:00.001\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "--- Starting execution: elapsed 0:00:00.000\n"
+ "--- _eAl_qrTqQLersipXc5g2Sw.gms(200) 4 Mb\n"
]
},
{
@@ -1712,7 +1715,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "--- _awEgk__eRY_Dpt1YnRXK0Q.gms(142) 4 Mb\n"
+ "--- _eAl_qrTqQLersipXc5g2Sw.gms(201) 4 Mb\n"
]
},
{
@@ -1754,98 +1757,98 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "--- Executing CUOPT (Solvelink=2): elapsed 0:00:00.002\n"
+ "--- Executing CUOPT (Solvelink=2): elapsed 0:00:00.001\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "GAMS/cuOpt link was built against cuOpt version: 26.02.00, git hash: f73da24defcfc405317c0ae409a965fcaf7f58d9\n"
+ "GAMS/cuOpt link was built against cuOpt version: 26.08.00, git hash: 400863c1a92914bd47f5d68245f9a00e2d0d2df4\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "Reading parameter(s) from \"/tmp/tmp69x_9ilt/cuopt.opt\"\n"
+ "Using cuOpt library version: 26.08.00\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- ">> method 1\n"
+ "Reading parameter(s) from \"/tmp/tmph8_btntm/cuopt.opt\"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- ">> crossover 0\n"
+ ">> method 1\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "Finished reading from \"/tmp/tmp69x_9ilt/cuopt.opt\"\n"
+ ">> crossover 0\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "Setting parameter method to 1\n"
+ "Finished reading from \"/tmp/tmph8_btntm/cuopt.opt\"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "Setting parameter crossover to false\n"
+ "Setting parameter method to 1\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "Setting parameter log_file to /tmp/tmp69x_9ilt/tmp9fvz4tfq/cuopt.dat\n"
+ "Setting parameter crossover to false\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "cuOpt version: 26.2.0, git hash: f73da24d, host arch: x86_64, device archs: 70-real,75-real,80-real,86-real,90a-real,100f-real,120a-real,120\n"
+ "Setting parameter log_file to /tmp/tmph8_btntm/tmpruzbgccr/cuopt.dat\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "CPU: 13th Gen Intel(R) Core(TM) i7-13700H, threads (physical/logical): 10/20, RAM: 6.53 GiB\n"
+ "cuOpt version: 26.8.0, git hash: 400863c1, host arch: x86_64, device archs: 70-real,75-real,80-real,86-real,90a-real,100f-real,120a-real,120\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "CUDA 12.9, device: NVIDIA RTX A1000 6GB Laptop GPU (ID 0), VRAM: 6.00 GiB\n"
+ "CPU: 13th Gen Intel(R) Core(TM) i7-13700H, threads (physical/logical): 10/20, RAM (available/total): 19.95 / 23.47 GiB\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "CUDA device UUID: 542affffffe55e-08ffffffe0-0257-fffff\n"
+ "CUDA 12.9, device: NVIDIA RTX A1000 6GB Laptop GPU (ID 0), VRAM: 6.00 GiB\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "\n"
+ "CUDA device UUID: 542ae55e-08e0-0257-e3e5-6ac1f557fd25\n"
]
},
{
@@ -1915,7 +1918,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "PSLP presolve time: 0.02s\n"
+ "PSLP presolve time: 0.04s\n"
]
},
{
@@ -1999,7 +2002,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "Status: Optimal Objective: 1.53697337e+02 Iterations: 420 Time: 0.123s\n"
+ "Status: Optimal Objective: 1.53697337e+02 Iterations: 420 Time: 0.124s\n"
]
},
{
@@ -2013,28 +2016,35 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "--- Executing after solve: elapsed 0:00:00.539\n"
+ "--- Executing after solve: elapsed 0:00:00.524\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "--- _awEgk__eRY_Dpt1YnRXK0Q.gms(143) 4 Mb\n"
+ "--- _eAl_qrTqQLersipXc5g2Sw.gms(204) 4 Mb\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "--- _awEgk__eRY_Dpt1YnRXK0Q.gms(201) 4 Mb\n"
+ "--- _eAl_qrTqQLersipXc5g2Sw.gms(234) 4 Mb\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "--- GDX File /tmp/tmp69x_9ilt/_awEgk__eRY_Dpt1YnRXK0Qout.gdx\n"
+ "--- GDX File (execute_unload) /tmp/tmph8_btntm/__VoBAq1uT72FOWQM_Ugojw.gdx\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "--- GDX File /tmp/tmph8_btntm/_eAl_qrTqQLersipXc5g2Swout.gdx\n"
]
},
{
@@ -2048,7 +2058,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "--- Job _awEgk__eRY_Dpt1YnRXK0Q.gms Stop 02/17/26 13:33:02 elapsed 0:00:00.540\n"
+ "--- Job _eAl_qrTqQLersipXc5g2Sw.gms Stop 10/06/26 11:57:20 elapsed 0:00:00.524\n"
]
},
{
@@ -2085,25 +2095,25 @@
"
\n",
" \n",
" | 0 | \n",
- " Normal | \n",
+ " NormalCompletion | \n",
" OptimalGlobal | \n",
" 153.697337 | \n",
- " 6 | \n",
- " 7 | \n",
+ " 6.0 | \n",
+ " 7.0 | \n",
" LP | \n",
" CUOPT | \n",
- " 0.123 | \n",
+ " 0.523 | \n",
"
\n",
" \n",
"\n",
""
],
"text/plain": [
- " Solver Status Model Status Objective Num of Equations \\\n",
- "0 Normal OptimalGlobal 153.697337 6 \n",
+ " Solver Status Model Status Objective Num of Equations \\\n",
+ "0 NormalCompletion OptimalGlobal 153.697337 6.0 \n",
"\n",
" Num of Variables Model Type Solver Solver Time \n",
- "0 7 LP CUOPT 0.123 "
+ "0 7.0 LP CUOPT 0.523 "
]
},
"execution_count": 26,
@@ -2133,10 +2143,10 @@
"execution_count": 27,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:33:02.192206Z",
- "iopub.status.busy": "2026-02-17T12:33:02.192069Z",
- "iopub.status.idle": "2026-02-17T12:33:02.201046Z",
- "shell.execute_reply": "2026-02-17T12:33:02.200011Z"
+ "iopub.execute_input": "2026-10-06T09:57:20.374553Z",
+ "iopub.status.busy": "2026-10-06T09:57:20.374424Z",
+ "iopub.status.idle": "2026-10-06T09:57:20.381827Z",
+ "shell.execute_reply": "2026-10-06T09:57:20.381140Z"
}
},
"outputs": [
@@ -2183,7 +2193,7 @@
" seattle | \n",
" new-york | \n",
" 49.736445 | \n",
- " 0.0 | \n",
+ " -6.113223e-07 | \n",
" 0.0 | \n",
" inf | \n",
" 1.0 | \n",
@@ -2191,7 +2201,7 @@
" \n",
" | chicago | \n",
" 300.095559 | \n",
- " 0.0 | \n",
+ " -3.299668e-07 | \n",
" 0.0 | \n",
" inf | \n",
" 1.0 | \n",
@@ -2199,7 +2209,7 @@
"
\n",
" | topeka | \n",
" 0.000000 | \n",
- " 0.0 | \n",
+ " 3.599978e-02 | \n",
" 0.0 | \n",
" inf | \n",
" 1.0 | \n",
@@ -2208,7 +2218,7 @@
" san-diego | \n",
" new-york | \n",
" 275.296520 | \n",
- " 0.0 | \n",
+ " -6.113223e-07 | \n",
" 0.0 | \n",
" inf | \n",
" 1.0 | \n",
@@ -2216,7 +2226,7 @@
"
\n",
" | chicago | \n",
" 0.000000 | \n",
- " 0.0 | \n",
+ " 8.999670e-03 | \n",
" 0.0 | \n",
" inf | \n",
" 1.0 | \n",
@@ -2224,7 +2234,7 @@
"
\n",
" | topeka | \n",
" 275.002378 | \n",
- " 0.0 | \n",
+ " -2.164316e-07 | \n",
" 0.0 | \n",
" inf | \n",
" 1.0 | \n",
@@ -2234,14 +2244,14 @@
""
],
"text/plain": [
- " level marginal lower upper scale\n",
- "i j \n",
- "seattle new-york 49.736445 0.0 0.0 inf 1.0\n",
- " chicago 300.095559 0.0 0.0 inf 1.0\n",
- " topeka 0.000000 0.0 0.0 inf 1.0\n",
- "san-diego new-york 275.296520 0.0 0.0 inf 1.0\n",
- " chicago 0.000000 0.0 0.0 inf 1.0\n",
- " topeka 275.002378 0.0 0.0 inf 1.0"
+ " level marginal lower upper scale\n",
+ "i j \n",
+ "seattle new-york 49.736445 -6.113223e-07 0.0 inf 1.0\n",
+ " chicago 300.095559 -3.299668e-07 0.0 inf 1.0\n",
+ " topeka 0.000000 3.599978e-02 0.0 inf 1.0\n",
+ "san-diego new-york 275.296520 -6.113223e-07 0.0 inf 1.0\n",
+ " chicago 0.000000 8.999670e-03 0.0 inf 1.0\n",
+ " topeka 275.002378 -2.164316e-07 0.0 inf 1.0"
]
},
"execution_count": 27,
@@ -2273,10 +2283,10 @@
"execution_count": 28,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:33:02.202656Z",
- "iopub.status.busy": "2026-02-17T12:33:02.202509Z",
- "iopub.status.idle": "2026-02-17T12:33:02.205762Z",
- "shell.execute_reply": "2026-02-17T12:33:02.205074Z"
+ "iopub.execute_input": "2026-10-06T09:57:20.383261Z",
+ "iopub.status.busy": "2026-10-06T09:57:20.383134Z",
+ "iopub.status.idle": "2026-10-06T09:57:20.386065Z",
+ "shell.execute_reply": "2026-10-06T09:57:20.385371Z"
}
},
"outputs": [
@@ -2321,7 +2331,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.12.3"
+ "version": "3.14.4"
}
},
"nbformat": 4,
diff --git a/examples/trnsport_cuopt_cu13.ipynb b/examples/trnsport_cuopt_cu13.ipynb
index 6f76a5a..af65cbb 100644
--- a/examples/trnsport_cuopt_cu13.ipynb
+++ b/examples/trnsport_cuopt_cu13.ipynb
@@ -5,10 +5,10 @@
"execution_count": 1,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:35:19.590621Z",
- "iopub.status.busy": "2026-02-17T12:35:19.590495Z",
- "iopub.status.idle": "2026-02-17T12:38:38.561774Z",
- "shell.execute_reply": "2026-02-17T12:38:38.560708Z"
+ "iopub.execute_input": "2026-10-06T09:57:29.528122Z",
+ "iopub.status.busy": "2026-10-06T09:57:29.528000Z",
+ "iopub.status.idle": "2026-10-06T09:59:07.807284Z",
+ "shell.execute_reply": "2026-10-06T09:59:07.805990Z"
},
"vscode": {
"languageId": "shellscript"
@@ -16,29 +16,39 @@
},
"outputs": [
{
- "data": {
- "text/plain": [
- "CompletedProcess(args='unzip -q -o cuopt-link-release-cu13-x86_64.zip -d /home/andre/cuoptlink-builder/venv/lib/python3.12/site-packages/gamspy_base', returncode=0)"
- ]
- },
- "execution_count": 1,
- "metadata": {},
- "output_type": "execute_result"
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Installing `cuopt` from release `v0.0.8e`...\n",
+ "cuopt-link-release-cu13-x86_64.zip: 100% (662.5MB/662.5MB)\n",
+ "cu13-runtime-x86_64.zip: 100% (890.9MB/890.9MB)\n",
+ "Merged `gamsconfig_cuopt.yaml` into `gamsconfig.yaml`.\n",
+ "Successfully installed `cuopt` into `/home/andre/cuoptlink-builder/venv/lib/python3.14/site-packages/gamspy_base`.\n",
+ "Testing installation with a small LP model...\n",
+ "Installation test completed successfully!\n",
+ " \n"
+ ]
}
],
"source": [
"# remove -q to debug issues with pip installs\n",
+ "import os\n",
"import subprocess\n",
"import sys\n",
- "import os\n",
+ "import tempfile\n",
+ "import urllib.request\n",
"cuversion = 13\n",
- "cputype = 'x86_64' if os.uname().machine == 'x86_64' else 'arm64'\n",
"!pip install -q gamspy\n",
"gams_base_path = subprocess.check_output([sys.executable, '-m', 'gamspy', 'show', 'base']).decode('utf-8').strip()\n",
- "subprocess.run(f'wget -nc -nv -q \"https://github.com/GAMS-dev/cuoptlink-builder/releases/latest/download/cu{cuversion}-runtime-{cputype}.zip\"', shell=True, check=True)\n",
- "subprocess.run(f'wget -nc -nv -q \"https://github.com/GAMS-dev/cuoptlink-builder/releases/latest/download/cuopt-link-release-cu{cuversion}-{cputype}.zip\"', shell=True, check=True)\n",
- "subprocess.run(f\"unzip -q -o cu{cuversion}-runtime-{cputype}.zip -d {gams_base_path}\", shell=True, check=True)\n",
- "subprocess.run(f\"unzip -q -o cuopt-link-release-cu{cuversion}-{cputype}.zip -d {gams_base_path}\", shell=True, check=True)"
+ "# fetch-cuoptlink.py downloads the cuOpt link and CUDA runtime, registers cuOpt in gamsconfig.yaml and runs a test solve\n",
+ "if not os.path.exists(os.path.join(gams_base_path, '.cuopt_installed_files.txt')):\n",
+ " with tempfile.TemporaryDirectory() as tmp:\n",
+ " script = os.path.join(tmp, 'fetch-cuoptlink.py')\n",
+ " urllib.request.urlretrieve('https://raw.githubusercontent.com/GAMS-dev/cuoptlink-builder/main/fetch-cuoptlink.py', script)\n",
+ " r = subprocess.run([sys.executable, script, 'install', '-g', gams_base_path, '-c', str(cuversion), '--cuda-runtime'], capture_output=True)\n",
+ " # only keep the final state of the download progress lines\n",
+ " print('\\n'.join(line.rsplit('\\r', 1)[-1] for line in r.stdout.decode().split('\\n')), r.stderr.decode())\n",
+ " r.check_returncode()"
]
},
{
@@ -97,10 +107,10 @@
"execution_count": 2,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:38:38.588255Z",
- "iopub.status.busy": "2026-02-17T12:38:38.588033Z",
- "iopub.status.idle": "2026-02-17T12:38:38.919610Z",
- "shell.execute_reply": "2026-02-17T12:38:38.918456Z"
+ "iopub.execute_input": "2026-10-06T09:59:07.826591Z",
+ "iopub.status.busy": "2026-10-06T09:59:07.826392Z",
+ "iopub.status.idle": "2026-10-06T09:59:07.983355Z",
+ "shell.execute_reply": "2026-10-06T09:59:07.982303Z"
}
},
"outputs": [
@@ -172,10 +182,10 @@
"execution_count": 3,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:38:38.921292Z",
- "iopub.status.busy": "2026-02-17T12:38:38.921079Z",
- "iopub.status.idle": "2026-02-17T12:38:38.926872Z",
- "shell.execute_reply": "2026-02-17T12:38:38.925828Z"
+ "iopub.execute_input": "2026-10-06T09:59:07.985109Z",
+ "iopub.status.busy": "2026-10-06T09:59:07.984979Z",
+ "iopub.status.idle": "2026-10-06T09:59:07.990029Z",
+ "shell.execute_reply": "2026-10-06T09:59:07.989214Z"
}
},
"outputs": [
@@ -250,10 +260,10 @@
"execution_count": 4,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:38:38.928551Z",
- "iopub.status.busy": "2026-02-17T12:38:38.928399Z",
- "iopub.status.idle": "2026-02-17T12:38:38.936617Z",
- "shell.execute_reply": "2026-02-17T12:38:38.935479Z"
+ "iopub.execute_input": "2026-10-06T09:59:07.991676Z",
+ "iopub.status.busy": "2026-10-06T09:59:07.991561Z",
+ "iopub.status.idle": "2026-10-06T09:59:07.997416Z",
+ "shell.execute_reply": "2026-10-06T09:59:07.996687Z"
}
},
"outputs": [
@@ -355,10 +365,10 @@
"execution_count": 5,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:38:38.938165Z",
- "iopub.status.busy": "2026-02-17T12:38:38.938011Z",
- "iopub.status.idle": "2026-02-17T12:38:38.940733Z",
- "shell.execute_reply": "2026-02-17T12:38:38.939893Z"
+ "iopub.execute_input": "2026-10-06T09:59:07.998694Z",
+ "iopub.status.busy": "2026-10-06T09:59:07.998566Z",
+ "iopub.status.idle": "2026-10-06T09:59:08.000939Z",
+ "shell.execute_reply": "2026-10-06T09:59:08.000204Z"
}
},
"outputs": [],
@@ -380,10 +390,10 @@
"execution_count": 6,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:38:38.942175Z",
- "iopub.status.busy": "2026-02-17T12:38:38.942037Z",
- "iopub.status.idle": "2026-02-17T12:38:39.079857Z",
- "shell.execute_reply": "2026-02-17T12:38:39.078886Z"
+ "iopub.execute_input": "2026-10-06T09:59:08.002323Z",
+ "iopub.status.busy": "2026-10-06T09:59:08.002206Z",
+ "iopub.status.idle": "2026-10-06T09:59:08.105213Z",
+ "shell.execute_reply": "2026-10-06T09:59:08.104547Z"
}
},
"outputs": [],
@@ -405,10 +415,10 @@
"execution_count": 7,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:38:39.081483Z",
- "iopub.status.busy": "2026-02-17T12:38:39.081335Z",
- "iopub.status.idle": "2026-02-17T12:38:39.093091Z",
- "shell.execute_reply": "2026-02-17T12:38:39.092233Z"
+ "iopub.execute_input": "2026-10-06T09:59:08.107449Z",
+ "iopub.status.busy": "2026-10-06T09:59:08.107290Z",
+ "iopub.status.idle": "2026-10-06T09:59:08.133286Z",
+ "shell.execute_reply": "2026-10-06T09:59:08.132426Z"
}
},
"outputs": [],
@@ -442,10 +452,10 @@
"execution_count": 8,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:38:39.094798Z",
- "iopub.status.busy": "2026-02-17T12:38:39.094616Z",
- "iopub.status.idle": "2026-02-17T12:38:39.107075Z",
- "shell.execute_reply": "2026-02-17T12:38:39.106072Z"
+ "iopub.execute_input": "2026-10-06T09:59:08.134843Z",
+ "iopub.status.busy": "2026-10-06T09:59:08.134717Z",
+ "iopub.status.idle": "2026-10-06T09:59:08.144318Z",
+ "shell.execute_reply": "2026-10-06T09:59:08.143495Z"
}
},
"outputs": [],
@@ -466,10 +476,10 @@
"execution_count": 9,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:38:39.108525Z",
- "iopub.status.busy": "2026-02-17T12:38:39.108409Z",
- "iopub.status.idle": "2026-02-17T12:38:39.115720Z",
- "shell.execute_reply": "2026-02-17T12:38:39.114858Z"
+ "iopub.execute_input": "2026-10-06T09:59:08.145830Z",
+ "iopub.status.busy": "2026-10-06T09:59:08.145709Z",
+ "iopub.status.idle": "2026-10-06T09:59:08.150969Z",
+ "shell.execute_reply": "2026-10-06T09:59:08.150301Z"
},
"tags": []
},
@@ -496,10 +506,10 @@
"execution_count": 10,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:38:39.117285Z",
- "iopub.status.busy": "2026-02-17T12:38:39.117143Z",
- "iopub.status.idle": "2026-02-17T12:38:39.121848Z",
- "shell.execute_reply": "2026-02-17T12:38:39.121107Z"
+ "iopub.execute_input": "2026-10-06T09:59:08.152529Z",
+ "iopub.status.busy": "2026-10-06T09:59:08.152401Z",
+ "iopub.status.idle": "2026-10-06T09:59:08.156348Z",
+ "shell.execute_reply": "2026-10-06T09:59:08.155624Z"
}
},
"outputs": [
@@ -563,10 +573,10 @@
"execution_count": 11,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:38:39.123519Z",
- "iopub.status.busy": "2026-02-17T12:38:39.123292Z",
- "iopub.status.idle": "2026-02-17T12:38:39.127695Z",
- "shell.execute_reply": "2026-02-17T12:38:39.126977Z"
+ "iopub.execute_input": "2026-10-06T09:59:08.157825Z",
+ "iopub.status.busy": "2026-10-06T09:59:08.157716Z",
+ "iopub.status.idle": "2026-10-06T09:59:08.161597Z",
+ "shell.execute_reply": "2026-10-06T09:59:08.160692Z"
}
},
"outputs": [
@@ -647,10 +657,10 @@
"execution_count": 12,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:38:39.129111Z",
- "iopub.status.busy": "2026-02-17T12:38:39.128984Z",
- "iopub.status.idle": "2026-02-17T12:38:39.138726Z",
- "shell.execute_reply": "2026-02-17T12:38:39.137805Z"
+ "iopub.execute_input": "2026-10-06T09:59:08.163099Z",
+ "iopub.status.busy": "2026-10-06T09:59:08.162945Z",
+ "iopub.status.idle": "2026-10-06T09:59:08.169762Z",
+ "shell.execute_reply": "2026-10-06T09:59:08.168716Z"
}
},
"outputs": [
@@ -721,10 +731,10 @@
"execution_count": 13,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:38:39.140177Z",
- "iopub.status.busy": "2026-02-17T12:38:39.140046Z",
- "iopub.status.idle": "2026-02-17T12:38:39.149390Z",
- "shell.execute_reply": "2026-02-17T12:38:39.148315Z"
+ "iopub.execute_input": "2026-10-06T09:59:08.171459Z",
+ "iopub.status.busy": "2026-10-06T09:59:08.171301Z",
+ "iopub.status.idle": "2026-10-06T09:59:08.179020Z",
+ "shell.execute_reply": "2026-10-06T09:59:08.178242Z"
}
},
"outputs": [
@@ -801,10 +811,10 @@
"execution_count": 14,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:38:39.150767Z",
- "iopub.status.busy": "2026-02-17T12:38:39.150604Z",
- "iopub.status.idle": "2026-02-17T12:38:39.155045Z",
- "shell.execute_reply": "2026-02-17T12:38:39.154350Z"
+ "iopub.execute_input": "2026-10-06T09:59:08.180378Z",
+ "iopub.status.busy": "2026-10-06T09:59:08.180267Z",
+ "iopub.status.idle": "2026-10-06T09:59:08.182672Z",
+ "shell.execute_reply": "2026-10-06T09:59:08.181943Z"
}
},
"outputs": [],
@@ -840,10 +850,10 @@
"execution_count": 15,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:38:39.156791Z",
- "iopub.status.busy": "2026-02-17T12:38:39.156662Z",
- "iopub.status.idle": "2026-02-17T12:38:39.162127Z",
- "shell.execute_reply": "2026-02-17T12:38:39.161332Z"
+ "iopub.execute_input": "2026-10-06T09:59:08.183976Z",
+ "iopub.status.busy": "2026-10-06T09:59:08.183860Z",
+ "iopub.status.idle": "2026-10-06T09:59:08.189149Z",
+ "shell.execute_reply": "2026-10-06T09:59:08.188369Z"
}
},
"outputs": [
@@ -934,10 +944,10 @@
"execution_count": 16,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:38:39.163397Z",
- "iopub.status.busy": "2026-02-17T12:38:39.163265Z",
- "iopub.status.idle": "2026-02-17T12:38:39.174452Z",
- "shell.execute_reply": "2026-02-17T12:38:39.173551Z"
+ "iopub.execute_input": "2026-10-06T09:59:08.190354Z",
+ "iopub.status.busy": "2026-10-06T09:59:08.190242Z",
+ "iopub.status.idle": "2026-10-06T09:59:08.197411Z",
+ "shell.execute_reply": "2026-10-06T09:59:08.196645Z"
}
},
"outputs": [
@@ -1042,10 +1052,10 @@
"execution_count": 17,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:38:39.175964Z",
- "iopub.status.busy": "2026-02-17T12:38:39.175824Z",
- "iopub.status.idle": "2026-02-17T12:38:39.186263Z",
- "shell.execute_reply": "2026-02-17T12:38:39.185565Z"
+ "iopub.execute_input": "2026-10-06T09:59:08.198712Z",
+ "iopub.status.busy": "2026-10-06T09:59:08.198601Z",
+ "iopub.status.idle": "2026-10-06T09:59:08.205510Z",
+ "shell.execute_reply": "2026-10-06T09:59:08.204823Z"
}
},
"outputs": [
@@ -1147,10 +1157,10 @@
"execution_count": 18,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:38:39.187614Z",
- "iopub.status.busy": "2026-02-17T12:38:39.187458Z",
- "iopub.status.idle": "2026-02-17T12:38:39.196362Z",
- "shell.execute_reply": "2026-02-17T12:38:39.195737Z"
+ "iopub.execute_input": "2026-10-06T09:59:08.206872Z",
+ "iopub.status.busy": "2026-10-06T09:59:08.206761Z",
+ "iopub.status.idle": "2026-10-06T09:59:08.213213Z",
+ "shell.execute_reply": "2026-10-06T09:59:08.212469Z"
}
},
"outputs": [
@@ -1262,10 +1272,10 @@
"execution_count": 19,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:38:39.198024Z",
- "iopub.status.busy": "2026-02-17T12:38:39.197891Z",
- "iopub.status.idle": "2026-02-17T12:38:39.202378Z",
- "shell.execute_reply": "2026-02-17T12:38:39.201707Z"
+ "iopub.execute_input": "2026-10-06T09:59:08.214702Z",
+ "iopub.status.busy": "2026-10-06T09:59:08.214589Z",
+ "iopub.status.idle": "2026-10-06T09:59:08.217031Z",
+ "shell.execute_reply": "2026-10-06T09:59:08.216458Z"
}
},
"outputs": [],
@@ -1305,10 +1315,10 @@
"execution_count": 20,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:38:39.203879Z",
- "iopub.status.busy": "2026-02-17T12:38:39.203763Z",
- "iopub.status.idle": "2026-02-17T12:38:39.210028Z",
- "shell.execute_reply": "2026-02-17T12:38:39.209345Z"
+ "iopub.execute_input": "2026-10-06T09:59:08.218385Z",
+ "iopub.status.busy": "2026-10-06T09:59:08.218273Z",
+ "iopub.status.idle": "2026-10-06T09:59:08.220815Z",
+ "shell.execute_reply": "2026-10-06T09:59:08.220175Z"
}
},
"outputs": [],
@@ -1342,10 +1352,10 @@
"execution_count": 21,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:38:39.211425Z",
- "iopub.status.busy": "2026-02-17T12:38:39.211312Z",
- "iopub.status.idle": "2026-02-17T12:38:39.216436Z",
- "shell.execute_reply": "2026-02-17T12:38:39.215529Z"
+ "iopub.execute_input": "2026-10-06T09:59:08.222143Z",
+ "iopub.status.busy": "2026-10-06T09:59:08.222018Z",
+ "iopub.status.idle": "2026-10-06T09:59:08.225503Z",
+ "shell.execute_reply": "2026-10-06T09:59:08.224799Z"
}
},
"outputs": [],
@@ -1365,10 +1375,10 @@
"execution_count": 22,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:38:39.217768Z",
- "iopub.status.busy": "2026-02-17T12:38:39.217632Z",
- "iopub.status.idle": "2026-02-17T12:38:39.223344Z",
- "shell.execute_reply": "2026-02-17T12:38:39.222439Z"
+ "iopub.execute_input": "2026-10-06T09:59:08.226820Z",
+ "iopub.status.busy": "2026-10-06T09:59:08.226712Z",
+ "iopub.status.idle": "2026-10-06T09:59:08.229793Z",
+ "shell.execute_reply": "2026-10-06T09:59:08.229106Z"
}
},
"outputs": [],
@@ -1396,10 +1406,10 @@
"execution_count": 23,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:38:39.224824Z",
- "iopub.status.busy": "2026-02-17T12:38:39.224693Z",
- "iopub.status.idle": "2026-02-17T12:38:39.227300Z",
- "shell.execute_reply": "2026-02-17T12:38:39.226581Z"
+ "iopub.execute_input": "2026-10-06T09:59:08.231299Z",
+ "iopub.status.busy": "2026-10-06T09:59:08.231186Z",
+ "iopub.status.idle": "2026-10-06T09:59:08.233489Z",
+ "shell.execute_reply": "2026-10-06T09:59:08.232830Z"
}
},
"outputs": [],
@@ -1430,10 +1440,10 @@
"execution_count": 24,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:38:39.228602Z",
- "iopub.status.busy": "2026-02-17T12:38:39.228481Z",
- "iopub.status.idle": "2026-02-17T12:38:39.233272Z",
- "shell.execute_reply": "2026-02-17T12:38:39.232477Z"
+ "iopub.execute_input": "2026-10-06T09:59:08.234755Z",
+ "iopub.status.busy": "2026-10-06T09:59:08.234648Z",
+ "iopub.status.idle": "2026-10-06T09:59:08.238030Z",
+ "shell.execute_reply": "2026-10-06T09:59:08.237266Z"
}
},
"outputs": [],
@@ -1461,10 +1471,10 @@
"execution_count": 25,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:38:39.234531Z",
- "iopub.status.busy": "2026-02-17T12:38:39.234417Z",
- "iopub.status.idle": "2026-02-17T12:38:39.238920Z",
- "shell.execute_reply": "2026-02-17T12:38:39.238117Z"
+ "iopub.execute_input": "2026-10-06T09:59:08.239548Z",
+ "iopub.status.busy": "2026-10-06T09:59:08.239426Z",
+ "iopub.status.idle": "2026-10-06T09:59:08.242890Z",
+ "shell.execute_reply": "2026-10-06T09:59:08.242090Z"
}
},
"outputs": [],
@@ -1508,10 +1518,10 @@
"execution_count": 26,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:38:39.240259Z",
- "iopub.status.busy": "2026-02-17T12:38:39.240134Z",
- "iopub.status.idle": "2026-02-17T12:38:39.843192Z",
- "shell.execute_reply": "2026-02-17T12:38:39.842442Z"
+ "iopub.execute_input": "2026-10-06T09:59:08.244303Z",
+ "iopub.status.busy": "2026-10-06T09:59:08.244179Z",
+ "iopub.status.idle": "2026-10-06T09:59:08.677503Z",
+ "shell.execute_reply": "2026-10-06T09:59:08.676670Z"
}
},
"outputs": [
@@ -1519,7 +1529,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "--- Job _wzUGve_OSG2F5FU6ucswQw.gms Start 02/17/26 13:38:39 52.5.0 9bc771bf LEX-LEG x86 64bit/Linux\n"
+ "--- Job _7DXlVK8tSTGbk7_j2mSXkw.gms Start 10/06/26 11:59:08 54.5.0 f2bc4e68 LEX-LEG x86 64bit/Linux\n"
]
},
{
@@ -1533,14 +1543,14 @@
"name": "stdout",
"output_type": "stream",
"text": [
- " /home/andre/cuoptlink-builder/venv/lib/python3.12/site-packages/gamspy_base/gmsprmun.txt\n"
+ " /home/andre/cuoptlink-builder/venv/lib/python3.14/site-packages/gamspy_base/gmsprmun.txt\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- " /home/andre/cuoptlink-builder/venv/lib/python3.12/site-packages/gamspy_base/gamsconfig.yaml\n"
+ " /home/andre/cuoptlink-builder/venv/lib/python3.14/site-packages/gamspy_base/gamsconfig.yaml\n"
]
},
{
@@ -1561,28 +1571,28 @@
"name": "stdout",
"output_type": "stream",
"text": [
- " Input /tmp/tmpqreijagx/_wzUGve_OSG2F5FU6ucswQw.gms\n"
+ " Input /tmp/tmp3mg4pv73/_7DXlVK8tSTGbk7_j2mSXkw.gms\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- " Output /tmp/tmpqreijagx/_wzUGve_OSG2F5FU6ucswQw.lst\n"
+ " Output /tmp/tmp3mg4pv73/_7DXlVK8tSTGbk7_j2mSXkw.lst\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- " ScrDir /tmp/tmpqreijagx/tmpxscxla_u/\n"
+ " ScrDir /tmp/tmp3mg4pv73/tmpvuivjwas/\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- " SysDir /home/andre/cuoptlink-builder/venv/lib/python3.12/site-packages/gamspy_base/\n"
+ " SysDir /home/andre/cuoptlink-builder/venv/lib/python3.14/site-packages/gamspy_base/\n"
]
},
{
@@ -1596,14 +1606,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
- " Trace /tmp/tmpqreijagx/_wzUGve_OSG2F5FU6ucswQw.txt\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- " License /home/andre/.local/share/GAMSPy/gamspy_license.txt\n"
+ " License /home/andre/cuoptlink-builder/venv/lib/python3.14/site-packages/gamspy_base/gamslice.txt\n"
]
},
{
@@ -1617,7 +1620,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
- " OptDir /tmp/tmpqreijagx/\n"
+ " OptDir /tmp/tmp3mg4pv73/\n"
]
},
{
@@ -1638,70 +1641,70 @@
"name": "stdout",
"output_type": "stream",
"text": [
- " TraceOpt 3\n"
+ " GDX /tmp/tmp3mg4pv73/_7DXlVK8tSTGbk7_j2mSXkwout.gdx\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- " GDX /tmp/tmpqreijagx/_wzUGve_OSG2F5FU6ucswQwout.gdx\n"
+ " SolPrint 0\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- " SolPrint 0\n"
+ " SolveLink 2\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- " SolveLink 2\n"
+ " PreviousWork 1\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- " PreviousWork 1\n"
+ " gdxSymbols newOrChangedNoData\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- " gdxSymbols newOrChanged\n"
+ "System information: 10 physical cores and 24 Gb physical memory detected\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "System information: 10 physical cores and 16 Gb physical memory detected\n"
+ "--- Starting compilation\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "--- Starting compilation\n"
+ "--- _7DXlVK8tSTGbk7_j2mSXkw.gms(63) 4 Mb\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "--- _wzUGve_OSG2F5FU6ucswQw.gms(71) 4 Mb\n"
+ "--- Starting execution: elapsed 0:00:00.000\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "--- Starting execution: elapsed 0:00:00.000\n"
+ "--- _7DXlVK8tSTGbk7_j2mSXkw.gms(200) 4 Mb\n"
]
},
{
@@ -1715,7 +1718,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "--- _wzUGve_OSG2F5FU6ucswQw.gms(142) 4 Mb\n"
+ "--- _7DXlVK8tSTGbk7_j2mSXkw.gms(201) 4 Mb\n"
]
},
{
@@ -1764,91 +1767,91 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "GAMS/cuOpt link was built against cuOpt version: 26.02.00, git hash: f73da24defcfc405317c0ae409a965fcaf7f58d9\n"
+ "GAMS/cuOpt link was built against cuOpt version: 26.08.00, git hash: 400863c1a92914bd47f5d68245f9a00e2d0d2df4\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "Reading parameter(s) from \"/tmp/tmpqreijagx/cuopt.opt\"\n"
+ "Using cuOpt library version: 26.08.00\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- ">> method 1\n"
+ "Reading parameter(s) from \"/tmp/tmp3mg4pv73/cuopt.opt\"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- ">> crossover 0\n"
+ ">> method 1\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "Finished reading from \"/tmp/tmpqreijagx/cuopt.opt\"\n"
+ ">> crossover 0\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "Setting parameter method to 1\n"
+ "Finished reading from \"/tmp/tmp3mg4pv73/cuopt.opt\"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "Setting parameter crossover to false\n"
+ "Setting parameter method to 1\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "Setting parameter log_file to /tmp/tmpqreijagx/tmpxscxla_u/cuopt.dat\n"
+ "Setting parameter crossover to false\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "cuOpt version: 26.2.0, git hash: f73da24d, host arch: x86_64, device archs: 75-real,80-real,86-real,90a-real,100f-real,120a-real,120\n"
+ "Setting parameter log_file to /tmp/tmp3mg4pv73/tmpvuivjwas/cuopt.dat\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "CPU: 13th Gen Intel(R) Core(TM) i7-13700H, threads (physical/logical): 10/20, RAM: 6.92 GiB\n"
+ "cuOpt version: 26.8.0, git hash: 400863c1, host arch: x86_64, device archs: 75-real,80-real,86-real,90a-real,100f-real,120a-real,120\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "CUDA 13.1, device: NVIDIA RTX A1000 6GB Laptop GPU (ID 0), VRAM: 6.00 GiB\n"
+ "CPU: 13th Gen Intel(R) Core(TM) i7-13700H, threads (physical/logical): 10/20, RAM (available/total): 19.96 / 23.47 GiB\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "CUDA device UUID: 542affffffe55e-08ffffffe0-0257-fffff\n"
+ "CUDA 13.3, device: NVIDIA RTX A1000 6GB Laptop GPU (ID 0), VRAM: 6.00 GiB\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "\n"
+ "CUDA device UUID: 542ae55e-08e0-0257-e3e5-6ac1f557fd25\n"
]
},
{
@@ -1918,7 +1921,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "PSLP presolve time: 0.07s\n"
+ "PSLP presolve time: 0.04s\n"
]
},
{
@@ -1939,14 +1942,14 @@
"name": "stdout",
"output_type": "stream",
"text": [
- " 0 +0.00000000e+00 +0.00000000e+00 0.00e+00 5.21e+02 4.39e-01 0.133s\n"
+ " 0 +0.00000000e+00 +0.00000000e+00 0.00e+00 5.21e+02 4.39e-01 0.086s\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- " 420 +1.53697337e+02 +1.53675357e+02 2.20e-02 0.00e+00 9.60e-06 0.181s\n"
+ " 420 +1.53697337e+02 +1.53675357e+02 2.20e-02 0.00e+00 9.60e-06 0.129s\n"
]
},
{
@@ -2002,7 +2005,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "Status: Optimal Objective: 1.53697337e+02 Iterations: 420 Time: 0.183s\n"
+ "Status: Optimal Objective: 1.53697337e+02 Iterations: 420 Time: 0.136s\n"
]
},
{
@@ -2016,28 +2019,35 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "--- Executing after solve: elapsed 0:00:00.589\n"
+ "--- Executing after solve: elapsed 0:00:00.421\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "--- _wzUGve_OSG2F5FU6ucswQw.gms(143) 4 Mb\n"
+ "--- _7DXlVK8tSTGbk7_j2mSXkw.gms(204) 4 Mb\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "--- _wzUGve_OSG2F5FU6ucswQw.gms(201) 4 Mb\n"
+ "--- _7DXlVK8tSTGbk7_j2mSXkw.gms(234) 4 Mb\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
- "--- GDX File /tmp/tmpqreijagx/_wzUGve_OSG2F5FU6ucswQwout.gdx\n"
+ "--- GDX File (execute_unload) /tmp/tmp3mg4pv73/_SdeKENNdRNubAfw7AL_iKQ.gdx\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "--- GDX File /tmp/tmp3mg4pv73/_7DXlVK8tSTGbk7_j2mSXkwout.gdx\n"
]
},
{
@@ -2051,7 +2061,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "--- Job _wzUGve_OSG2F5FU6ucswQw.gms Stop 02/17/26 13:38:39 elapsed 0:00:00.589\n"
+ "--- Job _7DXlVK8tSTGbk7_j2mSXkw.gms Stop 10/06/26 11:59:08 elapsed 0:00:00.422\n"
]
},
{
@@ -2088,25 +2098,25 @@
"
\n",
" \n",
" | 0 | \n",
- " Normal | \n",
+ " NormalCompletion | \n",
" OptimalGlobal | \n",
" 153.697337 | \n",
- " 6 | \n",
- " 7 | \n",
+ " 6.0 | \n",
+ " 7.0 | \n",
" LP | \n",
" CUOPT | \n",
- " 0.183 | \n",
+ " 0.421 | \n",
"
\n",
" \n",
"\n",
""
],
"text/plain": [
- " Solver Status Model Status Objective Num of Equations \\\n",
- "0 Normal OptimalGlobal 153.697337 6 \n",
+ " Solver Status Model Status Objective Num of Equations \\\n",
+ "0 NormalCompletion OptimalGlobal 153.697337 6.0 \n",
"\n",
" Num of Variables Model Type Solver Solver Time \n",
- "0 7 LP CUOPT 0.183 "
+ "0 7.0 LP CUOPT 0.421 "
]
},
"execution_count": 26,
@@ -2136,10 +2146,10 @@
"execution_count": 27,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:38:39.844581Z",
- "iopub.status.busy": "2026-02-17T12:38:39.844443Z",
- "iopub.status.idle": "2026-02-17T12:38:39.852194Z",
- "shell.execute_reply": "2026-02-17T12:38:39.851382Z"
+ "iopub.execute_input": "2026-10-06T09:59:08.678946Z",
+ "iopub.status.busy": "2026-10-06T09:59:08.678811Z",
+ "iopub.status.idle": "2026-10-06T09:59:08.687002Z",
+ "shell.execute_reply": "2026-10-06T09:59:08.686209Z"
}
},
"outputs": [
@@ -2186,7 +2196,7 @@
" seattle | \n",
" new-york | \n",
" 49.736445 | \n",
- " 0.0 | \n",
+ " -6.113223e-07 | \n",
" 0.0 | \n",
" inf | \n",
" 1.0 | \n",
@@ -2194,7 +2204,7 @@
" \n",
" | chicago | \n",
" 300.095559 | \n",
- " 0.0 | \n",
+ " -3.299668e-07 | \n",
" 0.0 | \n",
" inf | \n",
" 1.0 | \n",
@@ -2202,7 +2212,7 @@
"
\n",
" | topeka | \n",
" 0.000000 | \n",
- " 0.0 | \n",
+ " 3.599978e-02 | \n",
" 0.0 | \n",
" inf | \n",
" 1.0 | \n",
@@ -2211,7 +2221,7 @@
" san-diego | \n",
" new-york | \n",
" 275.296520 | \n",
- " 0.0 | \n",
+ " -6.113223e-07 | \n",
" 0.0 | \n",
" inf | \n",
" 1.0 | \n",
@@ -2219,7 +2229,7 @@
"
\n",
" | chicago | \n",
" 0.000000 | \n",
- " 0.0 | \n",
+ " 8.999670e-03 | \n",
" 0.0 | \n",
" inf | \n",
" 1.0 | \n",
@@ -2227,7 +2237,7 @@
"
\n",
" | topeka | \n",
" 275.002378 | \n",
- " 0.0 | \n",
+ " -2.164316e-07 | \n",
" 0.0 | \n",
" inf | \n",
" 1.0 | \n",
@@ -2237,14 +2247,14 @@
""
],
"text/plain": [
- " level marginal lower upper scale\n",
- "i j \n",
- "seattle new-york 49.736445 0.0 0.0 inf 1.0\n",
- " chicago 300.095559 0.0 0.0 inf 1.0\n",
- " topeka 0.000000 0.0 0.0 inf 1.0\n",
- "san-diego new-york 275.296520 0.0 0.0 inf 1.0\n",
- " chicago 0.000000 0.0 0.0 inf 1.0\n",
- " topeka 275.002378 0.0 0.0 inf 1.0"
+ " level marginal lower upper scale\n",
+ "i j \n",
+ "seattle new-york 49.736445 -6.113223e-07 0.0 inf 1.0\n",
+ " chicago 300.095559 -3.299668e-07 0.0 inf 1.0\n",
+ " topeka 0.000000 3.599978e-02 0.0 inf 1.0\n",
+ "san-diego new-york 275.296520 -6.113223e-07 0.0 inf 1.0\n",
+ " chicago 0.000000 8.999670e-03 0.0 inf 1.0\n",
+ " topeka 275.002378 -2.164316e-07 0.0 inf 1.0"
]
},
"execution_count": 27,
@@ -2276,17 +2286,17 @@
"execution_count": 28,
"metadata": {
"execution": {
- "iopub.execute_input": "2026-02-17T12:38:39.853551Z",
- "iopub.status.busy": "2026-02-17T12:38:39.853428Z",
- "iopub.status.idle": "2026-02-17T12:38:39.856361Z",
- "shell.execute_reply": "2026-02-17T12:38:39.855732Z"
+ "iopub.execute_input": "2026-10-06T09:59:08.689364Z",
+ "iopub.status.busy": "2026-10-06T09:59:08.689225Z",
+ "iopub.status.idle": "2026-10-06T09:59:08.693112Z",
+ "shell.execute_reply": "2026-10-06T09:59:08.692382Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
- "153.6973372476197"
+ "153.69733724761986"
]
},
"execution_count": 28,
@@ -2324,7 +2334,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.12.3"
+ "version": "3.14.4"
}
},
"nbformat": 4,
diff --git a/fetch-cuoptlink.py b/fetch-cuoptlink.py
index 93f2c80..f3af2d3 100644
--- a/fetch-cuoptlink.py
+++ b/fetch-cuoptlink.py
@@ -32,6 +32,17 @@
SOLVER_CONFIG_SECTION = "solverConfig"
MARKER_BEGIN = f"# begin {SOLVER_NAME} solver configuration of cuoptlink"
MARKER_END = f"# end {SOLVER_NAME} solver configuration of cuoptlink"
+# Embedded instead of fetched via gamslib, which GAMSPy's gamspy_base does not ship
+TEST_MODEL = """Positive Variable x, y;
+Variable z;
+Equation e1, e2, obj;
+e1.. x + 2*y =g= 2;
+e2.. 3*x + y =g= 3;
+obj.. z =e= x + y;
+Model m /all/;
+solve m using lp minimizing z;
+abort$(m.modelStat <> %modelStat.optimal%) 'cuOpt did not solve the test model to optimality', m.modelStat;
+"""
def _get_manifest_path(gams_dir: str) -> str:
@@ -710,22 +721,17 @@ def _remove_cuopt_from_config(gams_dir: str) -> None:
def _test_installation(gams_dir: str) -> None:
- print("Testing installation with GAMS trnsport model...")
- gamslib_bin = os.path.join(gams_dir, "gamslib")
+ print("Testing installation with a small LP model...")
gams_bin = os.path.join(gams_dir, "gams")
with tempfile.TemporaryDirectory() as temp_dir:
try:
- # Fetch model 1 (trnsport) using gamslib
- subprocess.run(
- [gamslib_bin, "-q", "1"],
- cwd=temp_dir,
- check=True,
- )
+ with open(os.path.join(temp_dir, "cuopttest.gms"), "w", encoding="utf-8") as file:
+ file.write(TEST_MODEL)
# Execute gams with cuopt solver
subprocess.run(
- [gams_bin, "trnsport", "solver=cuopt", "lo=0"],
+ [gams_bin, "cuopttest", "solver=cuopt", "lo=0"],
cwd=temp_dir,
check=True,
)