> On 29 Jun 2020, at 9:37 PM, Pierre Jolivet <pierre.joli...@enseeiht.fr> wrote: > > I do not give up easily on Windows problems: > 1) that’s around 50% of our (FreeFEM) user-base (and I want them to use PETSc > and SLEPc, ofc…) > 2) most people I work with from corporations just have Windows > laptops/desktops and I always recommend MSYS because it’s very lightweight > and you can pass .exe around > 3) I’ve bothered enough Satish, Jed, and Matt on GitLab to take (at least > partially) the blame now when it doesn’t work on MSYS > > That being said, the magic keyword is the added flag > FFLAGS="-fallow-invalid-boz" (see, I told you ./configure issues were easier > to deal with than the others). > Here you’ll see that everything goes through just fine (sorry, it took me a > long time to post this because everything is slow on my VM): > 1) http://jolivet.perso.enseeiht.fr/win10/configure.log > <http://jolivet.perso.enseeiht.fr/win10/configure.log> > 2) http://jolivet.perso.enseeiht.fr/win10/make.log > <http://jolivet.perso.enseeiht.fr/win10/make.log> (both steps #1 and #2 in > MSYS terminal, gcc/gfortran 10, MS-MPI see screenshot) > 3) http://jolivet.perso.enseeiht.fr/win10/ex2.txt > <http://jolivet.perso.enseeiht.fr/win10/ex2.txt> (Command Prompt, 4 processes > + MUMPS, I can send you the .exe if you want to try on your machine) > I just realize that I didn’t generate the Fortran bindings, but you can see I > compiled MUMPS and ScaLAPACK, so that shouldn’t be a problem. > Or if there is a problem, we will need to fix this in PETSc. > > I’ll push this added flag to the FreeFEM repo
Sorry for the noise, but maybe it’s better to put this in PETSc ./configure, like you did here Satish https://gitlab.com/petsc/petsc/-/commit/2cd8068296b34e127f055bb32f556e3599f17523 <https://gitlab.com/petsc/petsc/-/commit/2cd8068296b34e127f055bb32f556e3599f17523> ? If Gfortran100 && MS-MPI, then FFLAGS += "-fallow-invalid-boz" WDY(PETSc-)GT? Thanks, Pierre > thanks for reminding me of the brokenness of gcc/gfortran 10 + MS-MPI. > Here is to hoping this won’t affect PETSc ./configure with previous > gcc/gfortran version (unlikely, this option is apparently 13-year old > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=29471 > <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=29471>) > > Let me know of the next hiccup, if any. > Thanks, > Pierre > >> On 29 Jun 2020, at 8:09 PM, Paolo Lampitella <paololampite...@hotmail.com >> <mailto:paololampite...@hotmail.com>> wrote: >> >> Dear Pierre, >> >> thanks again for your time >> >> I guess there is no way for me to use the toolchain you are using (I don’t >> remember having any choice on which version of MSYS or GCC I could install) >> >> Paolo >> >> Inviato da Posta <https://go.microsoft.com/fwlink/?LinkId=550986> per >> Windows 10 >> >> Da: Pierre Jolivet <mailto:pierre.joli...@enseeiht.fr> >> Inviato: lunedì 29 giugno 2020 20:01 >> A: Matthew Knepley <mailto:knep...@gmail.com> >> Cc: Paolo Lampitella <mailto:paololampite...@hotmail.com>; petsc-users >> <mailto:petsc-users@mcs.anl.gov> >> Oggetto: Re: [petsc-users] PETSc and Windows 10 >> >> >> >> >> On 29 Jun 2020, at 7:47 PM, Matthew Knepley <knep...@gmail.com >> <mailto:knep...@gmail.com>> wrote: >> >> On Mon, Jun 29, 2020 at 1:35 PM Paolo Lampitella >> <paololampite...@hotmail.com <mailto:paololampite...@hotmail.com>> wrote: >> Dear Pierre, sorry to bother you, but I already have some issues. What I did: >> >> pacman -R mingw-w64-x86_64-python mingw-w64-x86_64-gdb (is gdb also >> troublesome?) >> Followed points 6 and 7 at >> https://doc.freefem.org/introduction/installation.html#compilation-on-windows >> >> <https://doc.freefem.org/introduction/installation.html#compilation-on-windows> >> I first got a warning on the configure at point 6, as –disable-hips is not >> recognized. Then, on make ‘petsc-slepc’ of point 7 (no SUDO=sudo flag was >> necessary) I got to this point: >> >> tar xzf ../pkg/petsc-lite-3.13.0.tar.gz >> patch -p1 < petsc-suitesparse.patch >> patching file petsc-3.13.0/config/BuildSystem/config/packages/SuiteSparse.py >> touch petsc-3.13.0/tag-tar >> cd petsc-3.13.0 && ./configure MAKEFLAGS='' \ >> --prefix=/home/paolo/freefem/ff-petsc//r \ >> --with-debugging=0 COPTFLAGS='-O3 -mtune=generic' CXXOPTFLAGS='-O3 >> -mtune=generic' FOPTFLAGS='-O3 -mtune=generic' --with-cxx-dialect=C++11 >> --with-ssl=0 --with-x=0 --with-fortran-bindings=0 --with-shared-libraries=0 >> --with-cc='gcc' --with-cxx='g++' --with-fc='gfortran' >> CXXFLAGS='-fno-stack-protector' CFLAGS='-fno-stack-protector' >> --with-scalar-type=real --with-mpi-lib='/c/Windows/System32/msmpi.dll' >> --with-mpi-include='/home/paolo/FreeFem-sources/3rdparty/include/msmpi' >> --with-mpiexec='/C/Program\ Files/Microsoft\ MPI/Bin/mpiexec' >> --with-blaslapack-include='' >> --with-blaslapack-lib='/mingw64/bin/libopenblas.dll' --download-scalapack >> --download-metis --download-ptscotch --download-mumps --download-hypre >> --download-parmetis --download-superlu --download-suitesparse >> --download-tetgen --download-slepc '--download-metis-cmake-arguments=-G >> "MSYS Makefiles"' '--download-parmetis-cmake-arguments=-G "MSYS Makefiles"' >> '--download-superlu-cmake-arguments=-G "MSYS Makefiles"' >> '--download-hypre-configure-arguments=--build=x86_64-linux-gnu >> --host=x86_64-linux-gnu' PETSC_ARCH=fr >> =============================================================================== >> Configuring PETSc to compile on your system >> =============================================================================== >> TESTING: FortranMPICheck from >> config.packages.MPI(config/BuildSystem/config/pack******************************************************************************* >> UNABLE to CONFIGURE with GIVEN OPTIONS (see configure.log for >> details): >> ------------------------------------------------------------------------------- >> Fortran error! mpi_init() could not be located! >> ******************************************************************************* >> >> make: *** [Makefile:210: petsc-3.13.0/tag-conf-real] Errore 1 >> >> Note that I didn’t add anything to any PATH variable, because this is not >> mentioned in your documentation. >> >> On a side note, this is the same error I got when trying to build PETSc in >> Cygwin with the default OpenMPI available in Cygwin. >> >> I am attaching the configure.log… it seems to me that the error comes from >> the configure trying to include the mpif.h in your folder and not using the >> -fallow-invalid-boz flag that I had to use, for example, to compile mpi.f90 >> into mpi.mod >> >> But I’m not sure why this is happening >> >> Pierre, >> >> Could this be due to gcc 10? >> >> Sorry, I’m slow. You are right. Our workers use gcc 9, everything is fine, >> but I see on my VM which I updated that I use gcc 10 and had to disable >> Fortran, I guess the MUMPS run I showcased was with a prior PETSc build. >> I’ll try to resolve this and will keep you posted. >> They really caught a lot of people off guard with gfortran 10… >> >> Thanks, >> Pierre >> >> >> Executing: gfortran -c -o /tmp/petsc-ur0cff6a/config.libraries/conftest.o >> -I/tmp/petsc-ur0cff6a/config.compilers >> -I/tmp/petsc-ur0cff6a/config.setCompilers >> -I/tmp/petsc-ur0cff6a/config.compilersFortran >> -I/tmp/petsc-ur0cff6a/config.libraries -Wall -ffree-line-length-0 >> -Wno-unused-dummy-argument -O3 -mtune=generic >> -I/home/paolo/FreeFem-sources/3rdparty/include/msmpi >> /tmp/petsc-ur0cff6a/config.libraries/conftest.F90 >> Possible ERROR while running compiler: exit code 1 >> stderr: >> C:/msys64/home/paolo/FreeFem-sources/3rdparty/include/msmpi/mpif.h:227:36: >> >> 227 | PARAMETER (MPI_DATATYPE_NULL=z'0c000000') >> | 1 >> Error: BOZ literal constant at (1) is neither a data-stmt-constant nor an >> actual argument to INT, REAL, DBLE, or CMPLX intrinsic function [see >> '-fno-allow-invalid-boz'] >> C:/msys64/home/paolo/FreeFem-sources/3rdparty/include/msmpi/mpif.h:303:27: >> >> 303 | PARAMETER (MPI_CHAR=z'4c000101') >> | 1 >> Error: BOZ literal constant at (1) is neither a data-stmt-constant nor an >> actual argument to INT, REAL, DBLE, or CMPLX intrinsic function [see >> '-fno-allow-invalid-boz'] >> C:/msys64/home/paolo/FreeFem-sources/3rdparty/include/msmpi/mpif.h:305:36: >> >> 305 | PARAMETER (MPI_UNSIGNED_CHAR=z'4c000102') >> | 1 >> >> Thanks, >> >> Matt >> >> Thanks >> >> Paolo >> >> Inviato da Posta <https://go.microsoft.com/fwlink/?LinkId=550986> per >> Windows 10 >> >> Da: Pierre Jolivet <mailto:pierre.joli...@enseeiht.fr> >> Inviato: lunedì 29 giugno 2020 18:34 >> A: Paolo Lampitella <mailto:paololampite...@hotmail.com> >> Cc: Satish Balay <mailto:ba...@mcs.anl.gov>; petsc-users >> <mailto:petsc-users@mcs.anl.gov> >> Oggetto: Re: [petsc-users] PETSc and Windows 10 >> >> >> >> >> On 29 Jun 2020, at 6:27 PM, Paolo Lampitella <paololampite...@hotmail.com >> <mailto:paololampite...@hotmail.com>> wrote: >> >> I think I made the first step of having mingw64 from msys2 working with >> ms-mpi. >> >> I found that the issue I was having was related to: >> >> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91556 >> <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91556> >> >> and, probably (but impossible to check now), I was using an msys2 and/or >> mingw mpi package before this fix: >> >> https://github.com/msys2/MINGW-packages/commit/11b4cff3d2ec7411037b692b0ad5a9f3e9b9978d#diff-eac59989e3096be97d940c8f47b50fba >> >> <https://github.com/msys2/MINGW-packages/commit/11b4cff3d2ec7411037b692b0ad5a9f3e9b9978d#diff-eac59989e3096be97d940c8f47b50fba> >> >> Admittedly, I never used gcc 10 before on any machine. Still, I feel that >> reporting that sort of error in that way is, >> at least, misleading (I would have preferred the initial implementation as >> mentioned in the gcc bug track). >> >> A second thing that I was not used to, and made me more uncertain of the >> procedure I was following, is having to compile myself the mpi module. There >> are several version of this out there, but I decided to stick with this one: >> >> https://www.scivision.dev/windows-mpi-msys2/ >> <https://www.scivision.dev/windows-mpi-msys2/> >> >> even if there seems to be no need to include -fno-range-check and the >> current mpi.f90 version is different from the mpif.h as reported here: >> >> https://github.com/microsoft/Microsoft-MPI/issues/33 >> <https://github.com/microsoft/Microsoft-MPI/issues/33> >> >> which, to me, are both signs of lack of attention on the fortran side by >> those that maintain this thing. >> >> In summary, this is the procedure I followed so far (on a 64 bit machine >> with Windows 10): >> >> Install MSYS2 from https://www.msys2.org/ <https://www.msys2.org/> and just >> follow the install wizard >> Open the MSYS2 terminal and execute: pacman -Syuu >> Close the terminal when asked and reopen it >> Keep executing ‘pacman -Syuu’ until nothing else needs to be updated >> Close the MSYS2 terminal and reopen it (I guess because was in paranoid >> mode), then install packages with: >> >> pacman -S base-devel git gcc gcc-fortran bsdcpio lndir pax-git unzip >> pacman -S mingw-w64-x86_64-toolchain >> pacman -S mingw-w64-x86_64-msmpi >> pacman -S mingw-w64-x86_64-cmake >> pacman -S mingw-w64-x86_64-freeglut >> pacman -S mingw-w64-x86_64-gsl >> pacman -S mingw-w64-x86_64-libmicroutils >> pacman -S mingw-w64-x86_64-hdf5 >> pacman -S mingw-w64-x86_64-openblas >> pacman -S mingw-w64-x86_64-arpack >> pacman -S mingw-w64-x86_64-jq >> >> This set should include all the libraries mentioned by Pierre and/or used by >> his Jenkins, as the final scope here is to have PETSc and dependencies >> working. But I think that for pure MPI one could stop to msmpi (even, maybe, >> just install msmpi and have the dependencies figured out by pacman). >> Honestly, I don’t remember the exact order I used to install the packages, >> but this should not affect things. Also, as I was still in paranoid mode, I >> kept executing ‘pacman -Syuu’ after each package was installed. After this, >> close the MSYS2 terminal. >> >> Open the MINGW64 terminal and create the .mod file out of the mpi.f90 file, >> as mentioned here https://www.scivision.dev/windows-mpi-msys2/ >> <https://www.scivision.dev/windows-mpi-msys2/>, with: >> >> cd /mingw64/include >> gfortran mpif90 -c -fno-range-check -fallow-invalid-boz >> >> Ah, yes, that’s new to gfortran 10 (we use gfortran 9 on our workers), which >> is now what’s ship with MSYS2 (we haven’t updated yet). Sorry that I forgot >> about that. >> >> >> This is needed to ‘USE mpi’ (as opposed to INCLUDE ‘mpif.h’) >> >> Install the latest MS-MPI (both sdk and setup) from >> https://www.microsoft.com/en-us/download/details.aspx?id=100593 >> <https://www.microsoft.com/en-us/download/details.aspx?id=100593> >> >> At this point I’ve been able to compile (using the MINGW64 terminal) >> different mpi test programs and they run as expected in the classical >> Windows prompt. I added this function to my .bashrc in MSYS2 in order to >> easily copy the required dependencies out of MSYS: >> >> function copydep() { ldd $1 | grep "=> /$2" | awk '{print $3}' | xargs -I >> '{}' cp -v '{}' .; } >> >> which can be used, with the MINGW64 terminal, by navigating to the folder >> where the final executable, say, my.exe, resides (even if under a Windows >> path) and executing: >> >> copydep my.exe mingw64 >> >> This, of course, must be done before actually trying to execute the .exe in >> the windows cmd prompt. >> >> Hopefully, I should now be able to follow Pierre’s instructions for PETSc >> (but first I wanna give a try to the system python before removing it) >> >> Looks like the hard part is over. It’s usually easier to deal with >> ./configure issues. >> If you have weird errors like “incomplete Cygwin install” or whatever, this >> is the kind of issues I was referring to earlier. >> In that case, what I’d suggest is just, as before: >> pacman -R mingw-w64-x86_64-python mingw-w64-x86_64-gdb >> pacman -S python >> >> Thanks, >> Pierre >> >> >> Thanks >> >> Paolo >> >> >> >> >> -- >> What most experimenters take for granted before they begin their experiments >> is infinitely more interesting than any results to which their experiments >> lead. >> -- Norbert Wiener >> >> https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>