Hello Luca:
    Thanks, this makes sense, but I am scratching my head regarding this situation:

1) Once the correct compilers are used, I run "mpiexec -np 2 ./step-17" and get an error that METIS is not installed. I installed libparmetis-dev and try and try to compile, but get a huge number of compile errors regarding conflicting declarations of many MPI::FUNCTIONs. Before I go any farther with this, it occured to me that should I be using the serial version of METIS, correct?

2) Shouldn't the configure script automagically set CC,CXX,and F77 to the MPI wrappers if PETSc is specified (since PETSc requires MPI)?

3) I still do not understand why calling the MPI functions when deal.II is not compiled to support MPI does not result in an error state. As-is, there is zero indication to the user that he/she is just running many individual copies of the program, other than a crash and the subsequent wasted time of trying to debug.

Nasser


Luca Heltai wrote:
Nasser,

you should specify the mpi compilers in the configure line. You can do something like this:


./configure --with-petsc=/usr/lib/petscdir/3.0.0 --with-petsc-arch=linux-gnu-c-opt CC=mpicc CXX=mpic++ F77=mpif77

and everything should work.

Your analysis is correct, in the sense that deal.II thinks that mpi is not there, and fills the values of the internal mpi functions with the defaults (id=0, nprocs=1), for consistency reasons.
If you specify mpi compilers, they are detected, and those functions should work properly.

Luca.

--
Luca Heltai <[email protected]>
http://people.sissa.it/~heltai/
Scuola Internazionale Superiore di Studi Avanzati
Phone:  +39 040 3787 449, Office: 255
--
There are no answers, only cross references.






On 29/ott/2009, at 13.27, Nasser Mohieddin Abukhdeir wrote:

Hello Wolfgang:
    I am definitely getting the output twice and I applied the patch and reran "mpiexec -np 2 ./step-17" on my machine. The first part of the error follows this message, the OpenMPI package in Ubuntu 8.10 is version 1.3.2-3. I did some fiddling, and it seems both MPI processes are being given the same ID of 0. I found that in the utilities.cc code the #define DEAL_II_COMPILER_SUPPORTS_MPI not existing would default to functions that return 1 for get_n_mpi_processes() and 0 for get_this_mpi_process() which is probably what happens, thus I have two questions:

    • Am I compiling deal.II correct? I used "./configure --with-petsc=/usr/lib/petscdir/3.0.0 --with-petsc-arch=linux-gnu-c-opt" and then "make debug optimized" and the configure script gives this output:
---------------- configuring additional libs ----------------
checking for PETSc library directory... /usr/lib/petscdir/3.0.0
checking for PETSc version... 3.0.0
checking for PETSc library architecture... linux-gnu-c-opt
checking for PETSc libmpiuni library...

I also checked in the makefile, in "common/Make.global_options" and I do not see the compilers specified as "mpiCC" etc
    • In utilities.cc, do you think it would be a better idea to throw an error if the user's code uses PETSC and PETSC is not available?
Thanks.

Nasser

_______________________________________________
dealii mailing list http://poisson.dealii.org/mailman/listinfo/dealii

Reply via email to