[mpi-21] const C++ MPI handles (take 2)

Jeff Squyres jsquyres at [hidden]
Sat Jan 19 19:02:46 CST 2008



Because I have a mail proposal pending to restore the "const" that was  
[erroneously, IMHO] removed in ballot 2.  :-D

On Jan 19, 2008, at 5:59 PM, Erez Haba wrote:

> If the 'const' was removed in ballot 2 whey do you want to leave the  
> text that refers to it?
>
> -----Original Message-----
> From: owner-mpi-21_at_[hidden] [mailto:owner-mpi-21_at_[hidden]]  
> On Behalf Of Jeff Squyres
> Sent: Saturday, January 19, 2008 11:17 AM
> To: mpi-21_at_[hidden]
> Cc: mpi-21_at_[hidden]
> Subject: Re: [mpi-21] const C++ MPI handles (take 2)
>
> Well, we pretty much have so far.  :-)
>
> The const was removed in ballot 2, but I wonder how many people
> actually noticed (I didn't, until a few days ago).
>
>
>
> On Jan 19, 2008, at 1:21 PM, Erez Haba wrote:
>
>> I agree, const is the better way to implement. The question is: do
>> you want to *force* the optimized implementation?
>>
>> -----Original Message-----
>> From: owner-mpi-21_at_[hidden] [mailto:owner-mpi-21_at_[hidden]]
>> On Behalf Of Jeff Squyres
>> Sent: Friday, January 18, 2008 5:49 PM
>> To: mpi-21_at_[hidden]
>> Cc: mpi-21_at_[hidden]
>> Subject: Re: [mpi-21] const C++ MPI handles (take 2)
>>
>> Yes, that's the way the original C++ bindings were implemented.  But
>> it's not required or necessary to do that; that C errhandler could
>> easily be cached somewhere else.
>>
>> More specifically, isn't it better to have a const object to allow  
>> for
>> compiler optimizations?  (I'm not a compiler guru, but I thought the
>> point of why we originally made the C++ handles be const was on the
>> argument for potential compiler optimizations)
>>
>>
>> On Jan 18, 2008, at 8:35 PM, Erez Haba wrote:
>>
>>> For example an implementation might choose to cache the error
>>> handler for MPI::COMM_WORD (in the MPI::Comm object) and call it
>>> itself on error so it can pass in the right object to the error
>>> handler.
>>> Thus requiring MPI::COMM_WORLD not to be const.
>>>
>>>
>>> -----Original Message-----
>>> From: owner-mpi-21_at_[hidden] [mailto:owner-mpi-21_at_[hidden]]
>>> On Behalf Of Jeff Squyres
>>> Sent: Friday, January 18, 2008 11:14 AM
>>> To: mpi-21_at_[hidden]
>>> Cc: mpi-21_at_[hidden]
>>> Subject: [mpi-21] const C++ MPI handles (take 2)
>>>
>>> On Jan 18, 2008, at 2:02 PM, Erez Haba wrote:
>>>
>>>> Okay; about one issue at a time.
>>>
>>> Changing mail subject to reflect the discussion...
>>>
>>>> *For this sentence* it does not matter what's a common usage for C 
>>>> ++
>>>> global variables. Some MPI implementations would need to have non-
>>>> const qualified global objects.
>>>
>>> Why?  As I understand it, most (all?) MPI C++ implementations
>>> currently only require some objects to be non-const because of the
>>> standard-related issue that was already raised (Set_attr(),
>>> Set_name(), Set_errhandler() methods not having const variants).  Is
>>> there a reason that an implementation would *need* MPI handles to be
>>> non-const?
>>>
>>> Per my prior mail, I believe that the standard should specify that
>>> some of the methods on these classes should have const and non-const
>>> variants, and then it should be fine to require that the predefined
>>> handles be const.
>>>
>>> So the question is still open: what's common practice in the C++
>>> community regarding const/non-const global variable specification?
>>> This question will be moot if you can demonstrate that an
>>> implementation would need non-const C++ MPI predefined handles.
>>>
>>> --
>>> Jeff Squyres
>>> Cisco Systems
>>>
>>
>>
>> --
>> Jeff Squyres
>> Cisco Systems
>>
>
>
> --
> Jeff Squyres
> Cisco Systems
>


-- 
Jeff Squyres
Cisco Systems




More information about the Mpi-21 mailing list