Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion PunctureTracker/schedule.ccl
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ SCHEDULE PunctureTracker_Init AT initial
WRITES: pt_vel
} "Read initial location of punctures from parameter file"

SCHEDULE GROUP PunctureTracker_SetupGroup AT initial AFTER PunctureTracker_Init
SCHEDULE GROUP PunctureTracker_SetupGroup AT initial AFTER PunctureTracker_Init AFTER BoxInBox_Init
{
} "Setup puncture containter"

Expand All @@ -23,6 +23,7 @@ SCHEDULE PunctureTracker_Setup IN PunctureTracker_SetupGroup
OPTIONS: GLOBAL
READS: pt_loc
READS: pt_vel
READS: BoxInBox::positions
WRITES: BoxInBox::positions
} "Calculate initial location of punctures"

Expand All @@ -31,8 +32,11 @@ SCHEDULE PunctureTracker_Track AT evol AFTER ODESolvers_Solve
LANG: C
OPTIONS: GLOBAL
READS: ADMBaseX::shift(everywhere)
READS: pt_loc
READS: pt_vel
WRITES: pt_loc
WRITES: pt_vel
READS: BoxInBox::positions
WRITES: BoxInBox::positions
} "Calculate new location of punctures"

Expand Down
3 changes: 1 addition & 2 deletions PunctureTracker/src/puncture.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,9 @@
namespace PunctureTracker {

void PunctureContainer::updatePreviousTime(CCTK_ARGUMENTS) {
DECLARE_CCTK_ARGUMENTS;
for (int n = 0; n < numPunctures_; ++n) {
previousTime_[n] = time_[n];
time_[n] = cctk_time;
time_[n] = cctkGH->cctk_time;
}
}

Expand Down
56 changes: 45 additions & 11 deletions scripts/actions-cpu-real64.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,33 @@
# The "weird" options here should probably be made the default in the
# ET instead of being set here.

# The container this option list targets provides MPI, HDF5 and PETSc through
# the **MPI ABI** in /usr/local, not through distribution packages: the image
# builds mpi_abi_wrapper (the C bindings) and mpif (the Fortran ones) over the
# MPI it wraps, then builds HDF5 and PETSc against those. See the header of the
# matching `docker/carpetx-*.dockerfile` for the image side, and
# `simfactory/mdb/optionlists/desert*.cfg` for the same four blocks in the
# interactive option lists.
#
# - MPI_INC_DIRS / MPI_LIB_DIRS / MPI_LIBS are set explicitly so that
# ExternalLibraries/MPI takes its *manual* path (detect.pl:84). The automatic
# path asks the wrapper for `-compile_info`, which answers with the compile
# flags alone -- no `-L`, no `-l` -- so MPI would be configured with an empty
# MPI_LIBS and nothing would be linked.
# - HDF5 is the CMake build, which spells the Fortran libraries `hdf5_fortran` /
# `hdf5_hl_fortran` where Debian spelled the latter `hdf5hl_fortran`, and adds
# the `*_f90cstub` pair Debian did not have.
# - PETSc is `libpetsc.so` under one prefix, so PETSC_LIBS is left unset:
# detect.sh settles on `petsc m` and the external packages (hypre, MUMPS,
# SuperLU_DIST, ...) arrive through libpetsc.so's own DT_NEEDED entries.
# `PETSC_LIBS = petsc_real` was Debian's split-package spelling and is gone.
# - F90FLAGS gains -I/usr/local/include: gfortran does not search it for `.mod`
# files the way the preprocessor searches it for headers, and detect.pl strips
# the directory out of MPI_INC_DIRS/HDF5_INC_DIRS for being standard.

# Whenever this version string changes, the application is configured
# and rebuilt from scratch
VERSION = actions-real-cpu64-2023-02-04
VERSION = actions-real-cpu64-2026-09-18

CPP = cpp
CC = gcc
Expand All @@ -18,9 +42,9 @@ F90 = gfortran
# Note: GCC 13.2 with -ftrivial-auto-var-init=pattern mis-compiles (?) C++ lambdas

CFLAGS = -D_FORTIFY_SOURCE=3 -D_GLIBCXX_ASSERTIONS -fPIE -fcf-protection=full -fstack-clash-protection -fstack-protector-strong -ftrivial-auto-var-init=pattern -g -march=x86-64-v3 -pie -pipe -std=gnu11
CXXFLAGS = -D_FORTIFY_SOURCE=3 -D_GLIBCXX_ASSERTIONS -fPIE -fcf-protection=full -fstack-clash-protection -fstack-protector-strong -g -march=x86-64-v3 -pie -pipe -std=gnu++17
CXXFLAGS = -D_FORTIFY_SOURCE=3 -D_GLIBCXX_ASSERTIONS -fPIE -fcf-protection=full -fstack-clash-protection -fstack-protector-strong -g -march=x86-64-v3 -pie -pipe -std=gnu++20
FPPFLAGS = -traditional
F90FLAGS = -fPIE -fcf-protection=full -fcray-pointer -ffixed-line-length-none -finit-character=65 -finit-integer=42424242 -finit-real=nan -fstack-clash-protection -fstack-protector-strong -g -march=x86-64-v3 -pie -pipe
F90FLAGS = -fPIE -fcf-protection=full -fcray-pointer -ffixed-line-length-none -finit-character=65 -finit-integer=42424242 -finit-real=nan -fstack-clash-protection -fstack-protector-strong -g -march=x86-64-v3 -pie -pipe -I/usr/local/include
LDFLAGS = -L/usr/lib/x86_64-linux-gnu -Wl,-rpath,/usr/local/lib -Wl,-z,relro,-z,now

C_LINE_DIRECTIVES = yes
Expand Down Expand Up @@ -59,33 +83,43 @@ FPP_WARN_FLAGS = -Wall
F90_WARN_FLAGS = -Wall -Wshadow -Wsurprising

ADIOS2_DIR = /usr/local
ADIOS2_LIBS = adios2_cxx11_mpi adios2_cxx11
ADIOS2_LIBS = adios2_cxx_mpi adios2_cxx mgard protobuf
AMREX_DIR = /usr/local
# ASDF_CXX_DIR = /usr/local
BLAS_DIR = /usr
BOOST_DIR = /usr
# BOOST_LIBS must be set: ExternalLibraries/Boost defaults to
# "boost_filesystem boost_system" when it is empty (Boost/configure.sh:166),
# and the image installs libboost-filesystem-dev only, so the link fails with
# "cannot find -lboost_system". Boost.System has been header-only since Boost
# 1.69, so naming just filesystem is correct rather than a workaround --
# `desert-arm64v8.cfg` has always done this.
BOOST_LIBS = boost_filesystem
CONDUIT_DIR = /usr/local
FFTW3_DIR = /usr
GSL_DIR = /usr
HDF5_DIR = /usr/lib/x86_64-linux-gnu/hdf5/serial
HDF5_DIR = /usr/local
HDF5_ENABLE_CXX = yes
HDF5_ENABLE_FORTRAN = yes
HDF5_INC_DIRS = /usr/lib/x86_64-linux-gnu/hdf5/serial/include
HDF5_LIB_DIRS = /usr/lib/x86_64-linux-gnu/hdf5/serial/lib
HDF5_LIBS = hdf5_hl_cpp hdf5_cpp hdf5hl_fortran hdf5_fortran hdf5_hl hdf5
HDF5_INC_DIRS = /usr/local/include
HDF5_LIB_DIRS = /usr/local/lib
HDF5_LIBS = hdf5_hl_cpp hdf5_cpp hdf5_hl_fortran hdf5_fortran hdf5_hl_f90cstub hdf5_f90cstub hdf5_hl hdf5
HWLOC_DIR = /usr
# JEMALLOC_DIR = /usr/local
LAPACK_DIR = /usr
# LIBJPEG_DIR = /usr
# LORENE_DIR = /usr/local
MPI_DIR = /usr
MPI_DIR = /usr/local
MPI_INC_DIRS = /usr/local/include
MPI_LIB_DIRS = /usr/local/lib
MPI_LIBS = mpif mpi_abi
NSIMD_DIR = /usr/local
NSIMD_SIMD = AVX2
OPENBLAS_DIR = /usr
OPENPMD_API_DIR = /usr/local
# OPENSSL_DIR = /usr
# PAPI_DIR = /usr/local
PETSC_DIR = /usr/lib/petsc
PETSC_LIBS = petsc_real
PETSC_DIR = /usr/local
PETSC_ARCH_LIBS = m
PTHREADS_DIR = NO_BUILD
# REPRIMAND_DIR = /usr/local
Expand Down
65 changes: 53 additions & 12 deletions scripts/actions-cuda-real64.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,33 @@
# The "weird" options here should probably be made the default in the
# ET instead of being set here.

# The container this option list targets provides MPI, HDF5 and PETSc through
# the **MPI ABI** in /usr/local, not through distribution packages: the image
# builds mpi_abi_wrapper (the C bindings) and mpif (the Fortran ones) over the
# MPI it wraps, then builds HDF5 and PETSc against those. See the header of the
# matching `docker/carpetx-*.dockerfile` for the image side, and
# `simfactory/mdb/optionlists/desert*.cfg` for the same four blocks in the
# interactive option lists.
#
# - MPI_INC_DIRS / MPI_LIB_DIRS / MPI_LIBS are set explicitly so that
# ExternalLibraries/MPI takes its *manual* path (detect.pl:84). The automatic
# path asks the wrapper for `-compile_info`, which answers with the compile
# flags alone -- no `-L`, no `-l` -- so MPI would be configured with an empty
# MPI_LIBS and nothing would be linked.
# - HDF5 is the CMake build, which spells the Fortran libraries `hdf5_fortran` /
# `hdf5_hl_fortran` where Debian spelled the latter `hdf5hl_fortran`, and adds
# the `*_f90cstub` pair Debian did not have.
# - PETSc is `libpetsc.so` under one prefix, so PETSC_LIBS is left unset:
# detect.sh settles on `petsc m` and the external packages (hypre, MUMPS,
# SuperLU_DIST, ...) arrive through libpetsc.so's own DT_NEEDED entries.
# `PETSC_LIBS = petsc_real` was Debian's split-package spelling and is gone.
# - F90FLAGS gains -I/usr/local/include: gfortran does not search it for `.mod`
# files the way the preprocessor searches it for headers, and detect.pl strips
# the directory out of MPI_INC_DIRS/HDF5_INC_DIRS for being standard.

# Whenever this version string changes, the application is configured
# and rebuilt from scratch
VERSION = actions-cuda-real64-2023-02-04
VERSION = actions-cuda-real64-2026-09-18

CPP = cpp
CC = gcc
Expand All @@ -24,10 +48,17 @@ CFLAGS = -pipe -g -std=gnu11
# Call parameter type does not match function signature!
# %tmp = load double, double* %x.addr, align 8, !dbg !1483
# float %1 = call i32 @__isnanf(double %tmp), !dbg !1483
CXXFLAGS = -pipe -g0 -std=c++17 --compiler-options -std=gnu++17 --expt-relaxed-constexpr --extended-lambda --gpu-architecture sm_70 --forward-unknown-to-host-compiler --Werror ext-lambda-captures-this --relocatable-device-code=true --objdir-as-tempdir
CXXFLAGS = -pipe -g0 -std=c++20 --compiler-options -std=gnu++20 --expt-relaxed-constexpr --extended-lambda --gpu-architecture sm_90 --forward-unknown-to-host-compiler --Werror ext-lambda-captures-this --relocatable-device-code=true --objdir-as-tempdir
FPPFLAGS = -traditional
F90FLAGS = -pipe -g -fcray-pointer -ffixed-line-length-none
LIBS = nvToolsExt gfortran
F90FLAGS = -pipe -g -fcray-pointer -ffixed-line-length-none -I/usr/local/include
# `nvToolsExt` is not named here. NVTX v3 is header-only: `timer.hxx` includes
# <nvtx3/nvToolsExt.h> under __CUDACC__ and calls nvtxRangeStartA/nvtxRangeEnd,
# which are static inline and dlopen a profiler's injection library at run time
# if one is attached -- there is nothing to link against. The old `libnvToolsExt`
# was retired with NVTX v2 and the NVHPC base image no longer ships it, so
# naming it ended the link with
# /usr/bin/ld: cannot find -lnvToolsExt: No such file or directory
LIBS = gfortran

C_LINE_DIRECTIVES = yes
F_LINE_DIRECTIVES = yes
Expand Down Expand Up @@ -72,33 +103,43 @@ F90_WARN_FLAGS = -Wall -Wshadow -Wsurprising
VECTORISE = no

ADIOS2_DIR = /usr/local
ADIOS2_LIBS = adios2_cxx11_mpi adios2_cxx11
ADIOS2_LIBS = adios2_cxx_mpi adios2_cxx mgard protobuf
AMREX_DIR = /usr/local
# ASDF_CXX_DIR = /usr/local
BLAS_DIR = /usr
BOOST_DIR = /usr
# BOOST_LIBS must be set: ExternalLibraries/Boost defaults to
# "boost_filesystem boost_system" when it is empty (Boost/configure.sh:166),
# and the image installs libboost-filesystem-dev only, so the link fails with
# "cannot find -lboost_system". Boost.System has been header-only since Boost
# 1.69, so naming just filesystem is correct rather than a workaround --
# `desert-arm64v8.cfg` has always done this.
BOOST_LIBS = boost_filesystem
CONDUIT_DIR = /usr/local
FFTW3_DIR = /usr
GSL_DIR = /usr
HDF5_DIR = /usr/lib/x86_64-linux-gnu/hdf5/serial
HDF5_DIR = /usr/local
HDF5_ENABLE_CXX = yes
HDF5_ENABLE_FORTRAN = yes
HDF5_INC_DIRS = /usr/lib/x86_64-linux-gnu/hdf5/serial/include
HDF5_LIB_DIRS = /usr/lib/x86_64-linux-gnu/hdf5/serial/lib
HDF5_LIBS = hdf5_hl_cpp hdf5_cpp hdf5hl_fortran hdf5_fortran hdf5_hl hdf5
HDF5_INC_DIRS = /usr/local/include
HDF5_LIB_DIRS = /usr/local/lib
HDF5_LIBS = hdf5_hl_cpp hdf5_cpp hdf5_hl_fortran hdf5_fortran hdf5_hl_f90cstub hdf5_f90cstub hdf5_hl hdf5
HWLOC_DIR = /usr
# JEMALLOC_DIR = /usr/local
LAPACK_DIR = /usr
# LIBJPEG_DIR = /usr
# LORENE_DIR = /usr/local
MPI_DIR = /usr
MPI_DIR = /usr/local
MPI_INC_DIRS = /usr/local/include
MPI_LIB_DIRS = /usr/local/lib
MPI_LIBS = mpif mpi_abi
NSIMD_DIR = /usr/local
NSIMD_SIMD = AVX2
OPENBLAS_DIR = /usr
OPENPMD_API_DIR = /usr/local
# OPENSSL_DIR = /usr
# PAPI_DIR = /usr/local
PETSC_DIR = /usr/lib/petsc
PETSC_LIBS = petsc_real
PETSC_DIR = /usr/local
PETSC_ARCH_LIBS = m
PTHREADS_DIR = NO_BUILD
# REPRIMAND_DIR = /usr/local
Expand Down
94 changes: 76 additions & 18 deletions scripts/actions-rocm-real64.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,76 @@
# The "weird" options here should probably be made the default in the
# ET instead of being set here.

# The container this option list targets provides MPI, HDF5 and PETSc through
# the **MPI ABI** in /usr/local, not through distribution packages: the image
# builds mpi_abi_wrapper (the C bindings) and mpif (the Fortran ones) over the
# MPI it wraps, then builds HDF5 and PETSc against those. See the header of the
# matching `docker/carpetx-*.dockerfile` for the image side, and
# `simfactory/mdb/optionlists/desert*.cfg` for the same four blocks in the
# interactive option lists.
#
# - MPI_INC_DIRS / MPI_LIB_DIRS / MPI_LIBS are set explicitly so that
# ExternalLibraries/MPI takes its *manual* path (detect.pl:84). The automatic
# path asks the wrapper for `-compile_info`, which answers with the compile
# flags alone -- no `-L`, no `-l` -- so MPI would be configured with an empty
# MPI_LIBS and nothing would be linked.
# - HDF5 is the CMake build, which spells the Fortran libraries `hdf5_fortran` /
# `hdf5_hl_fortran` where Debian spelled the latter `hdf5hl_fortran`, and adds
# the `*_f90cstub` pair Debian did not have.
# - PETSc is `libpetsc.so` under one prefix, so PETSC_LIBS is left unset:
# detect.sh settles on `petsc m` and the external packages (hypre, MUMPS,
# SuperLU_DIST, ...) arrive through libpetsc.so's own DT_NEEDED entries.
# `PETSC_LIBS = petsc_real` was Debian's split-package spelling and is gone.
# - F90FLAGS gains -I/usr/local/include: gfortran does not search it for `.mod`
# files the way the preprocessor searches it for headers, and detect.pl strips
# the directory out of MPI_INC_DIRS/HDF5_INC_DIRS for being standard.

# Whenever this version string changes, the application is configured
# and rebuilt from scratch
VERSION = actions-rocm-real64-2023-04-11
VERSION = actions-rocm-real64-2026-09-18

CPP = cpp
CC = /opt/rocm/llvm/bin/clang
CXX = /opt/rocm/llvm/bin/clang++ -x hip
# ROCm 10 moved its install prefix to /opt/rocm/core-<version>/ and ships no
# compatibility symlink, so /opt/rocm/llvm/bin no longer exists -- ROCm's LLVM
# is now at core-10.0/lib/llvm/bin. `amdclang`/`amdclang++` are named without a
# path instead: they live in ${ROCM_PATH}/bin, which the base image puts on
# PATH, so this does not have to be rewritten the next time ROCm moves.
CC = amdclang
CXX = amdclang++ -x hip
FPP = cpp
#TODO: FC = /opt/rocm/llvm/bin/flang
#TODO: FC = amdflang
FC = gfortran
F90 = gfortran
LD = /opt/rocm/llvm/bin/clang++
LD = amdclang++

CPPFLAGS = -DSIMD_DISABLE
CFLAGS = -pipe -g -std=gnu11
CXXFLAGS = -pipe -g -std=c++17 --offload-arch=gfx90a
CXXFLAGS = -pipe -g -std=c++20 --offload-arch=gfx90a
FPPFLAGS = -traditional
F90FLAGS = -pipe -g -fcray-pointer -ffixed-line-length-none
F90FLAGS = -pipe -g -fcray-pointer -ffixed-line-length-none -I/usr/local/include

SYS_INC_DIRS = /opt/rocm/include
LIBDIRS = /usr/local/lib /opt/rocm/lib
LIBS = amdhip64 dl hwloc ltdl open-pal open-rte udev util gfortran
SYS_INC_DIRS = /opt/rocm/include /opt/rocm/core-10.0/include
LIBDIRS = /usr/local/lib /opt/rocm/lib /opt/rocm/core-10.0/lib
# Only the HIP runtime and the Fortran runtime belong here. Everything else
# this list used to name was Open MPI's, from when this configuration linked
# Open MPI directly, and under the MPI ABI nothing may: MPI reaches Cactus
# through `mpif`/`mpi_abi` (see MPI_LIBS below) and through nothing else.
#
# open-rte Open MPI's ORTE layer. Gone from Ubuntu 26.04 outright -- Open
# MPI 5 replaced ORTE with PRRTE -- so the base image (5.0.10)
# ships libopen-pal but no libopen-rte, and the link ended with
# ld.lld: error: unable to find library -lopen-rte
# open-pal Open MPI's portability layer. Still present, still wrong to name.
# ltdl what Open MPI 4 dlopened its components with.
# udev pulled in by Open MPI's hwloc.
# hwloc redundant regardless: HWLOC_DIR below puts
# ExternalLibraries/hwloc on the case, and it adds -lhwloc itself.
# dl, util merged into libc in glibc 2.34; stubs that resolve and do nothing.
#
# `gfortran` stays because LD is amdclang++, which does not add the Fortran
# runtime by itself. The result matches the cuda and oneapi option lists, which
# name their GPU runtime and gfortran and nothing more.
LIBS = amdhip64 gfortran

C_LINE_DIRECTIVES = yes
F_LINE_DIRECTIVES = yes
Expand Down Expand Up @@ -67,33 +115,43 @@ F90_WARN_FLAGS = -Wall -Wshadow -Wsurprising
VECTORISE = no

ADIOS2_DIR = /usr/local
ADIOS2_LIBS = adios2_cxx11_mpi adios2_cxx11
ADIOS2_LIBS = adios2_cxx_mpi adios2_cxx mgard protobuf
AMREX_DIR = /usr/local
# ASDF_CXX_DIR = /usr/local
BLAS_DIR = /usr
BOOST_DIR = /usr
# BOOST_LIBS must be set: ExternalLibraries/Boost defaults to
# "boost_filesystem boost_system" when it is empty (Boost/configure.sh:166),
# and the image installs libboost-filesystem-dev only, so the link fails with
# "cannot find -lboost_system". Boost.System has been header-only since Boost
# 1.69, so naming just filesystem is correct rather than a workaround --
# `desert-arm64v8.cfg` has always done this.
BOOST_LIBS = boost_filesystem
CONDUIT_DIR = /usr/local
FFTW3_DIR = /usr
GSL_DIR = /usr
HDF5_DIR = /usr/lib/x86_64-linux-gnu/hdf5/serial
HDF5_DIR = /usr/local
HDF5_ENABLE_CXX = yes
HDF5_ENABLE_FORTRAN = yes
HDF5_INC_DIRS = /usr/lib/x86_64-linux-gnu/hdf5/serial/include
HDF5_LIB_DIRS = /usr/lib/x86_64-linux-gnu/hdf5/serial/lib
HDF5_LIBS = hdf5_hl_cpp hdf5_cpp hdf5hl_fortran hdf5_fortran hdf5_hl hdf5
HDF5_INC_DIRS = /usr/local/include
HDF5_LIB_DIRS = /usr/local/lib
HDF5_LIBS = hdf5_hl_cpp hdf5_cpp hdf5_hl_fortran hdf5_fortran hdf5_hl_f90cstub hdf5_f90cstub hdf5_hl hdf5
HWLOC_DIR = /usr
# JEMALLOC_DIR = /usr/local
LAPACK_DIR = /usr
# LIBJPEG_DIR = /usr
# LORENE_DIR = /usr/local
MPI_DIR = /usr
MPI_DIR = /usr/local
MPI_INC_DIRS = /usr/local/include
MPI_LIB_DIRS = /usr/local/lib
MPI_LIBS = mpif mpi_abi
NSIMD_DIR = /usr/local
NSIMD_SIMD = AVX2
OPENBLAS_DIR = /usr
OPENPMD_API_DIR = /usr/local
# OPENSSL_DIR = /usr
# PAPI_DIR = /usr/local
PETSC_DIR = /usr/lib/petsc
PETSC_LIBS = petsc_real
PETSC_DIR = /usr/local
PETSC_ARCH_LIBS = m
PTHREADS_DIR = NO_BUILD
# REPRIMAND_DIR = /usr/local
Expand Down
4 changes: 2 additions & 2 deletions scripts/spacetimex.th
Original file line number Diff line number Diff line change
Expand Up @@ -165,8 +165,8 @@ CarpetX/TmunuBaseX
!TARGET = $ARR
!TYPE = ignore
!CHECKOUT =
#SpacetimeX/AHFinderDirect
SpacetimeX/AHFinderX
SpacetimeX/AHFinderDirect
#SpacetimeX/AHFinderX
SpacetimeX/BrillLindquist
SpacetimeX/Cowling
SpacetimeX/KerrSchildX
Expand Down
Loading