conda-forge / openmpi-feedstock

A conda-smithy repository for openmpi.
BSD 3-Clause "New" or "Revised" License
9 stars 22 forks source link

OpenMPI dependency resolving to `external` build #153

Open folmos-at-orange opened 2 months ago

folmos-at-orange commented 2 months ago

Comment:

I'm building a package depending on openmpi. I pinned the run dependency version to 4.1.6 (which is on conda-forge). However when installing the package it sometimes resolve to the external build. As a consequence when I install the package it doesn't work because the external build doesn't install any binaries (as expected).

Any idea on why this happens?

I might want to pin to openmpi=4.1.6=h* but that would defeat the purpose of having external builds.

Thanks in advance

dalcinl commented 2 months ago

I'm wondering whether these packages are somehow broken. I would recommend you contact the conda-forge team via chat, I don't know how to help you further. Perhaps making a new build of that version would help, but I'm not sure.

leofang commented 2 months ago

I am clueless too, as we did ensure the non-external builds have a higher priority https://github.com/conda-forge/openmpi-feedstock/blob/16df999278a105ae143deacc96680b799d79602a/recipe/meta.yaml#L5-L8 maybe you can share the outcome of conda list and examine if there are potential conflicts?

folmos-at-orange commented 2 months ago

I really don't understand what is happening. Repoquery resolve its ok, but install still installs the external build. Below some outputs for the a version of my package with only openmpi=4.1.4 pinned.

conda info

conda info
    active environment : test
    active env location : /home/runner/miniconda3/envs/test
            shell level : 2
       user config file : /home/runner/.condarc
 populated config files : /home/runner/.condarc
          conda version : 24.3.0
    conda-build version : not installed
         python version : 3.12.2.final.0
                 solver : libmamba (default)
       virtual packages : __archspec=1=zen2
                          __conda=24.3.0=0
                          __glibc=2.31=0
                          __linux=5.15.0=0
                          __unix=0=0
       base environment : /home/runner/miniconda3  (writable)
      conda av data dir : /home/runner/miniconda3/etc/conda
  conda av metadata url : None
           channel URLs : https://repo.anaconda.com/pkgs/main/linux-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/linux-64
                          https://repo.anaconda.com/pkgs/r/noarch
          package cache : /home/runner/conda_pkgs_dir
       envs directories : /home/runner/miniconda3/envs
                          /home/runner/.conda/envs
               platform : linux-64
             user-agent : conda/24.3.0 requests/2.31.0 CPython/3.12.2 Linux/5.15.0-1061-azure ubuntu/20.04.6 glibc/2.31 solver/libmamba conda-libmamba-solver/24.1.0 libmambapy/1.5.8 aau/0.4.4 c/. s/. e/.
                UID:GID : 1001:127
             netrc file : None
           offline mode : False
# packages in environment at /home/runner/miniconda3/envs/test:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                        main  
_openmp_mutex             5.1                       1_gnu  
bzip2                     1.0.8                h5eee18b_5  
ca-certificates           2024.3.11            h06a4308_0  
ld_impl_linux-64          2.38                 h1181459_1  
libffi                    3.4.4                h6a678d5_0  
libgcc-ng                 11.2.0               h1234567_1  
libgomp                   11.2.0               h1234567_1  
libstdcxx-ng              11.2.0               h1234567_1  
libuuid                   1.41.5               h5eee18b_0  
ncurses                   6.4                  h6a678d5_0  
openssl                   3.0.13               h7f8727e_0  
pip                       23.3.1          py310h06a4308_0  
python                    3.10.14              h955ad1f_0  
readline                  8.2                  h5eee18b_0  
setuptools                68.2.2          py310h06a4308_0  
sqlite                    3.41.2               h5eee18b_0  
tk                        8.6.12               h1ccaba5_0  
tzdata                    2024a                h04d1e81_0  
wheel                     0.41.2          py310h06a4308_0  
xz                        5.4.6                h5eee18b_0  
zlib                      1.2.13               h5eee18b_0

repoquery for package

conda repoquery depends --recursive --channel conda-forge --channel khiops-dev khiops-core=10.3.0a.1
 Name           Version   Build          Channel     Subdir  
──────────────────────────────────────────────────────────────
 khiops-core    10.3.0a.1 h8fdfd20_0     khiops-dev  linux-64
 libgcc-ng      13.2.0    hc881cc4_6     conda-forge linux-64
 _libgcc_mutex  0.1       conda_forge    conda-forge linux-64
 _openmp_mutex  4.5       2_kmp_llvm     conda-forge linux-64
 llvm-openmp    18.1.3    h4dfa4b3_0     conda-forge linux-64
 libzlib        1.2.13    hd590300_5     conda-forge linux-64
 zstd           1.5.5     hfc55251_0     conda-forge linux-64
 libstdcxx-ng   13.2.0    h95c4c6d_6     conda-forge linux-64
 openmpi        4.1.4     ha1ae619_102   conda-forge linux-64
 libgfortran-ng 10.3.0    h69a702a_10    conda-forge linux-64
 libgfortran5   10.3.0    hb56cab1_10    conda-forge linux-64
 libgfortran5   13.2.0    ha4646dd_5     conda-forge linux-64
 mpi            1.0       openmpi        conda-forge linux-64
 zlib           1.2.11    0              conda-forge linux-64

conda install package

 conda install --channel conda-forge --channel khiops-dev khiops-core=10.3.0a.1
Channels:
 - conda-forge
 - khiops-dev
 - defaults
Platform: linux-64
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working... done
## Package Plan ##
  environment location: /home/runner/miniconda3/envs/test
  added / updated specs:
    - khiops-core=10.3.0a.1
The following packages will be downloaded:
    package                    |            build
    ---------------------------|-----------------
    _libgcc_mutex-0.1          |      conda_forge           3 KB  conda-forge
    _openmp_mutex-4.5          |            2_gnu          23 KB  conda-forge
    khiops-core-10.3.0a.1      |       h8fdfd20_0         4.6 MB  khiops-dev
    libgcc-ng-13.2.0           |       hc881cc4_6         759 KB  conda-forge
    libgomp-13.2.0             |       hc881cc4_6         412 KB  conda-forge
    mpi-1.0                    |          openmpi           4 KB  conda-forge
    openmpi-4.1.4              |       external_2          11 KB  conda-forge
    openssl-3.2.1              |       hd590300_1         2.7 MB  conda-forge
    ------------------------------------------------------------
                                           Total:         8.6 MB
The following NEW packages will be INSTALLED:
  khiops-core        khiops-dev/linux-64::khiops-core-10.3.0a.1-h8fdfd20_0 
  mpi                conda-forge/linux-64::mpi-1.0-openmpi 
  openmpi            conda-forge/linux-64::openmpi-4.1.4-external_2 
The following packages will be UPDATED:
  libgcc-ng          pkgs/main::libgcc-ng-11.2.0-h1234567_1 --> conda-forge::libgcc-ng-13.2.0-hc881cc4_6 
  libgomp              pkgs/main::libgomp-11.2.0-h1234567_1 --> conda-forge::libgomp-13.2.0-hc881cc4_6 
  openssl              pkgs/main::openssl-3.0.13-h7f8727e_0 --> conda-forge::openssl-3.2.1-hd590300_1 
The following packages will be SUPERSEDED by a higher-priority channel:
  _libgcc_mutex           pkgs/main::_libgcc_mutex-0.1-main --> conda-forge::_libgcc_mutex-0.1-conda_forge 
  _openmp_mutex          pkgs/main::_openmp_mutex-5.1-1_gnu --> conda-forge::_openmp_mutex-4.5-2_gnu 
Downloading and Extracting Packages: ...working... done
Preparing transaction: ...working... done
Verifying transaction: ...working... done
Executing transaction: ...working... done
inducer commented 1 month ago

As of right now, an easy way to reproduce this appears to be starting with a fresh CPython miniforge (on x86_64) and running

conda install pocl mpi4py

which will offer to install

    openmpi-5.0.3              |       external_2          13 KB  conda-forge

(both pocl and mpi4py depend on libhwloc, but pocl lags a few version behind in this dependency)

leofang commented 1 month ago

@conda-forge/core I can reproduce @inducer's observation above. Can someone help us understand why the priority design is now broken and how we should fix it?

leofang commented 1 month ago

Something rang the bell. I see we use track_feature here: https://github.com/conda-forge/openmpi-feedstock/blob/bdb136fef2ff890147e796822d039828929039f3/recipe/meta.yaml#L132 According to what I recalled, mamba (which is now the default solver) hates it: https://mamba.readthedocs.io/en/latest/advanced_usage/package_resolution.html

If you want to properly de-prioritize packages with mamba, please make sure to add the track_feature in the variant package or at least as a first-order dependency

@inducer @folmos-at-orange if you explicitly request for openmpi like this

conda install pocl mpi4py openmpi

I observed it would not resolve to use the external build. Could you confirm?

beckermr commented 1 month ago

Yeah I think your hunch is close to correct @leofang. Depending on the requested set of packages, the solver does not weigh down the external builds enough. We already weigh down those builds with a track_feature and a lower build number, so it is somewhat surprising they still bubble up.

I did notice that when you specify openmpi in the install command, it pulls openmpi 4, instead of the external openmpi 5. This indicates, I think, that something in the deps of openmpi 5 is preventing the actual openmpi 5 from being installed. Apparently, in the solver's effort to maximize versions, the one with the feature gets sorted ahead of the older version.

Maybe we need to add the same deps/pins to the external build as the real build? Maybe this will force both variants to not be satisifed in this case and hopefully get the solver to pick the lower version of the real package.

leofang commented 1 month ago

Thanks, @beckermr. I have a naive question: couldn't we just remove the usage of track_features here to simplify what we present to the solver? We've already bumped the build number in the non-external builds, so hopefully that alone should make mamba happy?

beckermr commented 1 month ago

Maybe but that won't fix this issue though I think. The solver always wants a higher version over a higher build number.

inducer commented 1 month ago

There seems to be a perfectly good solution that does involve openmpi 5 and a recent pocl, found if you force matters a bit:

conda install pocl mpi4py 'openmpi>=5=h*'   
Detailed package versions found solution
    conda-24.5.0               |  py310hff52083_0         939 KB  conda-forge
    frozendict-2.4.4           |  py310hc51659f_0          48 KB  conda-forge
    libclang-cpp15-15.0.7      |default_h127d8a8_5        16.4 MB  conda-forge
    libevent-2.1.12            |       hf998b51_1         417 KB  conda-forge
    libgfortran-ng-13.2.0      |       h69a702a_7          24 KB  conda-forge
    libgfortran5-13.2.0        |       hca663fb_7         1.4 MB  conda-forge
    libhwloc-2.10.0            |default_h2fb2949_1000         2.3 MB  conda-forge
    libllvm15-15.0.7           |       hb3ce162_4        31.8 MB  conda-forge
    libllvmspirv15-15.0.0      |       h0cdce71_1        1010 KB  conda-forge
    libnl-3.9.0                |       hd590300_0         716 KB  conda-forge
    llvm-spirv-15-15.0.0       |       h0cdce71_1          49 KB  conda-forge
    mpi-1.0                    |          openmpi           4 KB  conda-forge
    mpi4py-3.1.6               |  py310hb2ba3f8_1         533 KB  conda-forge
    ocl-icd-2.3.2              |       hd590300_1         133 KB  conda-forge
    openmpi-5.0.3              |     h47314c5_102        14.0 MB  conda-forge
    openssl-3.3.0              |       h4ab18f5_3         2.8 MB  conda-forge
    pocl-5.0                   |       h03a6ac1_4          13 KB  conda-forge
    pocl-core-5.0              |       hbf9fd79_4         720 KB  conda-forge
    pocl-cpu-5.0               |       hea57645_4          24 KB  conda-forge
    pocl-cpu-minimal-5.0       |       h1b31331_4        13.1 MB  conda-forge
    pocl-cuda-5.0              |       hd8896d7_4         966 KB  conda-forge
    pocl-remote-5.0            |       h1b31331_4          53 KB  conda-forge

I wonder why that solution would get passed over in favor of lower-version openmpi or external builds thereof.

beckermr commented 1 month ago

Ah that's good to know. The solver might be maximizing more versions of other packages? You'd have to diff the solve results.

cc @jaimergp to see if he can help with some insight here.

jaimergp commented 1 month ago

I can reproduce with conda create -dnx pocl mpi4py --platform=linux-64. I'll take a look at the libsolv verbose logs (-vvv) and see if something is off. I'd also need to check across different implementations (micromamba, pixi).

-- edit --

All libsolv derivatives get external:

conda create -dnx pocl mpi4py --platform=linux-64 --solver=libmamba ``` Channels: - conda-forge Platform: linux-64 Collecting package metadata (repodata.json): done Solving environment: done ==> WARNING: A newer version of conda exists. <== current version: 24.1.1 latest version: 24.5.0 Please update conda by running $ conda update -n base -c conda-forge conda ## Package Plan ## environment location: /Users/jrodriguez/.local/anaconda/envs/x added / updated specs: - mpi4py - pocl The following packages will be downloaded: package | build ---------------------------|----------------- _openmp_mutex-4.5 | 2_gnu 23 KB conda-forge icu-73.2 | h59595ed_0 11.5 MB conda-forge ld_impl_linux-64-2.40 | hf3520f5_1 691 KB conda-forge libclang-cpp15-15.0.7 |default_h127d8a8_5 16.4 MB conda-forge libgcc-ng-13.2.0 | h77fa898_7 758 KB conda-forge libgomp-13.2.0 | h77fa898_7 412 KB conda-forge libhwloc-1.11.13 | h8b7812e_2 1.8 MB conda-forge libiconv-1.17 | hd590300_2 689 KB conda-forge libllvm15-15.0.7 | hb3ce162_4 31.8 MB conda-forge libllvmspirv15-15.0.0 | h0cdce71_1 1010 KB conda-forge libnsl-2.0.1 | hd590300_0 33 KB conda-forge libsqlite-3.45.3 | h2797004_0 840 KB conda-forge libstdcxx-ng-13.2.0 | hc0a3c3a_7 3.7 MB conda-forge libxcrypt-4.4.36 | hd590300_1 98 KB conda-forge libxml2-2.12.7 | hc051c1a_0 689 KB conda-forge libzlib-1.2.13 | h4ab18f5_6 60 KB conda-forge llvm-spirv-15-15.0.0 | h0cdce71_1 49 KB conda-forge mpi-1.0 | openmpi 4 KB conda-forge mpi4py-3.1.6 | py312hae4ded5_1 555 KB conda-forge ncurses-6.5 | h59595ed_0 867 KB conda-forge ocl-icd-2.3.2 | hd590300_1 133 KB conda-forge openmpi-5.0.3 | external_2 13 KB conda-forge openssl-3.3.0 | h4ab18f5_3 2.8 MB conda-forge pocl-5.0 | h03a6ac1_5 14 KB conda-forge pocl-core-5.0 | h1fad545_5 721 KB conda-forge pocl-cpu-5.0 | h55a2082_5 24 KB conda-forge pocl-cpu-minimal-5.0 | hf9ad923_5 13.1 MB conda-forge pocl-cuda-5.0 | hb452e98_5 965 KB conda-forge pocl-remote-5.0 | hf9ad923_5 53 KB conda-forge python-3.12.3 |hab00c5b_0_cpython 30.5 MB conda-forge python_abi-3.12 | 4_cp312 6 KB conda-forge zstd-1.5.6 | ha6fb4c9_0 542 KB conda-forge ------------------------------------------------------------ Total: 120.6 MB The following NEW packages will be INSTALLED: _libgcc_mutex conda-forge/linux-64::_libgcc_mutex-0.1-conda_forge _openmp_mutex conda-forge/linux-64::_openmp_mutex-4.5-2_gnu bzip2 conda-forge/linux-64::bzip2-1.0.8-hd590300_5 ca-certificates conda-forge/linux-64::ca-certificates-2024.2.2-hbcca054_0 icu conda-forge/linux-64::icu-73.2-h59595ed_0 ld_impl_linux-64 conda-forge/linux-64::ld_impl_linux-64-2.40-hf3520f5_1 libclang-cpp15 conda-forge/linux-64::libclang-cpp15-15.0.7-default_h127d8a8_5 libexpat conda-forge/linux-64::libexpat-2.6.2-h59595ed_0 libffi conda-forge/linux-64::libffi-3.4.2-h7f98852_5 libgcc-ng conda-forge/linux-64::libgcc-ng-13.2.0-h77fa898_7 libgomp conda-forge/linux-64::libgomp-13.2.0-h77fa898_7 libhwloc conda-forge/linux-64::libhwloc-1.11.13-h8b7812e_2 libiconv conda-forge/linux-64::libiconv-1.17-hd590300_2 libllvm15 conda-forge/linux-64::libllvm15-15.0.7-hb3ce162_4 libllvmspirv15 conda-forge/linux-64::libllvmspirv15-15.0.0-h0cdce71_1 libnsl conda-forge/linux-64::libnsl-2.0.1-hd590300_0 libsqlite conda-forge/linux-64::libsqlite-3.45.3-h2797004_0 libstdcxx-ng conda-forge/linux-64::libstdcxx-ng-13.2.0-hc0a3c3a_7 libuuid conda-forge/linux-64::libuuid-2.38.1-h0b41bf4_0 libxcrypt conda-forge/linux-64::libxcrypt-4.4.36-hd590300_1 libxml2 conda-forge/linux-64::libxml2-2.12.7-hc051c1a_0 libzlib conda-forge/linux-64::libzlib-1.2.13-h4ab18f5_6 llvm-spirv-15 conda-forge/linux-64::llvm-spirv-15-15.0.0-h0cdce71_1 mpi conda-forge/linux-64::mpi-1.0-openmpi mpi4py conda-forge/linux-64::mpi4py-3.1.6-py312hae4ded5_1 ncurses conda-forge/linux-64::ncurses-6.5-h59595ed_0 ocl-icd conda-forge/linux-64::ocl-icd-2.3.2-hd590300_1 openmpi conda-forge/linux-64::openmpi-5.0.3-external_2 openssl conda-forge/linux-64::openssl-3.3.0-h4ab18f5_3 pocl conda-forge/linux-64::pocl-5.0-h03a6ac1_5 pocl-core conda-forge/linux-64::pocl-core-5.0-h1fad545_5 pocl-cpu conda-forge/linux-64::pocl-cpu-5.0-h55a2082_5 pocl-cpu-minimal conda-forge/linux-64::pocl-cpu-minimal-5.0-hf9ad923_5 pocl-cuda conda-forge/linux-64::pocl-cuda-5.0-hb452e98_5 pocl-remote conda-forge/linux-64::pocl-remote-5.0-hf9ad923_5 python conda-forge/linux-64::python-3.12.3-hab00c5b_0_cpython python_abi conda-forge/linux-64::python_abi-3.12-4_cp312 readline conda-forge/linux-64::readline-8.2-h8228510_1 tk conda-forge/linux-64::tk-8.6.13-noxft_h4845f30_101 tzdata conda-forge/noarch::tzdata-2024a-h0c530f3_0 xz conda-forge/linux-64::xz-5.2.6-h166bdaf_0 zstd conda-forge/linux-64::zstd-1.5.6-ha6fb4c9_0 DryRunExit: Dry run. Exiting. ```
micromamba create --dry-run -nx pocl mpi4py --platform=linux-64 ``` __ __ ______ ___ ____ _____ ___ / /_ ____ _ / / / / __ `__ \/ __ `/ __ `__ \/ __ \/ __ `/ / /_/ / / / / / / /_/ / / / / / / /_/ / /_/ / / .___/_/ /_/ /_/\__,_/_/ /_/ /_/_.___/\__,_/ /_/ warning libmamba 'root_prefix' set with default value: /Users/jrodriguez/micromamba error libmamba Bad conversion of configurable 'experimental' from source '~/.condarc' : yaml-cpp: error at line 7, column 15: bad conversion warning libmamba Cache file "/Users/jrodriguez/micromamba/pkgs/cache/497deca9.json" was modified by another program warning libmamba Cache file "/Users/jrodriguez/micromamba/pkgs/cache/09cdf8bf.json" was modified by another program conda-forge/noarch 17.1MB @ 2.9MB/s 6.3s conda-forge/linux-64 40.9MB @ 4.4MB/s 10.4s warning libmamba linux version not found (virtual package skipped) warning libmamba glibc version not found (virtual package skipped) Transaction Prefix: /Users/jrodriguez/micromamba/envs/x Updating specs: - pocl - mpi4py Package Version Build Channel Size ──────────────────────────────────────────────────────────────────────────────────── Install: ──────────────────────────────────────────────────────────────────────────────────── + _libgcc_mutex 0.1 conda_forge conda-forge/linux-64 3kB + _openmp_mutex 4.5 2_gnu conda-forge/linux-64 24kB + bzip2 1.0.8 hd590300_5 conda-forge/linux-64 254kB + ca-certificates 2024.2.2 hbcca054_0 conda-forge/linux-64 155kB + icu 73.2 h59595ed_0 conda-forge/linux-64 12MB + ld_impl_linux-64 2.40 hf3520f5_1 conda-forge/linux-64 708kB + libclang-cpp15 15.0.7 default_h127d8a8_5 conda-forge/linux-64 17MB + libexpat 2.6.2 h59595ed_0 conda-forge/linux-64 74kB + libffi 3.4.2 h7f98852_5 conda-forge/linux-64 58kB + libgcc-ng 13.2.0 h77fa898_7 conda-forge/linux-64 776kB + libgomp 13.2.0 h77fa898_7 conda-forge/linux-64 422kB + libhwloc 1.11.13 h8b7812e_2 conda-forge/linux-64 2MB + libiconv 1.17 hd590300_2 conda-forge/linux-64 706kB + libllvm15 15.0.7 hb3ce162_4 conda-forge/linux-64 33MB + libllvmspirv15 15.0.0 h0cdce71_1 conda-forge/linux-64 1MB + libnsl 2.0.1 hd590300_0 conda-forge/linux-64 33kB + libsqlite 3.45.3 h2797004_0 conda-forge/linux-64 860kB + libstdcxx-ng 13.2.0 hc0a3c3a_7 conda-forge/linux-64 4MB + libuuid 2.38.1 h0b41bf4_0 conda-forge/linux-64 34kB + libxcrypt 4.4.36 hd590300_1 conda-forge/linux-64 100kB + libxml2 2.12.7 hc051c1a_0 conda-forge/linux-64 706kB + libzlib 1.2.13 h4ab18f5_6 conda-forge/linux-64 62kB + llvm-spirv-15 15.0.0 h0cdce71_1 conda-forge/linux-64 50kB + mpi 1.0 openmpi conda-forge/linux-64 4kB + mpi4py 3.1.6 py312hae4ded5_1 conda-forge/linux-64 568kB + ncurses 6.5 h59595ed_0 conda-forge/linux-64 887kB + ocl-icd 2.3.2 hd590300_1 conda-forge/linux-64 136kB + openmpi 5.0.3 external_2 conda-forge/linux-64 13kB + openssl 3.3.0 h4ab18f5_3 conda-forge/linux-64 3MB + pocl 5.0 h03a6ac1_5 conda-forge/linux-64 14kB + pocl-core 5.0 h1fad545_5 conda-forge/linux-64 739kB + pocl-cpu 5.0 h55a2082_5 conda-forge/linux-64 25kB + pocl-cpu-minimal 5.0 hf9ad923_5 conda-forge/linux-64 14MB + pocl-cuda 5.0 hb452e98_5 conda-forge/linux-64 988kB + pocl-remote 5.0 hf9ad923_5 conda-forge/linux-64 54kB + python 3.12.3 hab00c5b_0_cpython conda-forge/linux-64 32MB + python_abi 3.12 4_cp312 conda-forge/linux-64 6kB + readline 8.2 h8228510_1 conda-forge/linux-64 281kB + tk 8.6.13 noxft_h4845f30_101 conda-forge/linux-64 3MB + tzdata 2024a h0c530f3_0 conda-forge/noarch 120kB + xz 5.2.6 h166bdaf_0 conda-forge/linux-64 418kB + zstd 1.5.6 ha6fb4c9_0 conda-forge/linux-64 555kB Summary: Install: 42 packages Total download: 131MB ──────────────────────────────────────────────────────────────────────────────────── Dry run. Not executing the transaction. ```
mkdir -p /tmp/openmpi-external && cd /tmp/openmpi-external && pixi init && pixi add pocl mpi4py && cat pixi.lock ```yaml version: 4 environments: default: channels: - url: https://conda.anaconda.org/conda-forge/ packages: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hd590300_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.2.2-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-73.2-h59595ed_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-hf3520f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp15-15.0.7-default_h127d8a8_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h77fa898_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-13.2.0-h77fa898_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-1.11.13-h8b7812e_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm15-15.0.7-hb3ce162_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvmspirv15-15.0.0-h0cdce71_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.45.3-h2797004_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-hc0a3c3a_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.7-hc051c1a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.13-h4ab18f5_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-spirv-15-15.0.0-h0cdce71_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpi-1.0-openmpi.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpi4py-3.1.6-py312hae4ded5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h59595ed_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openmpi-5.0.3-external_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.0-h4ab18f5_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pocl-5.0-h03a6ac1_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pocl-core-5.0-h1fad545_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pocl-cpu-5.0-h55a2082_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pocl-cpu-minimal-5.0-hf9ad923_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pocl-cuda-5.0-hb452e98_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pocl-remote-5.0-hf9ad923_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.3-hab00c5b_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-4_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda packages: # rest of file omitted for clarity ```

--solver=classic does not get openmpi at all:

conda create -dnx pocl mpi4py --platform=linux-64 --solver=classic --repodata-fn=repodata.json ``` Collecting package metadata (repodata.json): done Solving environment: done ==> WARNING: A newer version of conda exists. <== current version: 24.1.1 latest version: 24.5.0 Please update conda by running $ conda update -n base -c conda-forge conda Or to minimize the number of packages updated during conda update use conda install conda=24.5.0 ## Package Plan ## environment location: /Users/jrodriguez/.local/anaconda/envs/x added / updated specs: - mpi4py - pocl The following packages will be downloaded: package | build ---------------------------|----------------- _openmp_mutex-4.5 | 2_gnu 23 KB conda-forge icu-73.2 | h59595ed_0 11.5 MB conda-forge impi_rt-2021.12.0 | ha770c72_536 36.1 MB conda-forge ld_impl_linux-64-2.40 | hf3520f5_1 691 KB conda-forge libclang-cpp15-15.0.7 |default_h127d8a8_5 16.4 MB conda-forge libgcc-ng-13.2.0 | h77fa898_7 758 KB conda-forge libgomp-13.2.0 | h77fa898_7 412 KB conda-forge libhwloc-1.11.13 | h8b7812e_2 1.8 MB conda-forge libiconv-1.17 | hd590300_2 689 KB conda-forge libllvm15-15.0.7 | hb3ce162_4 31.8 MB conda-forge libllvmspirv15-15.0.0 | h0cdce71_1 1010 KB conda-forge libnsl-2.0.1 | hd590300_0 33 KB conda-forge libsqlite-3.45.3 | h2797004_0 840 KB conda-forge libstdcxx-ng-13.2.0 | hc0a3c3a_7 3.7 MB conda-forge libxcrypt-4.4.36 | hd590300_1 98 KB conda-forge libxml2-2.12.7 | hc051c1a_0 689 KB conda-forge libzlib-1.2.13 | h4ab18f5_6 60 KB conda-forge llvm-spirv-15-15.0.0 | h0cdce71_1 49 KB conda-forge mpi-1.0 | impi 6 KB conda-forge mpi4py-3.1.6 | py312h61186ca_1 553 KB conda-forge ncurses-6.5 | h59595ed_0 867 KB conda-forge ocl-icd-2.3.2 | hd590300_1 133 KB conda-forge openssl-3.3.0 | h4ab18f5_3 2.8 MB conda-forge pocl-5.0 | h03a6ac1_5 14 KB conda-forge pocl-core-5.0 | h1fad545_5 721 KB conda-forge pocl-cpu-5.0 | h55a2082_5 24 KB conda-forge pocl-cpu-minimal-5.0 | hf9ad923_5 13.1 MB conda-forge pocl-cuda-5.0 | hb452e98_5 965 KB conda-forge pocl-remote-5.0 | hf9ad923_5 53 KB conda-forge python-3.12.3 |hab00c5b_0_cpython 30.5 MB conda-forge python_abi-3.12 | 4_cp312 6 KB conda-forge zstd-1.5.6 | ha6fb4c9_0 542 KB conda-forge ------------------------------------------------------------ Total: 156.6 MB The following NEW packages will be INSTALLED: _libgcc_mutex conda-forge/linux-64::_libgcc_mutex-0.1-conda_forge _openmp_mutex conda-forge/linux-64::_openmp_mutex-4.5-2_gnu bzip2 conda-forge/linux-64::bzip2-1.0.8-hd590300_5 ca-certificates conda-forge/linux-64::ca-certificates-2024.2.2-hbcca054_0 icu conda-forge/linux-64::icu-73.2-h59595ed_0 impi_rt conda-forge/linux-64::impi_rt-2021.12.0-ha770c72_536 ld_impl_linux-64 conda-forge/linux-64::ld_impl_linux-64-2.40-hf3520f5_1 libclang-cpp15 conda-forge/linux-64::libclang-cpp15-15.0.7-default_h127d8a8_5 libexpat conda-forge/linux-64::libexpat-2.6.2-h59595ed_0 libffi conda-forge/linux-64::libffi-3.4.2-h7f98852_5 libgcc-ng conda-forge/linux-64::libgcc-ng-13.2.0-h77fa898_7 libgomp conda-forge/linux-64::libgomp-13.2.0-h77fa898_7 libhwloc conda-forge/linux-64::libhwloc-1.11.13-h8b7812e_2 libiconv conda-forge/linux-64::libiconv-1.17-hd590300_2 libllvm15 conda-forge/linux-64::libllvm15-15.0.7-hb3ce162_4 libllvmspirv15 conda-forge/linux-64::libllvmspirv15-15.0.0-h0cdce71_1 libnsl conda-forge/linux-64::libnsl-2.0.1-hd590300_0 libsqlite conda-forge/linux-64::libsqlite-3.45.3-h2797004_0 libstdcxx-ng conda-forge/linux-64::libstdcxx-ng-13.2.0-hc0a3c3a_7 libuuid conda-forge/linux-64::libuuid-2.38.1-h0b41bf4_0 libxcrypt conda-forge/linux-64::libxcrypt-4.4.36-hd590300_1 libxml2 conda-forge/linux-64::libxml2-2.12.7-hc051c1a_0 libzlib conda-forge/linux-64::libzlib-1.2.13-h4ab18f5_6 llvm-spirv-15 conda-forge/linux-64::llvm-spirv-15-15.0.0-h0cdce71_1 mpi conda-forge/linux-64::mpi-1.0-impi mpi4py conda-forge/linux-64::mpi4py-3.1.6-py312h61186ca_1 ncurses conda-forge/linux-64::ncurses-6.5-h59595ed_0 ocl-icd conda-forge/linux-64::ocl-icd-2.3.2-hd590300_1 openssl conda-forge/linux-64::openssl-3.3.0-h4ab18f5_3 pocl conda-forge/linux-64::pocl-5.0-h03a6ac1_5 pocl-core conda-forge/linux-64::pocl-core-5.0-h1fad545_5 pocl-cpu conda-forge/linux-64::pocl-cpu-5.0-h55a2082_5 pocl-cpu-minimal conda-forge/linux-64::pocl-cpu-minimal-5.0-hf9ad923_5 pocl-cuda conda-forge/linux-64::pocl-cuda-5.0-hb452e98_5 pocl-remote conda-forge/linux-64::pocl-remote-5.0-hf9ad923_5 python conda-forge/linux-64::python-3.12.3-hab00c5b_0_cpython python_abi conda-forge/linux-64::python_abi-3.12-4_cp312 readline conda-forge/linux-64::readline-8.2-h8228510_1 tk conda-forge/linux-64::tk-8.6.13-noxft_h4845f30_101 tzdata conda-forge/noarch::tzdata-2024a-h0c530f3_0 xz conda-forge/linux-64::xz-5.2.6-h166bdaf_0 zstd conda-forge/linux-64::zstd-1.5.6-ha6fb4c9_0 DryRunExit: Dry run. Exiting. ```
inducer commented 1 month ago

Sure, here are all the package versions:

Baseline:
$ conda install pocl mpi4py
    conda-24.5.0               |  py310hff52083_0         939 KB  conda-forge
    frozendict-2.4.4           |  py310hc51659f_0          48 KB  conda-forge
    libclang-cpp15-15.0.7      |default_h127d8a8_5        16.4 MB  conda-forge
    libhwloc-1.11.13           |       h8b7812e_2         1.8 MB  conda-forge
    libllvm15-15.0.7           |       hb3ce162_4        31.8 MB  conda-forge
    libllvmspirv15-15.0.0      |       h0cdce71_1        1010 KB  conda-forge
    llvm-spirv-15-15.0.0       |       h0cdce71_1          49 KB  conda-forge
    mpi-1.0                    |          openmpi           4 KB  conda-forge
    mpi4py-3.1.6               |  py310hb2ba3f8_1         533 KB  conda-forge
    ocl-icd-2.3.2              |       hd590300_1         133 KB  conda-forge
    openmpi-5.0.3              |       external_2          13 KB  conda-forge
    openssl-3.3.0              |       h4ab18f5_3         2.8 MB  conda-forge
    pocl-5.0                   |       h03a6ac1_5          14 KB  conda-forge
    pocl-core-5.0              |       h1fad545_5         721 KB  conda-forge
    pocl-cpu-5.0               |       h55a2082_5          24 KB  conda-forge
    pocl-cpu-minimal-5.0       |       hf9ad923_5        13.1 MB  conda-forge
    pocl-cuda-5.0              |       hb452e98_5         965 KB  conda-forge
    pocl-remote-5.0            |       hf9ad923_5          53 KB  conda-forge
With explicit OpenMPI:
    conda-24.5.0               |  py310hff52083_0         939 KB  conda-forge
    frozendict-2.4.4           |  py310hc51659f_0          48 KB  conda-forge
    libclang-cpp15-15.0.7      |default_h127d8a8_5        16.4 MB  conda-forge
    libgfortran-ng-13.2.0      |       h69a702a_7          24 KB  conda-forge
    libgfortran5-13.2.0        |       hca663fb_7         1.4 MB  conda-forge
    libhwloc-1.11.13           |       h8b7812e_2         1.8 MB  conda-forge
    libllvm15-15.0.7           |       hb3ce162_4        31.8 MB  conda-forge
    libllvmspirv15-15.0.0      |       h0cdce71_1        1010 KB  conda-forge
    llvm-spirv-15-15.0.0       |       h0cdce71_1          49 KB  conda-forge
    mpi-1.0                    |          openmpi           4 KB  conda-forge
    mpi4py-3.1.6               |  py310h2a790f2_0         532 KB  conda-forge
    ocl-icd-2.3.2              |       hd590300_1         133 KB  conda-forge
    openmpi-4.1.6              |     hc5af2df_101         3.9 MB  conda-forge
    openssl-3.3.0              |       h4ab18f5_3         2.8 MB  conda-forge
    pocl-5.0                   |       h03a6ac1_5          14 KB  conda-forge
    pocl-core-5.0              |       h1fad545_5         721 KB  conda-forge
    pocl-cpu-5.0               |       h55a2082_5          24 KB  conda-forge
    pocl-cpu-minimal-5.0       |       hf9ad923_5        13.1 MB  conda-forge
    pocl-cuda-5.0              |       hb452e98_5         965 KB  conda-forge
    pocl-remote-5.0            |       hf9ad923_5          53 KB  conda-forge
    zlib-1.2.13                |       hd590300_5          91 KB  conda-forge
With explicitly versioned openmpi:
    conda-24.5.0               |  py310hff52083_0         939 KB  conda-forge
    frozendict-2.4.4           |  py310hc51659f_0          48 KB  conda-forge
    libclang-cpp15-15.0.7      |default_h127d8a8_5        16.4 MB  conda-forge
    libevent-2.1.12            |       hf998b51_1         417 KB  conda-forge
    libgfortran-ng-13.2.0      |       h69a702a_7          24 KB  conda-forge
    libgfortran5-13.2.0        |       hca663fb_7         1.4 MB  conda-forge
    libhwloc-2.10.0            |default_h2fb2949_1000         2.3 MB  conda-forge
    libllvm15-15.0.7           |       hb3ce162_4        31.8 MB  conda-forge
    libllvmspirv15-15.0.0      |       h0cdce71_1        1010 KB  conda-forge
    libnl-3.9.0                |       hd590300_0         716 KB  conda-forge
    llvm-spirv-15-15.0.0       |       h0cdce71_1          49 KB  conda-forge
    mpi-1.0                    |          openmpi           4 KB  conda-forge
    mpi4py-3.1.6               |  py310hb2ba3f8_1         533 KB  conda-forge
    ocl-icd-2.3.2              |       hd590300_1         133 KB  conda-forge
    openmpi-5.0.3              |     h47314c5_102        14.0 MB  conda-forge
    openssl-3.3.0              |       h4ab18f5_3         2.8 MB  conda-forge
    pocl-5.0                   |       h03a6ac1_4          13 KB  conda-forge
    pocl-core-5.0              |       hbf9fd79_4         720 KB  conda-forge
    pocl-cpu-5.0               |       hea57645_4          24 KB  conda-forge
    pocl-cpu-minimal-5.0       |       h1b31331_4        13.1 MB  conda-forge
    pocl-cuda-5.0              |       hd8896d7_4         966 KB  conda-forge
    pocl-remote-5.0            |       h1b31331_4          53 KB  conda-forge

And here are the diffs:

--- baseline    2024-05-29 10:44:36.884179263 -0500
+++ add-ompi    2024-05-29 10:45:14.231089401 -0500
@@ -10,6 +10,7 @@

   added / updated specs:
     - mpi4py
+    - openmpi
     - pocl

@@ -20,14 +21,16 @@
     conda-24.5.0               |  py310hff52083_0         939 KB  conda-forge
     frozendict-2.4.4           |  py310hc51659f_0          48 KB  conda-forge
     libclang-cpp15-15.0.7      |default_h127d8a8_5        16.4 MB  conda-forge
+    libgfortran-ng-13.2.0      |       h69a702a_7          24 KB  conda-forge
+    libgfortran5-13.2.0        |       hca663fb_7         1.4 MB  conda-forge
     libhwloc-1.11.13           |       h8b7812e_2         1.8 MB  conda-forge
     libllvm15-15.0.7           |       hb3ce162_4        31.8 MB  conda-forge
     libllvmspirv15-15.0.0      |       h0cdce71_1        1010 KB  conda-forge
     llvm-spirv-15-15.0.0       |       h0cdce71_1          49 KB  conda-forge
     mpi-1.0                    |          openmpi           4 KB  conda-forge
-    mpi4py-3.1.6               |  py310hb2ba3f8_1         533 KB  conda-forge
+    mpi4py-3.1.6               |  py310h2a790f2_0         532 KB  conda-forge
     ocl-icd-2.3.2              |       hd590300_1         133 KB  conda-forge
-    openmpi-5.0.3              |       external_2          13 KB  conda-forge
+    openmpi-4.1.6              |     hc5af2df_101         3.9 MB  conda-forge
     openssl-3.3.0              |       h4ab18f5_3         2.8 MB  conda-forge
     pocl-5.0                   |       h03a6ac1_5          14 KB  conda-forge
     pocl-core-5.0              |       h1fad545_5         721 KB  conda-forge
@@ -35,27 +38,31 @@
     pocl-cpu-minimal-5.0       |       hf9ad923_5        13.1 MB  conda-forge
     pocl-cuda-5.0              |       hb452e98_5         965 KB  conda-forge
     pocl-remote-5.0            |       hf9ad923_5          53 KB  conda-forge
+    zlib-1.2.13                |       hd590300_5          91 KB  conda-forge
     ------------------------------------------------------------
-                                           Total:        70.2 MB
+                                           Total:        75.6 MB

and

--- baseline    2024-05-29 10:44:36.884179263 -0500
+++ add-ompi-versioned  2024-05-29 10:46:41.716373658 -0500
@@ -20,42 +21,50 @@
     conda-24.5.0               |  py310hff52083_0         939 KB  conda-forge
     frozendict-2.4.4           |  py310hc51659f_0          48 KB  conda-forge
     libclang-cpp15-15.0.7      |default_h127d8a8_5        16.4 MB  conda-forge
-    libhwloc-1.11.13           |       h8b7812e_2         1.8 MB  conda-forge
+    libevent-2.1.12            |       hf998b51_1         417 KB  conda-forge
+    libgfortran-ng-13.2.0      |       h69a702a_7          24 KB  conda-forge
+    libgfortran5-13.2.0        |       hca663fb_7         1.4 MB  conda-forge
+    libhwloc-2.10.0            |default_h2fb2949_1000         2.3 MB  conda-forge
     libllvm15-15.0.7           |       hb3ce162_4        31.8 MB  conda-forge
     libllvmspirv15-15.0.0      |       h0cdce71_1        1010 KB  conda-forge
+    libnl-3.9.0                |       hd590300_0         716 KB  conda-forge
     llvm-spirv-15-15.0.0       |       h0cdce71_1          49 KB  conda-forge
     mpi-1.0                    |          openmpi           4 KB  conda-forge
     mpi4py-3.1.6               |  py310hb2ba3f8_1         533 KB  conda-forge
     ocl-icd-2.3.2              |       hd590300_1         133 KB  conda-forge
-    openmpi-5.0.3              |       external_2          13 KB  conda-forge
+    openmpi-5.0.3              |     h47314c5_102        14.0 MB  conda-forge
     openssl-3.3.0              |       h4ab18f5_3         2.8 MB  conda-forge
-    pocl-5.0                   |       h03a6ac1_5          14 KB  conda-forge
-    pocl-core-5.0              |       h1fad545_5         721 KB  conda-forge
-    pocl-cpu-5.0               |       h55a2082_5          24 KB  conda-forge
-    pocl-cpu-minimal-5.0       |       hf9ad923_5        13.1 MB  conda-forge
-    pocl-cuda-5.0              |       hb452e98_5         965 KB  conda-forge
-    pocl-remote-5.0            |       hf9ad923_5          53 KB  conda-forge
+    pocl-5.0                   |       h03a6ac1_4          13 KB  conda-forge
+    pocl-core-5.0              |       hbf9fd79_4         720 KB  conda-forge
+    pocl-cpu-5.0               |       hea57645_4          24 KB  conda-forge
+    pocl-cpu-minimal-5.0       |       h1b31331_4        13.1 MB  conda-forge
+    pocl-cuda-5.0              |       hd8896d7_4         966 KB  conda-forge
+    pocl-remote-5.0            |       h1b31331_4          53 KB  conda-forge
     ------------------------------------------------------------
-                                           Total:        70.2 MB
+                                           Total:        87.2 MB
beckermr commented 1 month ago

pocl has a build number drop here - that seems relevant

inducer commented 1 month ago

cc @matthiasdiener: do you recall what the story was with pocl build numbers vs hwloc versions?

jaimergp commented 1 month ago

Hm, the 4 -> 5 build bump in pocl also downgraded the pin for hwloc from 2.10.0 to 1. Maybe that's related?

Edit: adding libhwloc=2 to the list doesn't change the results wrt to openmpi=*=external.

jaimergp commented 1 month ago

A couple realizations now:

jaimergp commented 1 month ago

One problem I see in the verbose logs is that mpi4py are not selected by their dependency tree, but by their timestamp. So it might be completely an arbitrary selection depending on when they were uploaded.

For pocl mpi4py python=3.8, we get:

info     libsolv  Fallback to timestamp comparison: 1716628442 vs 1716628424: [-1]
info     libsolv  Selecting variant [a] of (a) mpi4py-3.1.6-py38h8fe8add_1 vs (b) mpi4py-3.1.6-py38hb46441e_1 (score: -1)
info     libsolv  Fallback to timestamp comparison: 1716628424 vs 1716628396: [-1]
info     libsolv  Selecting variant [a] of (a) mpi4py-3.1.6-py38hb46441e_1 vs (b) mpi4py-3.1.6-py38h3a23cd3_1 (score: -1)
info     libsolv  creating a branch [data=422478]:
info     libsolv    - mpi4py-3.1.6-py38h8fe8add_1
info     libsolv    - mpi4py-3.1.6-py38hb46441e_1
info     libsolv    - mpi4py-3.1.6-py38h3a23cd3_1
info     libsolv  installing mpi4py-3.1.6-py38h8fe8add_1

We have to select between:

Who won? mpich variant, because it was uploaded last. It then proceeds with the mpich variants:

info     libsolv  prune_to_best_version_conda 2
info     libsolv  - mpich-4.2.1-external_0 [393792]
info     libsolv  - mpich-4.2.1-h846660c_100 [393793]
info     libsolv  installing mpich-4.2.1-h846660c_100

And correctly selects *100 (and not external).


For pocl mpi4py python=3.10, we face the same timestamp comparison for mpi variants:

info     libsolv  Fallback to timestamp comparison: 1716628399 vs 1716628408: [1]
info     libsolv  Selecting variant [b] of (a) mpi4py-3.1.6-py310hcb86253_1 vs (b) mpi4py-3.1.6-py310haa59e97_1 (score: 1)
info     libsolv  Fallback to timestamp comparison: 1716628399 vs 1716628431: [1]
info     libsolv  Selecting variant [b] of (a) mpi4py-3.1.6-py310hcb86253_1 vs (b) mpi4py-3.1.6-py310hb2ba3f8_1 (score: 1)
info     libsolv  Fallback to timestamp comparison: 1716628408 vs 1716628431: [1]
info     libsolv  Selecting variant [b] of (a) mpi4py-3.1.6-py310haa59e97_1 vs (b) mpi4py-3.1.6-py310hb2ba3f8_1 (score: 1)
info     libsolv  creating a branch [data=422478]:
info     libsolv    - mpi4py-3.1.6-py310hb2ba3f8_1
info     libsolv    - mpi4py-3.1.6-py310haa59e97_1
info     libsolv    - mpi4py-3.1.6-py310hcb86253_1
info     libsolv  installing mpi4py-3.1.6-py310hb2ba3f8_1

In this case we have:

This time openmpi was last, so it's picked. However, this time the openmpi pruned list only has the external variants:

info     libsolv  prune_to_best_version_conda 3
info     libsolv  - openmpi-5.0.3-external_0 [402452]
info     libsolv  - openmpi-5.0.3-external_1 [402453]
info     libsolv  - openmpi-5.0.3-external_2 [402454]
info     libsolv  installing openmpi-5.0.3-external_2

The non-external variants were never given a chance 🤔 prune_to_best_version_conda is described here. That code is in libsolv's policy.c, but it's later edited with a feedstock patch. @wolfv wrote that so maybe we should ask him for clarification here on what to expect.

jaimergp commented 1 month ago

I will add pixi does pick the correct openmpi (non-external) if you specify a python=3.10, python=3.11, python=3.12, but not if you pick python=3.8, python=3.9 or don't specify any Python at all 🤷

This pixi.toml works:

[project]
name = "openmpi-external"
version = "0.1.0"
description = "Add a short description here"
authors = ["jaimergp <jaimergp@users.noreply.github.com>"]
channels = ["conda-forge"]
platforms = ["linux-64"]

[tasks]

[dependencies]
pocl = "*"
mpi4py = "*"
python= "3.10.*"  # also ok with "3.11.*" and "3.12.*"

This does not:

[project]
name = "openmpi-external"
version = "0.1.0"
description = "Add a short description here"
authors = ["jaimergp <jaimergp@users.noreply.github.com>"]
channels = ["conda-forge"]
platforms = ["linux-64"]

[tasks]

[dependencies]
pocl = "*"
mpi4py = "*"
# you can add python = "3.8" and python = "3.9"
jaimergp commented 1 month ago

After all, I think it does boil down to libhwloc=2 vs v1. I couldn't see it before because I was not setting my virtual GLIBC to 2.17. So to sum up:

So I'm assuming that if pocl build 5 is marked as broken and rebuilt with libhwloc as intended, then things should work?

matthiasdiener commented 1 month ago

cc @matthiasdiener: do you recall what the story was with pocl build numbers vs hwloc versions?

Since pocl 5.0 * _1 (hwloc2.9.3 migration: https://github.com/conda-forge/pocl-feedstock/pull/93), pocl was build against two different hwloc2 versions, but not hwloc1 (see e.g. https://github.com/conda-forge/pocl-feedstock/pull/96#discussion_r1605422994). In the most recent version (pocl 5.0 * _5), re-rendering restored building against hwloc2 and hwloc1 (see https://github.com/conda-forge/pocl-feedstock/pull/100#issuecomment-2128059367).

jaimergp commented 1 month ago

Looking at it... there's some non-standard config in those .ci_support files. c_stdlib_version 2.12 with a 2.17 CUDA image? 🤔 Is that intended or an oversight? Makes me wonder about the GLIBC differences above.

matthiasdiener commented 1 month ago

So I'm assuming that if pocl build 5 is marked as broken and rebuilt with libhwloc as intended, then things should work?

From what I can tell, build 5 is the (currently) intended hwloc configuration (i.e., building against hwloc1.11.13 and hwloc2.10.0). I'm not sure we really need that hwloc1 build though.

cc @isuruf

jaimergp commented 1 month ago

Ah, there are two builds, ok. I'm not sure why only forcing libhwloc=2 + glibc=2.17 works then. The pixi logs do have a bit more detail about how and why packages are selected or discarded, but I could not find anything conclusive.

beckermr commented 1 month ago

The external build has way fewer dependencies. This is likely causing large scale changes in how the solver inspect branches?

h-vetinari commented 1 month ago

Looking at it... there's some non-standard config in those .ci_support files. c_stdlib_version 2.12 with a 2.17 CUDA image? 🤔 Is that intended or an oversight? Makes me wonder about the GLIBC differences above.

POCL overrides the docker images (to outdated CUDA versions). I don't know why that would have been desirable, but those images should move on (or just use the CUDA 12 components in-recipe and drop the override).

beckermr commented 1 month ago

Alright. All of the PRs have been merged here. It will take roughly 1-2 hours for the infrastructure to sync everything back up. Once it does, let's try again and see what happens.

One possible side effect is that the solver will just pick the openmpi 4 external builds. We can deal with that if it happens via some complicated and ugly repodata patching.

beckermr commented 1 month ago

This appears to be fixed in that now we get intel mpi which is a real mpi

% CONDA_SUBDIR=linux-64 conda create -n test-mpi pocl mpi4py 
Channels:
 - conda-forge
Platform: linux-64
Collecting package metadata (repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: /Users/beckermr/mambaforge/envs/test-mpi

  added / updated specs:
    - mpi4py
    - pocl

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    _libgcc_mutex-0.1          |      conda_forge           3 KB  conda-forge
    _openmp_mutex-4.5          |            2_gnu          23 KB  conda-forge
    bzip2-1.0.8                |       hd590300_5         248 KB  conda-forge
    ca-certificates-2024.2.2   |       hbcca054_0         152 KB  conda-forge
    icu-73.2                   |       h59595ed_0        11.5 MB  conda-forge
    impi_rt-2021.12.0          |     ha770c72_536        36.1 MB  conda-forge
    ld_impl_linux-64-2.40      |       hf3520f5_1         691 KB  conda-forge
    libclang-cpp15-15.0.7      |default_h127d8a8_5        16.4 MB  conda-forge
    libexpat-2.6.2             |       h59595ed_0          72 KB  conda-forge
    libffi-3.4.2               |       h7f98852_5          57 KB  conda-forge
    libgcc-ng-13.2.0           |       h77fa898_7         758 KB  conda-forge
    libgomp-13.2.0             |       h77fa898_7         412 KB  conda-forge
    libhwloc-1.11.13           |       h8b7812e_2         1.8 MB  conda-forge
    libiconv-1.17              |       hd590300_2         689 KB  conda-forge
    libllvm15-15.0.7           |       hb3ce162_4        31.8 MB  conda-forge
    libllvmspirv15-15.0.0      |       h0cdce71_1        1010 KB  conda-forge
    libnsl-2.0.1               |       hd590300_0          33 KB  conda-forge
    libsqlite-3.45.3           |       h2797004_0         840 KB  conda-forge
    libstdcxx-ng-13.2.0        |       hc0a3c3a_7         3.7 MB  conda-forge
    libuuid-2.38.1             |       h0b41bf4_0          33 KB  conda-forge
    libxcrypt-4.4.36           |       hd590300_1          98 KB  conda-forge
    libxml2-2.12.7             |       hc051c1a_0         689 KB  conda-forge
    libzlib-1.2.13             |       h4ab18f5_6          60 KB  conda-forge
    llvm-spirv-15-15.0.0       |       h0cdce71_1          49 KB  conda-forge
    mpi-1.0                    |             impi           6 KB  conda-forge
    mpi4py-3.1.6               |  py312h61186ca_1         553 KB  conda-forge
    ncurses-6.5                |       h59595ed_0         867 KB  conda-forge
    ocl-icd-2.3.2              |       hd590300_1         133 KB  conda-forge
    openssl-3.3.0              |       h4ab18f5_3         2.8 MB  conda-forge
    pocl-5.0                   |       h03a6ac1_5          14 KB  conda-forge
    pocl-core-5.0              |       h1fad545_5         721 KB  conda-forge
    pocl-cpu-5.0               |       h55a2082_5          24 KB  conda-forge
    pocl-cpu-minimal-5.0       |       hf9ad923_5        13.1 MB  conda-forge
    pocl-cuda-5.0              |       hb452e98_5         965 KB  conda-forge
    pocl-remote-5.0            |       hf9ad923_5          53 KB  conda-forge
    python-3.12.3              |hab00c5b_0_cpython        30.5 MB  conda-forge
    python_abi-3.12            |          4_cp312           6 KB  conda-forge
    readline-8.2               |       h8228510_1         275 KB  conda-forge
    tk-8.6.13                  |noxft_h4845f30_101         3.2 MB  conda-forge
    xz-5.2.6                   |       h166bdaf_0         409 KB  conda-forge
    zstd-1.5.6                 |       ha6fb4c9_0         542 KB  conda-forge
    ------------------------------------------------------------
                                           Total:       161.0 MB

The following NEW packages will be INSTALLED:

  _libgcc_mutex      conda-forge/linux-64::_libgcc_mutex-0.1-conda_forge 
  _openmp_mutex      conda-forge/linux-64::_openmp_mutex-4.5-2_gnu 
  bzip2              conda-forge/linux-64::bzip2-1.0.8-hd590300_5 
  ca-certificates    conda-forge/linux-64::ca-certificates-2024.2.2-hbcca054_0 
  icu                conda-forge/linux-64::icu-73.2-h59595ed_0 
  impi_rt            conda-forge/linux-64::impi_rt-2021.12.0-ha770c72_536 
  ld_impl_linux-64   conda-forge/linux-64::ld_impl_linux-64-2.40-hf3520f5_1 
  libclang-cpp15     conda-forge/linux-64::libclang-cpp15-15.0.7-default_h127d8a8_5 
  libexpat           conda-forge/linux-64::libexpat-2.6.2-h59595ed_0 
  libffi             conda-forge/linux-64::libffi-3.4.2-h7f98852_5 
  libgcc-ng          conda-forge/linux-64::libgcc-ng-13.2.0-h77fa898_7 
  libgomp            conda-forge/linux-64::libgomp-13.2.0-h77fa898_7 
  libhwloc           conda-forge/linux-64::libhwloc-1.11.13-h8b7812e_2 
  libiconv           conda-forge/linux-64::libiconv-1.17-hd590300_2 
  libllvm15          conda-forge/linux-64::libllvm15-15.0.7-hb3ce162_4 
  libllvmspirv15     conda-forge/linux-64::libllvmspirv15-15.0.0-h0cdce71_1 
  libnsl             conda-forge/linux-64::libnsl-2.0.1-hd590300_0 
  libsqlite          conda-forge/linux-64::libsqlite-3.45.3-h2797004_0 
  libstdcxx-ng       conda-forge/linux-64::libstdcxx-ng-13.2.0-hc0a3c3a_7 
  libuuid            conda-forge/linux-64::libuuid-2.38.1-h0b41bf4_0 
  libxcrypt          conda-forge/linux-64::libxcrypt-4.4.36-hd590300_1 
  libxml2            conda-forge/linux-64::libxml2-2.12.7-hc051c1a_0 
  libzlib            conda-forge/linux-64::libzlib-1.2.13-h4ab18f5_6 
  llvm-spirv-15      conda-forge/linux-64::llvm-spirv-15-15.0.0-h0cdce71_1 
  mpi                conda-forge/linux-64::mpi-1.0-impi 
  mpi4py             conda-forge/linux-64::mpi4py-3.1.6-py312h61186ca_1 
  ncurses            conda-forge/linux-64::ncurses-6.5-h59595ed_0 
  ocl-icd            conda-forge/linux-64::ocl-icd-2.3.2-hd590300_1 
  openssl            conda-forge/linux-64::openssl-3.3.0-h4ab18f5_3 
  pocl               conda-forge/linux-64::pocl-5.0-h03a6ac1_5 
  pocl-core          conda-forge/linux-64::pocl-core-5.0-h1fad545_5 
  pocl-cpu           conda-forge/linux-64::pocl-cpu-5.0-h55a2082_5 
  pocl-cpu-minimal   conda-forge/linux-64::pocl-cpu-minimal-5.0-hf9ad923_5 
  pocl-cuda          conda-forge/linux-64::pocl-cuda-5.0-hb452e98_5 
  pocl-remote        conda-forge/linux-64::pocl-remote-5.0-hf9ad923_5 
  python             conda-forge/linux-64::python-3.12.3-hab00c5b_0_cpython 
  python_abi         conda-forge/linux-64::python_abi-3.12-4_cp312 
  readline           conda-forge/linux-64::readline-8.2-h8228510_1 
  tk                 conda-forge/linux-64::tk-8.6.13-noxft_h4845f30_101 
  tzdata             conda-forge/noarch::tzdata-2024a-h0c530f3_0 
  xz                 conda-forge/linux-64::xz-5.2.6-h166bdaf_0 
  zstd               conda-forge/linux-64::zstd-1.5.6-ha6fb4c9_0 

Proceed ([y]/n)? 
beckermr commented 1 month ago

As I predicted the solver now defaults to 4 for openmpi

% CONDA_SUBDIR=linux-64 conda create -n test-mpi pocl mpi4py openmpi
Channels:
 - conda-forge
Platform: linux-64
Collecting package metadata (repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: /Users/beckermr/mambaforge/envs/test-mpi

  added / updated specs:
    - mpi4py
    - openmpi
    - pocl

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    _libgcc_mutex-0.1          |      conda_forge           3 KB  conda-forge
    _openmp_mutex-4.5          |            2_gnu          23 KB  conda-forge
    bzip2-1.0.8                |       hd590300_5         248 KB  conda-forge
    ca-certificates-2024.2.2   |       hbcca054_0         152 KB  conda-forge
    icu-73.2                   |       h59595ed_0        11.5 MB  conda-forge
    ld_impl_linux-64-2.40      |       hf3520f5_1         691 KB  conda-forge
    libclang-cpp15-15.0.7      |default_h127d8a8_5        16.4 MB  conda-forge
    libexpat-2.6.2             |       h59595ed_0          72 KB  conda-forge
    libffi-3.4.2               |       h7f98852_5          57 KB  conda-forge
    libgcc-ng-13.2.0           |       h77fa898_7         758 KB  conda-forge
    libgfortran-ng-13.2.0      |       h69a702a_7          24 KB  conda-forge
    libgfortran5-13.2.0        |       hca663fb_7         1.4 MB  conda-forge
    libgomp-13.2.0             |       h77fa898_7         412 KB  conda-forge
    libhwloc-1.11.13           |       h8b7812e_2         1.8 MB  conda-forge
    libiconv-1.17              |       hd590300_2         689 KB  conda-forge
    libllvm15-15.0.7           |       hb3ce162_4        31.8 MB  conda-forge
    libllvmspirv15-15.0.0      |       h0cdce71_1        1010 KB  conda-forge
    libnsl-2.0.1               |       hd590300_0          33 KB  conda-forge
    libsqlite-3.45.3           |       h2797004_0         840 KB  conda-forge
    libstdcxx-ng-13.2.0        |       hc0a3c3a_7         3.7 MB  conda-forge
    libuuid-2.38.1             |       h0b41bf4_0          33 KB  conda-forge
    libxcrypt-4.4.36           |       hd590300_1          98 KB  conda-forge
    libxml2-2.12.7             |       hc051c1a_0         689 KB  conda-forge
    libzlib-1.2.13             |       h4ab18f5_6          60 KB  conda-forge
    llvm-spirv-15-15.0.0       |       h0cdce71_1          49 KB  conda-forge
    mpi-1.0                    |          openmpi           4 KB  conda-forge
    mpi4py-3.1.6               |  py312h67a4414_0         555 KB  conda-forge
    ncurses-6.5                |       h59595ed_0         867 KB  conda-forge
    ocl-icd-2.3.2              |       hd590300_1         133 KB  conda-forge
    openmpi-4.1.6              |     hc5af2df_101         3.9 MB  conda-forge
    openssl-3.3.0              |       h4ab18f5_3         2.8 MB  conda-forge
    pocl-5.0                   |       h03a6ac1_5          14 KB  conda-forge
    pocl-core-5.0              |       h1fad545_5         721 KB  conda-forge
    pocl-cpu-5.0               |       h55a2082_5          24 KB  conda-forge
    pocl-cpu-minimal-5.0       |       hf9ad923_5        13.1 MB  conda-forge
    pocl-cuda-5.0              |       hb452e98_5         965 KB  conda-forge
    pocl-remote-5.0            |       hf9ad923_5          53 KB  conda-forge
    python-3.12.3              |hab00c5b_0_cpython        30.5 MB  conda-forge
    python_abi-3.12            |          4_cp312           6 KB  conda-forge
    readline-8.2               |       h8228510_1         275 KB  conda-forge
    tk-8.6.13                  |noxft_h4845f30_101         3.2 MB  conda-forge
    xz-5.2.6                   |       h166bdaf_0         409 KB  conda-forge
    zlib-1.2.13                |       h4ab18f5_6          91 KB  conda-forge
    zstd-1.5.6                 |       ha6fb4c9_0         542 KB  conda-forge
    ------------------------------------------------------------
                                           Total:       130.3 MB

The following NEW packages will be INSTALLED:

  _libgcc_mutex      conda-forge/linux-64::_libgcc_mutex-0.1-conda_forge 
  _openmp_mutex      conda-forge/linux-64::_openmp_mutex-4.5-2_gnu 
  bzip2              conda-forge/linux-64::bzip2-1.0.8-hd590300_5 
  ca-certificates    conda-forge/linux-64::ca-certificates-2024.2.2-hbcca054_0 
  icu                conda-forge/linux-64::icu-73.2-h59595ed_0 
  ld_impl_linux-64   conda-forge/linux-64::ld_impl_linux-64-2.40-hf3520f5_1 
  libclang-cpp15     conda-forge/linux-64::libclang-cpp15-15.0.7-default_h127d8a8_5 
  libexpat           conda-forge/linux-64::libexpat-2.6.2-h59595ed_0 
  libffi             conda-forge/linux-64::libffi-3.4.2-h7f98852_5 
  libgcc-ng          conda-forge/linux-64::libgcc-ng-13.2.0-h77fa898_7 
  libgfortran-ng     conda-forge/linux-64::libgfortran-ng-13.2.0-h69a702a_7 
  libgfortran5       conda-forge/linux-64::libgfortran5-13.2.0-hca663fb_7 
  libgomp            conda-forge/linux-64::libgomp-13.2.0-h77fa898_7 
  libhwloc           conda-forge/linux-64::libhwloc-1.11.13-h8b7812e_2 
  libiconv           conda-forge/linux-64::libiconv-1.17-hd590300_2 
  libllvm15          conda-forge/linux-64::libllvm15-15.0.7-hb3ce162_4 
  libllvmspirv15     conda-forge/linux-64::libllvmspirv15-15.0.0-h0cdce71_1 
  libnsl             conda-forge/linux-64::libnsl-2.0.1-hd590300_0 
  libsqlite          conda-forge/linux-64::libsqlite-3.45.3-h2797004_0 
  libstdcxx-ng       conda-forge/linux-64::libstdcxx-ng-13.2.0-hc0a3c3a_7 
  libuuid            conda-forge/linux-64::libuuid-2.38.1-h0b41bf4_0 
  libxcrypt          conda-forge/linux-64::libxcrypt-4.4.36-hd590300_1 
  libxml2            conda-forge/linux-64::libxml2-2.12.7-hc051c1a_0 
  libzlib            conda-forge/linux-64::libzlib-1.2.13-h4ab18f5_6 
  llvm-spirv-15      conda-forge/linux-64::llvm-spirv-15-15.0.0-h0cdce71_1 
  mpi                conda-forge/linux-64::mpi-1.0-openmpi 
  mpi4py             conda-forge/linux-64::mpi4py-3.1.6-py312h67a4414_0 
  ncurses            conda-forge/linux-64::ncurses-6.5-h59595ed_0 
  ocl-icd            conda-forge/linux-64::ocl-icd-2.3.2-hd590300_1 
  openmpi            conda-forge/linux-64::openmpi-4.1.6-hc5af2df_101 
  openssl            conda-forge/linux-64::openssl-3.3.0-h4ab18f5_3 
  pocl               conda-forge/linux-64::pocl-5.0-h03a6ac1_5 
  pocl-core          conda-forge/linux-64::pocl-core-5.0-h1fad545_5 
  pocl-cpu           conda-forge/linux-64::pocl-cpu-5.0-h55a2082_5 
  pocl-cpu-minimal   conda-forge/linux-64::pocl-cpu-minimal-5.0-hf9ad923_5 
  pocl-cuda          conda-forge/linux-64::pocl-cuda-5.0-hb452e98_5 
  pocl-remote        conda-forge/linux-64::pocl-remote-5.0-hf9ad923_5 
  python             conda-forge/linux-64::python-3.12.3-hab00c5b_0_cpython 
  python_abi         conda-forge/linux-64::python_abi-3.12-4_cp312 
  readline           conda-forge/linux-64::readline-8.2-h8228510_1 
  tk                 conda-forge/linux-64::tk-8.6.13-noxft_h4845f30_101 
  tzdata             conda-forge/noarch::tzdata-2024a-h0c530f3_0 
  xz                 conda-forge/linux-64::xz-5.2.6-h166bdaf_0 
  zlib               conda-forge/linux-64::zlib-1.2.13-h4ab18f5_6 
  zstd               conda-forge/linux-64::zstd-1.5.6-ha6fb4c9_0 

Proceed ([y]/n)? 

This is OK since it is a real build and a valid solution.

beckermr commented 1 month ago

If I correctly supply the 2.17 virtual package, this works

 % CONDA_OVERRIDE_GLIBC=2.17 CONDA_SUBDIR=linux-64 conda create -n test-mpi pocl mpi4py openmpi=5
Channels:
 - conda-forge
Platform: linux-64
Collecting package metadata (repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: /Users/beckermr/mambaforge/envs/test-mpi

  added / updated specs:
    - mpi4py
    - openmpi=5
    - pocl

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    _libgcc_mutex-0.1          |      conda_forge           3 KB  conda-forge
    _openmp_mutex-4.5          |            2_gnu          23 KB  conda-forge
    bzip2-1.0.8                |       hd590300_5         248 KB  conda-forge
    ca-certificates-2024.2.2   |       hbcca054_0         152 KB  conda-forge
    icu-73.2                   |       h59595ed_0        11.5 MB  conda-forge
    ld_impl_linux-64-2.40      |       hf3520f5_1         691 KB  conda-forge
    libclang-cpp15-15.0.7      |default_h127d8a8_5        16.4 MB  conda-forge
    libevent-2.1.12            |       hf998b51_1         417 KB  conda-forge
    libexpat-2.6.2             |       h59595ed_0          72 KB  conda-forge
    libffi-3.4.2               |       h7f98852_5          57 KB  conda-forge
    libgcc-ng-13.2.0           |       h77fa898_7         758 KB  conda-forge
    libgfortran-ng-13.2.0      |       h69a702a_7          24 KB  conda-forge
    libgfortran5-13.2.0        |       hca663fb_7         1.4 MB  conda-forge
    libgomp-13.2.0             |       h77fa898_7         412 KB  conda-forge
    libhwloc-2.10.0            |default_h5622ce7_1001         2.3 MB  conda-forge
    libiconv-1.17              |       hd590300_2         689 KB  conda-forge
    libllvm15-15.0.7           |       hb3ce162_4        31.8 MB  conda-forge
    libllvmspirv15-15.0.0      |       h0cdce71_1        1010 KB  conda-forge
    libnl-3.9.0                |       hd590300_0         716 KB  conda-forge
    libnsl-2.0.1               |       hd590300_0          33 KB  conda-forge
    libsqlite-3.45.3           |       h2797004_0         840 KB  conda-forge
    libstdcxx-ng-13.2.0        |       hc0a3c3a_7         3.7 MB  conda-forge
    libuuid-2.38.1             |       h0b41bf4_0          33 KB  conda-forge
    libxcrypt-4.4.36           |       hd590300_1          98 KB  conda-forge
    libxml2-2.12.7             |       hc051c1a_0         689 KB  conda-forge
    libzlib-1.2.13             |       h4ab18f5_6          60 KB  conda-forge
    llvm-spirv-15-15.0.0       |       h0cdce71_1          49 KB  conda-forge
    mpi-1.0                    |          openmpi           4 KB  conda-forge
    mpi4py-3.1.6               |  py312hae4ded5_1         555 KB  conda-forge
    ncurses-6.5                |       h59595ed_0         867 KB  conda-forge
    ocl-icd-2.3.2              |       hd590300_1         133 KB  conda-forge
    openmpi-5.0.3              |     hfd7b305_103        13.7 MB  conda-forge
    openssl-3.3.0              |       h4ab18f5_3         2.8 MB  conda-forge
    pocl-5.0                   |       h03a6ac1_4          13 KB  conda-forge
    pocl-core-5.0              |       hbf9fd79_4         720 KB  conda-forge
    pocl-cpu-5.0               |       hea57645_4          24 KB  conda-forge
    pocl-cpu-minimal-5.0       |       h1b31331_4        13.1 MB  conda-forge
    pocl-cuda-5.0              |       hd8896d7_4         966 KB  conda-forge
    pocl-remote-5.0            |       h1b31331_4          53 KB  conda-forge
    python-3.12.3              |hab00c5b_0_cpython        30.5 MB  conda-forge
    python_abi-3.12            |          4_cp312           6 KB  conda-forge
    readline-8.2               |       h8228510_1         275 KB  conda-forge
    tk-8.6.13                  |noxft_h4845f30_101         3.2 MB  conda-forge
    xz-5.2.6                   |       h166bdaf_0         409 KB  conda-forge
    zstd-1.5.6                 |       ha6fb4c9_0         542 KB  conda-forge
    ------------------------------------------------------------
                                           Total:       141.7 MB

The following NEW packages will be INSTALLED:

  _libgcc_mutex      conda-forge/linux-64::_libgcc_mutex-0.1-conda_forge 
  _openmp_mutex      conda-forge/linux-64::_openmp_mutex-4.5-2_gnu 
  bzip2              conda-forge/linux-64::bzip2-1.0.8-hd590300_5 
  ca-certificates    conda-forge/linux-64::ca-certificates-2024.2.2-hbcca054_0 
  icu                conda-forge/linux-64::icu-73.2-h59595ed_0 
  ld_impl_linux-64   conda-forge/linux-64::ld_impl_linux-64-2.40-hf3520f5_1 
  libclang-cpp15     conda-forge/linux-64::libclang-cpp15-15.0.7-default_h127d8a8_5 
  libevent           conda-forge/linux-64::libevent-2.1.12-hf998b51_1 
  libexpat           conda-forge/linux-64::libexpat-2.6.2-h59595ed_0 
  libffi             conda-forge/linux-64::libffi-3.4.2-h7f98852_5 
  libgcc-ng          conda-forge/linux-64::libgcc-ng-13.2.0-h77fa898_7 
  libgfortran-ng     conda-forge/linux-64::libgfortran-ng-13.2.0-h69a702a_7 
  libgfortran5       conda-forge/linux-64::libgfortran5-13.2.0-hca663fb_7 
  libgomp            conda-forge/linux-64::libgomp-13.2.0-h77fa898_7 
  libhwloc           conda-forge/linux-64::libhwloc-2.10.0-default_h5622ce7_1001 
  libiconv           conda-forge/linux-64::libiconv-1.17-hd590300_2 
  libllvm15          conda-forge/linux-64::libllvm15-15.0.7-hb3ce162_4 
  libllvmspirv15     conda-forge/linux-64::libllvmspirv15-15.0.0-h0cdce71_1 
  libnl              conda-forge/linux-64::libnl-3.9.0-hd590300_0 
  libnsl             conda-forge/linux-64::libnsl-2.0.1-hd590300_0 
  libsqlite          conda-forge/linux-64::libsqlite-3.45.3-h2797004_0 
  libstdcxx-ng       conda-forge/linux-64::libstdcxx-ng-13.2.0-hc0a3c3a_7 
  libuuid            conda-forge/linux-64::libuuid-2.38.1-h0b41bf4_0 
  libxcrypt          conda-forge/linux-64::libxcrypt-4.4.36-hd590300_1 
  libxml2            conda-forge/linux-64::libxml2-2.12.7-hc051c1a_0 
  libzlib            conda-forge/linux-64::libzlib-1.2.13-h4ab18f5_6 
  llvm-spirv-15      conda-forge/linux-64::llvm-spirv-15-15.0.0-h0cdce71_1 
  mpi                conda-forge/linux-64::mpi-1.0-openmpi 
  mpi4py             conda-forge/linux-64::mpi4py-3.1.6-py312hae4ded5_1 
  ncurses            conda-forge/linux-64::ncurses-6.5-h59595ed_0 
  ocl-icd            conda-forge/linux-64::ocl-icd-2.3.2-hd590300_1 
  openmpi            conda-forge/linux-64::openmpi-5.0.3-hfd7b305_103 
  openssl            conda-forge/linux-64::openssl-3.3.0-h4ab18f5_3 
  pocl               conda-forge/linux-64::pocl-5.0-h03a6ac1_4 
  pocl-core          conda-forge/linux-64::pocl-core-5.0-hbf9fd79_4 
  pocl-cpu           conda-forge/linux-64::pocl-cpu-5.0-hea57645_4 
  pocl-cpu-minimal   conda-forge/linux-64::pocl-cpu-minimal-5.0-h1b31331_4 
  pocl-cuda          conda-forge/linux-64::pocl-cuda-5.0-hd8896d7_4 
  pocl-remote        conda-forge/linux-64::pocl-remote-5.0-h1b31331_4 
  python             conda-forge/linux-64::python-3.12.3-hab00c5b_0_cpython 
  python_abi         conda-forge/linux-64::python_abi-3.12-4_cp312 
  readline           conda-forge/linux-64::readline-8.2-h8228510_1 
  tk                 conda-forge/linux-64::tk-8.6.13-noxft_h4845f30_101 
  tzdata             conda-forge/noarch::tzdata-2024a-h0c530f3_0 
  xz                 conda-forge/linux-64::xz-5.2.6-h166bdaf_0 
  zstd               conda-forge/linux-64::zstd-1.5.6-ha6fb4c9_0 

Proceed ([y]/n)? 
beckermr commented 1 month ago

We appear to have solved the immediate issue, but I am still not 100% happy here. I suspect the solver is also trying to minimize the size of environments and that somehow this happens at the expense of the openmpi version. Does that make any sense @jaimergp?

jaimergp commented 1 month ago

Yes, could be. In classic you can see comments about minimizing count of packages in different categories, so maybe that also happens in libsolv-based solvers?

I'm concerned about the lack of criteria to select one or other mpi variant and that it's mostly based on timestamps and their arbitrary upload time. See https://github.com/conda-forge/openmpi-feedstock/issues/153#issuecomment-2137871898.

beckermr commented 1 month ago

Yeah we don't prioritize any of the various mpi providers. That is a separate issue.

beckermr commented 1 month ago

@minrk @jaimergp I have a draft plugins package here: https://github.com/regro/conda-forge-conda-plugins

If you all can try it out and see how it works, that'd be great. If we are happy with it, we can start shipping it in conda-forge and making the external variants use the packages.

inducer commented 3 weeks ago

It turns out the build number drop observed here is important, and I'm trying to figure out how to prevent it. Arguably, that's a separate issue, so I filed a separate issue:

https://github.com/conda-forge/pocl-feedstock/issues/101