-
Esimerkkejä
Esimerkkejä
Tämä osio sisältää esimerkkejä konttien rakentamisesta ja ajamisesta Roihussa ja Mahdissa.
Esimerkki: Python-virtuaaliympäristö
Seuraavaksi annamme esimerkin kontista, jossa on järjestelmän Python sekä virtuaaliympäristö, johon on asennettu Python-paketteja Pipillä. Voimme määritellä build-määrityksen seuraavasti:
Bootstrap: docker
From: docker.io/rockylinux/rockylinux:8.10
%post
# Replace the failing commands with always succeeding dummies.
cp /usr/bin/true /usr/sbin/useradd
cp /usr/bin/true /usr/sbin/groupadd
# Install Python with system package manager.
dnf -y update
dnf -y install python3.11 python3.11-pip
dnf -y clean all
# Create a Python virtual environment and install packages using pip.
python3.11 -m venv /opt/venv
export PATH=/opt/venv/bin:$PATH
python3.11 -m pip install --no-cache-dir numpy
%environment
export PATH=/opt/venv/bin:$PATH
Nyt voimme rakentaa kontti-imagen seuraavasti:
Lopuksi voimme suorittaa komentoja kontin sisällä. Voimme esimerkiksi testata konttia listaamalla Pipillä asennetut Python-paketit:
Esimerkki: Paikallisen imagen laajentaminen
Voimme myös laajentaa olemassa olevia SIF-imageja.
Tässä esimerkissä laajennamme python-pip.sif-kontti-imagea lisäämällä siihen toisen Python-kirjaston seuraavasti:
Bootstrap: localimage
From: python-pip.sif
%post
python3.11 -m pip install --no-cache-dir pandas
Nyt rakennamme kontin tavalliseen tapaan:
Listataan Pipillä asennetut paketit nähdäksesi lisäämämme paketit:
Esimerkki: Roihun CPU-peruskontti OSU-mikrobenchmarkeilla
Peruskontteja on saatavilla:
satama.csc.fi/r_installation_spack/core-cpu-gcc-15.2.0:v2026_03(4.54 GB)
Build-määritystiedosto:
Bootstrap: docker
From: satama.csc.fi/r_installation_spack/core-cpu-gcc-15.2.0:v2026_03
%arguments
NPROCS=10
%post
# Activate module environment and load default modules.
. /opt/activate.sh
# Install tools
dnf install -y wget file which
# Build osu benchmarks
cd /opt
wget -q http://mvapich.cse.ohio-state.edu/download/mvapich/osu-micro-benchmarks-7.4.tar.gz
tar xf osu-micro-benchmarks-7.4.tar.gz
cd osu-micro-benchmarks-7.4
./configure --prefix=/opt/osu-micro-benchmarks CC=mpicc CXX=mpicxx CFLAGS=-O3
make -j{{ NPROCS }}
make install
cd ..
rm -rf osu-micro-benchmarks-7.4 osu-micro-benchmarks-7.4.tar.gz
%runscript
. /opt/activate.sh
exec "$@"
Kontteja rakennettaessa aseta Apptainerin välimuistihakemistoksi $TMPDIR, jotta kotihakemistön kiintiö ei täyty.
Nyt voit ajaa komentoja kontin sisällä ympäristö aktivoituna seuraavasti:
Slurm-ympäristömuuttujia tarvitaan, jotta MPI toimii!
Slurm-ympäristömuuttujien on välityttävä kontin ympäristöön, jotta MPI toimii.
Älä siis käytä --cleanenv, --contain tai vastaavia valitsimia.
batch.sh
#!/bin/bash
#SBATCH --account=<project> --partition=medium --mem=2G --nodes=2 --ntasks-per-node=1 --time=00:05:00
module purge
srun apptainer run container.sif /opt/osu-micro-benchmarks/libexec/osu-micro-benchmarks/mpi/pt2pt/osu_bibw
srun apptainer run container.sif /opt/osu-micro-benchmarks/libexec/osu-micro-benchmarks/mpi/pt2pt/osu_latency
Esimerkki: Roihun GPU-peruskontti NCCL-testeillä
Peruskontteja on saatavilla:
satama.csc.fi/r_installation_spack/core-gpu-gcc-15.2.0-cuda-13.1.1:v2026_03(13.7 GB)satama.csc.fi/r_installation_spack/core-gpu-gcc-14.3.0-cuda-12.9.1:v2026_03(15.9 GB)satama.csc.fi/r_installation_spack/core-gpu-gcc-13.4.0-cuda-12.6.3:v2026_03(13.5 GB)
Build-määritystiedosto:
Bootstrap: docker
From: satama.csc.fi/r_installation_spack/core-gpu-gcc-14.3.0-cuda-12.9.1:v2026_03
%arguments
NPROCS=10
%post
# Activate module environment and load default modules.
. /opt/activate.sh
# Install tools
dnf install -y wget file which
# Install NCCL Tests
module load nccl
cd /opt
wget https://github.com/NVIDIA/nccl-tests/archive/refs/tags/v2.18.3.tar.gz
tar xf v2.18.3.tar.gz
rm v2.18.3.tar.gz
cd nccl-tests-2.18.3
make -j{{NPROCS}} CUDA_HOME=$CUDA_HOME NCCL_HOME=$NCCL_INSTROOT
make -j{{NPROCS}} CUDA_HOME=$CUDA_HOME NCCL_HOME=$NCCL_INSTROOT MPI=1 MPI_HOME=$OPENMPI_INSTROOT NAME_SUFFIX=_mpi
%runscript
. /opt/activate.sh
module load nccl
exec "$@"
Kontteja rakennettaessa aseta Apptainerin välimuistihakemistoksi $TMPDIR, jotta kotihakemistön kiintiö ei täyty.
Nyt voit ajaa komentoja kontin sisällä ympäristö aktivoituna seuraavasti:
batch_single.sh
#!/bin/bash
#SBATCH --account=<project> --partition=gpumedium --mem=2G --nodes=2 --ntasks-per-node=1 --time=00:05:00 --gpus-per-node=1
module purge
srun apptainer run --nv nccl-tests-osu.sif /opt/osu-micro-benchmarks/libexec/osu-micro-benchmarks/mpi/pt2pt/osu_bibw
srun apptainer run --nv nccl-tests-osu.sif /opt/osu-micro-benchmarks/libexec/osu-micro-benchmarks/mpi/pt2pt/osu_latency
batch_mpi.sh
#!/bin/bash
#SBATCH --account=<project> --partition=gpumedium --nodes=2 --ntasks-per-node=4 --cpus-per-task=72 --gpus-per-node=4 --time=00:15:00
module purge
srun apptainer run --nv nccl-tests-osu.sif /opt/nccl-tests-2.18.3/build/all_reduce_perf_mpi -b 8 -e 128M -f 2 -g 1
Esimerkki: Make-konttien rakentamiseen
Makefilet ovat erinomainen tapa organisoida konttien rakentamisen logiikka. Jos Makefilejen toiminta ei ole sinulle tuttua, suosittelemme lukemaan erinomaisen Makefile Tutorial -oppaan.
Tässä on esimerkki Makefilen käyttämisestä kontin rakentamiseen määritystiedostosta nimeltä container.def SIF-tiedostoksi nimeltä container.sif.
TMPDIR ?= /tmp
PREFIX := .
CONTAINER_SIF := $(PREFIX)/container.sif
CONTAINER_DEF := container.def
.PHONY: all
all: $(CONTAINER_SIF)
$(CONTAINER_SIF): $(CONTAINER_DEF)
apptainer build --fakeroot --bind=$(TMPDIR):/tmp $@ $<
.PHONY: clean
clean:
rm -f $(CONTAINER_SIF)
Kutsutaan Makea kontin rakentamiseksi:
Voimme myös kutsua makea argumenteilla, kuten PREFIX, jotta kontti rakennetaan toiseen hakemistoon:
Esimerkki: Kiihdytetty visualisointisovellus
Aloita rakentamalla visualization -perusimage, joka sisältää VirtualGL:n, sen riippuvuudet ja apuskriptit.
Voimme rakentaa kiihdytettyjä visualisointisovelluksia, kuten Blender, visualization-perusimagen päälle.
Sovellus tulee suorittaa peruskonttiin asennetulla vglrun_wrapper-skriptillä.
Muut sovelluskontit
CSC:llä on konttien build-reseptejä eri sovelluksille singularity-recipes -repositoriossa. Tässä ovat reseptit, jotka voidaan rakentaa Apptainerilla fakerootia käyttäen Roihussa ja Mahdissa: