Closed nedialk closed 1 year 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.
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.
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