COPT-Public / cuPDLP-C

Code for solving LP on GPU using first-order methods
MIT License
143 stars 32 forks source link

Segfault when run on example (HiGHS 1.7.0, CUDA 12.4) #21

Open fuglede opened 5 months ago

fuglede commented 5 months ago

I can run HiGHS on example/afiro.mps after building from source. I can build plc without errors, but trying to run it on the example file will produce a segmentation fault.

$ highs example/afiro.mps 
[...]
Objective value     : -4.6475314286e+02
HiGHS run time      :          0.00
$ build/bin/plc -v -fname example/afiro.mps 
--------------------------------------------------
reading file...
    example/afiro.mps
--------------------------------------------------
Running HiGHS 1.7.0 (git hash: 13363c9f1): Copyright (c) 2024 HiGHS under MIT licence terms
Minimize
No obj offset
Segmentation fault

If I build with -DBUILD_CUDA=ON, with either of the two proposed cmake configurations, the -h option also gives some errors that suggest that something is off:

$ build/bin/plc -h

free(): invalid pointer
Aborted

If I set -DBUILD_CODA=OFF, the error from -h goes away, but I still get the segfault on the example file.

Build output: I can run HiGHS on example/afiro.mps after building from source. I can build plc without errors, but trying to run it on the example file will produce a segmentation fault.

$ highs example/afiro.mps 
[...]
Objective value     : -4.6475314286e+02
HiGHS run time      :          0.00
$ build/bin/plc -v -fname example/afiro.mps 
--------------------------------------------------
reading file...
    example/afiro.mps
--------------------------------------------------
Running HiGHS 1.7.0 (git hash: 13363c9f1): Copyright (c) 2024 HiGHS under MIT licence terms
Minimize
No obj offset
Segmentation fault

If I build with -DBUILD_CUDA=ON, with either of the two proposed cmake configurations, the -h option also gives some errors that suggest that something is off:

$ build/bin/plc -h

free(): invalid pointer
Aborted

If I set -DBUILD_CODA=OFF, the error from -h goes away, but I still get the segfault on the example file.

Build output:

~/repos/cuPDLP-C/build$ cmake -DCMAKE_BUILD_TYPE=Debug -DBUILD_CUDA=OFF ..
-- The C compiler identification is GNU 13.2.0
-- The CXX compiler identification is GNU 13.2.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-----------------------      cuPDLP-C      ------------------------
reset release flags: -O2 -DNDEBUG
--------------------- cuPDLP CPU/GPU CONFIG -----------------------
-- Sets build with CUDA OFF
- CPU version PDLP
- CPU version PDLP
--------------------- cuPDLP  HiGHS  CONFIG -----------------------
Finding HiGHS environment
    - HiGHS Home detected at /usr/local
    - HiGHS Libraries detected at /usr/local/lib/libhighs.so
    - HiGHS include dir at /usr/local/include/highs
- CPU version PDLP
-- Sets build applications OFF
-- Sets build PYTHON OFF
-- Configuring done (0.2s)
-- Generating done (0.0s)
-- Build files have been written to: /home/user/repos/cuPDLP-C/build
~/repos/cuPDLP-C/build$ cmake --build . --verbose
Change Dir: '/home/user/repos/cuPDLP-C/build'

Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile
/usr/bin/cmake -S/home/user/repos/cuPDLP-C -B/home/user/repos/cuPDLP-C/build --check-build-system CMakeFiles/Makefile.cmake 0
/usr/bin/cmake -E cmake_progress_start /home/user/repos/cuPDLP-C/build/CMakeFiles /home/user/repos/cuPDLP-C/build//CMakeFiles/progress.marks
/usr/bin/gmake  -f CMakeFiles/Makefile2 all
gmake[1]: Entering directory '/home/user/repos/cuPDLP-C/build'
/usr/bin/gmake  -f cupdlp/CMakeFiles/cupdlp.dir/build.make cupdlp/CMakeFiles/cupdlp.dir/depend
gmake[2]: Entering directory '/home/user/repos/cuPDLP-C/build'
cd /home/user/repos/cuPDLP-C/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/user/repos/cuPDLP-C /home/user/repos/cuPDLP-C/cupdlp /home/user/repos/cuPDLP-C/build /home/user/repos/cuPDLP-C/build/cupdlp /home/user/repos/cuPDLP-C/build/cupdlp/CMakeFiles/cupdlp.dir/DependInfo.cmake "--color="
gmake[2]: Leaving directory '/home/user/repos/cuPDLP-C/build'
/usr/bin/gmake  -f cupdlp/CMakeFiles/cupdlp.dir/build.make cupdlp/CMakeFiles/cupdlp.dir/build
gmake[2]: Entering directory '/home/user/repos/cuPDLP-C/build'
[  5%] Building C object cupdlp/CMakeFiles/cupdlp.dir/cupdlp_cs.c.o
cd /home/user/repos/cuPDLP-C/build/cupdlp && /usr/bin/cc -DCUPDLP_CPU -DCUPDLP_DEBUG -Dcupdlp_EXPORTS  -g -std=gnu99 -fPIC -MD -MT cupdlp/CMakeFiles/cupdlp.dir/cupdlp_cs.c.o -MF CMakeFiles/cupdlp.dir/cupdlp_cs.c.o.d -o CMakeFiles/cupdlp.dir/cupdlp_cs.c.o -c /home/user/repos/cuPDLP-C/cupdlp/cupdlp_cs.c
[ 11%] Building C object cupdlp/CMakeFiles/cupdlp.dir/cupdlp_linalg.c.o
cd /home/user/repos/cuPDLP-C/build/cupdlp && /usr/bin/cc -DCUPDLP_CPU -DCUPDLP_DEBUG -Dcupdlp_EXPORTS  -g -std=gnu99 -fPIC -MD -MT cupdlp/CMakeFiles/cupdlp.dir/cupdlp_linalg.c.o -MF CMakeFiles/cupdlp.dir/cupdlp_linalg.c.o.d -o CMakeFiles/cupdlp.dir/cupdlp_linalg.c.o -c /home/user/repos/cuPDLP-C/cupdlp/cupdlp_linalg.c
/home/user/repos/cuPDLP-C/cupdlp/cupdlp_linalg.c: In function ‘cupdlp_dot’:
/home/user/repos/cuPDLP-C/cupdlp/cupdlp_linalg.c:555:17: warning: passing argument 2 of ‘dot’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
  555 |   *res = dot(n, x, 1, y, 1);
      |                 ^
/home/user/repos/cuPDLP-C/cupdlp/cupdlp_linalg.c:293:40: note: expected ‘cupdlp_float *’ {aka ‘double *’} but argument is of type ‘const cupdlp_float *’ {aka ‘const double *’}
  293 | double dot(cupdlp_int n, cupdlp_float *x, cupdlp_int incx, cupdlp_float *y,
      |                          ~~~~~~~~~~~~~~^
/home/user/repos/cuPDLP-C/cupdlp/cupdlp_linalg.c:555:23: warning: passing argument 4 of ‘dot’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
  555 |   *res = dot(n, x, 1, y, 1);
      |                       ^
/home/user/repos/cuPDLP-C/cupdlp/cupdlp_linalg.c:293:74: note: expected ‘cupdlp_float *’ {aka ‘double *’} but argument is of type ‘const cupdlp_float *’ {aka ‘const double *’}
  293 | double dot(cupdlp_int n, cupdlp_float *x, cupdlp_int incx, cupdlp_float *y,
      |                                                            ~~~~~~~~~~~~~~^
[ 17%] Building C object cupdlp/CMakeFiles/cupdlp.dir/cupdlp_mps.c.o
cd /home/user/repos/cuPDLP-C/build/cupdlp && /usr/bin/cc -DCUPDLP_CPU -DCUPDLP_DEBUG -Dcupdlp_EXPORTS  -g -std=gnu99 -fPIC -MD -MT cupdlp/CMakeFiles/cupdlp.dir/cupdlp_mps.c.o -MF CMakeFiles/cupdlp.dir/cupdlp_mps.c.o.d -o CMakeFiles/cupdlp.dir/cupdlp_mps.c.o -c /home/user/repos/cuPDLP-C/cupdlp/cupdlp_mps.c
[ 23%] Building C object cupdlp/CMakeFiles/cupdlp.dir/cupdlp_proj.c.o
cd /home/user/repos/cuPDLP-C/build/cupdlp && /usr/bin/cc -DCUPDLP_CPU -DCUPDLP_DEBUG -Dcupdlp_EXPORTS  -g -std=gnu99 -fPIC -MD -MT cupdlp/CMakeFiles/cupdlp.dir/cupdlp_proj.c.o -MF CMakeFiles/cupdlp.dir/cupdlp_proj.c.o.d -o CMakeFiles/cupdlp.dir/cupdlp_proj.c.o -c /home/user/repos/cuPDLP-C/cupdlp/cupdlp_proj.c
[ 29%] Building C object cupdlp/CMakeFiles/cupdlp.dir/cupdlp_restart.c.o
cd /home/user/repos/cuPDLP-C/build/cupdlp && /usr/bin/cc -DCUPDLP_CPU -DCUPDLP_DEBUG -Dcupdlp_EXPORTS  -g -std=gnu99 -fPIC -MD -MT cupdlp/CMakeFiles/cupdlp.dir/cupdlp_restart.c.o -MF CMakeFiles/cupdlp.dir/cupdlp_restart.c.o.d -o CMakeFiles/cupdlp.dir/cupdlp_restart.c.o -c /home/user/repos/cuPDLP-C/cupdlp/cupdlp_restart.c
[ 35%] Building C object cupdlp/CMakeFiles/cupdlp.dir/cupdlp_scaling_cuda.c.o
cd /home/user/repos/cuPDLP-C/build/cupdlp && /usr/bin/cc -DCUPDLP_CPU -DCUPDLP_DEBUG -Dcupdlp_EXPORTS  -g -std=gnu99 -fPIC -MD -MT cupdlp/CMakeFiles/cupdlp.dir/cupdlp_scaling_cuda.c.o -MF CMakeFiles/cupdlp.dir/cupdlp_scaling_cuda.c.o.d -o CMakeFiles/cupdlp.dir/cupdlp_scaling_cuda.c.o -c /home/user/repos/cuPDLP-C/cupdlp/cupdlp_scaling_cuda.c
[ 41%] Building C object cupdlp/CMakeFiles/cupdlp.dir/cupdlp_solver.c.o
cd /home/user/repos/cuPDLP-C/build/cupdlp && /usr/bin/cc -DCUPDLP_CPU -DCUPDLP_DEBUG -Dcupdlp_EXPORTS  -g -std=gnu99 -fPIC -MD -MT cupdlp/CMakeFiles/cupdlp.dir/cupdlp_solver.c.o -MF CMakeFiles/cupdlp.dir/cupdlp_solver.c.o.d -o CMakeFiles/cupdlp.dir/cupdlp_solver.c.o -c /home/user/repos/cuPDLP-C/cupdlp/cupdlp_solver.c
[ 47%] Building C object cupdlp/CMakeFiles/cupdlp.dir/cupdlp_step.c.o
cd /home/user/repos/cuPDLP-C/build/cupdlp && /usr/bin/cc -DCUPDLP_CPU -DCUPDLP_DEBUG -Dcupdlp_EXPORTS  -g -std=gnu99 -fPIC -MD -MT cupdlp/CMakeFiles/cupdlp.dir/cupdlp_step.c.o -MF CMakeFiles/cupdlp.dir/cupdlp_step.c.o.d -o CMakeFiles/cupdlp.dir/cupdlp_step.c.o -c /home/user/repos/cuPDLP-C/cupdlp/cupdlp_step.c
[ 52%] Building C object cupdlp/CMakeFiles/cupdlp.dir/cupdlp_utils.c.o
cd /home/user/repos/cuPDLP-C/build/cupdlp && /usr/bin/cc -DCUPDLP_CPU -DCUPDLP_DEBUG -Dcupdlp_EXPORTS  -g -std=gnu99 -fPIC -MD -MT cupdlp/CMakeFiles/cupdlp.dir/cupdlp_utils.c.o -MF CMakeFiles/cupdlp.dir/cupdlp_utils.c.o.d -o CMakeFiles/cupdlp.dir/cupdlp_utils.c.o -c /home/user/repos/cuPDLP-C/cupdlp/cupdlp_utils.c
[ 58%] Linking C shared library ../lib/libcupdlp.so
cd /home/user/repos/cuPDLP-C/build/cupdlp && /usr/bin/cmake -E cmake_link_script CMakeFiles/cupdlp.dir/link.txt --verbose=1
/usr/bin/cc -fPIC -g -shared -Wl,-soname,libcupdlp.so -o ../lib/libcupdlp.so CMakeFiles/cupdlp.dir/cupdlp_cs.c.o CMakeFiles/cupdlp.dir/cupdlp_linalg.c.o CMakeFiles/cupdlp.dir/cupdlp_mps.c.o CMakeFiles/cupdlp.dir/cupdlp_proj.c.o CMakeFiles/cupdlp.dir/cupdlp_restart.c.o CMakeFiles/cupdlp.dir/cupdlp_scaling_cuda.c.o CMakeFiles/cupdlp.dir/cupdlp_solver.c.o CMakeFiles/cupdlp.dir/cupdlp_step.c.o CMakeFiles/cupdlp.dir/cupdlp_utils.c.o  -lm 
gmake[2]: Leaving directory '/home/user/repos/cuPDLP-C/build'
[ 58%] Built target cupdlp
/usr/bin/gmake  -f interface/CMakeFiles/wrapper_lp.dir/build.make interface/CMakeFiles/wrapper_lp.dir/depend
gmake[2]: Entering directory '/home/user/repos/cuPDLP-C/build'
cd /home/user/repos/cuPDLP-C/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/user/repos/cuPDLP-C /home/user/repos/cuPDLP-C/interface /home/user/repos/cuPDLP-C/build /home/user/repos/cuPDLP-C/build/interface /home/user/repos/cuPDLP-C/build/interface/CMakeFiles/wrapper_lp.dir/DependInfo.cmake "--color="
gmake[2]: Leaving directory '/home/user/repos/cuPDLP-C/build'
/usr/bin/gmake  -f interface/CMakeFiles/wrapper_lp.dir/build.make interface/CMakeFiles/wrapper_lp.dir/build
gmake[2]: Entering directory '/home/user/repos/cuPDLP-C/build'
[ 64%] Building C object interface/CMakeFiles/wrapper_lp.dir/mps_lp.c.o
cd /home/user/repos/cuPDLP-C/build/interface && /usr/bin/cc -DCUPDLP_CPU -DCUPDLP_DEBUG -Dwrapper_lp_EXPORTS  -g -std=gnu99 -fPIC -MD -MT interface/CMakeFiles/wrapper_lp.dir/mps_lp.c.o -MF CMakeFiles/wrapper_lp.dir/mps_lp.c.o.d -o CMakeFiles/wrapper_lp.dir/mps_lp.c.o -c /home/user/repos/cuPDLP-C/interface/mps_lp.c
[ 70%] Linking C shared library ../lib/libwrapper_lp.so
cd /home/user/repos/cuPDLP-C/build/interface && /usr/bin/cmake -E cmake_link_script CMakeFiles/wrapper_lp.dir/link.txt --verbose=1
/usr/bin/cc -fPIC -g -shared -Wl,-soname,libwrapper_lp.so -o ../lib/libwrapper_lp.so CMakeFiles/wrapper_lp.dir/mps_lp.c.o  -Wl,-rpath,/home/user/repos/cuPDLP-C/build/lib ../lib/libcupdlp.so -lm 
gmake[2]: Leaving directory '/home/user/repos/cuPDLP-C/build'
[ 70%] Built target wrapper_lp
/usr/bin/gmake  -f interface/CMakeFiles/wrapper_highs.dir/build.make interface/CMakeFiles/wrapper_highs.dir/depend
gmake[2]: Entering directory '/home/user/repos/cuPDLP-C/build'
cd /home/user/repos/cuPDLP-C/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/user/repos/cuPDLP-C /home/user/repos/cuPDLP-C/interface /home/user/repos/cuPDLP-C/build /home/user/repos/cuPDLP-C/build/interface /home/user/repos/cuPDLP-C/build/interface/CMakeFiles/wrapper_highs.dir/DependInfo.cmake "--color="
gmake[2]: Leaving directory '/home/user/repos/cuPDLP-C/build'
/usr/bin/gmake  -f interface/CMakeFiles/wrapper_highs.dir/build.make interface/CMakeFiles/wrapper_highs.dir/build
gmake[2]: Entering directory '/home/user/repos/cuPDLP-C/build'
[ 76%] Building C object interface/CMakeFiles/wrapper_highs.dir/mps_lp.c.o
cd /home/user/repos/cuPDLP-C/build/interface && /usr/bin/cc -DCUPDLP_CPU -DCUPDLP_DEBUG -Dwrapper_highs_EXPORTS -I/usr/local/include/highs -g -std=gnu99 -fPIC -MD -MT interface/CMakeFiles/wrapper_highs.dir/mps_lp.c.o -MF CMakeFiles/wrapper_highs.dir/mps_lp.c.o.d -o CMakeFiles/wrapper_highs.dir/mps_lp.c.o -c /home/user/repos/cuPDLP-C/interface/mps_lp.c
[ 82%] Building CXX object interface/CMakeFiles/wrapper_highs.dir/wrapper_highs.cpp.o
cd /home/user/repos/cuPDLP-C/build/interface && /usr/bin/c++ -DCUPDLP_CPU -DCUPDLP_DEBUG -Dwrapper_highs_EXPORTS -I/usr/local/include/highs -g -std=gnu++11 -fPIC -MD -MT interface/CMakeFiles/wrapper_highs.dir/wrapper_highs.cpp.o -MF CMakeFiles/wrapper_highs.dir/wrapper_highs.cpp.o.d -o CMakeFiles/wrapper_highs.dir/wrapper_highs.cpp.o -c /home/user/repos/cuPDLP-C/interface/wrapper_highs.cpp
[ 88%] Linking CXX shared library ../lib/libwrapper_highs.so
cd /home/user/repos/cuPDLP-C/build/interface && /usr/bin/cmake -E cmake_link_script CMakeFiles/wrapper_highs.dir/link.txt --verbose=1
/usr/bin/c++ -fPIC -g -shared -Wl,-soname,libwrapper_highs.so -o ../lib/libwrapper_highs.so CMakeFiles/wrapper_highs.dir/mps_lp.c.o CMakeFiles/wrapper_highs.dir/wrapper_highs.cpp.o  -Wl,-rpath,/home/user/repos/cuPDLP-C/build/lib:/usr/local/lib ../lib/libcupdlp.so /usr/local/lib/libhighs.so -lm 
gmake[2]: Leaving directory '/home/user/repos/cuPDLP-C/build'
[ 88%] Built target wrapper_highs
/usr/bin/gmake  -f interface/CMakeFiles/plc.dir/build.make interface/CMakeFiles/plc.dir/depend
gmake[2]: Entering directory '/home/user/repos/cuPDLP-C/build'
cd /home/user/repos/cuPDLP-C/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/user/repos/cuPDLP-C /home/user/repos/cuPDLP-C/interface /home/user/repos/cuPDLP-C/build /home/user/repos/cuPDLP-C/build/interface /home/user/repos/cuPDLP-C/build/interface/CMakeFiles/plc.dir/DependInfo.cmake "--color="
gmake[2]: Leaving directory '/home/user/repos/cuPDLP-C/build'
/usr/bin/gmake  -f interface/CMakeFiles/plc.dir/build.make interface/CMakeFiles/plc.dir/build
gmake[2]: Entering directory '/home/user/repos/cuPDLP-C/build'
[ 94%] Building C object interface/CMakeFiles/plc.dir/mps_highs.c.o
cd /home/user/repos/cuPDLP-C/build/interface && /usr/bin/cc -DCUPDLP_CPU -DCUPDLP_DEBUG -I/usr/local/include/highs -g -std=gnu99 -MD -MT interface/CMakeFiles/plc.dir/mps_highs.c.o -MF CMakeFiles/plc.dir/mps_highs.c.o.d -o CMakeFiles/plc.dir/mps_highs.c.o -c /home/user/repos/cuPDLP-C/interface/mps_highs.c
In file included from /home/user/repos/cuPDLP-C/interface/mps_highs.c:2:
/home/user/repos/cuPDLP-C/interface/wrapper_highs.h:12: warning: "CUPDLP_INIT" redefined
   12 | #define CUPDLP_INIT(var, size)                                  \
      | 
In file included from /home/user/repos/cuPDLP-C/interface/../cupdlp/cupdlp_defs.h:15,
                 from /home/user/repos/cuPDLP-C/interface/../cupdlp/cupdlp_cs.h:4,
                 from /home/user/repos/cuPDLP-C/interface/../cupdlp/cupdlp.h:5,
                 from /home/user/repos/cuPDLP-C/interface/mps_lp.h:4,
                 from /home/user/repos/cuPDLP-C/interface/mps_highs.c:1:
/home/user/repos/cuPDLP-C/interface/../cupdlp/glbopts.h:144: note: this is the location of the previous definition
  144 | #define CUPDLP_INIT(var, size)                                  \
      | 
[100%] Linking C executable ../bin/plc
cd /home/user/repos/cuPDLP-C/build/interface && /usr/bin/cmake -E cmake_link_script CMakeFiles/plc.dir/link.txt --verbose=1
/usr/bin/cc -g CMakeFiles/plc.dir/mps_highs.c.o -o ../bin/plc  -Wl,-rpath,/home/user/repos/cuPDLP-C/build/lib:/usr/local/lib ../lib/libwrapper_highs.so /usr/local/lib/libhighs.so ../lib/libcupdlp.so -lm 
gmake[2]: Leaving directory '/home/user/repos/cuPDLP-C/build'
[100%] Built target plc
gmake[1]: Leaving directory '/home/user/repos/cuPDLP-C/build'
/usr/bin/cmake -E cmake_progress_start /home/user/repos/cuPDLP-C/build/CMakeFiles 0

Does this ring a bell?

fuglede commented 5 months ago

The segfault itself comes from here:

$ gdb build/bin/plc 
Reading symbols from build/bin/plc...
(gdb) run
Starting program: /home/user/repos/cuPDLP-C/build/bin/plc 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
--------------------------------------------------
reading file...
    ./example/afiro.mps
--------------------------------------------------
Running HiGHS 1.7.0 (git hash: 13363c9f1): Copyright (c) 2024 HiGHS under MIT licence terms
Minimize
No obj offset

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7d1d381 in Init_Scaling () from /usr/local/lib/libhighs.so.1
fuglede commented 5 months ago

Linking to HiGHS 1.6.0 works, with and without CUDA, so this appears to just be a dependency versioning issue.

I tried building #17 instead but get a ton of other warnings/errors, so some amount of work would be required to get this up and running, it seems.

SkyLiu0 commented 5 months ago

Hi, thank you for your feedback! Our cuPDLP-C is developed with the mps reader of HiGHS 1.6.0 and we are still trying to improve its usability and stability. Currently, HiGHS 1.7.0 https://highs.dev integrates the CPU part of our cuPDLP-C (no GPU part may cause several conflicts 😭). For a more stable and user-friendly version with both CPU and GPU parts of our solver, we highly recommend you to try COPT 7.1 https://www.shanshu.ai/copt with the parameter LpMethod = 6. You can easily get a free license for academic use😉.

hannes-uppman commented 5 months ago

I too got a bunch of problems when trying to use HiGHS 1.7, I think they mostly came from the fact that HiGHS 1.7 includes a copy of this project. So, I deleted src/pdlp in HiGHS and recompiled the library (this required only minor patching), and this has worked fine for me this far (but I have only tested a couple of models).

This seems related https://github.com/ERGO-Code/HiGHS/issues/1694

jajhall commented 3 months ago

Yes, sorry, I didn't think that including a modified version of cuPDLP-C in HiGHS would cause problems. I'm about to rename the modified methods so that the native cuPDLP-C will work with future versions of HiGHS.

jajhall commented 3 months ago

I've modified the names of the two cuPDLP-C methods that I modified to control logging, so that the original cuPDLP-C methods are called when building the stand-alone version. The modified code has been pushed to https://github.com/ERGO-Code/HiGHS/tree/latest