Open folmos-at-orange opened 7 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.
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?
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
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)
@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?
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?
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.
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?
Maybe but that won't fix this issue though I think. The solver always wants a higher version over a higher build number.
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*'
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.
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.
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
micromamba create --dry-run -nx pocl mpi4py --platform=linux-64
mkdir -p /tmp/openmpi-external && cd /tmp/openmpi-external && pixi init && pixi add pocl mpi4py && cat pixi.lock
--solver=classic
does not get openmpi
at all:
conda create -dnx pocl mpi4py --platform=linux-64 --solver=classic --repodata-fn=repodata.json
Sure, here are all the package versions:
$ 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-forgeWith 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-forgeWith 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
pocl has a build number drop here - that seems relevant
cc @matthiasdiener: do you recall what the story was with pocl build numbers vs hwloc versions?
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
.
A couple realizations now:
python=3.9
(or 3.8) selects mpi=mpichOne 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.
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"
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:
CONDA_OVERRIDE_GLIBC=2.17 micromamba create --dry-run -nx mpi4py pocl --platform=linux-64
does not workCONDA_OVERRIDE_GLIBC=2.12 micromamba create --dry-run -nx mpi4py pocl libhwloc=2 --platform=linux-64
does not workCONDA_OVERRIDE_GLIBC=2.17 micromamba create --dry-run -nx mpi4py pocl libhwloc=2 --platform=linux-64
worksSo I'm assuming that if pocl
build 5 is marked as broken and rebuilt with libhwloc as intended, then things should work?
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).
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.
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
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.
The external build has way fewer dependencies. This is likely causing large scale changes in how the solver inspect branches?
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).
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.
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)?
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.
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)?
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?
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.
Yeah we don't prioritize any of the various mpi providers. That is a separate issue.
@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.
Comment:
I'm building a package depending on
openmpi
. I pinned the run dependency version to4.1.6
(which is on conda-forge). However when installing the package it sometimes resolve to theexternal
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