[MOAB-dev] moab/ParallelComm.hpp include order

Vijay S. Mahadevan vijay.m at gmail.com
Mon Nov 2 17:33:59 CST 2015


I cant seem to replicate the issue locally. Nevertheless, that file
definitely looks quite strange since I don't think we hit many of the
paths in moab_mpi.h as MB_SEEK*/MB_RESTORE* are not defined in
configure (autotools) anymore. Certainly, not in CMake.

MPI_INCLUDED is defined in mpi.h (easy to check) and this just checks
if you have previously included the header already (note that it is
ifndef and not ifdef). So I'm not worried about the undefs really
unless your MPI version does not define MPI_INCLUDED
(openmpi/intel-mpi ??).

Now in your case, if all of the MPI variables are getting undefined,
we need to track why that is the case. Looking at the history for that
file didn't reveal much but let us know your configuration command for
MOAB so that we can create a build that replicates the failure.

Vijay


On Mon, Nov 2, 2015 at 5:09 PM, Nico Schlömer <nico.schloemer at gmail.com> wrote:
> @Iulian, oh yes, you're right. But the error remains the same:
> ```
> MPI_Comm my = MPI_COMM_WORLD;
> ```
> The reason lies `moab_mpi.h`. There we find
> ```
> /* Work around brain-dead netcdf.h */
> #ifndef MPI_INCLUDED
> #  undef MPI_Comm
> #  undef MPI_Info
> #  undef MPI_COMM_WORLD
> #  undef MPI_INFO_NULL
> #endif
> ```
> Whoops! All of MPI undefined. No idea what's going on here and why.
>
> Any insight?
>
> --Nico
>
> On Tue, Nov 3, 2015 at 12:02 AM Grindeanu, Iulian R. <iulian at mcs.anl.gov>
> wrote:
>>
>> this error has nothing to do with moab/ParallelComm.hpp
>>
>> MPI_COMM_WORLD is just a constant, not a type
>>
>> this should give compile errors too.
>>
>> Or I don't get what are you trying to do
>>
>> #include <mpi.h>
>>
>> int main() {
>>   MPI_COMM_WORLD my;
>> }
>>
>>
>> ________________________________
>> From: moab-dev-bounces at mcs.anl.gov [moab-dev-bounces at mcs.anl.gov] on
>> behalf of Nico Schlömer [nico.schloemer at gmail.com]
>> Sent: Monday, November 02, 2015 4:49 PM
>> To: Vijay S. Mahadevan
>> Cc: moab-dev at mcs.anl.gov
>> Subject: Re: [MOAB-dev] moab/ParallelComm.hpp include order
>>
>> Alright. This
>> ```
>> #include <mpi.h>
>> #include <moab/ParallelComm.hpp>
>>
>> int main() {
>>   MPI_COMM_WORLD my;
>> }
>> ```
>> creates the same
>> ```
>>  error: ‘MPI_COMM_WORLD’ was not declared in this scope
>> ```
>> Can you reproduce?
>>
>> Cheers,
>> Nico
>>
>> On Mon, Nov 2, 2015 at 11:38 PM Nico Schlömer <nico.schloemer at gmail.com>
>> wrote:
>>>
>>> Including <moab/MOABConfig.h> doesn't help. I'll see about creating a
>>> minimal example...
>>>
>>> --Nico
>>>
>>> On Mon, Nov 2, 2015 at 10:05 PM Vijay S. Mahadevan <vijay.m at gmail.com>
>>> wrote:
>>>>
>>>> Can you try including moab/MOABConfig.h directly in your test before
>>>> ParallelComm and see if that resolves issues ?
>>>>
>>>> ParallelComm includes Interface.hpp which in turn includes
>>>> MOABConfig.h. If you are including some other MOAB header before
>>>> these, MOAB_HAVE_MPI might not be defined.
>>>>
>>>> Vijay
>>>>
>>>> On Mon, Nov 2, 2015 at 3:00 PM, Nico Schlömer <nico.schloemer at gmail.com>
>>>> wrote:
>>>> > It's a little convoluted with Trilinos includes right now, I'm trying
>>>> > to
>>>> > generate a minimal example.
>>>> >
>>>> > --Nico
>>>> >
>>>> > On Mon, Nov 2, 2015 at 10:00 PM Vijay S. Mahadevan <vijay.m at gmail.com>
>>>> > wrote:
>>>> >>
>>>> >> Nico, can you give an example ? What else did you include before
>>>> >> ParallelComm to get such an error ? I am guessing this has to do with
>>>> >> how moab/MOABConfig.h gets included since that's where MOAB_HAVE_MPI
>>>> >> is defined.
>>>> >>
>>>> >> Vijay
>>>> >>
>>>> >> On Mon, Nov 2, 2015 at 2:47 PM, Nico Schlömer
>>>> >> <nico.schloemer at gmail.com>
>>>> >> wrote:
>>>> >> > When playing with MOAB, I found that if I include the header
>>>> >> > ```
>>>> >> > #include <moab/ParallelComm.hpp>
>>>> >> > ```
>>>> >> > after something that's also using MPI, I'm getting strange
>>>> >> > compilation
>>>> >> > errors of the kind
>>>> >> > ```
>>>> >> > error: ‘MPI_COMM_WORLD’ was not declared in this scope
>>>> >> > ```
>>>> >> > Has anyone else experienced this?
>>>> >> >
>>>> >> > Cheers,
>>>> >> > Nico


More information about the moab-dev mailing list