ADD: first commit

This commit is contained in:
2024-05-16 11:01:56 +02:00
parent 934b57b1b4
commit 1295f4db59
31 changed files with 815 additions and 66838 deletions

View File

@ -2,7 +2,19 @@ WIP
# The PSI Spack Deployment
[Official Spack documentation](https://spack.readthedocs.io/en/latest/)
## How to use on Merlin7
```bash
source /afs/psi.ch/sys/spack-rhel7/spack/share/spack/setup-env.sh # can be also include in your .bashrc
spack env list
spack env activate -d <package> # e.g ffbidx all for whole software stack
# Install env if local development, else skip
spack install # -v for verbose
spack load <package>
```
## How to use on Merlin6
@ -16,4 +28,45 @@ spack env activate -d <package> # e.g ffbidx all for whole software stack
spack install # -v for verbose
spack load <package>
# The OPAL Spack recipe
[Official Spack documentation](https://spack.readthedocs.io/en/latest/)
## Install Spack
```bash
cd /scratch/$USER
git clone -c feature.manyFiles=true https://github.com/spack/spack.git
. spack/share/spack/setup-env.sh
# Add PSI specific recipes
cd OPAL/spack
spack repo add .
```
## Install OPAL@version
```bash
spack info opal # Find out which version and which variants you want to set
# Install env if local development, else skip
spack install opal@2022.1.0 # -v for verbose -j 8 for 8 parallel jobs
# Load environment before launching any scripts
spack load opal
sbatch ...
```
## Develop OPAL
```bash
spack env activate -d OPAL/spack/env/opal/
# $OPAL_SRC_DIRECTORY is where you did the git clone git@gitlab.psi.ch:OPAL/src.git
spack develop -p $OPAL_SRC_DIRECTORY opal@master
spack install # -v for verbose -j 8 for 8 parallel jobs
```

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +0,0 @@
#!/usr/bin/env bash
#SBATCH -N 4 # 4 nodes are requested
#SBATCH -t 00:03:00 # Walltime, 3 minutes
#SBATCH -n 8 # 8 processes are requested
#SBATCH --ntasks-per-socket=1 # 1 process per allocated socket
#SBATCH --hint=compute_bound # Use all cores in each socket, one thread per core
#SBATCH --exclusive # node should not be shared with other jobs
mpirun python3 ./examples/teleport_mpi.py # Execute program

File diff suppressed because it is too large Load Diff

View File

@ -1,54 +0,0 @@
spack:
concretizer:
unify: when_possible
config:
build_stage:
- /scratch/spack/spack-stage
install_missing_compilers: true
definitions:
- gcc_mpi:
- ^openmpi%gcc
- gcc_6.1.0_pckgs:
- trilinos@11.14.3 +mpi+cuda cuda_arch=60 ~tpetra
- gcc_12.1.0_pckgs:
- gromacs@2022.5 +mpi
- h5hut@2.0.0rc3 +mpi
- lammps@20221222
- quantum-espresso@7.0 hdf5=parallel
- trilinos@13.4.1
- intel_mpi:
- ^intel-oneapi-mpi@2021.8.0
- intel_pckgs:
- gromacs@2022.5
- nvhpc_mpi:
- ^openmpi%nvhpc
- nvhpc_pckgs:
- quantum-espresso@7.0 +mpi+cuda hdf5=parallel
include:
- ../sysconfigs/packages.yaml
- ../sysconfigs/compilers.yaml
- ../sysconfigs/modules.yaml
specs:
- gams@31.1.1
- matrix:
- [$gcc_6.1.0_pckgs]
- [$gcc_mpi]
- [^openblas]
- ['%gcc@6.1.0']
- matrix:
- [$gcc_12.1.0_pckgs]
- [$gcc_mpi]
- [^hdf5%gcc@12.1.0]
- [^openblas]
- ['%gcc@12.1.0']
- matrix:
- [$intel_pckgs]
- [$intel_mpi]
- [^intel-oneapi-mkl]
- ['%oneapi@2022.2.1']
- matrix:
- [$nvhpc_pckgs]
- [$nvhpc_mpi]
- [^hdf5%nvhpc@23.1]
- ['%nvhpc@23.1']
view: false

View File

@ -1,53 +0,0 @@
compilers:
- compiler:
environment: {}
extra_rpaths: []
flags: {}
modules: []
operating_system: rhel7
paths:
cc: /usr/bin/gcc
cxx: /usr/bin/g++
f77: /usr/bin/gfortran
fc: /usr/bin/gfortran
spec: gcc@4.8.5
target: x86_64
- compiler:
environment: {}
extra_rpaths: []
flags: {}
modules: []
operating_system: rhel7
paths:
cc: /opt/psi/Programming/gcc/9.5.0/bin/gcc
cxx: /opt/psi/Programming/gcc/9.5.0/bin/g++
f77: /opt/psi/Programming/gcc/9.5.0/bin/gfortran
fc: /opt/psi/Programming/gcc/9.5.0/bin/gfortran
spec: gcc@9.5.0
target: x86_64
- compiler:
environment: {}
extra_rpaths: []
flags: {}
modules: []
operating_system: rhel7
paths:
cc: /opt/psi/Programming/gcc/12.1.0/bin/gcc
cxx: /opt/psi/Programming/gcc/12.1.0/bin/g++
f77: /opt/psi/Programming/gcc/12.1.0/bin/gfortran
fc: /opt/psi/Programming/gcc/12.1.0/bin/gfortran
spec: gcc@12.1.0
target: x86_64
- compiler:
environment: {}
extra_rpaths: []
flags: {}
modules: []
operating_system: rhel7
paths:
cc: /afs/psi.ch/sys/spack-rhel7/spack/opt/spack/linux-rhel7-haswell/gcc-12.1.0/nvhpc-23.1-6barulbmh2l6pgbzulzcyta4kb57csgu/Linux_x86_64/23.1/compilers/bin/nvc
cxx: /afs/psi.ch/sys/spack-rhel7/spack/opt/spack/linux-rhel7-haswell/gcc-12.1.0/nvhpc-23.1-6barulbmh2l6pgbzulzcyta4kb57csgu/Linux_x86_64/23.1/compilers/bin/nvc++
f77: /afs/psi.ch/sys/spack-rhel7/spack/opt/spack/linux-rhel7-haswell/gcc-12.1.0/nvhpc-23.1-6barulbmh2l6pgbzulzcyta4kb57csgu/Linux_x86_64/23.1/compilers/bin/nvfortran
fc: /afs/psi.ch/sys/spack-rhel7/spack/opt/spack/linux-rhel7-haswell/gcc-12.1.0/nvhpc-23.1-6barulbmh2l6pgbzulzcyta4kb57csgu/Linux_x86_64/23.1/compilers/bin/nvfortran
spec: nvhpc@23.1
target: x86_64

View File

@ -1,106 +0,0 @@
modules:
default:
tcl:
hash_length: 3
projections:
all: '{name}/{version}-{compiler.name}-{compiler.version}'
exclude: ['at-spi2-atk', 'at-spi2-core', 'libxft', 'atk', 'libxi', 'libxkbcommon',' libxkbfile', 'bdftopcf','berkeley-db',
'libxrandr','bison@3.8.2', 'libxrender','libxslt','bzip2','libxtst','cairo','libyaml','libzmq','dbus','diffutils','mkfontdir',
'docbook-xml', 'mkfontscale','docbook-xsl','msgpack-c', 'elfutils', 'munge','expat', 'ncurses','fixesproto', 'numactl', 'flex',
'font-util', 'fontconfig', 'fontsproto','freetype', 'pango', 'gawk', 'pcre', 'pcre2', 'gdbm', 'gdk-pixbuf', 'gettext', 'glib',
'gobject-introspection', 'gperf','gtkplus', 'harfbuzz','http-parser', 'inputproto', 'intltool','jansson','jemalloc','json-c',
'json-glib','kbproto', 'pixman', 'pkg-config', 'pmix', 'libaio', 'libbsd', 'libedit','libepoxy','libevent','libffi','libfontenc',
'libgcrypt','libgpg-error','libice','libiconv', 'libidn2','libjwt', 'libmd',' randrproto', 'readline', 'recordproto','renderproto',
'shared-mime-info', 'sqlite','libpciaccess','libpthread-stubs', 'libsm','libsodium','libtool', 'libunistring', 'libx11', 'libxau',
'lixcb', 'util-linux-uuid', 'util-macros', 'xcb-proto', 'xextproto', 'xkbcomp','xkbdata','xmlto','xproto','xz','zlib',
'libxcrypt', 'libxdmcp', 'libxext', 'libxfixes', 'xtrans', 'zstd', 'librsvg', 'libxfont', 'libxcb', 'fribidi', 'kokkos-nvcc-wrapper']
all:
autoload: direct
conflict:
- '{name}'
environment:
set:
${PACKAGE}_INCLUDE_DIR: '{prefix}/include'
${PACKAGE}_LIBRARY_DIR: '{prefix}/lib'
${PACKAGE}_VERSION: '{version}'
intel-oneapi-mpi:
environment:
set:
I_MPI_CXX: 'mpiicpc'
I_MPI_F77: 'mpiifort'
I_MPI_F90: 'mpiifort'
I_MPI_FC: 'mpiifort'
I_MPI_ICC: 'mpiicc'
MPIEXEC: 'mpiexec.hydra'
MPIFC: 'mpiifort'
MPIFORTRAN: 'mpiifort'
MPIRUN: 'mpirun'
mpich:
environment:
set:
MPIEXEC: ${prefix}/bin/mpiexec
MPIFC: ${prefix}/bin/mpif90
MPIFORTRAN: ${prefix}/bin/mpif90
MPIRUN: ${prefix}/bin/mpirun
openblas:
environment:
set:
BLASLIB: ${prefix}/libopenblas.a
openmpi:
environment:
set:
MPIEXEC: ${prefix}/bin/mpiexec
MPIFC: ${prefix}/bin/mpif90
MPIFORTRAN: ${prefix}/bin/mpif90
MPIRUN: ${prefix}/bin/mpirun
root:
environment:
set:
ROOTSYS: ${prefix}
cuda:
environment:
prepend_path:
${PACKAGE}_PATH: '{prefix}'
LIBRARY_PATH: '{prefix}/lib64/stubs:{prefix}/targets/x86_64-linux/lib/stubs'
set:
${PACKAGE}_DIR: '{prefix}'
${PACKAGE}_INCLUDE_DIR: '{prefix}/include'
${PACKAGE}_LIBRARY_DIR: '{prefix}/lib'
${PACKAGE}_PATH: '{prefix}'
${PACKAGE}_VERSION: '{version}'
hdf5~mpi:
environment:
set:
${PACKAGE}_DIR: '{prefix}'
${PACKAGE}_HOME: '{prefix}'
${PACKAGE}_INCLUDE_DIR: '{prefix}/include'
${PACKAGE}_LIBRARY_DIR: '{prefix}/lib:{prefix}/lib64'
${PACKAGE}_PREFIX: '{prefix}'
${PACKAGE}_ROOT: '{prefix}'
${PACKAGE}_VERSION: '{version}'
prefix_inspections:
'':
- CMAKE_PREFIX_PATH
bin:
- PATH
include:
- C_INCLUDE_PATH
- CPLUS_INCLUDE_PATH
lib:
- LIBRARY_PATH
- LD_LIBRARY_PATH
lib/pkgconfig:
- PKG_CONFIG_PATH
lib64:
- LIBRARY_PATH
- LD_LIBRARY_PATH
lib64/pkgconfig:
- PKG_CONFIG_PATH
man:
- MANPATH
share/aclocal:
- ACLOCAL_PATH
share/man:
- MANPATH
share/pkgconfig:
- PKG_CONFIG_PATH

View File

@ -1,363 +0,0 @@
---
packages:
all:
providers:
pkgconfig: [ pkg-config ]
target:
- haswell
autoconf:
buildable: false
externals:
- prefix: /usr
spec: autoconf@2.69
automake:
buildable: false
externals:
- prefix: /usr
spec: automake@1.13.4
berkeley-db:
require: '%gcc@4.8.5'
binutils:
buildable: false
externals:
- prefix: /usr
spec: binutils@2.27.44
boost:
require: '%gcc@4.8.5'
bzip2:
buildable: false
externals:
- prefix: /usr
spec: bzip2@1.0.6
ca-certificates-mozilla:
require: '%gcc@4.8.5'
cairo:
require: '%gcc@4.8.5'
cmake:
require: '@3.25.2%gcc@4.8.5'
coreutils:
buildable: false
externals:
- prefix: /usr
spec: coreutils@8.22
cpio:
buildable: false
externals:
- prefix: /usr
spec: cpio@2.11
ctffind:
require: '%gcc@4.8.5'
cuda:
externals:
- prefix: /afs/psi.ch/sys/spack-rhel7/spack/opt/spack/linux-rhel7-haswell/gcc-12.1.0/nvhpc-23.1-6barulbmh2l6pgbzulzcyta4kb57csgu/Linux_x86_64/23.1/cuda/
spec: cuda@12.0.0%nvhpc@23.1
curl:
buildable: false
externals:
- prefix: /usr
spec: curl@7.29.0+ldap
cvs:
buildable: false
externals:
- prefix: /usr
spec: cvs@1.11.23
diffutils:
buildable: false
externals:
- prefix: /usr
spec: diffutils@3.3
doxygen:
buildable: false
externals:
- prefix: /usr
spec: doxygen@1.8.5+graphviz~mscgen
expat:
buildable: false
externals:
- prefix: /usr
spec: expat@1.6.0
file:
buildable: false
externals:
- prefix: /usr
spec: file@5.11
findutils:
buildable: false
externals:
- prefix: /usr
spec: findutils@4.5.11
flex:
buildable: false
externals:
- prefix: /usr
spec: flex@2.5.37+lex
fltk:
require: '%gcc@4.8.5'
fontconfig:
require: '%gcc@4.8.5'
gams:
buildable: false
externals:
- prefix: /opt/psi/Tools/GAMS/31.1.1/gams31.1_linux_x64_64_sfx
spec: gams@31.1.1%gcc@4.8.5
gawk:
buildable: false
externals:
- prefix: /usr
spec: gawk@4.0.2
gdbm:
require: '%gcc@4.8.5'
gettext:
require: '%gcc@4.8.5'
ghostscript:
buildable: false
externals:
- prefix: /usr
spec: ghostscript@9.25
git:
require: '%gcc@4.8.5'
externals:
- prefix: /usr
spec: git@1.8.3.1~tcltk
glew:
buildable: false
externals:
- prefix: /usr
spec: glew@1.10.0
gmake:
buildable: false
externals:
- prefix: /usr
spec: gmake@3.82
groff:
buildable: false
externals:
- prefix: /usr
spec: groff@1.22.2
harfbuzz:
require: '@5.1.0%gcc@12.1.0'
hcoll:
buildable: false
externals:
- prefix: /opt/mellanox/hcoll
spec: hcoll@3.9.1927
libbsd:
require: '%gcc@4.8.5'
libcroco:
buildable: false
externals:
- prefix: /usr
spec: libcroco@0.6.13
libepoxy:
buildable: false
externals:
- prefix: /usr
spec: libepoxy@0.0.0
libevent:
require: '%gcc@4.8.5'
libfuse:
buildable: false
externals:
- prefix: /usr
spec: libfuse@3.6.1
libice:
buildable: false
externals:
- prefix: /usr
spec: libice@6.3.0
libiconv:
require: '%gcc@4.8.5'
libidn2:
require: '%gcc@4.8.5'
libjpeg-turbo:
buildable: false
externals:
- prefix: /usr
spec: libjpeg-turbo@62.1.0
libmd:
require: '%gcc@4.8.5'
libpciaccess:
require: '%gcc@4.8.5'
libpthread:
buildable: false
externals:
- prefix: /usr
spec: libpthread@2.17
libpthread-stubs:
buildable: false
externals:
- prefix: /usr
spec: libpthread-stubs@0.4
libreadline:
buildable: false
externals:
- prefix: /usr
spec: libreadline@6.2
librsvg:
buildable: false
externals:
- prefix: /usr
spec: librsvg@2.40.20
libsigsegv:
require: '%gcc@4.8.5'
libtiff:
buildable: false
externals:
- prefix: /usr
spec: libtiff@5.2.0
libtool:
buildable: false
externals:
- prefix: /usr
spec: libtool@2.4.2
libx11:
buildable: false
externals:
- prefix: /usr
spec: libx11@6.3.0
libxext:
buildable: false
externals:
- prefix: /usr
spec: libxext@6.4.0
libxft:
buildable: false
externals:
- prefix: /usr
spec: libxft@2.3.2
libxml2:
require: '%gcc@4.8.5'
libxpm:
buildable: false
externals:
- prefix: /usr
spec: libxpm@4.11.0
libxt:
buildable: false
externals:
- prefix: /usr
spec: libxt@6.0.0
m4:
buildable: false
externals:
- prefix: /usr
spec: m4@1.4.16
ncurses:
buildable: false
externals:
- prefix: /usr
spec: ncurses@5.9.20130511
ninja:
require: '%gcc@4.8.5'
nlohmann-json:
buildable: false
externals:
- prefix: /usr
spec: nlohmann-json@3.10.5
numactl:
buildable: false
externals:
- prefix: /usr
spec: numactl@2.0.14
openblas:
require: '%gcc@4.8.5'
openmpi:
externals:
- prefix: /afs/psi.ch/sys/spack-rhel7/spack/opt/spack/linux-rhel7-haswell/gcc-12.1.0/nvhpc-23.1-6barulbmh2l6pgbzulzcyta4kb57csgu/Linux_x86_64/23.1/comm_libs/openmpi4/openmpi-4.0.5
spec: openmpi@4.0.5%nvhpc@23.1
require:
- one_of: [
"openmpi@4.1.5%gcc schedulers=slurm fabrics=auto +pmi +cxx +cxx_exceptions +cuda +legacylaunchers",
"openmpi@4.0.5%gcc schedulers=slurm fabrics=auto +pmi +cxx +cxx_exceptions +cuda +legacylaunchers",
"openmpi@4.0.5%gcc",
"openmpi@4.0.5%nvhpc@23.1"
]
openssh:
buildable: false
externals:
- prefix: /usr
spec: openssh@7.4p1
openssl:
externals:
- prefix: /usr
spec: openssl@1.0.2k-fips
pcre2:
buildable: false
externals:
- prefix: /usr
spec: pcre2@8.32
perl:
require: '%gcc@4.8.5'
pkg-config:
buildable: false
externals:
- prefix: /usr
spec: pkg-config@0.27.1
py-fypp:
require: '%gcc@4.8.5'
python:
require: '%gcc@4.8.5'
readline:
require: '%gcc@4.8.5'
rsync:
buildable: false
externals:
- prefix: /usr
spec: rsync@3.1.2
ruby:
buildable: false
externals:
- prefix: /usr
spec: ruby@2.0.0p648
sed:
buildable: false
externals:
- prefix: /usr
spec: sed@4.2.2
slurm:
require: '+pmix +hwloc +gtk +readline +restd +mariadb'
sqlite:
buildable: false
externals:
- prefix: /usr
spec: sqlite@3.7.17
subversion:
buildable: false
externals:
- prefix: /usr
spec: subversion@1.7.14
tar:
buildable: false
externals:
- prefix: /usr
spec: tar@1.26
texinfo:
buildable: false
externals:
- prefix: /usr
spec: texinfo@5.1
unuran:
require: '%gcc@4.8.5'
util-linux-uuid:
require: '%gcc@4.8.5'
util-macros:
require: '%gcc@4.8.5'
valgrind:
require: '%gcc@4.8.5'
xerces-c:
buildable: false
externals:
- prefix: /usr
spec: xerces-c@3.1
xxhash:
require: '%gcc@4.8.5'
xz:
buildable: false
externals:
- prefix: /usr
spec: xz@5.2.2
zlib:
require: '%gcc@4.8.5'
zstd:
require: '%gcc@4.8.5'

File diff suppressed because it is too large Load Diff

View File

@ -1,140 +0,0 @@
spack:
config:
build_stage:
- /scratch/spack/spack-stage
install_missing_compilers: true
concretizer:
unify: when_possible
include:
- ../sysconfigs/packages.yaml
- ../sysconfigs/compilers.yaml
- ../sysconfigs/modules.yaml
definitions:
- gcc_mpi:
- ^openmpi%gcc
- gcc_6.1.0_pckgs:
- trilinos +mpi+cuda cuda_arch=60 ~tpetra
- gcc_12.1.0_pckgs:
- gromacs +mpi
- h5hut +mpi
- lammps
- quantum-espresso hdf5=parallel
- trilinos
- intel_mpi:
- ^intel-oneapi-mpi@2021.8.0
- intel_pckgs:
- gromacs@2022.4
- nvhpc_mpi:
- ^openmpi%nvhpc
- nvhpc_pckgs:
- quantum-espresso +mpi+cuda hdf5=parallel
specs:
- matrix:
- [$gcc_12.1.0_pckgs]
- [$gcc_mpi]
- [^hdf5%gcc@12.1.0]
- [^openblas]
- ['%gcc@12.1.0']
- matrix:
- [$intel_pckgs]
- [$intel_mpi]
- [^intel-oneapi-mkl]
- ['%oneapi@2022.2.1']
- matrix:
- [$nvhpc_pckgs]
- [$nvhpc_mpi]
- [^hdf5%nvhpc@23.1]
- ['%nvhpc@23.1']
view: false
compilers:
- compiler:
environment: {}
extra_rpaths: []
flags: {}
modules: []
operating_system: rhel7
paths:
cc: /usr/bin/gcc
cxx: /usr/bin/g++
f77: /usr/bin/gfortran
fc: /usr/bin/gfortran
spec: gcc@4.8.5
target: x86_64
- compiler:
environment: {}
extra_rpaths: []
flags: {}
modules: []
operating_system: rhel7
paths:
cc: /opt/psi/Programming/gcc/6.1.0/bin/gcc
cxx: /opt/psi/Programming/gcc/6.1.0/bin/g++
f77: /opt/psi/Programming/gcc/6.1.0/bin/gfortran
fc: /opt/psi/Programming/gcc/6.1.0/bin/gfortran
spec: gcc@6.1.0
target: x86_64
- compiler:
environment: {}
extra_rpaths: []
flags: {}
modules: []
operating_system: rhel7
paths:
cc: /opt/psi/Programming/gcc/12.1.0/bin/gcc
cxx: /opt/psi/Programming/gcc/12.1.0/bin/g++
f77: /opt/psi/Programming/gcc/12.1.0/bin/gfortran
fc: /opt/psi/Programming/gcc/12.1.0/bin/gfortran
spec: gcc@12.1.0
target: x86_64
- compiler:
environment: {}
extra_rpaths: []
flags: {}
modules: []
operating_system: rhel7
paths:
cc: /afs/psi.ch/sys/spack-rhel7/spack/opt/spack/linux-rhel7-haswell/gcc-12.1.0/nvhpc-23.1-6barulbmh2l6pgbzulzcyta4kb57csgu/Linux_x86_64/23.1/compilers/bin/nvc
cxx: /afs/psi.ch/sys/spack-rhel7/spack/opt/spack/linux-rhel7-haswell/gcc-12.1.0/nvhpc-23.1-6barulbmh2l6pgbzulzcyta4kb57csgu/Linux_x86_64/23.1/compilers/bin/nvc++
f77: /afs/psi.ch/sys/spack-rhel7/spack/opt/spack/linux-rhel7-haswell/gcc-12.1.0/nvhpc-23.1-6barulbmh2l6pgbzulzcyta4kb57csgu/Linux_x86_64/23.1/compilers/bin/nvfortran
fc: /afs/psi.ch/sys/spack-rhel7/spack/opt/spack/linux-rhel7-haswell/gcc-12.1.0/nvhpc-23.1-6barulbmh2l6pgbzulzcyta4kb57csgu/Linux_x86_64/23.1/compilers/bin/nvfortran
spec: nvhpc@23.1
target: x86_64
- compiler:
spec: gcc@4.8.5
paths:
cc: /usr/bin/gcc
cxx: /usr/bin/g++
f77: /usr/bin/gfortran
fc: /usr/bin/gfortran
flags: {}
operating_system: rhel7
target: x86_64
modules: []
environment: {}
extra_rpaths: []
- compiler:
spec: dpcpp@2022.2.1
paths:
cc: /afs/psi.ch/sys/spack-rhel7/spack/opt/spack/linux-rhel7-haswell/gcc-12.1.0/intel-oneapi-compilers-2022.2.1-33g2lmhbfkd2kx2bhwbetcnf2zk625t7/compiler/2022.2.1/linux/bin/icx
cxx: /afs/psi.ch/sys/spack-rhel7/spack/opt/spack/linux-rhel7-haswell/gcc-12.1.0/intel-oneapi-compilers-2022.2.1-33g2lmhbfkd2kx2bhwbetcnf2zk625t7/compiler/2022.2.1/linux/bin/dpcpp
f77: /afs/psi.ch/sys/spack-rhel7/spack/opt/spack/linux-rhel7-haswell/gcc-12.1.0/intel-oneapi-compilers-2022.2.1-33g2lmhbfkd2kx2bhwbetcnf2zk625t7/compiler/2022.2.1/linux/bin/ifx
fc: /afs/psi.ch/sys/spack-rhel7/spack/opt/spack/linux-rhel7-haswell/gcc-12.1.0/intel-oneapi-compilers-2022.2.1-33g2lmhbfkd2kx2bhwbetcnf2zk625t7/compiler/2022.2.1/linux/bin/ifx
flags: {}
operating_system: rhel7
target: x86_64
modules: []
environment: {}
extra_rpaths: []
- compiler:
spec: oneapi@2022.2.1
paths:
cc: /afs/psi.ch/sys/spack-rhel7/spack/opt/spack/linux-rhel7-haswell/gcc-12.1.0/intel-oneapi-compilers-2022.2.1-33g2lmhbfkd2kx2bhwbetcnf2zk625t7/compiler/2022.2.1/linux/bin/icx
cxx: /afs/psi.ch/sys/spack-rhel7/spack/opt/spack/linux-rhel7-haswell/gcc-12.1.0/intel-oneapi-compilers-2022.2.1-33g2lmhbfkd2kx2bhwbetcnf2zk625t7/compiler/2022.2.1/linux/bin/icpx
f77: /afs/psi.ch/sys/spack-rhel7/spack/opt/spack/linux-rhel7-haswell/gcc-12.1.0/intel-oneapi-compilers-2022.2.1-33g2lmhbfkd2kx2bhwbetcnf2zk625t7/compiler/2022.2.1/linux/bin/ifx
fc: /afs/psi.ch/sys/spack-rhel7/spack/opt/spack/linux-rhel7-haswell/gcc-12.1.0/intel-oneapi-compilers-2022.2.1-33g2lmhbfkd2kx2bhwbetcnf2zk625t7/compiler/2022.2.1/linux/bin/ifx
flags: {}
operating_system: rhel7
target: x86_64
modules: []
environment: {}
extra_rpaths: []

View File

@ -1,24 +1,4 @@
spack:
upstreams:
spack-instance-1:
install_tree: /afs/psi.ch/sys/spack-rhel7/spack/opt/spack
config:
build_stage:
- /scratch/$user/spack-stage
install_tree:
root: /data/user/$user/spack-install
concretizer:
unify: true
include:
- ../sysconfigs/modules.yaml
- ../sysconfigs/compilers.yaml
- ../sysconfigs/packages.yaml
repos:
- ../../../
specs:
- openblas
- ffbidx@main%gcc@12.1.0+python+simple_data_files+simple_data_indexer+test_all cuda_arch=60
develop:
ffbidx:
path: /scratch/$user/spack-dev/fast-feedback-indexer
spec: ffbidx@main+python+simple_data_files+simple_data_indexer+test_all cuda_arch=60
- ffbidx@main%gcc+python+simple_data_files+simple_data_indexer+test_all cuda_arch=60
view: false

View File

@ -1,31 +1,10 @@
spack:
upstreams:
spack-instance-1:
install_tree: /afs/psi.ch/sys/spack-rhel7/spack/opt/spack
config:
build_stage:
- /scratch/$user/spack-stage
install_tree:
root: /data/user/$user/spack-install
concretizer:
unify: true
include:
- ../sysconfigs/modules.yaml
- ../sysconfigs/compilers.yaml
- ../sysconfigs/packages.yaml
repos:
- ../../../
specs:
- git-lfs
- cmake@3.25.2%gcc@12.1.0
- openmpi@4.1.5%gcc schedulers=slurm fabrics=auto +pmi +cxx +cxx_exceptions +cuda
+legacylaunchers ^slurm +pmix +hwloc +gtk +readline +restd +mariadb
- cuda@11.0.2
- hyquas@main%gcc+cuda cuda_arch=70 ~mpi+schedule+use_double+micro_bench+eval_pp~disable_assert
backend=mix mat_size=7
develop:
hyquas:
path: /scratch/$user/spack-dev/HyQuas
spec: hyquas@main%gcc+cuda cuda_arch=70 ~mpi+schedule+use_double+micro_bench+eval_pp~disable_assert
backend=mix mat_size=7
- git-lfs
- cmake@3.25.2%gcc@12.1.0
- openmpi@4.1.5%gcc schedulers=slurm fabrics=auto +pmi +cxx +cxx_exceptions +cuda
+legacylaunchers ^slurm +pmix +hwloc +gtk +readline +restd +mariadb
- cuda@11.0.2
- hyquas@main%gcc+cuda cuda_arch=70 ~mpi+schedule+use_double+micro_bench+eval_pp~disable_assert
backend=mix mat_size=7
view: false

9
env/sles15/opal/spack.yaml vendored Normal file
View File

@ -0,0 +1,9 @@
spack:
repos:
- ../../
specs:
- opal@master%gcc@11.3.0
develop:
opal:
spec: opal@=master
path: /home/germann_e/OPAL/src/

File diff suppressed because it is too large Load Diff

View File

@ -1,25 +1,5 @@
spack:
upstreams:
spack-instance-1:
install_tree: /afs/psi.ch/sys/spack-rhel7/spack/opt/spack
config:
build_stage:
- /scratch/$user/spack-stage
install_tree:
root: /data/user/$user/spack-install
concretizer:
unify: true
include:
- ../sysconfigs/modules.yaml
- ../sysconfigs/compilers.yaml
- ../sysconfigs/packages.yaml
repos:
- ../../../
specs:
- openmpi@4.1.5%gcc
- py-hiqsimulator@develop%gcc
develop:
py-hiqsimulator:
path: /scratch/$user/spack-dev/HiQsimulator
spec: py-hiqsimulator@develop%gcc
- openmpi@4.1.5%gcc
- py-hiqsimulator@develop%gcc
view: false

View File

@ -1,10 +0,0 @@
#!/usr/bin/env bash
#SBATCH -N 4 # 4 nodes are requested
#SBATCH -t 00:03:00 # Walltime, 3 minutes
#SBATCH -n 8 # 8 processes are requested
#SBATCH --ntasks-per-socket=1 # 1 process per allocated socket
#SBATCH --hint=compute_bound # Use all cores in each socket, one thread per core
#SBATCH --exclusive # node should not be shared with other jobs
mpirun python3 ./examples/teleport_mpi.py # Execute program

File diff suppressed because it is too large Load Diff

View File

@ -1,67 +0,0 @@
spack:
concretizer:
unify: false
config:
build_stage:
- /scratch/spack/spack-stage
definitions:
- aocc_mpi:
- ^cray-mpich
- aocc_pckgs:
- gromacs@2021.7
- cce_mpi:
- ^cray-mpich
- cce_pckgs:
- gromacs@2021.7
- gcc_7.5.0_mpi:
- ^openmpi@4.1.5
- gcc_11.2.0_mpi:
- ^cray-mpich
- gcc_7.5.0_pckgs:
- trilinos@11.14.3 +mpi+cuda cuda_arch=60 ~tpetra
- gcc_11.2.0_pckgs:
- gams@31.1.1
- gromacs@2022.5 +mpi
- h5hut@2.0.0rc3 +mpi
- lammps@20221222
- trilinos@13.4.1 ~fortran
- intel_mpi:
- ^cray-mpich
- ^openmpi%oneapi
- intel_pckgs:
- gromacs@2023.1 ^cmake@3.25.2%gcc@7.5.0
- nvhpc_mpi:
- ^cray-mpich
- nvhpc_pckgs:
- quantum-espresso@7.0 +mpi+cuda
include:
- ../sysconfigs/packages.yaml
- ../sysconfigs/compilers.yaml
- ../sysconfigs/modules.yaml
specs:
- matrix:
- [$aocc_pckgs]
- [$aocc_mpi]
- ['%aocc@3.1.0']
- matrix:
- [$cce_pckgs]
- [$cce_mpi]
- ['%cce@13.0.0']
- matrix:
- [$gcc_7.5.0_pckgs]
- [$gcc_7.5.0_mpi]
- [^openblas]
- ['%gcc@7.5.0']
- matrix:
- [$gcc_11.2.0_pckgs]
- [$gcc_11.2.0_mpi]
- ['%gcc@11.2.0']
- matrix:
- [$nvhpc_pckgs]
- [$nvhpc_mpi]
- ['%nvhpc@20.9']
- matrix:
- [$intel_pckgs]
- [$intel_mpi]
- ['%oneapi@2021.2.0']
view: false

View File

@ -1,125 +0,0 @@
compilers:
- compiler:
environment: {}
extra_rpaths: []
flags: {}
modules:
- PrgEnv-cray/8.3.0
- cce/13.0.0
- libfabric/1.15.2.0
- craype-x86-rome
- xpmem/2.4.4-2.3_13.8__gff0e1d9.shasta
operating_system: sles15
paths:
cc: cc
cxx: CC
f77: ftn
fc: ftn
spec: cce@13.0.0
target: x86_64
- compiler:
environment: {}
extra_rpaths: []
flags: {}
modules:
- PrgEnv-gnu/8.3.0
- gcc/11.2.0
- libfabric/1.15.2.0
- craype-x86-rome
- xpmem/2.4.4-2.3_13.8__gff0e1d9.shasta
operating_system: sles15
paths:
cc: cc
cxx: CC
f77: ftn
fc: ftn
spec: gcc@11.2.0
target: x86_64
- compiler:
environment: {}
extra_rpaths: []
flags: {}
modules:
- libfabric/1.15.2.0
- craype-x86-rome
- xpmem/2.4.4-2.3_13.8__gff0e1d9.shasta
operating_system: sles15
paths:
cc: /usr/bin/gcc
cxx: /usr/bin/g++
f77: /usr/bin/gfortran
fc: /usr/bin/gfortran
spec: gcc@7.5.0
target: x86_64
- compiler:
environment: {}
extra_rpaths: []
flags: {}
modules:
- PrgEnv-nvidia/8.3.0
- nvidia/20.9
- libfabric/1.15.2.0
- craype-x86-rome
- xpmem/2.4.4-2.3_13.8__gff0e1d9.shasta
operating_system: sles15
paths:
cc: cc
cxx: CC
f77: ftn
fc: ftn
spec: nvhpc@20.9
target: x86_64
- compiler:
environment: {}
extra_rpaths: []
flags: {}
modules:
- PrgEnv-intel/8.3.0
- intel/2021.2.0
- libfabric/1.15.2.0
- craype-x86-rome
- xpmem/2.4.4-2.3_13.8__gff0e1d9.shasta
operating_system: sles15
paths:
cc: cc
cxx: CC
f77: ftn
fc: ftn
spec: intel@2021.2.0
target: x86_64
- compiler:
environment: {}
extra_rpaths: []
flags: {}
modules:
- PrgEnv-intel/8.3.0
- intel-oneapi/2021.2.0
- libfabric/1.15.2.0
- craype-x86-rome
- xpmem/2.4.4-2.3_13.8__gff0e1d9.shasta
operating_system: sles15
paths:
cc: cc
cxx: CC
f77: ftn
fc: ftn
spec: oneapi@2021.2.0
target: x86_64
- compiler:
environment: {}
extra_rpaths: []
flags: {}
modules:
- PrgEnv-aocc/8.3.0
- aocc/3.1.0
- libfabric/1.15.2.0
- craype-x86-rome
- xpmem/2.4.4-2.3_13.8__gff0e1d9.shasta
operating_system: sles15
paths:
cc: cc
cxx: CC
f77: ftn
fc: ftn
spec: aocc@3.1.0
target: x86_64

View File

@ -1,94 +0,0 @@
modules:
default:
tcl:
blacklist_implicits: true
all:
autoload: direct
conflict:
- '{name}'
environment:
set:
${PACKAGE}_INCLUDE_DIR: '{prefix}/include'
${PACKAGE}_LIBRARY_DIR: '{prefix}/lib'
${PACKAGE}_VERSION: '{version}'
intel-oneapi-mpi:
environment:
set:
I_MPI_CXX: 'mpiicpc'
I_MPI_F77: 'mpiifort'
I_MPI_F90: 'mpiifort'
I_MPI_FC: 'mpiifort'
I_MPI_ICC: 'mpiicc'
MPIEXEC: 'mpiexec.hydra'
MPIFC: 'mpiifort'
MPIFORTRAN: 'mpiifort'
MPIRUN: 'mpirun'
mpich:
environment:
set:
MPIEXEC: ${prefix}/bin/mpiexec
MPIFC: ${prefix}/bin/mpif90
MPIFORTRAN: ${prefix}/bin/mpif90
MPIRUN: ${prefix}/bin/mpirun
openblas:
environment:
set:
BLASLIB: ${prefix}/libopenblas.a
openmpi:
environment:
set:
MPIEXEC: ${prefix}/bin/mpiexec
MPIFC: ${prefix}/bin/mpif90
MPIFORTRAN: ${prefix}/bin/mpif90
MPIRUN: ${prefix}/bin/mpirun
root:
environment:
set:
ROOTSYS: ${prefix}
cuda:
environment:
prepend_path:
${PACKAGE}_PATH: '{prefix}'
LIBRARY_PATH: '{prefix}/lib64/stubs:{prefix}/targets/x86_64-linux/lib/stubs'
set:
${PACKAGE}_DIR: '{prefix}'
${PACKAGE}_INCLUDE_DIR: '{prefix}/include'
${PACKAGE}_LIBRARY_DIR: '{prefix}/lib'
${PACKAGE}_PATH: '{prefix}'
${PACKAGE}_VERSION: '{version}'
hdf5~mpi:
environment:
set:
${PACKAGE}_DIR: '{prefix}'
${PACKAGE}_HOME: '{prefix}'
${PACKAGE}_INCLUDE_DIR: '{prefix}/include'
${PACKAGE}_LIBRARY_DIR: '{prefix}/lib:{prefix}/lib64'
${PACKAGE}_PREFIX: '{prefix}'
${PACKAGE}_ROOT: '{prefix}'
${PACKAGE}_VERSION: '{version}'
prefix_inspections:
'':
- CMAKE_PREFIX_PATH
bin:
- PATH
include:
- C_INCLUDE_PATH
- CPLUS_INCLUDE_PATH
lib:
- LIBRARY_PATH
- LD_LIBRARY_PATH
lib/pkgconfig:
- PKG_CONFIG_PATH
lib64:
- LIBRARY_PATH
- LD_LIBRARY_PATH
lib64/pkgconfig:
- PKG_CONFIG_PATH
man:
- MANPATH
share/aclocal:
- ACLOCAL_PATH
share/man:
- MANPATH
share/pkgconfig:
- PKG_CONFIG_PATH

View File

@ -1,283 +0,0 @@
---
packages:
all:
providers:
blas: [ cray-libsci ]
mpi: [ cray-mpich ]
pkgconfig: [ pkg-config ]
target:
- zen
autoconf:
buildable: false
externals:
- prefix: /usr
spec: autoconf@2.69
automake:
buildable: false
externals:
- prefix: /usr
spec: automake@1.15.1
berkeley-db:
require: '%gcc@7.5.0'
binutils:
buildable: false
externals:
- prefix: /usr
spec: binutils@2.37.20211103
bison:
buildable: false
externals:
- prefix: /usr
spec: bison@3.0.4
boost:
require: '%gcc@7.5.0'
ca-certificates-mozilla:
require: '%gcc@7.5.0'
cairo:
require: '%gcc@7.5.0'
cmake:
externals:
- spec: cmake@3.17.0
prefix: /usr
require:
- one_of: [
"cmake@3.17.0",
"cmake@3.25.2%gcc@7.5.0"
]
coreutils:
buildable: false
externals:
- prefix: /usr
spec: coreutils@8.32
cray-libsci:
externals:
- modules:
- cray-libsci/21.08.1.2
spec: cray-libsci@21.08.1.2
cray-mpich:
buildable: false
externals:
- modules:
- cray-mpich/8.1.12
spec: cray-mpich@8.1.12 ~wrappers
ctffind:
require: '%gcc@7.5.0'
cuda:
externals:
- prefix: /opt/nvidia/hpc_sdk/Linux_x86_64/20.9/cuda
spec: cuda@11.0.0%nvhpc@20.9
curl:
buildable: false
externals:
- prefix: /usr
spec: curl@7.66.0+gssapi+ldap+nghttp2
diffutils:
buildable: false
externals:
- prefix: /usr
spec: diffutils@3.6
expat:
require: '%gcc@7.5.0'
fftw:
buildable: false
externals:
- modules:
- cray-fftw/3.3.8.13
spec: fftw@3.3.8.13
findutils:
buildable: false
externals:
- prefix: /usr
spec: findutils@4.8.0
flex:
buildable: false
externals:
- prefix: /usr
spec: flex@2.6.4+lex
fltk:
require: '%gcc@7.5.0'
fontconfig:
require: '%gcc@7.5.0'
gams:
buildable: false
externals:
- prefix: /opt/psi/Tools/GAMS/31.1.1/gams31.1_linux_x64_64_sfx
spec: gams@31.1.1%gcc
gawk:
buildable: false
externals:
- prefix: /usr
spec: gawk@4.2.1
gcc:
require: '%gcc@7.5.0'
gdbm:
require: '%gcc@7.5.0'
gettext:
require: '%gcc@7.5.0'
git:
buildable: false
externals:
- prefix: /usr
spec: git@2.35.3~tcltk
gmake:
require: '%gcc@7.5.0'
buildable: false
externals:
- prefix: /usr
spec: gmake@4.2.1
groff:
buildable: false
externals:
- prefix: /usr
spec: groff@1.22.3
hdf5:
externals:
- modules:
- cray-hdf5-parallel/1.12.0.7
spec: hdf5@1.12.0.7+mpi
- prefix: /opt/cray/pe/hdf5-parallel/1.12.0.7/nvidia/20.7
spec: hdf5@1.12.0.7%nvhpc+mpi
- modules:
- cray-hdf5/1.12.0.7
spec: hdf5@1.12.0.7~mpi
libbsd:
require: '%gcc@7.5.0'
libevent:
require: '%gcc@7.5.0'
libfabric:
buildable: false
externals:
- prefix: /opt/cray/libfabric/1.15.2.0
spec: libfabric@1.15.2.0
libiconv:
require: '%gcc@7.5.0'
libidn2:
require: '%gcc@7.5.0'
libmd:
require: '%gcc@7.5.0'
libpciaccess:
require: '%gcc@7.5.0'
libsigsegv:
require: '%gcc@7.5.0'
libtool:
buildable: false
externals:
- prefix: /usr
spec: libtool@2.4.6
libxml2:
require: '%gcc@7.5.0'
llvm:
buildable: false
externals:
- prefix: /opt/AMD/aocc-compiler-3.1.0
spec: llvm@15.0.3
m4:
buildable: false
externals:
- prefix: /usr
spec: m4@1.4.18
ncurses:
require: '%gcc@7.5.0'
netcdf-c:
buildable: false
externals:
- modules:
- cray-parallel-netcdf/1.12.1.7
spec: netcdf-c@4.0.1 +mpi
netcdf-fortran:
buildable: false
externals:
- modules:
- cray-parallel-netcdf/1.12.1.7
spec: netcdf-fortran@4.0.1
ninja:
require: '%gcc@7.5.0'
numactl:
require: '%gcc@7.5.0'
openblas:
require: '%gcc@7.5.0'
opengl:
externals:
- prefix: /usr
spec: opengl@1.7.0
openmpi:
externals:
- prefix: /opt/nvidia/hpc_sdk/Linux_x86_64/20.9/comm_libs/openmpi4/openmpi-4.0.5
spec: openmpi@4.0.5%nvhpc@20.9
require:
- one_of: [
"openmpi@4.1.5%gcc@7.5.0 schedulers=slurm fabrics=ofi +pmi +cxx +cxx_exceptions +cuda +legacylaunchers",
"openmpi@4.1.5%oneapi schedulers=slurm fabrics=ofi +pmi +cxx +cxx_exceptions +cuda +legacylaunchers",
"openmpi@4.0.5%nvhpc@20.9"
]
openssh:
buildable: false
externals:
- prefix: /usr
spec: openssh@8.4p1
openssl:
buildable: false
externals:
- prefix: /usr
spec: openssl@1.1.1d
perl:
require: '%gcc@7.5.0'
pkg-config:
buildable: false
externals:
- prefix: /usr
spec: pkg-config@0.29.2
pkgconf:
require: '%gcc@7.5.0'
py-fypp:
require: '%gcc@7.5.0'
python:
require: '%gcc@7.5.0'
rdma-core:
buildable: false
externals:
- spec: rdma-core@31.0
prefix: /usr
readline:
require: '%gcc@7.5.0'
slurm:
buildable: false
externals:
- spec: slurm@20.11.8
prefix: /usr
sqlite:
require: '%gcc@7.5.0'
tar:
buildable: false
externals:
- prefix: /usr
spec: tar@1.34
texinfo:
buildable: false
externals:
- prefix: /usr
spec: texinfo@6.5
unuran:
require: '%gcc@7.5.0'
util-linux-uuid:
require: '%gcc@7.5.0'
util-macros:
require: '%gcc@7.5.0'
valgrind:
buildable: false
externals:
- modules:
- valgrind4hpc/2.12.8
spec: valgrind@2.12.8
xpmem:
buildable: false
externals:
- modules:
- xpmem/2.4.4-2.3_9.1__gff0e1d9.shasta
spec: xpmem@2.4.4
xxhash:
require: '%gcc@7.5.0'
zlib:
require: '%gcc@7.5.0'
zstd:
require: '%gcc@7.5.0'

View File

@ -1,52 +0,0 @@
spack:
concretizer:
unify: when_possible
config:
build_stage:
- /scratch/spack/spack-stage
definitions:
- aocc_mpi:
- ^cray-mpich
- aocc_pckgs:
- gromacs@2022.5
- cce_mpi:
- ^cray-mpich
- cce_pckgs:
- gromacs@2022.5
- gcc_11.2.0_mpi:
- ^cray-mpich
- gcc_11.2.0_pckgs:
- gromacs@2023 +mpi +cuda
- h5hut +mpi
- lammps
- trilinos ~fortran
- intel_mpi:
- ^cray-mpich
- intel_pckgs:
- gromacs@2022.5
- nvhpc_mpi:
- ^cray-mpich
- nvhpc_pckgs:
- quantum-espresso +mpi+cuda hdf5=parallel
include:
- ../sysconfigs/packages.yaml
- ../sysconfigs/compilers.yaml
- ../sysconfigs/modules.yaml
specs:
- matrix:
- [$aocc_pckgs]
- [$aocc_mpi]
- ['%aocc@3.1.0']
- matrix:
- [$cce_pckgs]
- [$cce_mpi]
- ['%cce@13.0.0']
- matrix:
- [$gcc_11.2.0_pckgs]
- [$gcc_11.2.0_mpi]
- ['%gcc@11.2.0']
- matrix:
- [$nvhpc_pckgs]
- [$nvhpc_mpi]
- ['%nvhpc@20.9']
view: false

View File

@ -0,0 +1,113 @@
diff -bur amrex-18.07/Src/Base/AMReX_ParallelDescriptor.cpp amrex-18.07.1/Src/Base/AMReX_ParallelDescriptor.cpp
--- amrex-18.07/Src/Base/AMReX_ParallelDescriptor.cpp 2018-07-02 19:40:21
+++ amrex-18.07.1/Src/Base/AMReX_ParallelDescriptor.cpp 2023-07-19 16:50:02
@@ -1950,22 +1950,17 @@
static MPI_Datatype mine(MPI_DATATYPE_NULL);
if ( mine == MPI_DATATYPE_NULL )
{
- IntVect iv[2]; // Used to construct the data types
- MPI_Datatype types[] = {
- MPI_LB,
- MPI_INT,
- MPI_UB};
- int blocklens[] = { 1, AMREX_SPACEDIM, 1};
- MPI_Aint disp[3];
- int n = 0;
- BL_MPI_REQUIRE( MPI_Address(&iv[0], &disp[n++]) );
- BL_MPI_REQUIRE( MPI_Address(&iv[0].vect, &disp[n++]) );
- BL_MPI_REQUIRE( MPI_Address(&iv[1], &disp[n++]) );
- for ( int i = n-1; i >= 0; i-- )
- {
- disp[i] -= disp[0];
+ MPI_Datatype types[] = { MPI_INT };
+ int blocklens[] = { AMREX_SPACEDIM };
+ MPI_Aint disp[] = { 0 };
+ BL_MPI_REQUIRE( MPI_Type_create_struct(1, blocklens, disp, types, &mine) );
+ MPI_Aint lb, extent;
+ BL_MPI_REQUIRE( MPI_Type_get_extent(mine, &lb, &extent) );
+ if (extent != sizeof(IntVect)) {
+ MPI_Datatype tmp = mine;
+ BL_MPI_REQUIRE( MPI_Type_create_resized(tmp, 0, sizeof(IntVect), &mine) );
+ BL_MPI_REQUIRE( MPI_Type_free(&tmp) );
}
- BL_MPI_REQUIRE( MPI_Type_struct(n, blocklens, disp, types, &mine) );
BL_MPI_REQUIRE( MPI_Type_commit( &mine ) );
}
return mine;
@@ -1976,22 +1971,17 @@
static MPI_Datatype mine(MPI_DATATYPE_NULL);
if ( mine == MPI_DATATYPE_NULL )
{
- IndexType iv[2]; // Used to construct the data types
- MPI_Datatype types[] = {
- MPI_LB,
- MPI_UNSIGNED,
- MPI_UB};
- int blocklens[] = { 1, 1, 1};
- MPI_Aint disp[3];
- int n = 0;
- BL_MPI_REQUIRE( MPI_Address(&iv[0], &disp[n++]) );
- BL_MPI_REQUIRE( MPI_Address(&iv[0].itype, &disp[n++]) );
- BL_MPI_REQUIRE( MPI_Address(&iv[1], &disp[n++]) );
- for ( int i = n-1; i >= 0; i-- )
- {
- disp[i] -= disp[0];
+ MPI_Datatype types[] = { MPI_UNSIGNED };
+ int blocklens[] = { 1 };
+ MPI_Aint disp[] = { 0 };
+ BL_MPI_REQUIRE( MPI_Type_create_struct(1, blocklens, disp, types, &mine) );
+ MPI_Aint lb, extent;
+ BL_MPI_REQUIRE( MPI_Type_get_extent(mine, &lb, &extent) );
+ if (extent != sizeof(IndexType)) {
+ MPI_Datatype tmp = mine;
+ BL_MPI_REQUIRE( MPI_Type_create_resized(tmp, 0, sizeof(IndexType), &mine) );
+ BL_MPI_REQUIRE( MPI_Type_free(&tmp) );
}
- BL_MPI_REQUIRE( MPI_Type_struct(n, blocklens, disp, types, &mine) );
BL_MPI_REQUIRE( MPI_Type_commit( &mine ) );
}
return mine;
@@ -2002,26 +1992,28 @@
static MPI_Datatype mine(MPI_DATATYPE_NULL);
if ( mine == MPI_DATATYPE_NULL )
{
- Box iv[2]; // Used to construct the data types
+ Box bx[2];
MPI_Datatype types[] = {
- MPI_LB,
Mpi_typemap<IntVect>::type(),
Mpi_typemap<IntVect>::type(),
Mpi_typemap<IndexType>::type(),
- MPI_UB};
- int blocklens[] = { 1, 1, 1, 1, 1};
- MPI_Aint disp[5];
- int n = 0;
- BL_MPI_REQUIRE( MPI_Address(&iv[0], &disp[n++]) );
- BL_MPI_REQUIRE( MPI_Address(&iv[0].smallend, &disp[n++]) );
- BL_MPI_REQUIRE( MPI_Address(&iv[0].bigend, &disp[n++]) );
- BL_MPI_REQUIRE( MPI_Address(&iv[0].btype, &disp[n++]) );
- BL_MPI_REQUIRE( MPI_Address(&iv[1], &disp[n++]) );
- for ( int i = n-1; i >= 0; i-- )
- {
- disp[i] -= disp[0];
+ };
+ int blocklens[] = { 1, 1, 1 };
+ MPI_Aint disp[3];
+ BL_MPI_REQUIRE( MPI_Get_address(&bx[0].smallend, &disp[0]) );
+ BL_MPI_REQUIRE( MPI_Get_address(&bx[0].bigend, &disp[1]) );
+ BL_MPI_REQUIRE( MPI_Get_address(&bx[0].btype, &disp[2]) );
+ disp[2] -= disp[0];
+ disp[1] -= disp[0];
+ disp[0] = 0;
+ BL_MPI_REQUIRE( MPI_Type_create_struct(3, blocklens, disp, types, &mine) );
+ MPI_Aint lb, extent;
+ BL_MPI_REQUIRE( MPI_Type_get_extent(mine, &lb, &extent) );
+ if (extent != sizeof(bx[0])) {
+ MPI_Datatype tmp = mine;
+ BL_MPI_REQUIRE( MPI_Type_create_resized(tmp, 0, sizeof(bx[0]), &mine) );
+ BL_MPI_REQUIRE( MPI_Type_free(&tmp) );
}
- BL_MPI_REQUIRE( MPI_Type_struct(n, blocklens, disp, types, &mine) );
BL_MPI_REQUIRE( MPI_Type_commit( &mine ) );
}
return mine;

View File

@ -0,0 +1,270 @@
--- amrex-18.07/Src/Base/AMReX_ParallelDescriptor.cpp 2018-07-02 19:40:21.000000000 +0200
+++ AMReX_ParallelDescriptor.cpp 2021-06-21 15:25:26.752813320 +0200
@@ -54,13 +54,13 @@
#ifdef BL_USE_UPCXX
UPCXX_MPI_Mode Mode;
-#endif
+#endif
#ifdef BL_USE_MPI3
MPI_Win cp_win;
MPI_Win fb_win;
#endif
-
+
namespace util
{
//
@@ -951,7 +951,7 @@
BL_MPI_REQUIRE( MPI_Allreduce(&recv_team, &recv, 1, Mpi_typemap<Real>::type(), op,
MyTeam().get_lead_comm()) );
}
- BL_MPI_REQUIRE( MPI_Bcast(&recv, 1, Mpi_typemap<Real>::type(),
+ BL_MPI_REQUIRE( MPI_Bcast(&recv, 1, Mpi_typemap<Real>::type(),
0, MyTeam().get_team_comm()) );
}
else
@@ -994,11 +994,11 @@
BL_MPI_REQUIRE( MPI_Reduce(r, recv_team.dataPtr(), cnt, Mpi_typemap<Real>::type(), op,
0, MyTeam().get_team_comm()) );
if (isTeamLead()) {
- BL_MPI_REQUIRE( MPI_Allreduce(recv_team.dataPtr(), recv.dataPtr(), cnt,
+ BL_MPI_REQUIRE( MPI_Allreduce(recv_team.dataPtr(), recv.dataPtr(), cnt,
Mpi_typemap<Real>::type(), op,
MyTeam().get_lead_comm()) );
}
- BL_MPI_REQUIRE( MPI_Bcast(recv.dataPtr(), cnt, Mpi_typemap<Real>::type(),
+ BL_MPI_REQUIRE( MPI_Bcast(recv.dataPtr(), cnt, Mpi_typemap<Real>::type(),
0, MyTeam().get_team_comm()) );
}
else
@@ -1045,7 +1045,7 @@
RankInLeadComm(cpu), MyTeam().get_lead_comm()) );
}
if (sameTeam(cpu)) {
- BL_MPI_REQUIRE( MPI_Bcast(&recv, 1, Mpi_typemap<Real>::type(),
+ BL_MPI_REQUIRE( MPI_Bcast(&recv, 1, Mpi_typemap<Real>::type(),
0, MyTeam().get_team_comm()) );
}
}
@@ -1098,7 +1098,7 @@
RankInLeadComm(cpu), MyTeam().get_lead_comm()) );
}
if (sameTeam(cpu)) {
- BL_MPI_REQUIRE( MPI_Bcast(&recv[0], cnt, Mpi_typemap<Real>::type(),
+ BL_MPI_REQUIRE( MPI_Bcast(&recv[0], cnt, Mpi_typemap<Real>::type(),
0, MyTeam().get_team_comm()) );
}
}
@@ -1148,7 +1148,7 @@
BL_MPI_REQUIRE( MPI_Allreduce(&recv_team, &recv, 1, MPI_LONG, op,
MyTeam().get_lead_comm()) );
}
- BL_MPI_REQUIRE( MPI_Bcast(&recv, 1, MPI_LONG,
+ BL_MPI_REQUIRE( MPI_Bcast(&recv, 1, MPI_LONG,
0, MyTeam().get_team_comm()) );
}
else
@@ -1191,7 +1191,7 @@
BL_MPI_REQUIRE( MPI_Reduce(r, recv_team.dataPtr(), cnt, MPI_LONG, op,
0, MyTeam().get_team_comm()) );
if (isTeamLead()) {
- BL_MPI_REQUIRE( MPI_Allreduce(recv_team.dataPtr(), recv.dataPtr(), cnt,
+ BL_MPI_REQUIRE( MPI_Allreduce(recv_team.dataPtr(), recv.dataPtr(), cnt,
MPI_LONG, op,
MyTeam().get_lead_comm()) );
}
@@ -1295,7 +1295,7 @@
RankInLeadComm(cpu), MyTeam().get_lead_comm()) );
}
if (sameTeam(cpu)) {
- BL_MPI_REQUIRE( MPI_Bcast(&recv[0], cnt, MPI_LONG,
+ BL_MPI_REQUIRE( MPI_Bcast(&recv[0], cnt, MPI_LONG,
0, MyTeam().get_team_comm()) );
}
}
@@ -1345,7 +1345,7 @@
BL_MPI_REQUIRE( MPI_Allreduce(&recv_team, &recv, 1, MPI_INT, op,
MyTeam().get_lead_comm()) );
}
- BL_MPI_REQUIRE( MPI_Bcast(&recv, 1, MPI_INT,
+ BL_MPI_REQUIRE( MPI_Bcast(&recv, 1, MPI_INT,
0, MyTeam().get_team_comm()) );
}
else
@@ -1388,7 +1388,7 @@
BL_MPI_REQUIRE( MPI_Reduce(r, recv_team.dataPtr(), cnt, MPI_INT, op,
0, MyTeam().get_team_comm()) );
if (isTeamLead()) {
- BL_MPI_REQUIRE( MPI_Allreduce(recv_team.dataPtr(), recv.dataPtr(), cnt,
+ BL_MPI_REQUIRE( MPI_Allreduce(recv_team.dataPtr(), recv.dataPtr(), cnt,
MPI_INT, op,
MyTeam().get_lead_comm()) );
}
@@ -1492,7 +1492,7 @@
RankInLeadComm(cpu), MyTeam().get_lead_comm()) );
}
if (sameTeam(cpu)) {
- BL_MPI_REQUIRE( MPI_Bcast(&recv[0], cnt, MPI_LONG,
+ BL_MPI_REQUIRE( MPI_Bcast(&recv[0], cnt, MPI_LONG,
0, MyTeam().get_team_comm()) );
}
}
@@ -1735,13 +1735,13 @@
return m_finished;
}
-void ParallelDescriptor::EndParallel ()
+void ParallelDescriptor::EndParallel ()
{
ParallelContext::pop();
}
void ParallelDescriptor::Abort (int s, bool backtrace)
-{
+{
if (backtrace && amrex::system::signal_handling) {
BLBackTrace::handler(s);
} else {
@@ -1950,23 +1950,18 @@
static MPI_Datatype mine(MPI_DATATYPE_NULL);
if ( mine == MPI_DATATYPE_NULL )
{
- IntVect iv[2]; // Used to construct the data types
- MPI_Datatype types[] = {
- MPI_LB,
- MPI_INT,
- MPI_UB};
- int blocklens[] = { 1, AMREX_SPACEDIM, 1};
- MPI_Aint disp[3];
- int n = 0;
- BL_MPI_REQUIRE( MPI_Address(&iv[0], &disp[n++]) );
- BL_MPI_REQUIRE( MPI_Address(&iv[0].vect, &disp[n++]) );
- BL_MPI_REQUIRE( MPI_Address(&iv[1], &disp[n++]) );
- for ( int i = n-1; i >= 0; i-- )
- {
- disp[i] -= disp[0];
- }
- BL_MPI_REQUIRE( MPI_Type_struct(n, blocklens, disp, types, &mine) );
- BL_MPI_REQUIRE( MPI_Type_commit( &mine ) );
+ MPI_Datatype types[] = { MPI_INT };
+ int blocklens[] = { AMREX_SPACEDIM };
+ MPI_Aint disp[] = { 0 };
+ BL_MPI_REQUIRE( MPI_Type_create_struct(1, blocklens, disp, types, &mine) );
+ MPI_Aint lb, extent;
+ BL_MPI_REQUIRE( MPI_Type_get_extent(mine, &lb, &extent) );
+ if (extent != sizeof(IntVect)) {
+ MPI_Datatype tmp = mine;
+ BL_MPI_REQUIRE( MPI_Type_create_resized(tmp, 0, sizeof(IntVect), &mine) );
+ BL_MPI_REQUIRE( MPI_Type_free(&tmp) );
+ }
+ BL_MPI_REQUIRE( MPI_Type_commit( &mine ) );
}
return mine;
}
@@ -1976,23 +1971,18 @@
static MPI_Datatype mine(MPI_DATATYPE_NULL);
if ( mine == MPI_DATATYPE_NULL )
{
- IndexType iv[2]; // Used to construct the data types
- MPI_Datatype types[] = {
- MPI_LB,
- MPI_UNSIGNED,
- MPI_UB};
- int blocklens[] = { 1, 1, 1};
- MPI_Aint disp[3];
- int n = 0;
- BL_MPI_REQUIRE( MPI_Address(&iv[0], &disp[n++]) );
- BL_MPI_REQUIRE( MPI_Address(&iv[0].itype, &disp[n++]) );
- BL_MPI_REQUIRE( MPI_Address(&iv[1], &disp[n++]) );
- for ( int i = n-1; i >= 0; i-- )
- {
- disp[i] -= disp[0];
- }
- BL_MPI_REQUIRE( MPI_Type_struct(n, blocklens, disp, types, &mine) );
- BL_MPI_REQUIRE( MPI_Type_commit( &mine ) );
+ MPI_Datatype types[] = { MPI_UNSIGNED };
+ int blocklens[] = { 1 };
+ MPI_Aint disp[] = { 0 };
+ BL_MPI_REQUIRE( MPI_Type_create_struct(1, blocklens, disp, types, &mine) );
+ MPI_Aint lb, extent;
+ BL_MPI_REQUIRE( MPI_Type_get_extent(mine, &lb, &extent) );
+ if (extent != sizeof(IndexType)) {
+ MPI_Datatype tmp = mine;
+ BL_MPI_REQUIRE( MPI_Type_create_resized(tmp, 0, sizeof(IndexType), &mine) );
+ BL_MPI_REQUIRE( MPI_Type_free(&tmp) );
+ }
+ BL_MPI_REQUIRE( MPI_Type_commit( &mine ) );
}
return mine;
}
@@ -2002,27 +1992,29 @@
static MPI_Datatype mine(MPI_DATATYPE_NULL);
if ( mine == MPI_DATATYPE_NULL )
{
- Box iv[2]; // Used to construct the data types
- MPI_Datatype types[] = {
- MPI_LB,
- Mpi_typemap<IntVect>::type(),
- Mpi_typemap<IntVect>::type(),
- Mpi_typemap<IndexType>::type(),
- MPI_UB};
- int blocklens[] = { 1, 1, 1, 1, 1};
- MPI_Aint disp[5];
- int n = 0;
- BL_MPI_REQUIRE( MPI_Address(&iv[0], &disp[n++]) );
- BL_MPI_REQUIRE( MPI_Address(&iv[0].smallend, &disp[n++]) );
- BL_MPI_REQUIRE( MPI_Address(&iv[0].bigend, &disp[n++]) );
- BL_MPI_REQUIRE( MPI_Address(&iv[0].btype, &disp[n++]) );
- BL_MPI_REQUIRE( MPI_Address(&iv[1], &disp[n++]) );
- for ( int i = n-1; i >= 0; i-- )
- {
- disp[i] -= disp[0];
- }
- BL_MPI_REQUIRE( MPI_Type_struct(n, blocklens, disp, types, &mine) );
- BL_MPI_REQUIRE( MPI_Type_commit( &mine ) );
+ Box bx[2];
+ MPI_Datatype types[] = {
+ Mpi_typemap<IntVect>::type(),
+ Mpi_typemap<IntVect>::type(),
+ Mpi_typemap<IndexType>::type(),
+ };
+ int blocklens[] = { 1, 1, 1 };
+ MPI_Aint disp[3];
+ BL_MPI_REQUIRE( MPI_Get_address(&bx[0].smallend, &disp[0]) );
+ BL_MPI_REQUIRE( MPI_Get_address(&bx[0].bigend, &disp[1]) );
+ BL_MPI_REQUIRE( MPI_Get_address(&bx[0].btype, &disp[2]) );
+ disp[2] -= disp[0];
+ disp[1] -= disp[0];
+ disp[0] = 0;
+ BL_MPI_REQUIRE( MPI_Type_create_struct(3, blocklens, disp, types, &mine) );
+ MPI_Aint lb, extent;
+ BL_MPI_REQUIRE( MPI_Type_get_extent(mine, &lb, &extent) );
+ if (extent != sizeof(bx[0])) {
+ MPI_Datatype tmp = mine;
+ BL_MPI_REQUIRE( MPI_Type_create_resized(tmp, 0, sizeof(bx[0]), &mine) );
+ BL_MPI_REQUIRE( MPI_Type_free(&tmp) );
+ }
+ BL_MPI_REQUIRE( MPI_Type_commit( &mine ) );
}
return mine;
}
@@ -2121,7 +2113,7 @@
team_ranks[i] = MyTeamLead() + i;
}
BL_MPI_REQUIRE( MPI_Group_incl(grp, team_size, team_ranks, &team_grp) );
- BL_MPI_REQUIRE( MPI_Comm_create(ParallelDescriptor::Communicator(),
+ BL_MPI_REQUIRE( MPI_Comm_create(ParallelDescriptor::Communicator(),
team_grp, &m_Team.m_team_comm) );
std::vector<int>lead_ranks(m_Team.m_numTeams);
@@ -2129,7 +2121,7 @@
lead_ranks[i] = i * team_size;
}
BL_MPI_REQUIRE( MPI_Group_incl(grp, lead_ranks.size(), &lead_ranks[0], &lead_grp) );
- BL_MPI_REQUIRE( MPI_Comm_create(ParallelDescriptor::Communicator(),
+ BL_MPI_REQUIRE( MPI_Comm_create(ParallelDescriptor::Communicator(),
lead_grp, &m_Team.m_lead_comm) );
BL_MPI_REQUIRE( MPI_Group_free(&grp) );

65
packages/amrex/package.py Normal file
View File

@ -0,0 +1,65 @@
# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
import os
from spack.package import *
from spack.pkg.builtin.amrex import Amrex as SpackAmrex
class Amrex(SpackAmrex):
version("18.07", sha256="2e8d3a91c5d972e3cebb88d10c4c92112459c88c2342c5a63337f3110bdbff13")
# Config options
variant(
"dimensions",
default="3",
values=("1", "2", "3"),
multi=False,
description="Dimensionality",
when="@18.07",
)
variant("fbaselib", default=False, description="Fbaselib", when="@18.07")
variant("fpe", default=False, description="FPE", when="@18.07")
patch("AMReX_ParallelDescriptor.patch", when="@18.07+mpi")
@when("@18.07")
def cmake_args(self):
args = [
self.define_from_variant("DIM", "dimensions"),
self.define_from_variant("BUILD_SHARED_LIBS", "shared"),
self.define_from_variant("ENABLE_MPI", "mpi"),
self.define_from_variant("ENABLE_OMP", "openmp"),
self.define_from_variant("ENABLE_FORTRAN_INTERFACES", "fortran"),
self.define_from_variant("ENABLE_EB", "eb"),
self.define_from_variant("ENABLE_LINEAR_SOLVERS", "linear_solvers"),
self.define_from_variant("ENABLE_AMRDATA", "amrdata"),
self.define_from_variant("ENABLE_PARTICLES", "particles"),
self.define_from_variant("ENABLE_SUNDIALS", "sundials"),
self.define_from_variant("ENABLE_HDF5", "hdf5"),
self.define_from_variant("ENABLE_HYPRE", "hypre"),
self.define_from_variant("ENABLE_PETSC", "petsc"),
self.define_from_variant("ENABLE_CUDA", "cuda"),
self.define_from_variant("ENABLE_PIC", "pic"),
self.define_from_variant("ENABLE_FBASELIB", "fbaselib"),
self.define_from_variant("ENABLE_FPE", "fpe"),
"-DENABLE_DP=%s" % self.spec.variants["precision"].value.upper(),
"-DENABLE_DP_PARTICLES=%s" % self.spec.variants["precision"].value.upper(),
]
if "+linear_solvers" in self.spec:
args.append("-DENABLE_LINEAR_SOLVERS_LEGACY=1")
if self.spec.satisfies("%fj"):
args.append("-DCMAKE_Fortran_MODDIR_FLAG=-M")
if "+cuda" in self.spec:
cuda_arch = self.spec.variants["cuda_arch"].value
args.append("-DCUDA_ARCH=" + self.get_cuda_arch_string(cuda_arch))
return args

13
packages/h5hut/package.py Normal file
View File

@ -0,0 +1,13 @@
# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack.package import *
from spack.pkg.builtin.h5hut import H5hut as SpackH5hut
class H5hut(SpackH5hut):
version("2.0.0rc6", sha256="980a5c634877265bd3a862fbd439d973d44be9c1d2f840c3635e8c6375d62d7e")

View File

@ -0,0 +1,15 @@
Common subdirectories: mithra-2.0.orig/doc and mithra-2.0/doc
diff -u mithra-2.0.orig/makefile mithra-2.0/makefile
--- mithra-2.0.orig/makefile 2020-09-29 14:50:06.000000000 +0200
+++ mithra-2.0/makefile 2022-09-29 11:56:42.000000000 +0200
@@ -1,6 +1,7 @@
SHELL = /bin/sh
COMP = mpic++
+CFLAGS+=-fPIC
CFLAGS+=-std=c++11
CFLAGS+=-O3
Only in mithra-2.0: obj
Common subdirectories: mithra-2.0.orig/prj and mithra-2.0/prj
Common subdirectories: mithra-2.0.orig/src and mithra-2.0/src

View File

@ -0,0 +1,31 @@
# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack.package import *
class Mithra(MakefilePackage):
"""MITHRA is a full-wave numerical solver for free-electron lasers"""
homepage = "https://github.com/aryafallahi/mithra/tree/master"
url = "https://github.com/aryafallahi/mithra/archive/refs/tags/2.0.tar.gz"
maintainers("germanne", "gsell")
license("UNKNOWN")
version("2.0", sha256="66f27ba6ca2c1ab05abb76338d00e661a6fe96b95283b85409c37625b4758deb")
variant("mpi", default=True, description="Enable MPI support")
depends_on("mpi", when="+mpi")
conflicts("~mpi")
def setup_build_environment(self, env):
env.set("PREFIX", prefix)
def edit(self, spec, prefix):
pass

View File

@ -0,0 +1,113 @@
diff -bur amrex-18.07/Src/Base/AMReX_ParallelDescriptor.cpp amrex-18.07.1/Src/Base/AMReX_ParallelDescriptor.cpp
--- amrex-18.07/Src/Base/AMReX_ParallelDescriptor.cpp 2018-07-02 19:40:21
+++ amrex-18.07.1/Src/Base/AMReX_ParallelDescriptor.cpp 2023-07-19 16:50:02
@@ -1950,22 +1950,17 @@
static MPI_Datatype mine(MPI_DATATYPE_NULL);
if ( mine == MPI_DATATYPE_NULL )
{
- IntVect iv[2]; // Used to construct the data types
- MPI_Datatype types[] = {
- MPI_LB,
- MPI_INT,
- MPI_UB};
- int blocklens[] = { 1, AMREX_SPACEDIM, 1};
- MPI_Aint disp[3];
- int n = 0;
- BL_MPI_REQUIRE( MPI_Address(&iv[0], &disp[n++]) );
- BL_MPI_REQUIRE( MPI_Address(&iv[0].vect, &disp[n++]) );
- BL_MPI_REQUIRE( MPI_Address(&iv[1], &disp[n++]) );
- for ( int i = n-1; i >= 0; i-- )
- {
- disp[i] -= disp[0];
+ MPI_Datatype types[] = { MPI_INT };
+ int blocklens[] = { AMREX_SPACEDIM };
+ MPI_Aint disp[] = { 0 };
+ BL_MPI_REQUIRE( MPI_Type_create_struct(1, blocklens, disp, types, &mine) );
+ MPI_Aint lb, extent;
+ BL_MPI_REQUIRE( MPI_Type_get_extent(mine, &lb, &extent) );
+ if (extent != sizeof(IntVect)) {
+ MPI_Datatype tmp = mine;
+ BL_MPI_REQUIRE( MPI_Type_create_resized(tmp, 0, sizeof(IntVect), &mine) );
+ BL_MPI_REQUIRE( MPI_Type_free(&tmp) );
}
- BL_MPI_REQUIRE( MPI_Type_struct(n, blocklens, disp, types, &mine) );
BL_MPI_REQUIRE( MPI_Type_commit( &mine ) );
}
return mine;
@@ -1976,22 +1971,17 @@
static MPI_Datatype mine(MPI_DATATYPE_NULL);
if ( mine == MPI_DATATYPE_NULL )
{
- IndexType iv[2]; // Used to construct the data types
- MPI_Datatype types[] = {
- MPI_LB,
- MPI_UNSIGNED,
- MPI_UB};
- int blocklens[] = { 1, 1, 1};
- MPI_Aint disp[3];
- int n = 0;
- BL_MPI_REQUIRE( MPI_Address(&iv[0], &disp[n++]) );
- BL_MPI_REQUIRE( MPI_Address(&iv[0].itype, &disp[n++]) );
- BL_MPI_REQUIRE( MPI_Address(&iv[1], &disp[n++]) );
- for ( int i = n-1; i >= 0; i-- )
- {
- disp[i] -= disp[0];
+ MPI_Datatype types[] = { MPI_UNSIGNED };
+ int blocklens[] = { 1 };
+ MPI_Aint disp[] = { 0 };
+ BL_MPI_REQUIRE( MPI_Type_create_struct(1, blocklens, disp, types, &mine) );
+ MPI_Aint lb, extent;
+ BL_MPI_REQUIRE( MPI_Type_get_extent(mine, &lb, &extent) );
+ if (extent != sizeof(IndexType)) {
+ MPI_Datatype tmp = mine;
+ BL_MPI_REQUIRE( MPI_Type_create_resized(tmp, 0, sizeof(IndexType), &mine) );
+ BL_MPI_REQUIRE( MPI_Type_free(&tmp) );
}
- BL_MPI_REQUIRE( MPI_Type_struct(n, blocklens, disp, types, &mine) );
BL_MPI_REQUIRE( MPI_Type_commit( &mine ) );
}
return mine;
@@ -2002,26 +1992,28 @@
static MPI_Datatype mine(MPI_DATATYPE_NULL);
if ( mine == MPI_DATATYPE_NULL )
{
- Box iv[2]; // Used to construct the data types
+ Box bx[2];
MPI_Datatype types[] = {
- MPI_LB,
Mpi_typemap<IntVect>::type(),
Mpi_typemap<IntVect>::type(),
Mpi_typemap<IndexType>::type(),
- MPI_UB};
- int blocklens[] = { 1, 1, 1, 1, 1};
- MPI_Aint disp[5];
- int n = 0;
- BL_MPI_REQUIRE( MPI_Address(&iv[0], &disp[n++]) );
- BL_MPI_REQUIRE( MPI_Address(&iv[0].smallend, &disp[n++]) );
- BL_MPI_REQUIRE( MPI_Address(&iv[0].bigend, &disp[n++]) );
- BL_MPI_REQUIRE( MPI_Address(&iv[0].btype, &disp[n++]) );
- BL_MPI_REQUIRE( MPI_Address(&iv[1], &disp[n++]) );
- for ( int i = n-1; i >= 0; i-- )
- {
- disp[i] -= disp[0];
+ };
+ int blocklens[] = { 1, 1, 1 };
+ MPI_Aint disp[3];
+ BL_MPI_REQUIRE( MPI_Get_address(&bx[0].smallend, &disp[0]) );
+ BL_MPI_REQUIRE( MPI_Get_address(&bx[0].bigend, &disp[1]) );
+ BL_MPI_REQUIRE( MPI_Get_address(&bx[0].btype, &disp[2]) );
+ disp[2] -= disp[0];
+ disp[1] -= disp[0];
+ disp[0] = 0;
+ BL_MPI_REQUIRE( MPI_Type_create_struct(3, blocklens, disp, types, &mine) );
+ MPI_Aint lb, extent;
+ BL_MPI_REQUIRE( MPI_Type_get_extent(mine, &lb, &extent) );
+ if (extent != sizeof(bx[0])) {
+ MPI_Datatype tmp = mine;
+ BL_MPI_REQUIRE( MPI_Type_create_resized(tmp, 0, sizeof(bx[0]), &mine) );
+ BL_MPI_REQUIRE( MPI_Type_free(&tmp) );
}
- BL_MPI_REQUIRE( MPI_Type_struct(n, blocklens, disp, types, &mine) );
BL_MPI_REQUIRE( MPI_Type_commit( &mine ) );
}
return mine;

121
packages/opal/package.py Normal file
View File

@ -0,0 +1,121 @@
# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack.package import *
class Opal(CMakePackage):
"""OPAL (Object Oriented Parallel Accelerator Library) is a parallel open source tool for charged-particle optics in linear accelerators and rings,
including 3D space charge. Using the MAD language with extensions, OPAL can run on a laptop as well as on the largest high performance computing systems.
OPAL is built from the ground up as a parallel application exemplifying the fact that high performance computing is the third leg of science,
complementing theory and experiment."""
homepage = "https://amas.web.psi.ch/opal/Documentation/master/OPAL_Manual.html"
url = "https://gitlab.psi.ch/OPAL/src/-/archive/OPAL-2022.1.0/src-OPAL-2022.1.0.tar.gz"
git = "https://gitlab.psi.ch/OPAL/src.git"
maintainers("germanne", "gsell")
license("GPLv3")
version('master', branch="master")
version("2022.1.0", sha256="31f6811032e9d5400169d28a8ae6c7dee2e4a803ee82e90584d31ff7a0a18d80")
variant(
"build_type",
default="Release",
description="CMake build type",
values=("Debug", "Release", "RelWithDebInfo", "MinSizeRel"),
)
variant("mpi", default=True, description="Enable MPI support")
variant("tests", default=True, description="Enable OPAL unit-tests")
variant("amr", default=True, description="Enable AMR solver")
variant("amr_mg_solver", default=True, description="Enable AMR multigrid solver")
variant("static", default=True, description="Enable MPI support")
variant("bandrf", default=True, description="Compile BANDRF field conversion scripts")
variant("static", default=True, description="Enable MPI support")
variant("opal_fel", default=True, description="Enable full-wave solver")
variant("saamg_solver", default=True, description="Enable SAAMG solver")
variant("python", default=True, description="Enable PyOPAL")
variant("mslang", default=True, description="Enable mslang")
variant("ippltests", default=True, description="Enable IPPL tests")
depends_on("openblas")
depends_on("boost+chrono+filesystem+iostreams+regex+serialization+system+timer")
depends_on("boost+mpi", when="+mpi")
depends_on("boost+python", when="+python")
depends_on("python@3.0", when="+python")
depends_on(
"boost+mpi+chrono+filesystem+iostreams+regex+serialization+system+timer", when="+mpi"
)
depends_on("gsl~shared")
depends_on("h5hut+mpi", when="+mpi")
depends_on("h5hut~mpi", when="~mpi")
depends_on(
"amrex@18.07 precision=double dimensions=3 +mpi~openmp+particles+pic~eb",
when="+amr+amr_mg_solver+mpi",
)
depends_on("googletest@1.10.0:", when="+tests")
depends_on("mithra@2.0", when="+opal_fel")
depends_on(
"trilinos@12.0.1: cxxstd=17 +mpi+muelu+nox+zoltan+zoltan2+isorropia gotype=long",
when="+saamg_solver",
)
depends_on(
"trilinos@12.0.1: cxxstd=17 +mpi+muelu+nox+zoltan+zoltan2+isorropia gotype=long",
when="+amr_mg_solver",
)
depends_on("parmetis@4.0.3:", when="+saamg_solver")
depends_on("parmetis@4.0.3:", when="+amr_mg_solver")
# @master
depends_on("h5hut@2.0.0rc6", when="@master")
depends_on("hdf5@1.10.11", when="@master")
depends_on("openmpi@4.1.6", when="@master+mpi")
depends_on("boost@1.84.0", when="@master+saamg_solver")
depends_on("trilinos@13.4.0:", when="@master+saamg_solver")
depends_on("trilinos@13.4.0:", when="@master+amr_mg_solver")
# @2022.1%gcc@10.4.0
depends_on("h5hut@2.0.0rc6", when="@2022.1")
depends_on("hdf5@1.10.8", when="@2022.1")
depends_on("openmpi@4.1.5", when="@2022.1+mpi")
depends_on("boost@1.82.0", when="@2022.1+saamg_solver")
depends_on("trilinos@13.4.0", when="@2022.1+saamg_solver")
depends_on("trilinos@13.4.0", when="@2022.1+amr_mg_solver")
conflicts("~amr", "+amr_mg_solver")
# AMRex version is too old for any newer Trilinos version
requires(
"^trilinos@13.4.0",
when="^amrex@18.07",
msg="AMRex version is too old for any newer Trilinos or GCC versions."
)
def cmake_args(self):
if "+mpi" in self.spec:
env["CC"] = self.spec["mpi"].mpicc
env["CXX"] = self.spec["mpi"].mpicxx
env["FC"] = self.spec["mpi"].mpifc
if "+opal_fel" in self.spec:
env["MITHRA_PREFIX"] = self.spec["mithra"].prefix
args = [
self.define_from_variant("BUILD_OPAL_UNIT_TESTS", "tests"),
self.define_from_variant("ENABLE_AMR", "amr"),
self.define_from_variant("ENABLE_AMR_MG_SOLVER", "amr_mg_solver"),
self.define_from_variant("ENABLE_BANDRF", "bandrf"),
self.define_from_variant("USE_STATIC_LIBRARIES", "static"),
self.define_from_variant("ENABLE_OPAL_FEL", "opal_fel"),
self.define_from_variant("ENABLE_SAAMG_SOLVER", "saamg_solver"),
self.define_from_variant("BUILD_OPAL_PYTHON", "python"),
self.define_from_variant("ENABLE_IPPLTESTS", "ippltests"),
self.define_from_variant("ENABLE_MSLANG", "mslang"),
]
return args