[Mpi-forum] C++ types inaccessible after #281

Jeff Hammond jhammond at alcf.anl.gov
Tue Jun 26 09:33:47 CDT 2012


So one issue to consider here is that std::complex is a template, not
a single type.  One can presumably stick lots of types inside the
brackets.

So the MPI Forum needs to figure out which of the existing C99 types
that will work with this.  Do we support std::complex<long double>?
How about std::complex<uint64_t>?

My reference is http://www.cplusplus.com/reference/std/complex/complex/, btw.

Jeff

On Tue, Jun 26, 2012 at 9:20 AM, Jeff Squyres <jsquyres at cisco.com> wrote:
> Not for many years.  :-)  (/me puts finger on nose)
>
> I originally authored the C++ bindings in the mid-90's (ouch!), when I was *much* more active in the C++ community than I am today.
>
>
>
> On Jun 26, 2012, at 10:16 AM, Jeff Hammond wrote:
>
>> Um, aren't you sort of the C++ expert attending the Forum right now?
>>
>> :-)
>>
>> Jeff
>>
>> On Tue, Jun 26, 2012 at 9:13 AM, Jeff Squyres <jsquyres at cisco.com> wrote:
>>> Yes, I think that Jed has a good point here.
>>>
>>> There are a few C++-specific datatypes for which it would be worth introducing new C datatypes (e.g., MPI_CXX_COMPLEX).  It's too bad that no one realized this until now, because this won't make the MPI-3 deadline.  But it could be part of MPI-3.1 or errata, or some such.
>>>
>>> Is there a C++ person out there who could draft a proposal about this?
>>>
>>>
>>> On Jun 26, 2012, at 1:02 AM, Jed Brown wrote:
>>>
>>>> I'm all for getting rid of the C++ bindings and see no compelling reason for anyone to use them.
>>>>
>>>> Predefined types are inconsequential to MPI-1 functionality, but they are special for one-sided, so availability of types is highly relevant to applications. This is a non-cosmetic change imposed by #281 that doesn't seem to have been discussed.
>>>>
>>>> On Jun 25, 2012 8:51 PM, "Fab Tillier" <ftillier at microsoft.com> wrote:
>>>> Ah, thanks, sorry for being dense (I'm not familiar with the C++ bindings as we don't ship them for MSMPI).
>>>>
>>>> Ticket 281 removes the entire C++ bindings from the standard, MPI::COMPLEX included.  You'd need to convince your MPI library vendor to keep supplying you with an MPI-2.2 compliant version of the C++ bindings (which is still allowed by ticket #281).
>>>>
>>>> Hopefully someone with more experience with the C++ bindings can chime in, but I'd expect the answer to your original question is yes, ticket #281 intentionally removes all C++ support from MPI-3.
>>>>
>>>> -Fab
>>>>
>>>> Jed Brown wrote on Mon, 25 Jun 2012 at 21:31:55
>>>>
>>>>> MPI::COMPLEX is not the same as MPI_C_COMPLEX (and the latter is not
>>>>> available on systems without C99).
>>>>
>>>>> On Jun 25, 2012 8:21 PM, "Fab Tillier" <ftillier at microsoft.com> wrote:
>>>>> Hi Jed,
>>>>>
>>>>> Maybe I'm not following you, but what predefined MPI datatype supports
>>>>> std::complex today?  My understanding is that there is no support for
>>>>> std::complex in MPI today, and that ticket 281 does not change this at
>>>>> all.
>>>>>
>>>>> Thanks,
>>>>> -Fab
>>>>>
>>>>> Jed Brown wrote on Mon, 25 Jun 2012 at 20:42:53
>>>>>
>>>>>> I see that std::complex will not be accessible in a predefined type if
>>>>>> #281 passes in its current form. Do you intend for there to be a
>>>>>> supported/recommended way for a C++ caller to get a complex predefined
>>>>>> (so that one-sided can be used) type? Note that C99 is not a subset of
>>>>>> any C++ and C99 complex cannot be used portably from C++ (even with
>>>>>> compiler suites that happen to support both).
>>>>>>
>>>>>> On Jun 25, 2012 7:07 PM, "Fab Tillier" <ftillier at microsoft.com
>>>>>> <mailto:ftillier at microsoft.com> > wrote: Hi Jed,
>>>>>>
>>>>>> Jed Brown wrote on Mon, 25 Jun 2012 at 16:43:54
>>>>>>
>>>>>>> Is it intended that #281 would make std::complex inaccessible? Should
>>>>>>> there be a MPI_CXX_COMPLEX, MPI_CXX_DOUBLE_COMPLEX,
>>>>>>> MPI_CXX_LONG_DOUBLE_COMPLEX, and (possibly) MPI_CXX_BOOL?
>>>>>>
>>>>>> I don't think ticket #281 does anything with respect to std::complex
>>>>>> accessibility.  The MPI standard defines the MPI_C_COMPLEX and family
>>>>>> as mapping to the C99 _Complex type (see Table 3.2, Predefined MPI
>>>>>> datatypes corresponding to C datatypes).  The standard is clear that
>>>>>> there are no corresponding C++ bindings.
>>>>>>
>>>>>>> Note that C99 complex is not a substitute because Microsoft does not
>>>>>>> implement it and it has different semantics regarding numerical
>>>>>>> stability. (Well, C99 semantics are specified and useful, std::complex
>>>>>>> stability is not specified by any C++ standard and in practice, is not
>>>>>>> implemented in a stable way.) This is not such a big deal for use with
>>>>>>> collectives because user-defined MPI_Ops can be used, but only
>>>>>>> predefined types can be used with one-sided operations, so presence of
>>>>>>> complex datatypes (or lack thereof) is relevant to applications.
>>>>>>
>>>>>> The fact that Microsoft does not support C99 is lame.  You can probably
>>>>>> get away using std::complex as a stand-in for C99 _Complex (but then
>>>>>> you're on your own), or move to a compiler that does (I believe the
>>>>>> Intel compiler supports C99 on Windows).
>>>>>>
>>>>>> -Fab
>>>>>>
>>>>>
>>>> _______________________________________________
>>>> mpi-forum mailing list
>>>> mpi-forum at lists.mpi-forum.org
>>>> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum
>>>
>>>
>>> --
>>> Jeff Squyres
>>> jsquyres at cisco.com
>>> For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/
>>>
>>>
>>> _______________________________________________
>>> mpi-forum mailing list
>>> mpi-forum at lists.mpi-forum.org
>>> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum
>>
>>
>>
>> --
>> Jeff Hammond
>> Argonne Leadership Computing Facility
>> University of Chicago Computation Institute
>> jhammond at alcf.anl.gov / (630) 252-5381
>> http://www.linkedin.com/in/jeffhammond
>> https://wiki.alcf.anl.gov/parts/index.php/User:Jhammond
>>
>> _______________________________________________
>> mpi-forum mailing list
>> mpi-forum at lists.mpi-forum.org
>> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum
>
>
> --
> Jeff Squyres
> jsquyres at cisco.com
> For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/
>
>
> _______________________________________________
> mpi-forum mailing list
> mpi-forum at lists.mpi-forum.org
> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum



-- 
Jeff Hammond
Argonne Leadership Computing Facility
University of Chicago Computation Institute
jhammond at alcf.anl.gov / (630) 252-5381
http://www.linkedin.com/in/jeffhammond
https://wiki.alcf.anl.gov/parts/index.php/User:Jhammond




More information about the mpi-forum mailing list