Skip to content

Unclear which provider will be used, when preferences are set in packages.yaml at the package level #27055

@stephenmsachs

Description

@stephenmsachs

Steps to reproduce

I have found an issue with the concretizer not picking up the correct providers when described in packages.yaml. If providers are aded to the command line, e.g. ^intel-mpi ^intel-mkl, all works as expected. Here is one example of intel-mpi not being picked up.

Tagging @tgamblin as discussed yesterday.

The default MPI provider after pulling the develop branch is Open MPI:

[ec2-user@ip-172-31-1-92 spack]$ spack solve gromacs
==> Best of 9 considered solutions.
==> Optimization Criteria:
  Priority  Criterion                                           Value
  1         deprecated versions used                                0
  2         version weight                                          0
  3         number of non-default variants (roots)                  0
  4         preferred providers for roots                           0
  5         number of values in multi valued variants (root)        0
  6         number of non-default variants (non-roots)              0
  7         preferred providers (non-roots)                         0
  8         compiler mismatches                                     0
  9         version badness                                         2
  10        number of values in multi valued variants (non-root)   -8
  11        non-preferred compilers                                 0
  12        target mismatches                                       0
  13        non-preferred targets                                   0

gromacs@2021.3%gcc@7.3.1~blas~cuda~cycle_subcounters~double+hwloc~ipo~lapack~mdrun_only+mpi~nosuffix~opencl+openmp~plumed~relaxed_double_precision+shared~sycl build_type=RelWithDebInfo arch=linux-amzn2-skylake_avx512
    ^cmake@3.21.4%gcc@7.3.1~doc+ncurses+openssl+ownlibs~qt build_type=Release arch=linux-amzn2-skylake_avx512
        ^ncurses@6.2%gcc@7.3.1~symlinks+termlib abi=none arch=linux-amzn2-skylake_avx512
            ^pkgconf@1.8.0%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
        ^openssl@1.1.1l%gcc@7.3.1~docs certs=system arch=linux-amzn2-skylake_avx512
            ^perl@5.34.0%gcc@7.3.1+cpanm+shared+threads arch=linux-amzn2-skylake_avx512
                ^berkeley-db@18.1.40%gcc@7.3.1+cxx~docs+stl patches=b231fcc4d5cff05e5c3a4814f6a5af0e9a966428dc2176540d2c05aff41de522 arch=linux-amzn2-skylake_avx512
                ^bzip2@1.0.8%gcc@7.3.1~debug~pic+shared arch=linux-amzn2-skylake_avx512
                    ^diffutils@3.8%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
                        ^libiconv@1.16%gcc@7.3.1 libs=shared,static arch=linux-amzn2-skylake_avx512
                ^gdbm@1.19%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
                    ^readline@8.1%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
                ^zlib@1.2.11%gcc@7.3.1+optimize+pic+shared arch=linux-amzn2-skylake_avx512
    ^fftw@3.3.10%gcc@7.3.1+mpi~openmp~pfft_patches precision=double,float arch=linux-amzn2-skylake_avx512
        ^openmpi@4.1.1%gcc@7.3.1~atomics~cuda~cxx~cxx_exceptions+gpfs~internal-hwloc~java~legacylaunchers~lustre~memchecker~pmi~pmix~singularity~sqlite3+static~thread_multiple+vt+wrapper-rpath fabrics=none schedulers=none arch=linux-amzn2-skylake_avx512
            ^hwloc@2.5.0%gcc@7.3.1~cairo~cuda~gl~libudev+libxml2~netloc~nvml~opencl+pci~rocm+shared arch=linux-amzn2-skylake_avx512
                ^libpciaccess@0.16%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
                    ^libtool@2.4.6%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
                        ^m4@1.4.19%gcc@7.3.1+sigsegv patches=9dc5fbd0d5cb1037ab1e6d0ecc74a30df218d0a94bdd5a02759a97f62daca573,bfdffa7c2eb01021d5849b36972c069693654ad826c1a20b53534009a4ec7a89 arch=linux-amzn2-skylake_avx512
                            ^libsigsegv@2.13%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
                    ^util-macros@1.19.3%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
                ^libxml2@2.9.12%gcc@7.3.1~python arch=linux-amzn2-skylake_avx512
                    ^xz@5.2.5%gcc@7.3.1~pic libs=shared,static arch=linux-amzn2-skylake_avx512
            ^libevent@2.1.12%gcc@7.3.1+openssl arch=linux-amzn2-skylake_avx512
            ^numactl@2.0.14%gcc@7.3.1 patches=4e1d78cbbb85de625bad28705e748856033eaafab92a66dffd383a3d7e00cc94,62fc8a8bf7665a60e8f4c93ebbd535647cebf74198f7afafec4c085a8825c006,ff37630df599cfabf0740518b91ec8daaf18e8f288b19adaae5364dc1f6b2296 arch=linux-amzn2-skylake_avx512
                ^autoconf@2.69%gcc@7.3.1 patches=35c449281546376449766f92d49fc121ca50e330e60fefcfc9be2af3253082c2,7793209b33013dc0f81208718c68440c5aae80e7a1c4b8d336e382525af791a7,a49dd5bac3b62daa0ff688ab4d508d71dbd2f4f8d7e2a02321926346161bf3ee arch=linux-amzn2-skylake_avx512
                ^automake@1.16.3%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
            ^openssh@8.7p1%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
                ^libedit@3.1-20210216%gcc@7.3.1 arch=linux-amzn2-skylake_avx512

The default provider can be overwritten by adding a dependency to a different MPI on the command line:

[ec2-user@ip-172-31-1-92 spack]$ spack solve gromacs ^intel-mpi
==> Bootstrapping clingo from pre-built binaries
==> Best of 9 considered solutions.
==> Optimization Criteria:
  Priority  Criterion                                           Value
  1         deprecated versions used                                0
  2         version weight                                          0
  3         number of non-default variants (roots)                  0
  4         preferred providers for roots                           0
  5         number of values in multi valued variants (root)        0
  6         number of non-default variants (non-roots)              0
  7         preferred providers (non-roots)                       100
  8         compiler mismatches                                     0
  9         version badness                                         2
  10        number of values in multi valued variants (non-root)   -6
  11        non-preferred compilers                                 0
  12        target mismatches                                       0
  13        non-preferred targets                                   0

gromacs@2021.3%gcc@7.3.1~blas~cuda~cycle_subcounters~double+hwloc~ipo~lapack~mdrun_only+mpi~nosuffix~opencl+openmp~plumed~relaxed_double_precision+shared~sycl build_type=RelWithDebInfo arch=linux-amzn2-skylake_avx512
    ^cmake@3.21.4%gcc@7.3.1~doc+ncurses+openssl+ownlibs~qt build_type=Release arch=linux-amzn2-skylake_avx512
        ^ncurses@6.2%gcc@7.3.1~symlinks+termlib abi=none arch=linux-amzn2-skylake_avx512
            ^pkgconf@1.8.0%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
        ^openssl@1.1.1l%gcc@7.3.1~docs certs=system arch=linux-amzn2-skylake_avx512
            ^perl@5.34.0%gcc@7.3.1+cpanm+shared+threads arch=linux-amzn2-skylake_avx512
                ^berkeley-db@18.1.40%gcc@7.3.1+cxx~docs+stl patches=b231fcc4d5cff05e5c3a4814f6a5af0e9a966428dc2176540d2c05aff41de522 arch=linux-amzn2-skylake_avx512
                ^bzip2@1.0.8%gcc@7.3.1~debug~pic+shared arch=linux-amzn2-skylake_avx512
                    ^diffutils@3.8%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
                        ^libiconv@1.16%gcc@7.3.1 libs=shared,static arch=linux-amzn2-skylake_avx512
                ^gdbm@1.19%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
                    ^readline@8.1%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
                ^zlib@1.2.11%gcc@7.3.1+optimize+pic+shared arch=linux-amzn2-skylake_avx512
    ^fftw@3.3.10%gcc@7.3.1+mpi~openmp~pfft_patches precision=double,float arch=linux-amzn2-skylake_avx512
        ^intel-mpi@2019.10.317%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
    ^hwloc@2.5.0%gcc@7.3.1~cairo~cuda~gl~libudev+libxml2~netloc~nvml~opencl+pci~rocm+shared arch=linux-amzn2-skylake_avx512
        ^libpciaccess@0.16%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
            ^libtool@2.4.6%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
                ^m4@1.4.19%gcc@7.3.1+sigsegv patches=9dc5fbd0d5cb1037ab1e6d0ecc74a30df218d0a94bdd5a02759a97f62daca573,bfdffa7c2eb01021d5849b36972c069693654ad826c1a20b53534009a4ec7a89 arch=linux-amzn2-skylake_avx512
                    ^libsigsegv@2.13%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
            ^util-macros@1.19.3%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
        ^libxml2@2.9.12%gcc@7.3.1~python arch=linux-amzn2-skylake_avx512
            ^xz@5.2.5%gcc@7.3.1~pic libs=shared,static arch=linux-amzn2-skylake_avx512

However, if I try ot overwrite the provider in packages.yaml it is not picked up:

[ec2-user@ip-172-31-1-92 spack]$ echo "packages:
>   gromacs:
>     providers:
>       mpi: [intel-mpi]
>   fftw:
>     providers:
>       mpi: [intel-mpi]
> " > etc/spack/packages.yaml
[ec2-user@ip-172-31-1-92 spack]$ spack solve gromacs
==> Best of 9 considered solutions.
==> Optimization Criteria:
  Priority  Criterion                                           Value
  1         deprecated versions used                                0
  2         version weight                                          0
  3         number of non-default variants (roots)                  0
  4         preferred providers for roots                           0
  5         number of values in multi valued variants (root)        0
  6         number of non-default variants (non-roots)              0
  7         preferred providers (non-roots)                         0
  8         compiler mismatches                                     0
  9         version badness                                         2
  10        number of values in multi valued variants (non-root)   -8
  11        non-preferred compilers                                 0
  12        target mismatches                                       0
  13        non-preferred targets                                   0

gromacs@2021.3%gcc@7.3.1~blas~cuda~cycle_subcounters~double+hwloc~ipo~lapack~mdrun_only+mpi~nosuffix~opencl+openmp~plumed~relaxed_double_precision+shared~sycl build_type=RelWithDebInfo arch=linux-amzn2-skylake_avx512
    ^cmake@3.21.4%gcc@7.3.1~doc+ncurses+openssl+ownlibs~qt build_type=Release arch=linux-amzn2-skylake_avx512
        ^ncurses@6.2%gcc@7.3.1~symlinks+termlib abi=none arch=linux-amzn2-skylake_avx512
            ^pkgconf@1.8.0%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
        ^openssl@1.1.1l%gcc@7.3.1~docs certs=system arch=linux-amzn2-skylake_avx512
            ^perl@5.34.0%gcc@7.3.1+cpanm+shared+threads arch=linux-amzn2-skylake_avx512
                ^berkeley-db@18.1.40%gcc@7.3.1+cxx~docs+stl patches=b231fcc4d5cff05e5c3a4814f6a5af0e9a966428dc2176540d2c05aff41de522 arch=linux-amzn2-skylake_avx512
                ^bzip2@1.0.8%gcc@7.3.1~debug~pic+shared arch=linux-amzn2-skylake_avx512
                    ^diffutils@3.8%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
                        ^libiconv@1.16%gcc@7.3.1 libs=shared,static arch=linux-amzn2-skylake_avx512
                ^gdbm@1.19%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
                    ^readline@8.1%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
                ^zlib@1.2.11%gcc@7.3.1+optimize+pic+shared arch=linux-amzn2-skylake_avx512
    ^fftw@3.3.10%gcc@7.3.1+mpi~openmp~pfft_patches precision=double,float arch=linux-amzn2-skylake_avx512
        ^openmpi@4.1.1%gcc@7.3.1~atomics~cuda~cxx~cxx_exceptions+gpfs~internal-hwloc~java~legacylaunchers~lustre~memchecker~pmi~pmix~singularity~sqlite3+static~thread_multiple+vt+wrapper-rpath fabrics=none schedulers=none arch=linux-amzn2-skylake_avx512
            ^hwloc@2.5.0%gcc@7.3.1~cairo~cuda~gl~libudev+libxml2~netloc~nvml~opencl+pci~rocm+shared arch=linux-amzn2-skylake_avx512
                ^libpciaccess@0.16%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
                    ^libtool@2.4.6%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
                        ^m4@1.4.19%gcc@7.3.1+sigsegv patches=9dc5fbd0d5cb1037ab1e6d0ecc74a30df218d0a94bdd5a02759a97f62daca573,bfdffa7c2eb01021d5849b36972c069693654ad826c1a20b53534009a4ec7a89 arch=linux-amzn2-skylake_avx512
                            ^libsigsegv@2.13%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
                    ^util-macros@1.19.3%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
                ^libxml2@2.9.12%gcc@7.3.1~python arch=linux-amzn2-skylake_avx512
                    ^xz@5.2.5%gcc@7.3.1~pic libs=shared,static arch=linux-amzn2-skylake_avx512
            ^libevent@2.1.12%gcc@7.3.1+openssl arch=linux-amzn2-skylake_avx512
            ^numactl@2.0.14%gcc@7.3.1 patches=4e1d78cbbb85de625bad28705e748856033eaafab92a66dffd383a3d7e00cc94,62fc8a8bf7665a60e8f4c93ebbd535647cebf74198f7afafec4c085a8825c006,ff37630df599cfabf0740518b91ec8daaf18e8f288b19adaae5364dc1f6b2296 arch=linux-amzn2-skylake_avx512
                ^autoconf@2.69%gcc@7.3.1 patches=35c449281546376449766f92d49fc121ca50e330e60fefcfc9be2af3253082c2,7793209b33013dc0f81208718c68440c5aae80e7a1c4b8d336e382525af791a7,a49dd5bac3b62daa0ff688ab4d508d71dbd2f4f8d7e2a02321926346161bf3ee arch=linux-amzn2-skylake_avx512
                ^automake@1.16.3%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
            ^openssh@8.7p1%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
                ^libedit@3.1-20210216%gcc@7.3.1 arch=linux-amzn2-skylake_avx512

The weird part is that for some packages it does pick up the correct MPI and I cannot find out when. One working example is fftw:

[ec2-user@ip-172-31-1-92 spack]$ echo "packages:
  gromacs:
    providers:
      mpi: [intel-mpi]
  fftw:
    providers:
      mpi: [intel-mpi]
" > etc/spack/packages.yaml
[ec2-user@ip-172-31-1-92 spack]$ spack solve fftw
==> Best of 8 considered solutions.
==> Optimization Criteria:
  Priority  Criterion                                           Value
  1         deprecated versions used                                0
  2         version weight                                          0
  3         number of non-default variants (roots)                  0
  4         preferred providers for roots                           0
  5         number of values in multi valued variants (root)       -2
  6         number of non-default variants (non-roots)              0
  7         preferred providers (non-roots)                         0
  8         compiler mismatches                                     0
  9         version badness                                         0
  10        number of values in multi valued variants (non-root)    0
  11        non-preferred compilers                                 0
  12        target mismatches                                       0
  13        non-preferred targets                                   0

fftw@3.3.10%gcc@7.3.1+mpi~openmp~pfft_patches precision=double,float arch=linux-amzn2-skylake_avx512
    ^intel-mpi@2019.10.317%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
[ec2-user@ip-172-31-1-92 spack]$ rm etc/spack/packages.yaml
[ec2-user@ip-172-31-1-92 spack]$ spack solve fftw
==> Best of 9 considered solutions.
==> Optimization Criteria:
  Priority  Criterion                                           Value
  1         deprecated versions used                                0
  2         version weight                                          0
  3         number of non-default variants (roots)                  0
  4         preferred providers for roots                           0
  5         number of values in multi valued variants (root)       -2
  6         number of non-default variants (non-roots)              0
  7         preferred providers (non-roots)                         0
  8         compiler mismatches                                     0
  9         version badness                                         2
  10        number of values in multi valued variants (non-root)   -6
  11        non-preferred compilers                                 0
  12        target mismatches                                       0
  13        non-preferred targets                                   0

fftw@3.3.10%gcc@7.3.1+mpi~openmp~pfft_patches precision=double,float arch=linux-amzn2-skylake_avx512
    ^openmpi@4.1.1%gcc@7.3.1~atomics~cuda~cxx~cxx_exceptions+gpfs~internal-hwloc~java~legacylaunchers~lustre~memchecker~pmi~pmix~singularity~sqlite3+static~thread_multiple+vt+wrapper-rpath fabrics=none schedulers=none arch=linux-amzn2-skylake_avx512
        ^hwloc@2.5.0%gcc@7.3.1~cairo~cuda~gl~libudev+libxml2~netloc~nvml~opencl+pci~rocm+shared arch=linux-amzn2-skylake_avx512
            ^libpciaccess@0.16%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
                ^libtool@2.4.6%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
                    ^m4@1.4.19%gcc@7.3.1+sigsegv patches=9dc5fbd0d5cb1037ab1e6d0ecc74a30df218d0a94bdd5a02759a97f62daca573,bfdffa7c2eb01021d5849b36972c069693654ad826c1a20b53534009a4ec7a89 arch=linux-amzn2-skylake_avx512
                        ^libsigsegv@2.13%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
                ^pkgconf@1.8.0%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
                ^util-macros@1.19.3%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
            ^libxml2@2.9.12%gcc@7.3.1~python arch=linux-amzn2-skylake_avx512
                ^libiconv@1.16%gcc@7.3.1 libs=shared,static arch=linux-amzn2-skylake_avx512
                ^xz@5.2.5%gcc@7.3.1~pic libs=shared,static arch=linux-amzn2-skylake_avx512
                ^zlib@1.2.11%gcc@7.3.1+optimize+pic+shared arch=linux-amzn2-skylake_avx512
            ^ncurses@6.2%gcc@7.3.1~symlinks+termlib abi=none arch=linux-amzn2-skylake_avx512
        ^libevent@2.1.12%gcc@7.3.1+openssl arch=linux-amzn2-skylake_avx512
            ^openssl@1.1.1l%gcc@7.3.1~docs certs=system arch=linux-amzn2-skylake_avx512
                ^perl@5.34.0%gcc@7.3.1+cpanm+shared+threads arch=linux-amzn2-skylake_avx512
                    ^berkeley-db@18.1.40%gcc@7.3.1+cxx~docs+stl patches=b231fcc4d5cff05e5c3a4814f6a5af0e9a966428dc2176540d2c05aff41de522 arch=linux-amzn2-skylake_avx512
                    ^bzip2@1.0.8%gcc@7.3.1~debug~pic+shared arch=linux-amzn2-skylake_avx512
                        ^diffutils@3.8%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
                    ^gdbm@1.19%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
                        ^readline@8.1%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
        ^numactl@2.0.14%gcc@7.3.1 patches=4e1d78cbbb85de625bad28705e748856033eaafab92a66dffd383a3d7e00cc94,62fc8a8bf7665a60e8f4c93ebbd535647cebf74198f7afafec4c085a8825c006,ff37630df599cfabf0740518b91ec8daaf18e8f288b19adaae5364dc1f6b2296 arch=linux-amzn2-skylake_avx512
            ^autoconf@2.69%gcc@7.3.1 patches=35c449281546376449766f92d49fc121ca50e330e60fefcfc9be2af3253082c2,7793209b33013dc0f81208718c68440c5aae80e7a1c4b8d336e382525af791a7,a49dd5bac3b62daa0ff688ab4d508d71dbd2f4f8d7e2a02321926346161bf3ee arch=linux-amzn2-skylake_avx512
            ^automake@1.16.3%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
        ^openssh@8.7p1%gcc@7.3.1 arch=linux-amzn2-skylake_avx512
            ^libedit@3.1-20210216%gcc@7.3.1 arch=linux-amzn2-skylake_avx512

Error message

No response

Information on your system

[ec2-user@ip-172-31-1-92 spack]$ spack debug report

  • Spack: 0.16.3
  • Python: 3.7.10
  • Platform: linux-amzn2-skylake_avx512
  • Concretizer: clingo

General information

  • I have run spack debug report and reported the version of Spack/Python/Platform
  • I have searched the issues of this repo and believe this is not a duplicate
  • I have run the failing commands in debug mode and reported the output

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions