[Coin-discuss] Cbc in linux platform process the problem different from Windows platform

Tobias Achterberg achterberg at zib.de
Thu Mar 12 16:13:32 EDT 2009


Hi Mark,

[meant to send this to the list, so here is it again]

what you observe is very common: you cannot expect to get the same solver behavior on
different platforms. Of course, if you do not have numerical issues, the optimum solution
value should always be the same, but you can and will get different number of nodes and
iterations (and timinig, of course), and you may also get a different solution vector if
you go to a different architecture.

Btw: the same can and will happen if you use a different compiler or different compiler
version.

The reason is that math programming codes will take decisions on the results of floating
point operations. Subtle differences in the floating point arithmetics on different
machines will lead to a different decision at some place in the code, and from thereon,
everything else can be different.

A very common source of floating point differences is the 64/80 bit issue on Intel
platforms. The Intel CPU calculates doubles internally with 80 bit precision, but as soon
as a register gets stored in regular memory, it will be truncated to 64 bits. Thus, the
result of an operation can depend on how the compiler assigns registers or memory
addresses to results of floating point operations.


We call this phenomenon "performance variability", i.e., the change you observe in solver
behavior after changing something (like the computing platform) that should not affect
performance. See the work of Emilie Danna and others on this topic.


Best,  Tobias



S. Mark wrote:
> Hi,
> 
> I use coin-or cbc in my research. Firstly, I build Cbc-2.2.2 on MS
> Windows (VS 2008) by .sln file provided by coin-or. After that, I try to
> solve air04.mps from MIPLIB, it can find the optimum solution and report
> number of processed nodes  as 3358 and number of iterations as 398505.
> However, sometime in my research, I have to switch to linux platform and
> I try to build Cbc-2.2.2 in ubuntu 8.04 (hardy). After success in build
> process, I solve air04.mps again, it can find the optimum solution and
> report number of processed nodes  as 648 and number of iterations as
> 81855. It is very diferent to the result in Windows platform. Why does
> Cbc in linux platform differently process the problem from Windows
> platform?
> 
> Mark
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Coin-discuss mailing list
> Coin-discuss at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/coin-discuss




More information about the Coin-discuss mailing list