Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Collective support for long double and long double complex #92

Open
GoogleCodeExporter opened this issue Jul 2, 2015 · 1 comment
Open

Comments

@GoogleCodeExporter
Copy link

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

@GoogleCodeExporter
Copy link
Author

Original comment by danbonachea on 5 Oct 2012 at 4:41

  • Added labels: Milestone-Spec-1.4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant