scipopt / soplex

Sequential object-oriented simPlex
Other
59 stars 18 forks source link

soplex #5

Closed nedialk closed 1 year ago

nedialk commented 2 years ago

We tried compiling Soplex with float and long double. The executable soplex compiles but not the rest. Please see the attached output. We tried fixing the code manually, but this is quite involved, and likely error prone.

If I run e.g. in single precision we get e.g.

SoPlex version 6.0.0.2 [mode: optimized] [precision: 4 byte] [rational: GMP 6.2.1] [PaPILO: not available] [githash: NoGitInfo] Copyright (c) 1996-2022 Konrad-Zuse-Zentrum fuer Informationstechnik Berlin (ZIB)

Reading (real) LP file . . . Reading took 0.35 seconds.

LP has 69608 rows 17680 columns and 1162000 nonzeros.

Equilibrium scaling LP (persistent) Simplifier removed 6592 rows, 1744 columns, 129600 nonzeros, 17680 col bounds, 4600 row bounds Reduced LP has 63016 rows 15936 columns 1032400 nonzeros Equilibrium scaling LP type | time | iters | facts | shift | viol sum | viol num | obj value E | 0.0 | 0 | 2 | 0.00e+00 | 2.00e+02 | 200 | 0.00000000e+00 E | 0.0 | 199 | 2 | 0.00e+00 | 3.20e+03 | 200 | 6.48262024e+01 E | 0.0 | 399 | 3 | 0.00e+00 | 4.66e+03 | 2338 | 9.70000076e+01 [1] 97875 segmentation fault ./bin/soplex ex10.mps

longdouble.txt

svigerske commented 2 years ago

The errors in longdouble.txt look as if the C interface in soplex_interface.cpp does not work if not compiling for double precision floating-point. Unless you need this interface, I would imagine that it should be ok to just not compile it. It shouldn't be used inside SoPlex. If I build with a simple call to make, it doesn't even seem to try to compile the C interface. Since you use the cmake-system, you would have to modify src/CMakeLists.txt to exclude soplex_interface.cpp (or delete its content).

I didn't try compiling for a different precision. The expert who knows about all this is on an extended leave at the moment.

ambros-gleixner commented 2 years ago

Correct, this interface is explicit for double precision input, and it is not needed inside SoPlex.

To analyze the segfault on ex10.mps further, please compile in debug mode (-DCMAKE_BUILD_TYPE=Debug) and use valgrind.