This is needed to build the CUDNN samples, so we should make sure it
winds up in $out/lib. The library is too big to support patchelf, so
we need to skip it. Most programs will still get the opengl path
because it also links to other libraries.
Other changes:
- Move gfortran and cmake to nativeBuildInputs.
- Magma now (only) generates dynamic libraries by default.
- Use ninja for faster builds.
libflame is a protable library for dense matrix computations,
providing a complete LAPACK implementation. The AMD fork of libflame
is optimized for AMD CPUs.
The PETSc library's config/install.py script checks whether
/usr/bin/install_name_tool is an existing file:
https://gitlab.com/petsc/petsc/-/blob/master/config/install.py#L368
Therefore, it is not enough to replace it with something that we expect
to be on the PATH, as this will cause the linked if statement to be
silently skipped. The consequence is that applications linked against
this version of petsc will fail at runtime on MacOS with a dynamic
loading error.
Instead, we should replace install_name_tool with the absolute path of a
binary we know will be present at build time.
Note that this should be fixed upstream as well, but this is sufficient
to fix the runtime error.
We compile specifically for Zen:
- Zen/Zen2 are not included in the x86_64 or amd64 configurations.
- Including them breaks AMD BLIS in other places, since some functions
have Zen-specific definitions that fail on other platforms.
Non-Zen CI runners will succeed when they are Haswell or later, since
a Haswell kernel is compiled as a dependency.
The Intel MKL pkg-config files did not work, because they expect that
the MKLROOT environment variable is set. This change replaces
occurences by the actual path of MKL in the Nix store.
Since the pkg-config files seem to break quite frequently after
upgrades, add a post-install check to validate the pkg-config files.