<div dir="ltr"><div><div><div><div><div>Hey Marco,<br><br></div><div>I would also recommend a read through our build system docs here:<br><a href="https://beta.dune-project.org/buildsystem/" target="_blank">https://beta.dune-project.org/buildsystem/</a><br></div><div><br>You should then<br></div><div>* port your flags to CMake equivalents<br>* *not* set your C/C++ compiler to mpicc/mpicxx manually<br></div><br></div>The build system should find MPI all by itself, and as we switched the default<br></div>to parallel builds, your executables should be compiled with MPI support.<br><br></div>Best,<br></div>Dominic</div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jun 13, 2016 at 11:14 AM, Marco Cisternino <span dir="ltr"><<a href="mailto:marco.cisternino@optimad.it" target="_blank">marco.cisternino@optimad.it</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi duners,<br>
I have a problem with dune modules common, geometry, grid, subgrid, alugrid building<br>
Everything works fine, apparently, but making a new default module I cannot get the helper working in parallel<br>
<br>
My file opts<br>
CMAKE_FLAGS="CMAKE_CXX_COMPILER=mpicxx CMAKE_C_COMPILER=mpicc --enable-parallel --disable-documentation --with-metis --with-parmetis -enable-experimental-grid-extensions --with-lapack --with-blas"<br>
<br>
The default code enriched by some calls to MPI routines:<br>
#ifdef HAVE_CONFIG_H<br>
# include "config.h"<br>
#endif<br>
#include <iostream><br>
#include <dune/common/parallel/mpihelper.hh> // An initializer of MPI<br>
#include <dune/common/exceptions.hh> // We use exceptions<br>
#include <mpi.h><br>
<br>
int main(int argc, char** argv)<br>
{<br>
  try{<br>
    MPI_Init(&argc,&argv);<br>
    // Maybe initialize MPI<br>
    Dune::MPIHelper& helper = Dune::MPIHelper::instance(argc, argv);<br>
    std::cout << "Hello World! This is intersectionBug." << std::endl;<br>
    int rank;<br>
    MPI_Comm_rank(MPI_COMM_WORLD,&rank);<br>
    std::cout << "I'm" << rank << " " << helper.rank()<< std::endl;<br>
    if(Dune::MPIHelper::isFake)<br>
      std::cout<< "This is a sequential program." << std::endl;<br>
    else<br>
      std::cout<<"I am rank "<<helper.rank()<<" of "<<helper.size()<br>
        <<" processes!"<<std::endl;<br>
    MPI_Finalize();<br>
  }<br>
  catch (Dune::Exception &e){<br>
    std::cerr << "Dune reported error: " << e << std::endl;<br>
  }<br>
  catch (...){<br>
    std::cerr << "Unknown exception thrown!" << std::endl;<br>
  }<br>
}<br>
<br>
Direct calls to MPI routines work fine giving parallel outputs. I had to add explicit call to MPI_Init because MPI is not initialize by the helper instance method.<br>
Instead, helper methods answer like the code is sequential.<br>
Probably my opts file is wrong... I'm using a very old one adapted for cmake<br>
<br>
If you need more information about modules building, just ask, please.<br>
Thanks for you help.<br>
<br>
Marco<br>
<br>
_______________________________________________<br>
Dune mailing list<br>
<a href="mailto:Dune@dune-project.org">Dune@dune-project.org</a><br>
<a href="http://lists.dune-project.org/mailman/listinfo/dune" rel="noreferrer" target="_blank">http://lists.dune-project.org/mailman/listinfo/dune</a><br>
</blockquote></div><br></div>