Aleksandar Donev writes,
> Does anyone have useful references/pointers forr things to keep in
mind when transitioning code
> from 32-bit x86 to 64-bit mode on x86_64 architectures (either Opteron
or EMT64)? Especially in
> terms of default storage sizes, interop with C, and other such
non-portable issues.
Speaking for Intel Fortran, default storage sizes are unchanged in the
x64 environment. The size of an address is 64-bits, which would
typically affect use of the "Cray Pointer" feature, though our compilers
offer the INT_PTR_KIND intrinsic to ask what integer kind a pointer is.
If you use standard Fortran POINTER or ALLOCATABLE this should be hidden
from you. If you have lots of pointers or ALLOCATABLEs, then more
storage will be taken up for the metadata.
C interop is a thorny issue, as Windows and Linux handle things
differently in this environment. Linux decided that "long" would be
64-bit but Windows chose to keep "long" as 32-bit. C compilers usually
have an option to control this, but it is an issue when you're worried
about cross-OS portability.
Steve Lionel
Software Products Development
Intel Corporation
Nashua, NH
|