Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OpenMPI dependency resolving to external build #153

Open
folmos-at-orange opened this issue Apr 22, 2024 · 35 comments
Open

OpenMPI dependency resolving to external build #153

folmos-at-orange opened this issue Apr 22, 2024 · 35 comments
Labels

Comments

@folmos-at-orange
Copy link

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
Copy link
Contributor

dalcinl commented Apr 22, 2024

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
Copy link
Member

leofang commented Apr 22, 2024

I am clueless too, as we did ensure the non-external builds have a higher priority

# give conda package a higher build number
{% if mpi_type == 'conda' %}
{% set build = build + 100 %}
{% endif %}

maybe you can share the outcome of conda list and examine if there are potential conflicts?

@folmos-at-orange
Copy link
Author

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
Copy link

inducer commented May 28, 2024

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
Copy link
Member

leofang commented May 29, 2024

@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
Copy link
Member

leofang commented May 29, 2024

Something rang the bell. I see we use track_feature here:

track_features:

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
Copy link
Member

beckermr commented May 29, 2024

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
Copy link
Member

leofang commented May 29, 2024

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
Copy link
Member

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

@inducer
Copy link

inducer commented May 29, 2024

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
Copy link
Member

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
Copy link
Member

jaimergp commented May 29, 2024

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
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
Copy link

inducer commented May 29, 2024

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
Copy link
Member

pocl has a build number drop here - that seems relevant

@inducer
Copy link

inducer commented May 29, 2024

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

@jaimergp
Copy link
Member

jaimergp commented May 29, 2024

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
Copy link
Member

A couple realizations now:

  • Adding explicit python=3.9 (or 3.8) selects mpi=mpich
  • Python 3.10, 3.11 and 3.12 select mpi=openmpi-external

@jaimergp
Copy link
Member

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
Copy link
Member

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 <[email protected]>"]
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 <[email protected]>"]
channels = ["conda-forge"]
platforms = ["linux-64"]

[tasks]

[dependencies]
pocl = "*"
mpi4py = "*"
# you can add python = "3.8" and python = "3.9"

@jaimergp
Copy link
Member

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 work
  • CONDA_OVERRIDE_GLIBC=2.12 micromamba create --dry-run -nx mpi4py pocl libhwloc=2 --platform=linux-64 does not work
  • CONDA_OVERRIDE_GLIBC=2.17 micromamba create --dry-run -nx mpi4py pocl libhwloc=2 --platform=linux-64 works

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

@matthiasdiener
Copy link

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: conda-forge/pocl-feedstock#93), pocl was build against two different hwloc2 versions, but not hwloc1 (see e.g. conda-forge/pocl-feedstock#96 (comment)). In the most recent version (pocl 5.0 * _5), re-rendering restored building against hwloc2 and hwloc1 (see conda-forge/pocl-feedstock#100 (comment)).

@jaimergp
Copy link
Member

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
Copy link

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
Copy link
Member

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
Copy link
Member

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

@h-vetinari
Copy link
Member

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
Copy link
Member

beckermr commented May 30, 2024

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
Copy link
Member

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
Copy link
Member

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
Copy link
Member

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
Copy link
Member

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
Copy link
Member

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 #153 (comment).

@beckermr
Copy link
Member

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

@beckermr
Copy link
Member

@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
Copy link

inducer commented Jun 11, 2024

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:

conda-forge/pocl-feedstock#101

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

8 participants