Closed tmbgreaves closed 2 years ago
@stephankramer - I wonder if you might be able to take a look at the Impish build, which I've set up with PETSc 3.15 built from the Debian Experimental package, aiming to avoid the issues you reported in 3.14. I'm seeing what I think is a PETSc-related build failure at the moment:
https://github.com/FluidityProject/fluidity/runs/3913986145?check_suite_focus=true
This is also using the gcc11 toolchain from Impish, aiming to get a first look at what will be landing in 22.04.
Thank you! :-)
Build environment available with:
docker run -it fluidity/baseimages:impish bash -il
And the Docker build for that failure is via the Dockerfile at:
Thank you very much @stephankramer :-) That's got through to linking now and reporting issues with Zoltan linking which I'll hack at when I get some time.
I tried to have a look, but, admittedly, I do not understand Fortran linker errors. Traceback available here.
Looks like the configure might be picking up the wrong Zoltan. In the flags for the failing command, there is -ltrilinos_zoltan
, but this doesn't reference the Zoltan installed through Fluidity's libzoltan
package (available just as -lzoltan
). Within the Docker image:
fluidity@c49083418931:~$ cat test.f90
program test
use zoltan
use mpi
implicit none
type(zoltan_struct), pointer :: zz
zz => Zoltan_Create(MPI_COMM_WORLD)
print *, 'hello world'
end program
# successful link with the right flag
fluidity@c49083418931:~$ mpif90 test.f90 -I/usr/include -lzoltan -lptscotch -lmetis -lparmetis
# unsuccessful link with the flag picked up in the configure
fluidity@c49083418931:~$ mpif90 test.f90 -I/usr/include -ltrilinos_zoltan -lptscotch -lmetis -lparmetis
/usr/bin/ld: /tmp/cc2D80zI.o: in function `MAIN__':
test.f90:(.text+0x16): undefined reference to `__zoltan_MOD_zf90_create'
collect2: error: ld returned 1 exit status
Thanks @angus-g!
From what I can see, we have checking zoltan automagic... yes, which means that this bloc of code is never executed. Is it worth trying to force the execution of the latter or should the bloc of code above be changed?
Looking at other Actions workflows I had running recently, all of them had checking zoltan automagic... no
. Therefore, I forced manual configuration of zoltan, and the build passed.
Yeah the issue is that we have always packaged zoltan for ourselves (see libzoltan and libzoltan-dev in https://launchpad.net/~fluidity-core/+archive/ubuntu/ppa/+packages) - I think the main reason being that the official Debian/Ubuntu packages (now built as part of the entire trilinos project: libtrilinos-zoltan-dev and libtrilinos12-dev) are not built with the fortran interface, so it does not have a zoltan.mod file. What's changed is that now also the official Debian/Ubuntu petsc package is linked with that zoltan from libtrilinos-zoltan12, and that it therefore adds a -ltrilinos_zoltan
and therefore at the linking stage it picks up that library instead of the one from our own libzoltan(-dev).
I suspect trying to link to two different libzoltan's - our own that we call directly from fluidity and linked with -lzoltan and simultaneously also link with petsc and thus also with -ltrilinos_zoltan - even if possible, is just going to create havoc and be extremely sensitive to link line ordering.
So the two alternatives are:
I'll have a go at option 2. as I think it would be good if indeed we could drop the need for our own petsc packages - we would then only need a rebuild with hopefully very minor modification of the libtrilinos zoltan package.
This is ready to review now: all tests are passing on Impish
Main changes:
The main snag is that I found out that despite what it says in the commited baseimages for Bionic and Focal, we are not actually using gmsh 4.8 yet in the testing, instead the baseimages on Dockerhub (which the tests are run in) are still at a6d6bab770326ce8294ee48c5036fa3fff472f66 - meaning that all tests are currently run using gmsh 2.6
Upgrading to a downloaded gmsh 4.8/4.9 (or the 4.7 package that is available in Impish) obviously upsets quite a few tests that are grid-sensitive so I propose we deal with this in a separate PR
This PR opens testing on Impish. Although we don't intend to offer formal Fluidity support for Impish, it's a useful starting point for early development on 22.04 LTS, which Fluidity should support, and which should be roughly the same as Impish at first.