You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This issue addresses the second half of the issue 27:
<<<<<<
This informative note is responsive to issues 23 and 24.
23. Is "long double" defined in the UPC language?
24. Is "long double complex" defined in the UPC language?
The "long double" types are defined in C99 inclusive of complex number support.
The "long double" type is also defined in the required UPC "collectives"
library. However, there is currently no support for the complex/real/imaginary
equivalents.
Given the nature of HPC applications written in UPC, it is recommended that
"long double" in its various forms also be supported by a UPC compiler as long
as the native C compiler also supports them.
For completeness, the UPC collectives library API should be extended to also
include long double complex types.
>>>>>>>
There seemed to be general agreement with this, including the comment:
<<<<<<<
I agree w/ Gary on the basic facts:
1) "long double" is part of C99
2) "float complex", "double complex" and "long double complex" are part of C99
3) UPC should support all of C99's arithmetic types.
So, I also agree w/ the conclusion that the collectives need to be expanded to
include the 3 complex types. To be concrete, I would suggest "FC", "DC" and
"LDC" as the type codes that are most consistent with the "principle of least
surprise".
>>>>>>>
However, the following comment and the discussion that followed pointed out
issues that need to addressed while talking about the collectives:
<<<<<<<
Regarding implementation, it's worth noting that C99 fully permits an
implementation where "long double" is equivalent to "double" (for that matter,
both are also permitted to be equivalent to "float"). Obviously in the
interests of interoperability the UPC compiler should probably use the same
floating point types as the system C compiler. I agree that long double should
appear in the list of types for any library supporting double, eg collectives.
C11 makes language support for complex types completely optional. My impression
is this is because these types are incompatible with those provided in other
languages (notably C++) and largely underutilized, notably by scientific
libraries. How important is the C99 _Complex type to our UPC app programmers?
>>>>>>>
Since there are implementation issues with respect to libraries and there are a
number of issues that users care about:
1) precision
2) memory consumption
3) alignment (maybe not a user issue)
Depending on what UPC app programmers need, maybe the whole issue of extended
precision "reals" should be handled with a library.
This raises additional issues with the reduction collectives.
Original issue reported on code.google.com by [email protected] on 4 Oct 2012 at 4:19
The text was updated successfully, but these errors were encountered:
Original issue reported on code.google.com by
[email protected]
on 4 Oct 2012 at 4:19The text was updated successfully, but these errors were encountered: