A processor (also called CPU) of a computer executes machine code which is produced by a compiler. A compiler produces the GAMS executable that is used when GAMS is executed. A processor family (manufacturer) can have a unique instruction set which executes the machine code and even if the same instruction set is used, the internal design can be radically different. Depending on, if a 32 or 64 bit executable is compiled, the machine code is different, also because the compiler optimizes the machine code. Furthermore, an executable may include several machine code paths and a particular machine code path might get activated only if the processor supports it. In conclusion the optimization result is dependent on the machine code which in turn depends on operating system, hardware and if a 32 or 64 executable is used.
When the machine code is executed small calculation errors occur. If the machine code is different it can mean that the operations are performed in different order. Most of the time this does not cause any issues, however, sometimes when a decision of two equally good choices has to be made the small calculation errors determines the execution path. The small calculation errors can be caused, for example, by rounding and truncation and, note that, consecutive errors can accumulate. In the end this can result in that the solution process may differ when two different machine codes are executed.