[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Help-glpk] different executions on different platforms
From: |
Andrew Makhorin |
Subject: |
Re: [Help-glpk] different executions on different platforms |
Date: |
Thu, 14 Feb 2008 16:57:01 +0300 |
> We have noticed that executing the glpsol command-line solver on
> different machines with the same input data could lead to different
> execution. The number of simplex iterations / branch-and-bound nodes may
> differ, which leads to different performance.
> We have done our testings on three different platforms :
> - cygwin on top of Windows XP (i386 processor)
> - Debian GNU/Linux (i386)
> - Debian GNU/Linux (amd64)
> All testings were done using GLPK 4.25.
> The three attached execution logs correspong the resolution of the
> pp08a.mps instance from MIPLIB 2003, using the --cuts option of glpsol.
> In summary :
> - on cygwin : 66 simplex iterations at root, 10059 total, 981 b&b nodes.
> - i386 Linux : the values are 66, 16377, 1449.
> - amd64 Linux : 67, 13155, 1445.
> The execution times cannot be compared, as the executions were performed
> on different machines.
> Does anybody have an explanation why there are such differencies ? I
> have started looking into the internal random number generator, but it
> seems to behave the same way on the different platforms.
This is normal, because glpk routines use floating-point arithmetic,
and different compilers, as a rule, produce different object code, which
leads to different results. For example, one compiler may produce the
code, which keeps a temporary floating-point value in a register having
more significant bits than in the double type while other compiler may
always round such value to the double type; it is understood that the
floating-point representation of, say, 1/3 will be different in these
two cases. To obtain identical floating-point results you have to run
identical object codes on identical machines provided with identical
data.