Open BrianJKoopman opened 5 months ago
Thanks for the report, will try to investigate soon.
When running soconda.sh in the container, did you install OS packages for mpich or openmpi? If so, you should set the MPICC
environment variable to point to the system-installed mpicc compiler wrapper. If this environment variable is not set, then the conda package for openmpi will be installed (which might be what you want, not sure).
For example, at NERSC, we set MPICC to point to the Cray compiler wrapper ("cc") so that mpi4py is using the correct MPI implementation.
When running soconda.sh in the container, did you install OS packages for mpich or openmpi? If so, you should set the
MPICC
environment variable to point to the system-installed mpicc compiler wrapper. If this environment variable is not set, then the conda package for openmpi will be installed (which might be what you want, not sure).
Ah, no, that's probably the issue then. One suggestion I was going to make was a "dependencies" section in the soconda docs that includes the list of things like gcc
and g++
. mpich
/openmpi
would fit nicely there too. I'll try that out and get back to you, thanks for the suggestion!
A critical feature of soconda is that it uses the conda compiler packages to build everything (not any system compilers). The only exception is the mpi4py package, which needs to build against whatever MPI implementation works with a given cluster (e.g. which has needed network drivers for interconnects, etc).
So for local (single node) installations the conda provided openmpi should be fine. But for multi-node systems there is probably a "recommended" MPI installation set up by the system administrators.
However, for this docker container I guess the conda packages for MPI should be fine. Unless you already installed some other MPI in the container?
Anyway, if the OS provided MPI libraries work, then we can just use those instead of the conda provided ones
Ah, interesting. So I'm building on a "minimal image" provided by the Jupyter Project. It's ultimately based on the ubuntu:22.04 image, and comes with an already setup conda environment. However, that didn't seem to include gcc
or g++
, because things wouldn't compile without me installing those.
I'm not very familiar with conda, so I was hoping to leverage the existing conda environment and the install script here to have things "just work". Is it unusual that gcc
/g++
weren't found in the existing conda environment? Perhaps it's something else I'm doing wrong with the conda environment.
For example, at NERSC, we set MPICC to point to the Cray compiler wrapper ("cc") so that mpi4py is using the correct MPI implementation.
This script looks pretty helpful. I suspect actually that in my installation steps I'm not really activating the conda environment. I was trying to follow a suggestion from this blog post to do that, but maybe I'll just put everything in a script like you've linked here.
Ah, another thing- how are you installing the conda base environment? All of my installs are based on a base/root environment that was installed with the helper script.
./tools/bootstrap_base.sh /path/to/base
and then running soconda.sh
with -b /path/to/base
Ah, nevermind I see above that you are using the default anaconda base that comes with the docker image. In that case there might be a challenge if that is not configured to use the conda-forge channel by default. Let me go see what is in that minimal image.
Ok, looks like quay.io/jupyter/minimal-notebook
is indeed using conda-forge for the default channel. In that case you could probably just run these 2 lines to install conda-build to the base environment before running soconda.sh.
I'm building a docker image with soconda installed in it to run JupyterHub on Kubernetes at the site. After a bit of trial and error yesterday I have an image that I believe is quite close to functional, however I'm running into a failing test case when I run
run_tests.sh
:Configs I'm building with can be found on the
koopman/docker-configs
branch. I'm running with Python 3.11.8 in this image, as that's what's provided in the conda environment in the jupyter/minimal-notebook image this is based on.Is this failing test case a concern?