Hi all, after a long time I've finally succeeded in compiling a 64 bit parallel version of Petsc for Windows. All tries with MPICH2 failed. It is known to have problems with newer 64 bit Windows (e.g. with UAC). Therefore I gave Microsoft's MPI (which is also free of charge) a try. Unfortunately there are some problems when using mingw compilers. (Some Fortran symbol names are not compatible). So it does not work out of the box. But the problems can easily be solved.
Here is the way it works: Preparing Microsoft's MPI to work with x86_64-w64-mingw32-gfortran 0.) You need Cygwin. Please make sure that the Devel tools and Python are installed. 1.) Download Microsoft's "HPC Pack 2008 R2 MS-MPI Redistributable Package": http://www.microsoft.com/en-us/download/details.aspx?id=14737 2.) Install it in a Directory without any spaces in the path/folder name 3.) Insert the following line at the beginning of the file InstallationPath\Inc\mpi.h #include <stdint.h> 4.) In the file InstallationPath\Inc\mpif.h replace INT_PTR_KIND() by 8 5.) Copy C:\Windows\System32\msmpi.dll to InstallationPath\Lib\amd64\msmpi.dll 6.) In a Cygwin terminal please enter the following: cd /cygdrive/c/your/HPC/installation/path/Lib/amd64 gendef msmpi.dll x86_64-w64-mingw32-dlltool -d msmpi.def -l libmsmpi.a -D msmpi.dll This creates a library (libmsmpi.a) which now works with x86_64-w64-mingw32-gfortran. Compiling Petsc 7.) Download Petsc v3.1-p8: petsc-3.1-p8.tar.gz<http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-3.1-p8.tar.gz> (or http://www.mcs.anl.gov/petsc/download/index.html) 8.) Untar it (In a Cygwin terminal go to the folder where you've downloaded petsc-3.1-p8.tar.gz<http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-3.1-p8.tar.gz> and type: tar -xzvf petsc-3.1-p8.tar.gz) and enter this directory (cd petsc-3.1-p8). 9.) Edit the file src/sys/memory/mal.c: Change in line 39 (unsigned long) to (unsigned long long) 10.) Edit the file include/mpiuni/mpi.h: Change in line 112 #define MPIUNI_INTPTR long to: #define MPIUNI_INTPTR long long 11.) Set the PATH variable in the Cygwin terminal: export PATH=/usr/x86_64-w64-mingw32/bin:/usr/x86_64-w64-mingw32/sys-root/mingw/bin:/usr/local/bin:/usr/bin:/bin: / cygdrive/c/your/HPC/installation/path/Bin:$PATH 12.) Configure PETSc with the command given below in the Cygwin shell. Please adapt your mpi path and choose with-scalar-type=complex or with-scalar-type=real according your needs. Please note: GetDP can solve problems with real or complex DOFs regardless the scalar-type of Petsc. In this context the scalar-type is just an optimization in terms of speed and memory consumption. ./configure --CC=x86_64-w64-mingw32-gcc.exe --CXX=x86_64-w64-mingw32-g++.exe --FC="x86_64-w64-mingw32-gfortran.exe -fno-range-check" --CPP=x86_64-w64-mingw32-cpp.exe --with-debugging=0 --with-clanguage=cxx --with-shared=0 --with-x=0 --useThreads=0 --download-f-blas-lapac=ifneeded --download-mumps=ifneeded --download-parmetis=ifneeded --download-scalapack=ifneeded --download-blacs=ifneeded --with-scalar-type=complex --with-mpi-include=/cygdrive/c/your/HPC/installation/path/Inc --with-mpi-lib=/cygdrive/c/your/HPC/installation/path /Lib/amd64/libmsmpi.a 13.) Before Petsc is compiled the file ./cygwin-cxx-opt/include/petscconf.h has to be edited. Replace ( BEWARE: check the number of underscores, don't touch to PETSC_HAVE__SLEEP ) #ifndef PETSC_HAVE_SLEEP #define PETSC_HAVE_SLEEP 1 #endif with #undef PETSC_HAVE_SLEEP and replace #ifndef PETSC_HAVE_GETPAGESIZE #define PETSC_HAVE_GETPAGESIZE 1 #endif with #undef PETSC_HAVE_GETPAGESIZE 14.) Now let's compile it. make PETSC_DIR=/your/path/to/petsc-3.1-p8 PETSC_ARCH=cygwin-cxx-opt all 15.) Drink some coffee and pray that everything works ;-) That's all. Hopefully this is helpful for some of you. Have a nice day! Michael Michael Asam Infineon Technologies AG ATV BP PD1 M1, Munich Infineon Technologies AG Vorsitzender des Aufsichtsrats: Wolfgang Mayrhuber Vorstand: Peter Bauer (Vorsitzender), Dominik Asam, Arunjai Mittal, Dr. Reinhard Ploss Sitz der Gesellschaft: Neubiberg Registergericht: München HRB 126492 _______________________________________________ gmsh mailing list [email protected] http://www.geuz.org/mailman/listinfo/gmsh
