Open MPI logo

Open MPI User's Mailing List Archives

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

Subject: Re: [OMPI users] conflict among differenv MPIs
From: Jeff Squyres (jsquyres_at_[hidden])
Date: 2008-09-22 13:33:00


On Sep 22, 2008, at 1:24 PM, Shafagh Jafer wrote:

> I am confused now...should I use "/openmpi/mpic++ -E" or "/openmpi/
> mpic++" to compile my entire code??

mpic++. I was showing you the -E functionality so that you could
determine whether it really is picking up the wrong mpi.h or not.

>
> --- On Mon, 9/22/08, Jeff Squyres <jsquyres_at_[hidden]> wrote:
> From: Jeff Squyres <jsquyres_at_[hidden]>
> Subject: Re: [OMPI users] conflict among differenv MPIs
> To: "Open MPI Users" <users_at_[hidden]>
> Date: Monday, September 22, 2008, 6:12 AM
>
> On Sep 22, 2008, at 8:48 AM, Robert Kubrick wrote:
>
> > Recompile your own version of openmpi in a local directory, set your
> > PATH to your local openmpi install.
> >
> > export PATH=/my/openmpi/install/include:/usr/local/include
> >
> > mpicxx -show
>
> mpicxx --showme should show you the exact command that Open MPI's
> wrapper compiler is using to compile your application. There should
> already be an explicit -I there for where OMPI's mpi.h resides. If
> that's the case, the compiler should look there *first* for mpi.h,
> not /usr/local/include. Consider following example:
>
> - I created include-test.c which just does an "#include
> <stdio.h>".
> - If I run this through the preprocessor, you can see that it's
> getting /usr/include/stdio.h:
>
> [6:09] svbu-mpi:~/tmp % cat include-test.c
> #include <stdio.h>
> [6:09] svbu-mpi:~/tmp % gcc -E include-test.c | head
> # 1 "include-test.c"
> # 1 "<built-in>"
> # 1 "<command line>"
> # 1 "include-test.c"
> # 1 "/usr/include/stdio.h" 1 3 4
> # 28 "/usr/include/stdio.h" 3 4
> # 1 "/usr/include/features.h" 1 3 4
> # 319 "/usr/include/features.h" 3 4
> # 1 "/usr/include/sys/cdefs.h" 1 3 4
> # 320 "/usr/include/features.h" 2 3 4
>
> - But now I make my-include-dir/stdio.h with a single line in it
> - Then I recompile with an explicit -I for that directory and you can
> see that the compiler picks up that stdio.h, not /usr/include/stdio.h
>
> [6:09] svbu-mpi:~/tmp % cat my-include-dir/stdio.h
> typedef int foo;
> [6:09] svbu-mpi:~/tmp % gcc -E -Imy-include-dir include-test.c | head
> # 1 "include-test.c"
> # 1 "<built-in>"
> # 1 "<command line>"
> # 1 "include-test.c"
> # 1 "my-include-dir/stdio.h" 1
> typedef int foo;
> # 2 "include-test.c" 2
> [6:10] svbu-mpi:~/tmp %
>
> Are you sure that OMPI's mpicxx.h is picking up MPICH's mpi.h? If so,
>
> how? Did you run it through the preprocessor (perhaps similar to
> above), or step through a debugger or something?
>
> --
> Jeff Squyres
> Cisco Systems
>
> _______________________________________________
> users mailing list
> users_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/users
>
> _______________________________________________
> users mailing list
> users_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/users

-- 
Jeff Squyres
Cisco Systems