# The PSI Spack Deployment [Official Spack documentation](https://spack.readthedocs.io/en/latest/) ## How to use on Merlin7 ### Install 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 # 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 ... # 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 # Load your package user@login001:~> spack load $pkg_name@version +variant1 ^dep1@version1 # Submit your script user@login001:~> sbatch batch.script ``` ### 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 ``` ## How to use on other systems ### Install Spack ```bash user@supersystem:~> cd /scratch/$USER user@supersystem:~> git clone -c feature.manyFiles=true https://github.com/spack/spack.git user@supersystem:~> . spack/share/spack/setup-env.sh # Add PSI specific recipes user@supersystem:~> git clone https://gitlab.psi.ch/lsm-hpce/alps/spack-psi.git user@supersystem:~> spack repo add $PWD/spack-psi user@supersystem:~> spack install $pkg_name # -v for verbose