diff --git a/_data/sidebars/merlin7_sidebar.yml b/_data/sidebars/merlin7_sidebar.yml index c27ecfe..d6a0971 100644 --- a/_data/sidebars/merlin7_sidebar.yml +++ b/_data/sidebars/merlin7_sidebar.yml @@ -70,6 +70,10 @@ entries: url: /merlin7/ansys-rsm.html - title: Quantum ESPRESSO url: /merlin7/quantum-espresso.html + - title: OPAL-X + url: /merlin7/opal-x.html + - title: IPPL + url: /merlin7/ippl.html - title: Support folderitems: - title: Contact diff --git a/pages/merlin7/05-Software-Support/ippl.md b/pages/merlin7/05-Software-Support/ippl.md new file mode 100644 index 0000000..832d3db --- /dev/null +++ b/pages/merlin7/05-Software-Support/ippl.md @@ -0,0 +1,51 @@ +--- +title: IPPL +keywords: IPPL software, compile +summary: "Independent Parallel Particle Layer (IPPL) is a performance portable C++ library for Particle-Mesh methods" +sidebar: merlin7_sidebar +toc: false +permalink: /merlin7/ippl.html +--- + +## IPPL + +Independent Parallel Particle Layer (IPPL) is a performance portable C++ library for Particle-Mesh methods. IPPL makes use of Kokkos (https://github.com/kokkos/kokkos), HeFFTe (https://github.com/icl-utk-edu/heffte), and MPI (Message Passing Interface) to deliver a portable, massively parallel toolkit for particle-mesh methods. IPPL supports simulations in one to six dimensions, mixed precision, and asynchronous execution in different execution spaces (e.g. CPUs and GPUs). + +## Licensing Terms and Conditions + +GNU GPLv3 + +## How to run on Merlin7 +### A100 nodes +[![Pipeline](https://gitea.psi.ch/HPCE/spack-psi/actions/workflows/ippl_gpu_merlin7.yml/badge.svg?branch=main)](https://gitea.psi.ch/HPCE/spack-psi) +```bash +module use Spack unstable +module load gcc/13.2.0 openmpi/4.1.6-57rc-A100-gpu +module load boost/1.82.0-e7gp fftw/3.3.10 gnutls/3.8.3 googletest/1.14.0 gsl/2.8 h5hut/2.0.0rc7 openblas/0.3.26-omp cmake/3.31.6-oe7u + +cd +mkdir build_gpu +cd build_gpu + +cmake -DCMAKE_BUILD_TYPE=Release -DKokkos_ARCH_AMPERE80=ON -DCMAKE_CXX_STANDARD=20 -DIPPL_ENABLE_FFT=ON -DIPPL_ENABLE_TESTS=ON -DUSE_ALTERNATIVE_VARIANT=ON -DIPPL_ENABLE_SOLVERS=ON -DIPPL_ENABLE_ALPINE=True -DIPPL_PLATFORMS=cuda .. +make [-jN] +``` + +### GH nodes +[![Pipeline](https://gitea.psi.ch/HPCE/spack-psi/actions/workflows/ippl_gh_merlin7.yml/badge.svg?branch=main)](https://gitea.psi.ch/HPCE/spack-psi) + +```bash +salloc --partition=gh-daily --clusters=gmerlin7 --time=08:00:00 --ntasks=4 --nodes=1 --gpus=1 --mem=40000 $SHELL +ssh + +module use Spack unstable +module load gcc/13.2.0 openmpi/5.0.3-3lmi-GH200-gpu +module load boost/1.82.0-3ns6 fftw/3.3.10 gnutls/3.8.3 googletest/1.14.0 gsl/2.7.1 h5hut/2.0.0rc7 openblas/0.3.26 cmake/3.31.4-u2nm + +cd +mkdir build_gh +cd build_gh + +cmake -DCMAKE_BUILD_TYPE=Release -DKokkos_ARCH_HOPPER90=ON -DCMAKE_CXX_STANDARD=20 -DIPPL_ENABLE_FFT=ON -DIPPL_ENABLE_TESTS=ON -DUSE_ALTERNATIVE_VARIANT=ON -DIPPL_ENABLE_SOLVERS=ON -DIPPL_ENABLE_ALPINE=True -DIPPL_PLATFORMS=cuda .. +make [-jN] +``` diff --git a/pages/merlin7/05-Software-Support/opal-x.md b/pages/merlin7/05-Software-Support/opal-x.md new file mode 100644 index 0000000..4731bff --- /dev/null +++ b/pages/merlin7/05-Software-Support/opal-x.md @@ -0,0 +1,75 @@ +--- +title: OPAL-X +keywords: OPAL-X software, compile +summary: "OPAL (Object Oriented Particle Accelerator Library) is an open source C++ framework for general particle accelerator simulations including 3D space charge, short range wake fields and particle matter interaction." +sidebar: merlin7_sidebar +toc: false +permalink: /merlin7/opal-x.html +--- + +## OPAL + +OPAL (Object Oriented Particle Accelerator Library) is an open source C++ framework for general particle accelerator simulations including 3D space charge, short range wake fields and particle matter interaction. + +## Licensing Terms and Conditions + +GNU GPLv3 + +## How to run on Merlin7 +### A100 nodes +```bash +module purge +module use Spack unstable +module load gcc/13.2.0 openmpi/4.1.6-57rc-A100-gpu opal-x/fixSolverUnits-q4ul-A100-gpu +``` + +### GH nodes +```bash +module purge +module use Spack unstable +module load gcc/13.2.0 openmpi/5.0.3-3lmi-GH200-gpu opal-x/fixSolverUnits-ttg7-GH200-gpu +``` + +## Developing your own code +### A100 nodes + +[![Pipeline](https://gitea.psi.ch/HPCE/spack-psi/actions/workflows/opal-x_gpu_merlin7.yml/badge.svg?branch=main)](https://gitea.psi.ch/HPCE/spack-psi) + +```bash +module purge +module use Spack unstable +module load gcc/13.2.0 openmpi/4.1.6-57rc-A100-gpu +module load boost/1.82.0-e7gp fftw/3.3.10 gnutls/3.8.3 googletest/1.14.0 gsl/2.8 h5hut/2.0.0rc7 openblas/0.3.26-omp cmake/3.31.6-oe7u + +git clone https://gitlab.psi.ch/OPAL/opal-x/src.git opal-x +cd opal-x +./gen_OPALrevision + +mkdir build_gpu +cd build_gpu + +cmake -DCMAKE_BUILD_TYPE=Release -DKokkos_ARCH_AMPERE80=ON -DCMAKE_CXX_STANDARD=20 -DIPPL_ENABLE_FFT=ON -DIPPL_ENABLE_TESTS=OFF -DIPPL_ENABLE_SOLVERS=ON -DIPPL_ENABLE_ALPINE=True -DIPPL_PLATFORMS=cuda .. +make [-jN] +``` + +### GH nodes +[![Pipeline](https://gitea.psi.ch/HPCE/spack-psi/actions/workflows/opal-x_gh_merlin7.yml/badge.svg?branch=main)](https://gitea.psi.ch/HPCE/spack-psi) + +```bash +salloc --partition=gh-daily --clusters=gmerlin7 --time=08:00:00 --ntasks=4 --nodes=1 --gpus=1 --mem=40000 $SHELL +ssh + +module purge +module use Spack unstable +module load gcc/13.2.0 openmpi/5.0.3-3lmi-GH200-gpu +module load boost/1.82.0-3ns6 fftw/3.3.10 gnutls/3.8.3 googletest/1.14.0 gsl/2.7.1 h5hut/2.0.0rc7 openblas/0.3.26 cmake/3.31.4-u2nm + +git clone https://gitlab.psi.ch/OPAL/opal-x/src.git opal-x +cd opal-x +./gen_OPALrevision +mkdir build_gh +cd build_gh + +cmake -DCMAKE_BUILD_TYPE=Release -DKokkos_ARCH_HOPPER90=ON -DCMAKE_CXX_STANDARD=20 -DIPPL_ENABLE_FFT=ON -DIPPL_ENABLE_TESTS=OFF -DIPPL_ENABLE_SOLVERS=ON -DIPPL_ENABLE_ALPINE=OFF -DIPPL_PLATFORMS=cuda .. +make [-jN] +```