diff --git a/README.md b/README.md index 20ffea3..e7d5cf5 100644 --- a/README.md +++ b/README.md @@ -2,63 +2,159 @@ [Official Spack documentation](https://spack.readthedocs.io/en/latest/) -## How to use on Merlin7 +## How to use on Merlin systems (Merlin6/Merlin7) +```bash +module load spack + +# If you want to use the unstable software stack do: +spack env activate -p unstable +``` ### Install your own software ```bash -# Check if your package is already in Spack -user@login001:~> spack list $pkg_name # e.g opal +# Check if your package is already implemented in Spack +# You can also use the following website: https://packages.spack.io/ +[stable] user@login001:~> spack list $pkg_name # e.g opal # Check the package variants you want to set e.g +cuda +openmp ^openmpi ... -user@login001:~> spack info $pkg_name # e.g opal +[stable] user@login001:~> spack info $pkg_name # e.g opal -# Check the whole dependency tree of your spec and +# Add your package to the environment +[stable] user@login001:~> spack add $pkg_name@version +variant1 ^dep1@version1 + +# If you want to install from local source clone your source under +# /afs/psi.ch/sys/spack/user/$USER/spack-environment/$pkg_name +# and tell Spack you want to use it using: +[stable] user@login001:~> spack develop $pkg_name@version # Skip this if you don't want to develop from local source + +# Check the whole dependency tree of your spec and # if you don't need to set more variants -user@login001:~> spack spec $pkg_name@version +variant1 ^dep1@version ... +[stable] user@login001:~> spack concretize -# e.g spack spec opal@2022.1%gcc@7.5.0 +mithra ~python ^openmpi@4.1.6 ^openblas - -# Install your package -user@login001:~> spack install $pkg_name@version +variant1 ^dep1@version1 +# Install your packages +[stable] user@login001:~> spack install # -v for verbose # Load your package -user@login001:~> spack load $pkg_name@version +variant1 ^dep1@version1 +[stable] user@login001:~> spack load $pkg_name@version +variant1 ^dep1@version1 # Submit your script -user@login001:~> sbatch batch.script +[stable] user@login001:~> sbatch batch.script ``` +### Switching between environments + +There are two environment available to users; stable and unstable.
+The first one is loaded by default when loading the module.
+If you want to switch between the two and use different software stack you can use the following command: -### Develop your own software ```bash -# Check if your package is already in Spack -user@login001:~> spack list $pkg_name # e.g opal - -# Check the package variants you want to set e.g +cuda +openmp ^openmpi ... -user@login001:~> spack info $pkg_name # e.g opal - -# Create your own env and load it -user@login001:~> spack env activate --create -p myenv - -# Add the spec you want to build to your environement -user@login001:~> spack add $pkg_name@version +variant1 ^dep1@version ... - -# e.g spack add opal@master%gcc@7.5.0 +mithra ~python ^openmpi@4.1.6 ^openblas - -# Tell Spack you want to develop locally under -# /afs/psi.ch/sys/spack.x86_64_cos3.0/user/$USER/spack-environment/$pkg_name -user@login001:~> spack develop $pkg_name@version - -# Install the package locally -user@login001:~> spack install # first time, then you can just use make directly - -# Load your package -user@login001:~> spack load $pkg_name@version +variant1 ^dep1@version1 - -# Submit your script -user@login001:~> sbatch batch.script - +spack env activate -p unstable # or stable ``` +### Managing your environments + +When adding the following command you actually add a package to your own software stack; + +```bash +[stable] user@login001:~> spack add $pkg_name@version +variant1 ^dep1@version1 +``` + +You can check which package will be concretized and are in your environment using; + +```bash +[unstable] user@login001:~> spack find +==> In environment unstable +==> 1 root specs + - visit ~adios2+vtkm+gui + +==> Included specs +-- no arch / gcc ------------------------------------------------ +gromacs%gcc + +-- no arch / gcc@12.3.0 ----------------------------------------- +cp2k@2024.1%gcc@12.3.0 opal@master%gcc@12.3.0 py-alphafold@2.3.2%gcc@12.3.0 +cp2k@2024.1%gcc@12.3.0 py-alphafold@2.3.2%gcc@12.3.0 quantum-espresso@7.3.1%gcc@12.3.0 + +-- no arch / oneapi@2024.1.0 ------------------------------------ +gromacs@2024.1%oneapi@2024.1.0 + +==> Installed packages +-- linux-rhel7-x86_64 / gcc@4.8.5 ------------------------------- +autoconf@2.72 curl@8.7.1 gdbm@1.23 libffi@3.4.6 mpfr@4.2.1 pkg-config@0.29.2 readline@8.2 +autoconf@2.72 diffutils@3.10 gettext@0.19.8.1 libidn2@2.3.7 mpfr@4.2.1 pkg-config@0.29.2 sqlite@3.43.2 +autoconf-archive@2023.02.20 diffutils@3.10 gettext@0.19.8.1 libmd@1.0.4 ncurses@6.5 py-fypp@3.1 texinfo@7.0.3 +autoconf-archive@2023.02.20 expat@2.6.2 git@2.42.0 libpciaccess@0.17 ncurses@6.5 py-fypp@3.1 util-linux-uuid@2.36.2 +automake@1.16.5 findutils@4.9.0 glibc@2.17 libsigsegv@2.14 nghttp2@1.57.0 py-pip@23.1.2 util-macros@1.19.3 +automake@1.16.5 findutils@4.9.0 glibc@2.17 libsigsegv@2.14 ninja@1.11.1 py-setuptools@59.4.0 xz@5.4.6 +berkeley-db@18.1.40 flex@2.6.3 gmake@4.4.1 libtool@2.4.7 numactl@2.0.14 py-wheel@0.41.2 zlib-ng@2.1.6 +berkeley-db@18.1.40 gawk@5.3.0 gmake@4.4.1 libunistring@1.2 nvhpc@24.3 python@3.8.18 zlib-ng@2.1.6 +binutils@2.42 gawk@5.3.0 gmp@6.2.1 libxcrypt@4.4.35 openssh@9.7p1 python@3.9.18 zstd@1.5.6 +binutils@2.42 gcc@12.3.0 gmp@6.2.1 libxml2@2.10.3 openssl@3.3.0 python@3.11.7 zstd@1.5.6 +binutils@2.42 gcc@12.3.0 krb5@1.20.1 m4@1.4.19 openssl@3.3.0 python-venv@1.0 +bison@3.8.2 gcc-runtime@4.8.5 libbsd@0.12.1 m4@1.4.19 pcre2@10.43 python-venv@1.0 +bzip2@1.0.8 gcc-runtime@4.8.5 libedit@3.1-20230828 mpc@1.3.1 perl@5.38.0 re2c@2.2 +bzip2@1.0.8 gdbm@1.23 libevent@2.1.12 mpc@1.3.1 perl@5.38.0 readline@8.2 + +-- linux-rhel7-x86_64 / gcc@12.3.0 ------------------------------ +abseil-cpp@20240116.2 libogg@1.3.5 py-beniget@0.3.0 py-ml-collections@0.1.0 py-tabulate@0.8.9 +amrex@18.07 libpng@1.6.39 py-biopython@1.79 py-networkx@2.7.1 py-tensorboard@2.11.2 +aria2@1.37.0 libssh2@1.11.0 py-bottleneck@1.3.2 py-numexpr@2.8.4 py-tensorboard-data-server@0.6.1 +boost@1.85.0 libtheora@1.1.1 py-cachetools@5.2.0 py-numpy@1.17.5 py-tensorboard-plugin-wit@1.8.1 +boost@1.85.0 libxc@6.2.2 py-certifi@2023.7.22 py-numpy@1.21.6 py-tensorflow@2.11.0 +c-ares@1.27.0 libxsmm@1.17 py-charset-normalizer@3.3.0 py-oauthlib@3.2.2 py-termcolor@1.1.0 +cmake@3.27.9 libyaml@0.2.5 py-chex@0.0.7 py-opt-einsum@3.3.0 py-tomli@2.0.1 +cp2k@2024.1 llvm@16.0.6 py-contextlib2@21.6.0 py-packaging@23.1 py-toolz@0.12.0 +cp2k@2024.1 lua@5.3.6 py-cython@0.29.36 py-pandas@1.3.4 py-typing-extensions@4.8.0 +cuda@12.4.0 lz4@1.9.4 py-decorator@5.1.1 py-pdbfixer@1.7 py-urllib3@1.26.12 +fftw@3.3.10 mesa-glu@9.0.2 py-dm-haiku@0.0.9 py-pip@23.0 py-websocket-client@1.6.3 +fftw@3.3.10 mesa18@18.3.6 py-dm-tree@0.1.6 py-pip@23.1.2 py-werkzeug@2.0.2 +freetype@2.10.2 metis@5.1.0 py-docker@5.0.3 py-ply@3.11 py-wheel@0.37.1 +gcc-runtime@12.3.0 mithra@2.0 py-etils@0.9.0 py-poetry-core@1.8.1 py-wheel@0.41.2 +gcc-runtime@12.3.0 netlib-scalapack@2.2.0 py-flatbuffers@23.5.26 py-protobuf@3.19.4 py-wrapt@1.15.0 +gettext@0.19.8.1 opal@master py-flit-core@3.9.0 py-pyasn1@0.4.8 py-zipp@3.17.0 +gl2ps@1.4.2 openblas@0.3.25 py-gast@0.4.0 py-pyasn1-modules@0.2.8 python@3.8.18 +googletest@1.12.1 openblas@0.3.26 py-google-auth@2.27.0 py-pybind11@2.12.0 python@3.11.7 +gsl@2.7.1 openblas@0.3.26 py-google-auth-oauthlib@0.4.6 py-pytest-runner@6.0.0 python-venv@1.0 +h5hut@2.0.0rc6 openjdk@11.0.20.1_1 py-google-pasta@0.2.0 py-python-dateutil@2.8.2 python-venv@1.0 +hdf5@1.12.3 openmm@7.5.1 py-grpcio@1.60.1 py-pythran@0.9.11 quantum-espresso@7.3.1 +hdf5@1.14.3 openmpi@4.1.6 py-h5py@3.11.0 py-pytz@2023.3 re2@2023-09-01 +hdf5@1.14.3 openmpi@4.1.6 py-idna@3.4 py-pyyaml@6.0 rust-bootstrap@1.78.0 +hh-suite@3.3.0 osmesa@11.2.0 py-immutabledict@2.2.1 py-requests@2.31.0 slurm@23-11-0-1 +hmmer@3.4 parmetis@4.0.3 py-importlib-resources@5.12.0 py-requests-oauthlib@1.3.1 swig@4.1.1 +hwloc@2.9.1 pcre@8.45 py-jax@0.3.25 py-rsa@4.9 trilinos@13.4.0 +jsoncpp@1.9.5 perl-data-dumper@2.173 py-jaxlib@0.3.25 py-scipy@1.7.0 unzip@6.0 +kalign@3.4.0 protobuf@3.19.4 py-jmp@0.0.2 py-setuptools@57.4.0 zip@3.0 +libgcrypt@1.10.3 py-absl-py@1.0.0 py-libclang@16.0.0 py-setuptools@69.2.0 +libgpg-error@1.49 py-alphafold@2.3.2 py-mako@1.2.4 py-setuptools@69.2.0 +libint@2.6.0 py-alphafold@2.3.2 py-markdown@3.3.4 py-setuptools-scm@8.0.4 +libjpeg@9f py-astunparse@1.6.3 py-markupsafe@2.1.3 py-six@1.16.0 + +-- linux-rhel7-x86_64 / oneapi@2024.1.0 ------------------------- +gromacs@2024.1 hwloc@2.9.1 intel-oneapi-mkl@2024.0.0 intel-oneapi-runtime@2024.1.0 intel-tbb@2021.9.0 openmpi@4.1.6 slurm@23-11-0-1 +==> 257 installed packages +``` + +The root spec is the specs that are personal to you and that will be concretized and installed.
+The installed packages are either packages that were previously installed by admins or packages that you already installed but that are not root.
+ +If you want to remove this package from your personal env, you can use the following command:
+ +```bash +[stable] user@login001:~> spack rm $pkg_name@version +variant1 ^dep1@version1 +``` + +or + +```bash +[stable] user@login001:~> spack config edit +spack: + ... + specs: +-- - visit~adios2+gui+vtkm ^harfbuzz%gcc@12.3.0 +++ [] + ... +``` +and remove it manually from the spec list. + ## How to use on other systems ### Install Spack