On 08/11/17 08:33, Drew Parsons wrote:
On Tue, 2017-11-07 at 12:07 +0100, Matteo Semplice wrote:On 07/11/17 04:12, Drew Parsons wrote:You've got 4 options: 1) scotch support is activated. scotch provides the same functionality as parmetis. Can you use it instead?In principle, yes, anything better than the "simple" partitioner would be ok for me at present. In practice, however, it does not seem to work....Here I guess that the issue is that petsc 3.7 does not include scotch support (http://www.mcs.anl.gov/petsc/petsc-3.7/docs/manualpages/DM/PetscPart itionerType.html), whereas 3.8 does include it. Unless I am doing something wrong here, for this option I would need 3.8 and since this is not in debian yet, I would need to compile it locally from source.Annoying if it doesn't work easily. 3.7 should have scotch support already, we'd need to debug more deeply to understand what's wrong. Perhaps you mean specifically the PETSCPARTITIONERPTSCOTCH interface. 3.8 is on it's way in. In the meantime you could build the debian packages from the repo at https://anonscm.debian.org/cgit/debian-science/packages/petsc.git/ (experimental branch)2) scotch provides a compatibility interface that parmetis clients are supposed to be able to link against, see libscotchparmetis-dev.This would be probably the best solution for stable (and testing, if 3.8 will not get into it). I installed libscotchparmetis-dev which replaced libparmetis-dev, but it must not be sufficient,Yeah, it will be the same problem actually: PETSc will need to be built with parmetis support (even if provided by scotch). Sadly I tested it. petsc doesn't (yet) build cleanly against libscotchparmetis-dev. Looks like the scotchparmetis interface only provides partial compatibility, but PETSc demands full compatibility. Might need some dedicated hacking time to sort out.3) Rebuild petsc locally, with parmetis support activated. - this actually should not be difficult to do. We can write the instructions into our petsc build scripts if needed.Depending on the petsc config on the cluster I'll be making the real runs on, I might end up having to build petsc in my home directory for the final code, but I'd prefer a debian solution for the code development since both myself and my collaborators are running debian stable.It will be a debian solution: what I mean by rebuilding is to build a local copy of the deb packages. Then you can install them for the system in place of the official package. The basic procedure is $ apt-get source petsc ... hack debian/rules to add --with-metis --with-metis-include=/usr/include --with-metis-lib="-lmetis" \ --with-parmetis --with-parmetis-include=/usr/include --with-parmetis-lib="-lparmetis" \ to CONFIGURATION_OPTIONS. $ dch --nmu (add a comment to the changelog) $ dpkg-buildpackage That's pretty much it (obviously, install the packages for apt-get, dch, dpkg-buildpackage and build-depends). (same idea for building 3.8, but start with git clone in place of apt-get source) I recommend trying to build the 3.8 deb package with parmetis support activated. Then you can test PETSCPARTITIONERPTSCOTCH again using 3.8, but will have parmetis support in any case. Drew
Hi Drew,I cloned the git repo, switched to experimental branch, branched off again to "local" to make my changes but it does not compile. So I returned to experimental and realized that I cannot even compile the experimental branch without modifications:
matteo@signalkuppe:~/software/petsc$ git branch -vv* experimental 4b7653fcb [origin/experimental] upload 3.8.0+dfsg1-1exp1 to experimental
local 4b7653fcb upload 3.8.0+dfsg1-1exp1 to experimental master f4811ce9c [origin/master] upload 3.7.7+dfsg1-2 to unstable matteo@signalkuppe:~/software/petsc$ git diff matteo@signalkuppe:~/software/petsc$ dpkg-buildpackage dpkg-buildpackage: info: source package petsc dpkg-buildpackage: info: source version 3.8.0+dfsg1-1exp1 dpkg-buildpackage: info: source distribution experimentaldpkg-buildpackage: info: source changed by Drew Parsons <dparsons@debian.org>
dpkg-buildpackage: info: host architecture amd64 dpkg-source --before-build petsc fakeroot debian/rules clean dh clean --with python2 dh_testdir debian/rules override_dh_auto_clean make[1]: ingresso nella directory "/home/matteo/software/petsc" if [ -d x86_64-linux-gnu-real-debug ]; then \ dh_auto_clean -plibpetsc-real3.8-dbg -ppetsc3.8-doc -- \PETSC_DIR=/home/matteo/software/petsc PETSC_ARCH=x86_64-linux-gnu-real-debug; \
fimake -j8 distclean PETSC_DIR=/home/matteo/software/petsc PETSC_ARCH=x86_64-linux-gnu-real-debug
make[2]: ingresso nella directory "/home/matteo/software/petsc"makefile:15: x86_64-linux-gnu-real-debug/lib/petsc/conf/petscvariables: File o directory non esistente /home/matteo/software/petsc/lib/petsc/conf/variables:118: /home/matteo/software/petsc/x86_64-linux-gnu-real-debug/lib/petsc/conf/petscvariables: File o directory non esistente /home/matteo/software/petsc/lib/petsc/conf/rules:972: /home/matteo/software/petsc/x86_64-linux-gnu-real-debug/lib/petsc/conf/petscrules: File o directory non esistente make[2]: *** Nessuna regola per generare l'obiettivo "/home/matteo/software/petsc/x86_64-linux-gnu-real-debug/lib/petsc/conf/petscrules". Arresto.
make[2]: uscita dalla directory "/home/matteo/software/petsc"dh_auto_clean: make -j8 distclean PETSC_DIR=/home/matteo/software/petsc PETSC_ARCH=x86_64-linux-gnu-real-debug returned exit code 2 debian/rules:121: set di istruzioni per l'obiettivo "override_dh_auto_clean" non riuscito
make[1]: *** [override_dh_auto_clean] Errore 2 make[1]: uscita dalla directory "/home/matteo/software/petsc" debian/rules:118: set di istruzioni per l'obiettivo "clean" non riuscito make: *** [clean] Errore 2dpkg-buildpackage: error: fakeroot debian/rules clean gave error exit status 2
I am sorry for the italian in the output, butmake[2]: *** Nessuna regola per generare l'obiettivo "/home/matteo/software/petsc/x86_64-linux-gnu-real-debug/lib/petsc/conf/petscrules". Arresto.
should be somthing likemake[2]: *** No rule to generate "/home/matteo/software/petsc/x86_64-linux-gnu-real-debug/lib/petsc/conf/petscrules". Stopping.
anddebian/rules:121: set di istruzioni per l'obiettivo "override_dh_auto_clean" non riuscito
meansdebian/rules:121: instruction set for "override_dh_auto_clean" did not succeed
I am no expert of build-package... Would you have any suggestion? Matteo