when I compile and run the same code on an ia32 architecture and an intel64 architecture, I get different results, and the latter takes 20x as long.
- F2003-compliant code
- latest Intel compiler
- local machine: Intel Dual Core, Ubuntu 11.04 32-bit, Intel Fortran Composer 32-bit
- remote server: Intel Xeon 6-core, Ubuntu 10.04 64-bit, Intel Fortran Composer 64-bit (intel64)
- I use (and link) the MKL
- I use the online link advisor to set flags, and set the environment variables by sourcing the compilervars.sh script with the respective argument. The programs compile, link, and run without problems. The -warn all flag does not give any messages of interest, on the local machine I also tried -check all -traceback etc., but no errors.
- I use the same optional 'performance / debugging' flags, in particular I have -fast
- What happens is somewhat strange: I have a Newton-style rootfinder for a large nonlinear system, and on the server (64-bit) it takes about 20x as many evaluations of the nonlinear system as on the local machine to converge to a solution. Each evaluation seems to take approximately the same amount of time. The first evaluation returns roughly the same 'distance' measure, but later on the rootfinder seems to make very slow progress on the server, while it converges fast on the local machine.
Unluckily, the server does not have a 32-bit version installed to countercheck.
Could the instrinsic epsilon(x), or tiny(x) be the cause?
Thanks in advance!