diff --git a/doc/apptainer/README.md b/doc/apptainer/README.md index 45b1f2b0..e549614d 100644 --- a/doc/apptainer/README.md +++ b/doc/apptainer/README.md @@ -1,6 +1,8 @@ # Install Fluidsim from source in an Apptainer container -The directory `fluidsim/doc/apptainer` contains what is needed to run Fluidsim with Apptainer. +The directory `fluidsim/doc/apptainer` contains what is needed to run Fluidsim +with Apptainer. See also +https://gricad-doc.univ-grenoble-alpes.fr/hpc/softenv/container/. ## Build the image locally on a node @@ -15,7 +17,7 @@ apptainer build image-fluidsim.sif image-fluidsim.def ## Run the image to install Fluidsim from source -From the host: +From the host (a node of the cluster!): ```sh cd ~/apptainer @@ -25,5 +27,16 @@ apptainer shell --no-home image-fluidsim.sif From the container: ```sh -... +python -m venv venv-fluidsim +. venv-fluidsim/bin/activate +HDF5_MPI="ON" pip install --no-binary=h5py h5py pytest pytest-mpi +python -c 'import h5py; h5py.run_tests()' +hg clone https://foss.heptapod.net/fluiddyn/fluidsim +cd fluidsim/ +pip install ".[test,mpi,fft]" +pytest --pyargs fluidsim +pip install fluidfft-fftw fluidfft-fftwmpi fluidfft-mpi_with_fftw +mpirun -np 2 pytest --pyargs fluidsim +pip install fluidfft-p3dfft +pip install fluidfft-pfft ``` diff --git a/doc/apptainer/image-fluidsim.def b/doc/apptainer/image-fluidsim.def index d39f211c..1a2e80af 100644 --- a/doc/apptainer/image-fluidsim.def +++ b/doc/apptainer/image-fluidsim.def @@ -6,18 +6,37 @@ From: python:3.11 apt-get -y install mercurial git less meld nano apt-get install -y --no-install-recommends \ - libfftw3-dev libfftw3-mpi-dev openmpi-bin libhdf5-openmpi-dev libopenblas-dev + libfftw3-dev libfftw3-mpi-dev openmpi-bin libhdf5-openmpi-dev libopenblas-dev \ + gfortran + mkdir -p /root/.local/include + mkdir -p /root/.local/lib export PATH=/root/.local/bin:$PATH + export CPATH=/root/.local/include + export LIBRARY_PATH=/root/.local/lib + export LD_LIBRARY_PATH=/root/.local/lib + python -m pip install pipx pipx install mercurial pipx inject mercurial hg-git hg-evolve hg-fluiddyn + wget https://foss.heptapod.net/fluiddyn/fluidsim/-/raw/topic/default/apptainer/doc/apptainer/hgrc -O ~/hgrc pipx install pdm pipx install nox - wget https://foss.heptapod.net/fluiddyn/fluidsim/-/raw/topic/default/apptainer/doc/apptainer/hgrc -O ~/hgrc + ln -s /usr/include/fftw* /root/.local/include + ln -s /usr/lib/x86_64-linux-gnu/libfftw3* /root/.local/lib + + wget https://foss.heptapod.net/fluiddyn/fluidfft/raw/branch/default/doc/install/install_p3dfft.sh -O ./install_p3dfft.sh + chmod +x install_p3dfft.sh + export FCFLAGS="-w -fallow-argument-mismatch -O2" + export FFLAGS="-w -fallow-argument-mismatch -O2" + ./install_p3dfft.sh + + wget https://foss.heptapod.net/fluiddyn/fluidfft/raw/branch/default/doc/install/install_pfft.sh -O ./install_pfft.sh + chmod +x install_pfft.sh + ./install_pfft.sh %startscript mkdir -p home @@ -25,6 +44,9 @@ From: python:3.11 %environment export LC_ALL=C export PATH=/root/.local/bin:$PATH + export CPATH=/root/.local/include + export LIBRARY_PATH=/root/.local/lib + export LD_LIBRARY_PATH=/root/.local/lib export HOME=$HOME/apptainer/home export HGRCPATH=/root/hgrc