Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: Re: [OMPI users] Help on Mpi derived datatype for class with static members
From: Riccardo Murri (riccardo.murri_at_[hidden])
Date: 2010-12-09 16:15:05


On Wed, Dec 8, 2010 at 10:04 PM, Santosh Ansumali <ansumali_at_[hidden]> wrote:
>   I am confused with the use of MPI derived datatype for classes with
> static member. How to create derived datatype for something like
> class test{
> static const int i=5;
> double data[5];
> }
>

This looks like C++ code, and I think there can be a couple of
problems with sending this as an MPI derived datatype:

- the "static" data member is shared between all instances of the
  class, so it cannot be part of the MPI datatype (it will likely be
  at a fixed memory location);

- in addition, the "i" member is "static const" of a POD type, meaning
  the compiler is allowed to optimize it out and not allocate any
  actual memory location for it;

This boils down to: the only data you need to send around in a "class
test" instance is the "double data[5]" array.

If the static member were not "const", you could send it in a separate
message.

Best regards,
Riccardo

P.S. Besides, all members in a "class" are private by default and
"class test" does not have a constructor, so there's no way you can
put any useful values into this "test" class. (But I guess this is
just an oversight when stripping down the code for the example...)