<div dir="ltr"><div dir="ltr">On Thu, Nov 25, 2021 at 2:29 PM Fabio Rossi via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov">petsc-users@mcs.anl.gov</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Thanks for the reply. <br>
<br>
I am using the system fftw which is provided by the distribution so I am not going to install it by using PETSC's install scripts.<br>
<br>
I am sorry but I am not confident with the PETSC building system. What happens if mpi is installed but the user prefers to compile PETSC with --with-mpi=0 configure option? In that case self.mpi.found would be true?<br>
<br>
Regarding fftw.c, basically the functions to modify are:<br>
<br>
extern PetscErrorCode MatMult_SeqFFTW(Mat,Vec,Vec);<br>
extern PetscErrorCode MatMultTranspose_SeqFFTW(Mat,Vec,Vec);<br>
extern PetscErrorCode MatMult_MPIFFTW(Mat,Vec,Vec);<br>
extern PetscErrorCode MatMultTranspose_MPIFFTW(Mat,Vec,Vec);<br>
extern PetscErrorCode MatDestroy_FFTW(Mat);<br>
extern PetscErrorCode VecDestroy_MPIFFTW(Vec);<br>
extern PetscErrorCode MatCreateVecsFFTW_FFTW(Mat,Vec*,Vec*,Vec*);<br>
PETSC_EXTERN PetscErrorCode MatCreate_FFTW(Mat A)<br>
<br>
The *MPI* function should exist only with PETSC_HAVE_MPI true while inside the other functions the number of processors (detected inside the variable "size") should be initialized to 1 and support the parallel case only when PETSC_HAVE_MPI is true.<br>
<br>
As a user of the PETSC library and not programmer (I need to build another library which requires it), I want to put your attention to the documentation at<br>
<br>
<a href="https://petsc.org/release/install/install/#doc-config-externalpack" rel="noreferrer" target="_blank">https://petsc.org/release/install/install/#doc-config-externalpack</a><br>
<br>
where it's written "PETSc may be built and run without MPI support if processing only in serial."<br></blockquote><div><br></div><div>This is true, but we cannot control our dependencies.</div><div><br></div><div>  Thanks,</div><div><br></div><div>    Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
which then seems to be true for PETSc itself but not for its dependencies because the interface to fftw, right now, depends on MPI. That's the reason of this new thread in the mailing list :-)<br>
<br>
Fabio<br>
<br>
> Il 25/11/2021 17:27 Barry Smith <<a href="mailto:bsmith@petsc.dev" target="_blank">bsmith@petsc.dev</a>> ha scritto:<br>
> <br>
>  <br>
> PETSc's install and use of fftw always requires MPI. <br>
> <br>
>   The code in config/BuildSystem/config/packages/fftw.py and src/mat/impls/fft/fftw/fftw.c could relatively easily be "fixed" to also support building and using FFTW without MPI.  <br>
> <br>
>    Just change the fftw.py to conditionally pass in args.append('--enable-mpi') if self.mpi.found and change  <br>
> <br>
>  self.deps = [self.mpi,self.blasLapack]<br>
> <br>
>  to <br>
> <br>
>  self.deps = [self.blasLapack] <br>
>  self.odeps = [self.mpi]<br>
> <br>
> and in fftw.c add #if defined(PETSC_HAVE_MPI) around the parts of the code that depend on MPI.<br>
> <br>
> We'd welcome a merge request with these enhancements.<br>
> <br>
> Barry<br>
> <br>
> <br>
> > On Nov 25, 2021, at 5:15 AM, Fabio Rossi via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov" target="_blank">petsc-users@mcs.anl.gov</a>> wrote:<br>
> > <br>
> > I am trying to compile petsc with the following options (Gentoo build system):<br>
> > <br>
> > ./configure --prefix=/usr --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib --libdir=/usr/lib64/petsc/lib64 scrollOutput=1 FFLAGS=-O2 -pipe -fPIC CFLAGS=-march=core2 -O2 -pipe -fPIC CXXFLAGS=-march=core2 -O2 -pipe -fPIC LDFLAGS=-Wl,-O1 -Wl,--as-needed --prefix=/usr/lib64/petsc --with-shared-libraries --with-single-library --with-clanguage=c --with-petsc-arch=linux-gnu-c-opt --with-precision=double --with-gnu-compilers --with-blas-lapack-lib=-lblas -llapack  --with-debugging=0 --with-mpi=0 --with-cc=x86_64-pc-linux-gnu-gcc --with-cxx=x86_64-pc-linux-gnu-g++ --with-fortran=1 --with-fc=x86_64-pc-linux-gnu-gfortran --with-mpi-compilers=0 --with-scalar-type=real --with-windows-graphics=0 --with-matlab=0 --with-cmake:BOOL=1 --with-pthread=1 --with-afterimage=0 --without-hdf5 --with-hypre=0 --without-suitesparse --with-superlu=0 --with-x --with-x11 --with-ptscot<br>
 ch=0<br>
> >  --with-<br>
> > scalapack=0 --without-mumps --with-imagemagick=0 --with-python=0 --with-boost --with-fftw<br>
> > <br>
> > so MPI support is disabled, and I get the following configure error:<br>
> > <br>
> > TESTING: consistencyChecks from config.packages.fftw(/var/tmp/portage/sci-mathematics/petsc-3.15.0/work/petsc-3.15.0/config/BuildSystem/config/package.py:963)<br>
> > TESTING: checkDependencies from config.packages.fftw(/var/tmp/portage/sci-mathematics/petsc-3.15.0/work/petsc-3.15.0/config/BuildSystem/config/package.py:872)<br>
> > *******************************************************************************<br>
> >         UNABLE to CONFIGURE with GIVEN OPTIONS    (see configure.log for details):<br>
> > -------------------------------------------------------------------------------<br>
> > Did not find package MPI needed by fftw.<br>
> > Enable the package using --with-mpi<br>
> > <br>
> > Isn't MPI optional? Where is the error coming from?<br>
> > <br>
> > If I disable fftw then it compiles successfully.<br>
> > <br>
> > Fabio<br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener</div><div><br></div><div><a href="http://www.cse.buffalo.edu/~knepley/" target="_blank">https://www.cse.buffalo.edu/~knepley/</a><br></div></div></div></div></div></div></div></div>