Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
29001 Discussions

REAL(64) bit instructions in EM64T on dual core Xeon processors

jswaugh
Beginner
1,045 Views
I have an application that does heavy number crunching on REAL(64) arrays. I would like to speed it up by using EM64T extensions. The hype on EM64T emphasizes incrased address space (which I do not need) and mentions 64 bit registers,. However it is not clear whether genuine 64 bit instructions are available, or are finessed by slower library calls, as occurs now under IA-32. Does anyone know?
0 Kudos
3 Replies
TimP
Honored Contributor III
1,045 Views
All SSE2 code uses 128-bit wide registers (64-bit for scalar code). 64-bit mode gives you 16 of them, compared with 8 in 32-bit mode. 64-bit compilers generally take advantage of that, where it helps. Both modes use the same floating point instruction set.
Scalar integer calculations are where 64-bit mode engages native 64-bit arithmetic. As you hint, 64-bit mode without 64-bit arithmetic would be slower.
I can't comment on your idea of "slower library calls" without more specifics. It isn't normally an issue. In some cases, avoiding function calls by compiler in-lining could show more advantage in 64-bit than in 32-bit mode, but I don't see that often myself.
0 Kudos
Steven_L_Intel1
Employee
1,045 Views
The registers that are wider for EM64T are the integer and address registers. Floating point registers, as Tim says, are the same in either 32 or 64-bit mode. Whether or not you'll see a speedup in 64-bit mode depends a lot on the application, but don't get your expectations up.
0 Kudos
jimdempseyatthecove
Honored Contributor III
1,045 Views

Your biggest bang for the buck will not come from simply switching to EMT64. I suggest you invest some time in learning how to adapt your application to use OpenMP. Put both those cores to work. If your app needs more than 2GB of RAM then EMT64 would be the route to take.

OpenMP is relatively easy to integrate into IVF applicatons. At least to the point where you see some benefit. I've done this for a 700+ module Fortran applicaiton on a 4 core system. Got 3.8x performance improvement.

Jim Dempsey.

0 Kudos
Reply