[petsc-users] R: PETSc and Windows 10

Paolo Lampitella paololampitella at hotmail.com
Mon Jun 29 11:27:54 CDT 2020


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

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

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/

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

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/ 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/, with:



cd /mingw64/include

gfortran mpif90 -c -fno-range-check -fallow-invalid-boz



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

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)

Thanks

Paolo

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20200629/d97b5cfe/attachment-0001.html>


More information about the petsc-users mailing list