What is 64-bit computing, and what are its advantages ?
What is 64-bit computing, and what are its advantages ?
64-bit computing can refer to many things in the computing
environment. In particular, there is often confusion between the
separate concepts of default size settings of 64 bits
for INTEGER and REAL datatypes on
CRAY platforms, and the 64-bit computing environment, which
applies to HPCx. For optimal performance, it is recommended
that HPCx users invoke 64-bit computing mode. This is achieved by compiling
and linking their programs with the -q64 flag set
(see User Guide). The default computing mode remains 32-bit.
What is the 64-bit Computing Environment ?
The 64-bit computing environment on HPCx consists of
two key elements : the 64-bit hardware (p690+ processor)
and the provided software (AIX) that supports 64-bit computing.
There are no widely agreed standards as to the definition of
a 64-bit CPU, however IBM consider a processor 64-bit if:
- The general purpose registers are 64-bits wide
- Integer math and logical operations act on all 64 bits
at a time
- Virtual addressing requires 64-bit pointers.
Further details of these properties can be found here.
What are the Advantages of Using the 64-bit Computing
Environment ?
The main advantages of using 64-bit Computing on HPCx are:
- The size of data structures ( or memory) that can be addressed in 64-bit
mode is vastly greater than in 32-bit mode.
[1]*
- Using the -q64 option will speed up 64-bit integer operations.
The impact of this will depend upon your application code, where
the key benefit will normally be in performing arithmetic
operations on pointers in 64-bit programs.
N.B. As stated above, invoking 64-bit compute mode does NOT result in the size
of default Fortran data types being set at 64 bits, as for
example, on the Cray T3E.**
The size of some C & C++ data types are changed in 64-bit
mode. See tables below for more details.
For a discussion of more implications of 64-bit computing, and
a fuller description of IBM's 64-bit technology please click
here
Summary of IBM 32-bit computing vs IBM 64-bit computing
Summary of Differences
| 32-bit Environment | 64-bit Environment
|
| 4 GB address space | 1 million TB address space
|
| 32-bit execution mode | 64-bit execution mode
|
| Data model ILP32 (32-bit pointer) | Data model LP64 (64-bit pointer)
|
| XCOFF binary executable | XCOFF64 binary executable
|
| 32-bit shared libraries | 64-bit shared libraries
|
Data Type Sizes in 32-bit vs 64-bit Computing Environment
Fortran Data Type Sizes
| Data Type | ILP32 | LP64
|
| integer | 16 | unchanged
|
| integer(2) | 16 | unchanged
|
| integer(4) | 32 | unchanged
|
| integer(8) | 64 | unchanged
|
| real | 32 | unchanged
|
| real(4) | 32 | unchanged
|
| real(8) | 64 | unchanged
|
| real(16) | 128 | unchanged
|
| double | 64 | unchanged
|
| logical | 32 | unchanged
|
| logical(2) | 16 | unchanged
|
| logical(4) | 32 | unchanged
|
| logical(8) | 64 | unchanged
|
|
C and C++ Data Type Sizes
| Data Type | ILP32 | LP64
|
| char | 8 | unchanged
|
| short | 16 | unchanged
|
| int | 32 | unchanged
|
| long | 32 | 64
|
| long long | 64 | unchanged
|
| pointer | 32 | 64
|
| enum | 32 | unchanged
|
| float | 32 | unchanged
|
| double | 64 | unchanged
|
| long double | 64 | unchanged
|
|
* By using the -bmaxdata -bmaxstack flags for both compiling
and linking your code on HPCx you can access all the
available memory on HPCx in 32-bit mode.)
See the link below for more details.
http://hpcf.nersc.gov/software/ibm/sp_memory.html
** If desired, this can be achieved
by use of the -qautodbl or -qrealsize compiler options.
Please see the man pages or click
here
for more details.