User`s guide
Developing an Application [3]
Or
temp1 = a*b;
temp2 = c*d;
x = temp1 + temp2;
The only way to override the compiler instructions for a particular multiply-add
operation is to put each multiply operation on a separate line, as in the third example.
You can use the
-no_mul_add compiler flag to disable multiply-add operations.
Rather than using a multiply-add operation, the compiler may use a common
subexpression, as shown in the following example.
x = a*b; //For multiply
y = a*b + c; //Essentially y = x + c
In cases like this, you can use the #pragma mta single round required
pragma in a C program to indicate to the compiler that it must use a multiply-add
operation.
The Cray XMT does not support signaling NaNs. For all data types, the Cray XMT
identifies uninitialized floating-point data by throwing poison errors rather than using
signaling NaNs. See Appendix A, Error Messages on page 99.
3.4.2 Differences from Cray Floating-point Arithmetic
There are several versions of floating-point arithmetic on Cray systems. Newer Cray
systems, such as the Cray XMT, use formats based on IEEE 754. Older Cray systems
used a proprietary format that differs from IEEE 754 (and from the Cray XMT
implementation of IEEE 754) in significant ways. This older format is known as
Cray floating-point arithmetic.
Cray floating-point arithmetic uses a 48-bit significand, which has less precision
than the 53-bit significand used by the Cray XMT. The significand is the part of
a floating-point number that contains its significant digits. Cray floating-point
arithmetic has a 15-bit exponent with exponents that contain values between -8192
and 8191. This is a much larger range than the exponents for the Cray XMT that
contain values between -1022 and 1023. Cray floating-point operations lack guard
digits for subtraction and are known to have certain anomalies in computations.
In general, older Cray code that does not rely on the extra-large exponent range
runs without modification on the Cray XMT. Otherwise, some rescaling is required
for the Cray XMT. In addition, programs designed for older Cray systems may
contain work-around code to handle Cray floating-point anomalies. This code is
not necessary on the Cray XMT.
S–2479–20 29