Skip to content
Closed

Hi pdlp #2731

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
133 commits
Select commit Hold shift + click to select a range
35de7a5
Added hipo, ipx and pdlp to options for solver in HighsRuntimeOptions.h
jajhall Aug 25, 2025
49c9598
Added highs/pdlp/hipdlp and linalg.cc
jajhall Aug 26, 2025
f59b0df
Added linalg.hpp and now HiGHS builds!
jajhall Aug 27, 2025
539e148
Need to merge HiPO branch into this
jajhall Aug 27, 2025
c032f3c
Merge branch 'hpm-mip-ok-l' of https://github.com/ERGO-Code/HiGHS int…
jajhall Aug 27, 2025
2aff705
Merged hpm-mip-ok-l into this branch
jajhall Aug 27, 2025
1631cde
Added HiPdlpWrapper.h/cpp and unit test to run HiPDLP
jajhall Aug 27, 2025
9831690
Now included all necessary HiPDLP code, and commented out matrix prep…
jajhall Aug 27, 2025
971ddf5
HiPDLP now solves avgas
jajhall Aug 27, 2025
d6ed4c1
Added (and rationalised) PDLP options, and using them to set up Prima…
jajhall Aug 27, 2025
5b75a0a
Now returning solution and PDLP iteration count to HiGHS, but lack of…
jajhall Aug 27, 2025
2875ef5
Added Meld script
jajhall Aug 27, 2025
1b836fa
Bug fixes in HighsSparseMatrix::scaleCols and HighsSparseMatrix::scal…
jajhall Aug 27, 2025
0140a4c
Got Power method right, but no options not correct
jajhall Aug 27, 2025
9e341c1
Very sensitive to power method result; logging of HiPDLP primal and d…
jajhall Aug 27, 2025
02102aa
Updated kYanyuPowerMethodDev to back-calculate RQ
jajhall Aug 28, 2025
22848e6
Now using cuPDLP-C power method, and KKT tolerance of 1e-6 in unit te…
Yanyu000 Aug 29, 2025
f2a782e
Replace auto with std::tie, no C++11 warning, added InitializeStepSiz…
Yanyu000 Sep 6, 2025
13f8444
formatted
Yanyu000 Sep 8, 2025
955396f
Moved enum ConstraintType to HConst.h from hipdlp/pdhg.hpp and remove…
jajhall Sep 8, 2025
a2e9266
wip
Yanyu000 Sep 8, 2025
14e0ef2
Merge branch 'fix-2526' into hi-pdlp
Yanyu000 Sep 8, 2025
132feb4
Added pdlpLog to cupdlp_utils.c and calling it from both cupdlp_solve…
jajhall Sep 9, 2025
cc74307
bazel pdlp sources
galabovaa Sep 9, 2025
753727f
add headers. todo: move to srcs all private headers
galabovaa Sep 9, 2025
915f04e
wip
Yanyu000 Sep 9, 2025
ab1f094
Added pdlp_log_file to CUPDLP_WORK and passing it around HiPDLP
jajhall Sep 9, 2025
f5b1a8b
Now trying to log beta
jajhall Sep 9, 2025
055fbb9
Merge pull request #2529 from ERGO-Code/hi-pdlp-bazel
jajhall Sep 9, 2025
187b74d
refactor solve
Yanyu000 Sep 10, 2025
614d82a
refactor scaling&preprocess
Yanyu000 Sep 10, 2025
8ebae0b
Now using standard HiGHS file heading
jajhall Sep 10, 2025
649a36c
Tidied up header file directives
jajhall Sep 10, 2025
da03867
wip
Yanyu000 Sep 10, 2025
27a5b63
wip
Yanyu000 Sep 10, 2025
19c16e7
call passParams and passLP
Yanyu000 Sep 11, 2025
da5fc73
Added file header to defs.hpp, and added defs.hpp to sources.cmake an…
jajhall Sep 11, 2025
02c6dfa
Wrapper now no longer uses Scaling, rather PDLPSolver::scaleProblem a…
jajhall Sep 11, 2025
b3c63e2
Move logger entirely within PDLPSolver
jajhall Sep 11, 2025
b5b2785
Move logger entirely within PDLPSolver
jajhall Sep 11, 2025
9be453c
Logger retained, but now using HiGHS IO
jajhall Sep 11, 2025
aa5fe7d
Create PdlpStep class
jajhall Sep 11, 2025
211dd33
Now to expunge last of std::cout
jajhall Sep 11, 2025
8f2df6d
mip
Yanyu000 Sep 11, 2025
3489218
WIP
jajhall Sep 11, 2025
049575b
Merge branch 'hi-pdlp' of https://github.com/ERGO-Code/HiGHS into hi-…
jajhall Sep 11, 2025
cf4c1e4
Merge branch 'hi-pdlp-jh' into hi-pdlp
jajhall Sep 11, 2025
d751d4e
Now clean up hacked in pdlp_log_file
jajhall Sep 11, 2025
7862f74
Removed std::cout and hacked in passing of pdlp_log_file_
jajhall Sep 11, 2025
afb9760
fix bool_checking logic
Yanyu000 Sep 11, 2025
ed3c91a
Renamed and methods names to debug_pdlp_log_file_ to stress its natur…
jajhall Sep 11, 2025
ab2406c
Merge branch 'hi-pdlp' of https://github.com/ERGO-Code/HiGHS into hi-…
jajhall Sep 11, 2025
46e8d7e
fix check convergence
Yanyu000 Sep 11, 2025
dba442a
Now casting HighsInt to int in HiPDLP logging
jajhall Sep 11, 2025
49388d0
Merge branch 'hi-pdlp' of https://github.com/ERGO-Code/HiGHS into hi-…
jajhall Sep 11, 2025
26929b3
Rationalised the use of h and highs as Highs instances in TestPdlp.cpp
jajhall Sep 11, 2025
dd07e17
wip
Yanyu000 Sep 14, 2025
f0d52dd
Merged latest into this branch and resolved minor conflict
jajhall Sep 16, 2025
b6eeeae
No longer calling analysePdlpSolution
jajhall Sep 16, 2025
8ba52a3
wip
Yanyu000 Sep 16, 2025
df32477
Merge branch 'hi-pdlp-jh' into hi-pdlp
Yanyu000 Sep 16, 2025
a1677fc
wip
Yanyu000 Sep 17, 2025
16fe9ac
wip
Yanyu000 Sep 17, 2025
a3eb935
wip
Yanyu000 Sep 17, 2025
36884ec
wip
Yanyu000 Sep 18, 2025
813201b
semi fix restart
Yanyu000 Sep 18, 2025
9f52ace
wip
Yanyu000 Sep 19, 2025
01fe286
back to correct without scaling
Yanyu000 Sep 19, 2025
ceec5a4
Refactored debugPdlp logging
jajhall Sep 19, 2025
64f1a96
Merge branch 'latest' into hi-pdlp
jajhall Sep 19, 2025
00476e2
Now logging after calls to CheckConvergence
jajhall Sep 19, 2025
5858e39
fix ComputePrimalFeasibility
Yanyu000 Sep 20, 2025
991ae27
fix ComputePrimalFeasibility and ComputeDualFeasibility
Yanyu000 Sep 20, 2025
86e9eee
wip
Yanyu000 Sep 24, 2025
44cf86a
merge step into pdhg, fix primal feas and reorder processed matrix
Yanyu000 Sep 24, 2025
56141de
fix beta calcul
Yanyu000 Sep 25, 2025
05a8d95
fix step size update in PDHG_Compute_Step_Size_Ratio
Yanyu000 Sep 26, 2025
e9792ab
wip
Yanyu000 Sep 26, 2025
f059855
wip
Yanyu000 Sep 29, 2025
8b7e739
update linalg
Yanyu000 Sep 30, 2025
8aa3cd9
rm step
Yanyu000 Sep 30, 2025
5e74cbf
wip
Yanyu000 Oct 2, 2025
ddecb9d
fix restart
Yanyu000 Oct 6, 2025
799788b
fix initialize step size for adaptive step size
Yanyu000 Oct 8, 2025
4c0b571
fix initialize step size for adaptive step size
Yanyu000 Oct 9, 2025
0008c67
fix scaling method print
Yanyu000 Oct 9, 2025
348e2c0
add projection before
Yanyu000 Oct 15, 2025
b038d5b
fix offset in obj
Yanyu000 Oct 16, 2025
e44adae
fix restart with bound
Yanyu000 Oct 17, 2025
d1335fb
fix reorder final y and print constraint matrix types and var type
Yanyu000 Oct 18, 2025
7d417ff
Removed references to hipdlp/step.* from build files
jajhall Oct 20, 2025
49f3a6d
mip
Yanyu000 Oct 21, 2025
2045798
Merge branch 'hi-pdlp' into hi-pdlp-jh
jajhall Oct 21, 2025
43964d1
default pdlp_restart_strategy is kPdlpRestartStrategyAdaptive; defaul…
jajhall Oct 21, 2025
9ba4534
Added HiPdlpTimer.h
jajhall Oct 21, 2025
ef38ea5
mip
Yanyu000 Oct 21, 2025
c007739
Really added HiPdlpTimer.h
jajhall Oct 21, 2025
b9acb3a
mip
Yanyu000 Oct 21, 2025
e094095
Merge branch 'hi-pdlp-jh' into hi-pdlp
Yanyu000 Oct 21, 2025
35a2fc2
Added more clocks
jajhall Oct 21, 2025
f89f683
Added TerminationStatus to PDLPSolver::solveReturn
jajhall Oct 21, 2025
034a87b
Removed DetailedTimings and suppressed debug logging in HiPDLP
jajhall Oct 21, 2025
7d266d8
Now silencing PDLP debug logging with PDLP_DEBUG_LOG
jajhall Oct 22, 2025
715f4e7
Ensured that pdhg->debug_pdlp_log_file_ is NULL in cuPDLP-C
jajhall Oct 22, 2025
da5acba
Added path from highs for HConst.h in pdhg.cc so bazel and meson buil…
jajhall Oct 22, 2025
6961aef
Merged latest into this branch and resolved minor conlicts
jajhall Oct 22, 2025
3dbe848
mip
Yanyu000 Oct 22, 2025
d80bbbe
vectorize projection
Yanyu000 Oct 22, 2025
803d2ea
fix highs.solution
Yanyu000 Oct 24, 2025
0178a61
mip
Yanyu000 Oct 24, 2025
d372bdf
revert
Yanyu000 Oct 24, 2025
60ad3c9
Revert "vectorize projection"
Yanyu000 Oct 24, 2025
89adafb
Revert "Merged latest into this branch and resolved minor conlicts"
Yanyu000 Oct 24, 2025
453cc05
revert to same result
Yanyu000 Oct 24, 2025
cb5e09a
add dSlackPosAvg
Yanyu000 Oct 27, 2025
660dcae
Added cuda-sandbox
jajhall Oct 28, 2025
499ee10
mip
Yanyu000 Oct 28, 2025
071749d
Merge remote-tracking branch 'refs/remotes/origin/hi-pdlp' into hi-pdlp
Yanyu000 Oct 28, 2025
874b652
setup GPU and linalgGpuAx, linalgGpuATy
Yanyu000 Nov 12, 2025
cf5b809
fix setupGPU
Yanyu000 Nov 13, 2025
82a11ff
add launchKernelUpdateX
Yanyu000 Nov 18, 2025
6f235e5
wip
Yanyu000 Nov 19, 2025
f3a510b
vanilla PDHG GPU checked
Yanyu000 Nov 19, 2025
811dd60
add checkConvergence_gpu to be verified
Yanyu000 Nov 21, 2025
8305291
checkConvergence_gpu passes for a few cases
Yanyu000 Nov 25, 2025
5676802
restart partially on GPU
Yanyu000 Nov 26, 2025
3bce550
wip go back to check CPU
Yanyu000 Nov 27, 2025
b12018c
seperate CPU&GPU
Yanyu000 Nov 30, 2025
21fa43f
computeMovementGpu and computeNonlinearityGpu
Yanyu000 Dec 2, 2025
ed9ebf7
use cublas
Yanyu000 Dec 7, 2025
2270209
tidy up
Yanyu000 Dec 8, 2025
e7227d7
use fma
Yanyu000 Dec 8, 2025
14ae18c
Added GPU name and memory logging to PDLPSolver::setup; formatted
jajhall Jan 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions .bazelrc
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
build --enable_platform_specific_config

build:windows --enable_runfiles

build:asan --strip=never
build:asan --copt -fsanitize=address
build:asan --copt -O1
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/build-intel.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
name: build-intel

on: [push, pull_request]
# on: []

jobs:
build:
Expand Down
17 changes: 10 additions & 7 deletions .github/workflows/build-nuget-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,12 @@ concurrency:
cancel-in-progress: true

jobs:
# Build macos intel
build_macos_intel:
runs-on: macos-15-intel
# macos 13 is Intel
build_macos_13:
runs-on: macos-13
# strategy:
# matrix:
# python: [3.11]
steps:
- uses: actions/checkout@v4
- name: Build HiGHS
Expand All @@ -29,9 +32,9 @@ jobs:
name: macos-x64
path: ${{runner.workspace}}/build/dotnet/Highs.Native/runtimes

# Build macos arm64
build_macos_arm:
runs-on: macos-14 # macos-14 is arm64
# macos 14 is M1
build_macos_14:
runs-on: macos-14
steps:
- uses: actions/checkout@v4
- name: Build HiGHS
Expand Down Expand Up @@ -123,7 +126,7 @@ jobs:

build_windows:
runs-on: windows-latest
needs: [build_macos_intel, build_macos_arm, build_windows_32, build_linux, build_linux_arm64]
needs: [build_macos_13, build_macos_14, build_windows_32, build_linux, build_linux_arm64]
steps:
- uses: actions/checkout@v4
- name: Build HiGHS Windows native
Expand Down
10 changes: 6 additions & 4 deletions .github/workflows/build-python-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -132,8 +132,9 @@ jobs:
python3 -m pip install pytest
python3 -m pytest $GITHUB_WORKSPACE

build_wheel_macos_intel:
runs-on: macos-15-intel
# macos 13 is Intel
build_wheel_macos_13:
runs-on: macos-13
strategy:
matrix:
python: [3.11]
Expand Down Expand Up @@ -162,8 +163,9 @@ jobs:
python3 -m pip install pytest
python3 -m pytest $GITHUB_WORKSPACE

build_wheel_macos_arm:
runs-on: macos-14 # macos-14 is arm64
# macos 14 is M1
build_wheel_macos_14:
runs-on: macos-14
strategy:
matrix:
python: [3.11]
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-wheels-push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ jobs:
- [ubuntu-24.04, musllinux_x86_64] # No OpenBlas, no test
- [ubuntu-24.04, musllinux_i686]
- [ubuntu-24.04-arm, musllinux_aarch64]
- [macos-15-intel, macosx_x86_64]
- [macos-13, macosx_x86_64]
- [macos-14, macosx_arm64]
- [windows-2022, win_amd64]
- [windows-2022, win32]
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ jobs:
- [ubuntu-24.04, musllinux_x86_64] # No OpenBlas, no test
- [ubuntu-24.04, musllinux_i686]
- [ubuntu-24.04-arm, musllinux_aarch64]
- [macos-15-intel, macosx_x86_64]
- [macos-13, macosx_x86_64]
- [macos-14, macosx_arm64]
- [windows-2022, win_amd64]
- [windows-2022, win32]
Expand Down
126 changes: 62 additions & 64 deletions .github/workflows/build-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -180,35 +180,35 @@ jobs:
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
run: ctest --output-on-failure -C Debug

# windows_debug_fb_off:
# runs-on: windows-latest

# steps:
# - uses: actions/checkout@v4

# - name: Create Build Environment
# # Some projects don't allow in-source building, so create a separate build directory
# # We'll use this as our working directory for all subsequent commands
# run: cmake -E make_directory ${{runner.workspace}}/build

# - name: Configure CMake All
# shell: bash
# working-directory: ${{runner.workspace}}/build
# run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=Debug -DFAST_BUILD=OFF

# - name: Build All
# working-directory: ${{runner.workspace}}/build
# shell: bash
# # Execute the build. You can specify a specific target with "--target <NAME>"
# run: |
# cmake --build . --parallel --config Debug

# - name: Test All
# working-directory: ${{runner.workspace}}/build
# shell: bash
# # Execute tests defined by the CMake configuration.
# # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
# run: ctest --parallel --timeout 300 --output-on-failure -C Debug
windows_debug_fb_off:
runs-on: windows-latest

steps:
- uses: actions/checkout@v4

- name: Create Build Environment
# Some projects don't allow in-source building, so create a separate build directory
# We'll use this as our working directory for all subsequent commands
run: cmake -E make_directory ${{runner.workspace}}/build

- name: Configure CMake All
shell: bash
working-directory: ${{runner.workspace}}/build
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=Debug -DFAST_BUILD=OFF

- name: Build All
working-directory: ${{runner.workspace}}/build
shell: bash
# Execute the build. You can specify a specific target with "--target <NAME>"
run: |
cmake --build . --parallel --config Debug

- name: Test All
working-directory: ${{runner.workspace}}/build
shell: bash
# Execute tests defined by the CMake configuration.
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
run: ctest --parallel --timeout 300 --output-on-failure -C Debug

windows_release64:
runs-on: windows-2022
Expand Down Expand Up @@ -381,38 +381,36 @@ jobs:
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
run: ctest --output-on-failure -C Debug

# Switch off, fortran compiler lookup taking hours on new windows runner.
# For fortran is best to use FAST_BUILD ON anyway.
# windows_debug64_fb_off:
# runs-on: windows-latest

# steps:
# - uses: actions/checkout@v4

# - name: Create Build Environment
# # Some projects don't allow in-source building, so create a separate build directory
# # We'll use this as our working directory for all subsequent commands
# run: cmake -E make_directory ${{runner.workspace}}/build

# - name: Configure CMake
# # Use a bash shell so we can use the same syntax for environment variable
# # access regardless of the host operating system
# shell: bash
# working-directory: ${{runner.workspace}}/build
# # Note the current convention is to use the -S and -B options here to specify source
# # and build directories, but this is only available with CMake 3.13 and higher.
# # The CMake binaries on the Github Actions machines are (as of this writing) 3.12
# run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=Debug -DFAST_BUILD=OFF -DHIGHSINT64=on -DHIGHS_NO_DEFAULT_THREADS=ON

# - name: Build
# working-directory: ${{runner.workspace}}/build
# shell: bash
# # Execute the build. You can specify a specific target with "--target <NAME>"
# run: cmake --build . --config Debug --parallel

# - name: Test
# working-directory: ${{runner.workspace}}/build
# shell: bash
# # Execute tests defined by the CMake configuration.
# # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
# run: ctest --output-on-failure -C Debug
windows_debug64_fb_off:
runs-on: windows-latest

steps:
- uses: actions/checkout@v4

- name: Create Build Environment
# Some projects don't allow in-source building, so create a separate build directory
# We'll use this as our working directory for all subsequent commands
run: cmake -E make_directory ${{runner.workspace}}/build

- name: Configure CMake
# Use a bash shell so we can use the same syntax for environment variable
# access regardless of the host operating system
shell: bash
working-directory: ${{runner.workspace}}/build
# Note the current convention is to use the -S and -B options here to specify source
# and build directories, but this is only available with CMake 3.13 and higher.
# The CMake binaries on the Github Actions machines are (as of this writing) 3.12
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=Debug -DFAST_BUILD=OFF -DHIGHSINT64=on -DHIGHS_NO_DEFAULT_THREADS=ON

- name: Build
working-directory: ${{runner.workspace}}/build
shell: bash
# Execute the build. You can specify a specific target with "--target <NAME>"
run: cmake --build . --config Debug --parallel

- name: Test
working-directory: ${{runner.workspace}}/build
shell: bash
# Execute tests defined by the CMake configuration.
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
run: ctest --output-on-failure -C Debug
Loading
Loading