> On 29 Jun 2020, at 6:27 PM, Paolo Lampitella <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

Reply via email to