From 2841411f0577da45a572c8903279574cb2c41b6c Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Fri, 12 Jul 2024 09:22:36 -0400 Subject: [PATCH 1/7] add wdmerger scaling numbers on frontier --- .../wdmerger/scaling/frontier/README.md | 29 ++ .../scaling/frontier/frontier-128nodes.slurm | 72 +++ .../scaling/frontier/frontier-16nodes.slurm | 72 +++ .../scaling/frontier/frontier-256nodes.slurm | 72 +++ .../scaling/frontier/frontier-32nodes.slurm | 72 +++ .../scaling/frontier/frontier-512nodes.slurm | 72 +++ .../scaling/frontier/frontier-64nodes.slurm | 72 +++ .../frontier/frontier_1024base_20240709.txt | 22 + .../frontier/frontier_256base_20240709.txt | 22 + .../frontier/frontier_512base_20240709.txt | 22 + .../wdmerger/scaling/frontier/inputs_scaling | 462 ++++++++++++++++++ 11 files changed, 989 insertions(+) create mode 100644 Exec/science/wdmerger/scaling/frontier/README.md create mode 100644 Exec/science/wdmerger/scaling/frontier/frontier-128nodes.slurm create mode 100644 Exec/science/wdmerger/scaling/frontier/frontier-16nodes.slurm create mode 100644 Exec/science/wdmerger/scaling/frontier/frontier-256nodes.slurm create mode 100644 Exec/science/wdmerger/scaling/frontier/frontier-32nodes.slurm create mode 100644 Exec/science/wdmerger/scaling/frontier/frontier-512nodes.slurm create mode 100644 Exec/science/wdmerger/scaling/frontier/frontier-64nodes.slurm create mode 100644 Exec/science/wdmerger/scaling/frontier/frontier_1024base_20240709.txt create mode 100644 Exec/science/wdmerger/scaling/frontier/frontier_256base_20240709.txt create mode 100644 Exec/science/wdmerger/scaling/frontier/frontier_512base_20240709.txt create mode 100644 Exec/science/wdmerger/scaling/frontier/inputs_scaling diff --git a/Exec/science/wdmerger/scaling/frontier/README.md b/Exec/science/wdmerger/scaling/frontier/README.md new file mode 100644 index 0000000000..c3dc9d0a4c --- /dev/null +++ b/Exec/science/wdmerger/scaling/frontier/README.md @@ -0,0 +1,29 @@ +# wdmerger scaling on Frontier + +This explores a 12.5 km resolution wdmerger simulation using the +Pakmor initial conditions. + +We consider 3 different gridding strategies: + +* 256^3 base + 3 AMR levels, each a jump of 4 + +* 512^3 base + 3 AMR levels with jumps of 4, 4, 2 + +* 1024^3 base + 2 AMR levels with jumps of 4, 4 + +The inputs file here is setup for the 256^3 base. + +Some general observations: + +* We seem to do well with `max_grid_size` set to 64 or 128, but not 96 + +* At large node counts, it really doesn't matter which of the gridding + strategies we use, since there is plenty of work to go around. The + main consideration would be that the larger coarse grid would make + the plotfiles bigger. + +* We seem to benefit from using `castro.hydro_memory_footprint_ratio=3` + +* There really is no burning yet, since this is early in the + evolution, so we would expect scaling to improve as the stars + interact (more grids) and burning begins (more local work). diff --git a/Exec/science/wdmerger/scaling/frontier/frontier-128nodes.slurm b/Exec/science/wdmerger/scaling/frontier/frontier-128nodes.slurm new file mode 100644 index 0000000000..41130fcf01 --- /dev/null +++ b/Exec/science/wdmerger/scaling/frontier/frontier-128nodes.slurm @@ -0,0 +1,72 @@ +#!/bin/bash +#SBATCH -A AST106 +#SBATCH -J wdmerger_128nodes +#SBATCH -o %x-%j.out +#SBATCH -t 00:30:00 +#SBATCH -p batch +# here N is the number of compute nodes +#SBATCH -N 128 +#SBATCH --ntasks-per-node=8 +#SBATCH --cpus-per-task=7 +#SBATCH --gpus-per-task=1 +#SBATCH --gpu-bind=closest + +EXEC=./Castro3d.hip.x86-trento.MPI.HIP.ex +INPUTS=inputs_scaling + +module load PrgEnv-gnu +module load cray-mpich/8.1.27 +module load craype-accel-amd-gfx90a +module load amd-mixed/6.0.0 +module unload darshan-runtime + +function find_chk_file { + # find_chk_file takes a single argument -- the wildcard pattern + # for checkpoint files to look through + chk=$1 + + # find the latest 2 restart files. This way if the latest didn't + # complete we fall back to the previous one. + temp_files=$(find . -maxdepth 1 -name "${chk}" -print | sort | tail -2) + restartFile="" + for f in ${temp_files} + do + # the Header is the last thing written -- check if it's there, otherwise, + # fall back to the second-to-last check file written + if [ ! -f ${f}/Header ]; then + restartFile="" + else + restartFile="${f}" + fi + done + +} + +# look for 7-digit chk files +find_chk_file "*chk???????" + +if [ "${restartFile}" = "" ]; then + # look for 6-digit chk files + find_chk_file "*chk??????" +fi + +if [ "${restartFile}" = "" ]; then + # look for 5-digit chk files + find_chk_file "*chk?????" +fi + +# restartString will be empty if no chk files are found -- i.e. new run +if [ "${restartFile}" = "" ]; then + restartString="" +else + restartString="amr.restart=${restartFile}" +fi + +export OMP_NUM_THREADS=1 +export NMPI_PER_NODE=8 +export TOTAL_NMPI=$(( ${SLURM_JOB_NUM_NODES} * ${NMPI_PER_NODE} )) + +srun -n${TOTAL_NMPI} -N${SLURM_JOB_NUM_NODES} --ntasks-per-node=8 --gpus-per-task=1 ./$EXEC $INPUTS ${restartString} + + + diff --git a/Exec/science/wdmerger/scaling/frontier/frontier-16nodes.slurm b/Exec/science/wdmerger/scaling/frontier/frontier-16nodes.slurm new file mode 100644 index 0000000000..09a4e247af --- /dev/null +++ b/Exec/science/wdmerger/scaling/frontier/frontier-16nodes.slurm @@ -0,0 +1,72 @@ +#!/bin/bash +#SBATCH -A AST106 +#SBATCH -J wdmerger_16nodes +#SBATCH -o %x-%j.out +#SBATCH -t 01:20:00 +#SBATCH -p batch +# here N is the number of compute nodes +#SBATCH -N 16 +#SBATCH --ntasks-per-node=8 +#SBATCH --cpus-per-task=7 +#SBATCH --gpus-per-task=1 +#SBATCH --gpu-bind=closest + +EXEC=./Castro3d.hip.x86-trento.MPI.HIP.ex +INPUTS=inputs_scaling + +module load PrgEnv-gnu +module load cray-mpich/8.1.27 +module load craype-accel-amd-gfx90a +module load amd-mixed/6.0.0 +module unload darshan-runtime + +function find_chk_file { + # find_chk_file takes a single argument -- the wildcard pattern + # for checkpoint files to look through + chk=$1 + + # find the latest 2 restart files. This way if the latest didn't + # complete we fall back to the previous one. + temp_files=$(find . -maxdepth 1 -name "${chk}" -print | sort | tail -2) + restartFile="" + for f in ${temp_files} + do + # the Header is the last thing written -- check if it's there, otherwise, + # fall back to the second-to-last check file written + if [ ! -f ${f}/Header ]; then + restartFile="" + else + restartFile="${f}" + fi + done + +} + +# look for 7-digit chk files +find_chk_file "*chk???????" + +if [ "${restartFile}" = "" ]; then + # look for 6-digit chk files + find_chk_file "*chk??????" +fi + +if [ "${restartFile}" = "" ]; then + # look for 5-digit chk files + find_chk_file "*chk?????" +fi + +# restartString will be empty if no chk files are found -- i.e. new run +if [ "${restartFile}" = "" ]; then + restartString="" +else + restartString="amr.restart=${restartFile}" +fi + +export OMP_NUM_THREADS=1 +export NMPI_PER_NODE=8 +export TOTAL_NMPI=$(( ${SLURM_JOB_NUM_NODES} * ${NMPI_PER_NODE} )) + +srun -n${TOTAL_NMPI} -N${SLURM_JOB_NUM_NODES} --ntasks-per-node=8 --gpus-per-task=1 ./$EXEC $INPUTS ${restartString} + + + diff --git a/Exec/science/wdmerger/scaling/frontier/frontier-256nodes.slurm b/Exec/science/wdmerger/scaling/frontier/frontier-256nodes.slurm new file mode 100644 index 0000000000..1a56884a71 --- /dev/null +++ b/Exec/science/wdmerger/scaling/frontier/frontier-256nodes.slurm @@ -0,0 +1,72 @@ +#!/bin/bash +#SBATCH -A AST106 +#SBATCH -J wdmerger_256nodes +#SBATCH -o %x-%j.out +#SBATCH -t 00:30:00 +#SBATCH -p batch +# here N is the number of compute nodes +#SBATCH -N 256 +#SBATCH --ntasks-per-node=8 +#SBATCH --cpus-per-task=7 +#SBATCH --gpus-per-task=1 +#SBATCH --gpu-bind=closest + +EXEC=./Castro3d.hip.x86-trento.MPI.HIP.ex +INPUTS=inputs_scaling + +module load PrgEnv-gnu +module load cray-mpich/8.1.27 +module load craype-accel-amd-gfx90a +module load amd-mixed/6.0.0 +module unload darshan-runtime + +function find_chk_file { + # find_chk_file takes a single argument -- the wildcard pattern + # for checkpoint files to look through + chk=$1 + + # find the latest 2 restart files. This way if the latest didn't + # complete we fall back to the previous one. + temp_files=$(find . -maxdepth 1 -name "${chk}" -print | sort | tail -2) + restartFile="" + for f in ${temp_files} + do + # the Header is the last thing written -- check if it's there, otherwise, + # fall back to the second-to-last check file written + if [ ! -f ${f}/Header ]; then + restartFile="" + else + restartFile="${f}" + fi + done + +} + +# look for 7-digit chk files +find_chk_file "*chk???????" + +if [ "${restartFile}" = "" ]; then + # look for 6-digit chk files + find_chk_file "*chk??????" +fi + +if [ "${restartFile}" = "" ]; then + # look for 5-digit chk files + find_chk_file "*chk?????" +fi + +# restartString will be empty if no chk files are found -- i.e. new run +if [ "${restartFile}" = "" ]; then + restartString="" +else + restartString="amr.restart=${restartFile}" +fi + +export OMP_NUM_THREADS=1 +export NMPI_PER_NODE=8 +export TOTAL_NMPI=$(( ${SLURM_JOB_NUM_NODES} * ${NMPI_PER_NODE} )) + +srun -n${TOTAL_NMPI} -N${SLURM_JOB_NUM_NODES} --ntasks-per-node=8 --gpus-per-task=1 ./$EXEC $INPUTS ${restartString} + + + diff --git a/Exec/science/wdmerger/scaling/frontier/frontier-32nodes.slurm b/Exec/science/wdmerger/scaling/frontier/frontier-32nodes.slurm new file mode 100644 index 0000000000..82488ef037 --- /dev/null +++ b/Exec/science/wdmerger/scaling/frontier/frontier-32nodes.slurm @@ -0,0 +1,72 @@ +#!/bin/bash +#SBATCH -A AST106 +#SBATCH -J wdmerger_32nodes +#SBATCH -o %x-%j.out +#SBATCH -t 00:30:00 +#SBATCH -p batch +# here N is the number of compute nodes +#SBATCH -N 32 +#SBATCH --ntasks-per-node=8 +#SBATCH --cpus-per-task=7 +#SBATCH --gpus-per-task=1 +#SBATCH --gpu-bind=closest + +EXEC=./Castro3d.hip.x86-trento.MPI.HIP.ex +INPUTS=inputs_scaling + +module load PrgEnv-gnu +module load cray-mpich/8.1.27 +module load craype-accel-amd-gfx90a +module load amd-mixed/6.0.0 +module unload darshan-runtime + +function find_chk_file { + # find_chk_file takes a single argument -- the wildcard pattern + # for checkpoint files to look through + chk=$1 + + # find the latest 2 restart files. This way if the latest didn't + # complete we fall back to the previous one. + temp_files=$(find . -maxdepth 1 -name "${chk}" -print | sort | tail -2) + restartFile="" + for f in ${temp_files} + do + # the Header is the last thing written -- check if it's there, otherwise, + # fall back to the second-to-last check file written + if [ ! -f ${f}/Header ]; then + restartFile="" + else + restartFile="${f}" + fi + done + +} + +# look for 7-digit chk files +find_chk_file "*chk???????" + +if [ "${restartFile}" = "" ]; then + # look for 6-digit chk files + find_chk_file "*chk??????" +fi + +if [ "${restartFile}" = "" ]; then + # look for 5-digit chk files + find_chk_file "*chk?????" +fi + +# restartString will be empty if no chk files are found -- i.e. new run +if [ "${restartFile}" = "" ]; then + restartString="" +else + restartString="amr.restart=${restartFile}" +fi + +export OMP_NUM_THREADS=1 +export NMPI_PER_NODE=8 +export TOTAL_NMPI=$(( ${SLURM_JOB_NUM_NODES} * ${NMPI_PER_NODE} )) + +srun -n${TOTAL_NMPI} -N${SLURM_JOB_NUM_NODES} --ntasks-per-node=8 --gpus-per-task=1 ./$EXEC $INPUTS ${restartString} + + + diff --git a/Exec/science/wdmerger/scaling/frontier/frontier-512nodes.slurm b/Exec/science/wdmerger/scaling/frontier/frontier-512nodes.slurm new file mode 100644 index 0000000000..025d60b7b5 --- /dev/null +++ b/Exec/science/wdmerger/scaling/frontier/frontier-512nodes.slurm @@ -0,0 +1,72 @@ +#!/bin/bash +#SBATCH -A AST106 +#SBATCH -J wdmerger_512nodes +#SBATCH -o %x-%j.out +#SBATCH -t 00:30:00 +#SBATCH -p batch +# here N is the number of compute nodes +#SBATCH -N 512 +#SBATCH --ntasks-per-node=8 +#SBATCH --cpus-per-task=7 +#SBATCH --gpus-per-task=1 +#SBATCH --gpu-bind=closest + +EXEC=./Castro3d.hip.x86-trento.MPI.HIP.ex +INPUTS=inputs_scaling + +module load PrgEnv-gnu +module load cray-mpich/8.1.27 +module load craype-accel-amd-gfx90a +module load amd-mixed/6.0.0 +module unload darshan-runtime + +function find_chk_file { + # find_chk_file takes a single argument -- the wildcard pattern + # for checkpoint files to look through + chk=$1 + + # find the latest 2 restart files. This way if the latest didn't + # complete we fall back to the previous one. + temp_files=$(find . -maxdepth 1 -name "${chk}" -print | sort | tail -2) + restartFile="" + for f in ${temp_files} + do + # the Header is the last thing written -- check if it's there, otherwise, + # fall back to the second-to-last check file written + if [ ! -f ${f}/Header ]; then + restartFile="" + else + restartFile="${f}" + fi + done + +} + +# look for 7-digit chk files +find_chk_file "*chk???????" + +if [ "${restartFile}" = "" ]; then + # look for 6-digit chk files + find_chk_file "*chk??????" +fi + +if [ "${restartFile}" = "" ]; then + # look for 5-digit chk files + find_chk_file "*chk?????" +fi + +# restartString will be empty if no chk files are found -- i.e. new run +if [ "${restartFile}" = "" ]; then + restartString="" +else + restartString="amr.restart=${restartFile}" +fi + +export OMP_NUM_THREADS=1 +export NMPI_PER_NODE=8 +export TOTAL_NMPI=$(( ${SLURM_JOB_NUM_NODES} * ${NMPI_PER_NODE} )) + +srun -n${TOTAL_NMPI} -N${SLURM_JOB_NUM_NODES} --ntasks-per-node=8 --gpus-per-task=1 ./$EXEC $INPUTS ${restartString} + + + diff --git a/Exec/science/wdmerger/scaling/frontier/frontier-64nodes.slurm b/Exec/science/wdmerger/scaling/frontier/frontier-64nodes.slurm new file mode 100644 index 0000000000..85d9ce705b --- /dev/null +++ b/Exec/science/wdmerger/scaling/frontier/frontier-64nodes.slurm @@ -0,0 +1,72 @@ +#!/bin/bash +#SBATCH -A AST106 +#SBATCH -J wdmerger_64nodes +#SBATCH -o %x-%j.out +#SBATCH -t 00:30:00 +#SBATCH -p batch +# here N is the number of compute nodes +#SBATCH -N 64 +#SBATCH --ntasks-per-node=8 +#SBATCH --cpus-per-task=7 +#SBATCH --gpus-per-task=1 +#SBATCH --gpu-bind=closest + +EXEC=./Castro3d.hip.x86-trento.MPI.HIP.ex +INPUTS=inputs_scaling + +module load PrgEnv-gnu +module load cray-mpich/8.1.27 +module load craype-accel-amd-gfx90a +module load amd-mixed/6.0.0 +module unload darshan-runtime + +function find_chk_file { + # find_chk_file takes a single argument -- the wildcard pattern + # for checkpoint files to look through + chk=$1 + + # find the latest 2 restart files. This way if the latest didn't + # complete we fall back to the previous one. + temp_files=$(find . -maxdepth 1 -name "${chk}" -print | sort | tail -2) + restartFile="" + for f in ${temp_files} + do + # the Header is the last thing written -- check if it's there, otherwise, + # fall back to the second-to-last check file written + if [ ! -f ${f}/Header ]; then + restartFile="" + else + restartFile="${f}" + fi + done + +} + +# look for 7-digit chk files +find_chk_file "*chk???????" + +if [ "${restartFile}" = "" ]; then + # look for 6-digit chk files + find_chk_file "*chk??????" +fi + +if [ "${restartFile}" = "" ]; then + # look for 5-digit chk files + find_chk_file "*chk?????" +fi + +# restartString will be empty if no chk files are found -- i.e. new run +if [ "${restartFile}" = "" ]; then + restartString="" +else + restartString="amr.restart=${restartFile}" +fi + +export OMP_NUM_THREADS=1 +export NMPI_PER_NODE=8 +export TOTAL_NMPI=$(( ${SLURM_JOB_NUM_NODES} * ${NMPI_PER_NODE} )) + +srun -n${TOTAL_NMPI} -N${SLURM_JOB_NUM_NODES} --ntasks-per-node=8 --gpus-per-task=1 ./$EXEC $INPUTS ${restartString} + + + diff --git a/Exec/science/wdmerger/scaling/frontier/frontier_1024base_20240709.txt b/Exec/science/wdmerger/scaling/frontier/frontier_1024base_20240709.txt new file mode 100644 index 0000000000..7ef90464e6 --- /dev/null +++ b/Exec/science/wdmerger/scaling/frontier/frontier_1024base_20240709.txt @@ -0,0 +1,22 @@ +# Run with ROCm 6.0 and: +# +# EOS: /ccs/home/zingale/Microphysics/EOS/helmholtz +# NETWORK: /ccs/home/zingale/Microphysics/networks/subch_simple +# INTEGRATOR: VODE +# SCREENING: screen5 +# +# Castro git describe: 24.06-16-g830d937a6 +# AMReX git describe: 24.06-21-g259db7cfb +# Microphysics git describe: 24.06-30-g134200e7 +# +# this uses a coarse grid of 1024^3 and: +# amr.max_level = 2 +# amr.ref_ratio = 4 4 +# +# nodes mgs=64 mgs=96 mgs=128 mgs=64/footprint=3 + 16 2147.053162 1675.331765 1740.636312 1778.574737 + 32 956.1554475 984.2968504 931.3916399 919.122039 + 64 564.2893014 645.3803626 570.8522676 512.6902792 + 128 371.3067169 491.739618 407.0323314 317.8378405 + 256 283.3819859 381.9738402 374.5512442 216.87873 + 512 240.9534923 376.2960866 205.5138579 174.7229814 diff --git a/Exec/science/wdmerger/scaling/frontier/frontier_256base_20240709.txt b/Exec/science/wdmerger/scaling/frontier/frontier_256base_20240709.txt new file mode 100644 index 0000000000..89210e7539 --- /dev/null +++ b/Exec/science/wdmerger/scaling/frontier/frontier_256base_20240709.txt @@ -0,0 +1,22 @@ +# Run with ROCm 6.0 and: +# +# EOS: /ccs/home/zingale/Microphysics/EOS/helmholtz +# NETWORK: /ccs/home/zingale/Microphysics/networks/subch_simple +# INTEGRATOR: VODE +# SCREENING: screen5 +# +# Castro git describe: 24.06-16-g830d937a6 +# AMReX git describe: 24.06-21-g259db7cfb +# Microphysics git describe: 24.06-30-g134200e7 +# +# this uses a coarse grid of 256^3 and: +# amr.max_level = 3 +# amr.ref_ratio = 4 4 4 +# +# nodes mgs=64 mgs=96 mgs=128 mgs=64/footprint=3 + 16 3113.728109 1427.961211 1172.233403 1587.513124 + 32 669.0471158 848.7207989 698.5210431 626.5812503 + 64 404.6151035 583.2284754 433.2107803 377.6227032 + 128 272.9040553 491.2785887 338.5415379 246.6334284 + 256 210.2009386 442.7161572 327.9919688 182.2869616 + 512 198.9984347 442.3824775 190.1068867 152.5701047 diff --git a/Exec/science/wdmerger/scaling/frontier/frontier_512base_20240709.txt b/Exec/science/wdmerger/scaling/frontier/frontier_512base_20240709.txt new file mode 100644 index 0000000000..86c0e30d58 --- /dev/null +++ b/Exec/science/wdmerger/scaling/frontier/frontier_512base_20240709.txt @@ -0,0 +1,22 @@ +# Run with ROCm 6.0 and: +# +# EOS: /ccs/home/zingale/Microphysics/EOS/helmholtz +# NETWORK: /ccs/home/zingale/Microphysics/networks/subch_simple +# INTEGRATOR: VODE +# SCREENING: screen5 +# +# Castro git describe: 24.06-16-g830d937a6 +# AMReX git describe: 24.06-21-g259db7cfb +# Microphysics git describe: 24.06-30-g134200e7 +# +# this uses a coarse grid of 512^3 and: +# amr.max_level = 3 +# amr.ref_ratio = 4 4 2 +# +# nodes mgs=64 mgs=96 mgs=128 mgs=64/footprint=3 + 16 1765.994371 1691.704469 1452.086917 1487.079767 + 32 1201.902236 1005.081075 964.1964439 855.2325778 + 64 842.8128873 696.4877074 568.8999156 520.618414 + 128 466.4414552 593.5218413 387.8753919 312.2481499 + 256 235.6338158 523.2295471 395.6226178 200.3649345 + 512 211.1232539 491.9730412 224.1238711 160.1880035 diff --git a/Exec/science/wdmerger/scaling/frontier/inputs_scaling b/Exec/science/wdmerger/scaling/frontier/inputs_scaling new file mode 100644 index 0000000000..956eb6cf54 --- /dev/null +++ b/Exec/science/wdmerger/scaling/frontier/inputs_scaling @@ -0,0 +1,462 @@ +## Latest inputs file being used to reproduce initial conditions from Pakmor et al. 2022 +## with 100 km resolution using for scaling + +############################## CASTRO INPUTS ############################################### + +############################################################################################ +# Geometry +############################################################################################ + +# Non-periodic boundary conditions +geometry.is_periodic = 0 0 0 + +#if AMREX_SPACEDIM == 3 + + # Cartesian coordinate system + geometry.coord_sys = 0 + + # Lower boundary limits in physical space + geometry.prob_lo = -1.024e10 -1.024e10 -1.024e10 + +#elif AMREX_SPACEDIM == 2 + + # Cartesian coordinate system + geometry.coord_sys = 1 + + # Lower boundary limits in physical space + geometry.prob_lo = 0.0e0 -5.12e9 + +#endif + +# Upper boundary limits in physical space +geometry.prob_hi = 1.024e10 1.024e10 1.024e10 + +############################################################################################ +# Boundary conditions +# 0 = Interior 3 = Symmetry +# 1 = Inflow 4 = SlipWall +# 2 = Outflow 5 = NoSlipWall +############################################################################################ + +#if AMREX_SPACEDIM == 3 + + # Boundary conditions on lo x, y, and z edges + castro.lo_bc = 2 2 2 + +#elif AMREX_SPACEDIM == 2 + + # Boundary conditions on lo x, y, and z edges + castro.lo_bc = 3 2 + +#endif + +# Boundary conditions on hi x, y, and z edges +castro.hi_bc = 2 2 2 + +############################################################################################ +# Timestepping +############################################################################################ + +# Maximum number of level 0 steps +max_step = 10000000 + +# Simulation end time +stop_time = 0.2 + +# CFL number for hyperbolic system +castro.cfl = 0.5 + +# Fixed level 0 timestep; unused if < 0 +castro.fixed_dt = -1.0 + +# Scale back initial timestep by this factor +castro.init_shrink = 1.0 + +# Factor by which dt is allowed to change each timestep +castro.change_max = 1.3 + +# If we regrid on Level 0, compute a new timestep afterward +amr.compute_new_dt_on_regrid = 1 + +# Use a retry if an advance violated our stability criteria +castro.use_retry = 1 + +# Skip retries for small density if the starting density was less than this threshold +castro.retry_small_density_cutoff = 1.0e0 + +# Don't abort for invalid X if the zone density is less than this threshold +castro.abundance_failure_rho_cutoff = 1.0e0 + +# Maximum number of subcycles +# Default is 10, 16 is recommended value +castro.max_subcycles = 16 + + +############################################################################################ +# Resolution, gridding and AMR +############################################################################################ + +#if AMREX_SPACEDIM == 3 + + # Number of cells on the coarse grid + amr.n_cell = 256 256 256 + +#elif AMREX_SPACEDIM == 2 + + # Number of cells on the coarse grid + amr.n_cell = 128 256 + +#endif + +# Maximum level number allowed +amr.max_level = 3 + +# Refinement ratio +amr.ref_ratio = 4 4 4 4 + +# How many coarse timesteps between regridding +amr.regrid_int = 2 + +# Allow special regrids based on stability criteria +castro.use_post_step_regrid = 0 + +# Number of buffer cells in error estimation +amr.n_error_buf = 2 2 2 2 2 2 2 2 2 2 + +# Maximum grid size at each level +amr.max_grid_size = 64 + +# Grid sizes must be a multiple of blocking factor +amr.blocking_factor = 32 + +# What constitutes an efficient grid +amr.grid_eff = 0.9 + +# Order of reconstruction for interpolation +castro.state_interp_order = 0 + +# Limiting on state data interpolation (preserve linear combinations) +castro.lin_limit_state_interp = 1 + +# Add refinement indicators +amr.refinement_indicators = density density2 temperature + +# Density refinement criterion +amr.refine.density.value_greater = 1.0e0 +amr.refine.density.field_name = density +amr.refine.density.max_level = 1 + +# Density2 refinement criterion +amr.refine.density2.value_greater = 1.0e4 +amr.refine.density2.field_name = density +amr.refine.density2.max_level = 20 + +# Temperature refinement criterion +amr.refine.temperature.value_greater = 3.0e8 +amr.refine.temperature.field_name = Temp +amr.refine.temperature.max_level = 3 + +# Avoid tagging near the domain boundary +castro.max_tagging_radius = 0.75e0 + +# Whether or not to use AMR subcycling +amr.subcycling_mode = None + +# GPU option +castro.hydro_memory_footprint_ratio = 3 + +############################################################################################ +# Physics to include +############################################################################################ + +# Whether or not to do hydrodynamics +castro.do_hydro = 1 + +# Whether or not to do gravity +castro.do_grav = 1 + +# Whether or not to do reactions +castro.do_react = 1 + +# Whether or not to apply the sponge +castro.do_sponge = 1 + +# Whether or not to apply external source terms +castro.add_ext_src = 1 +castro.ext_src_implicit = 1 + +# Whether or not to include the rotation source term +castro.do_rotation = 1 + +############################################################################################ +# PPM/Hydro options +############################################################################################ + +# Piecewise parabolic with the original limiters (0 is piecewise linear; 2 is new limiters) +castro.ppm_type = 1 + +# Use the EOS in calculation of the edge states going into the Riemann solver +castro.ppm_temp_fix = 0 + +# Which Riemann solver to use. +# 0 = Colella, Glaz, and Ferguson (cheaper, less accurate) +# 1 = Colella and Glaz 1985 (more expensive, more accurate) +# 2 = HLL +castro.riemann_solver = 0 + +# For the CG Riemann solver, we need to tell the solver not to quit when +# the iterations don't converge, but instead to do additional bisection iteration. +castro.cg_blend = 2 + +# Use a lagged predictor estimate of the source terms in the hydro +castro.source_term_predictor = 1 + +# Whether to use the hybrid advection technique that conserves angular momentum +castro.hybrid_hydro = 0 + +# Reset (rho*e) if it goes negative in the transverse terms +castro.transverse_reset_rhoe = 1 + +# Reset rho if it goes negative in the transverse terms +castro.transverse_reset_density = 1 + +# Explicitly limit fluxes to avoid hitting a negative density +castro.limit_fluxes_on_small_dens = 1 + +# Set global simulation speed limit +castro.speed_limit = 1.498962290e9 # 0.05c + +############################################################################################ +# Thermodynamics +############################################################################################ + +# Minimum allowable temperature (K) +castro.small_temp = 1.e5 + +# Minimum allowable density (g / cm**3) +castro.small_dens = 1.e-5 + +# Threshold for when to use the internal energy in calculating pressure +castro.dual_energy_eta1 = 1.0e-3 + +# Threshold for when to use (E - K) in updating internal energy +castro.dual_energy_eta2 = 1.0e-4 + +# Use Coulomb corrections in Helmholtz EOS +eos.use_eos_coulomb = 1 + +# Keep EOS inputs constant after EOS evaluation +eos.eos_input_is_constant = 1 + +# Ambient temperature (K) +castro.ambient_temp = 1.0e7 + +# Ambient density (g / cm**3) +castro.ambient_density = 1.0e-4 + +# Clamp temperature in ambient zones to its initial value +castro.clamp_ambient_temp = 1 + +############################################################################################ +# Reactions/Network +############################################################################################ + +# Limit timestep based on nuclear burning considerations (changes in internal energy) +castro.dtnuc_e = 1.e200 + +#Limit timestep based on nuclear burning considerations (changes in species) +castro.dtnuc_X = 1.e200 + +# Minimum temperature for allowing nuclear burning +castro.react_T_min = 1.0e8 + +# Maximum temperature for allowing nuclear burning +castro.react_T_max = 1.0e12 + +# Minimum density for allowing nuclear burning +castro.react_rho_min = 1.0e6 + +# Maximum density for allowing nuclear burning +castro.react_rho_max = 1.0e12 + +# Smallest allowable mass fraction +network.small_x = 1.0e-12 + +# Evaluate the RHS during the burn +integrator.call_eos_in_rhs = 1 + +# Integration tolerances +integrator.rtol_spec = 1.0e-6 +integrator.atol_spec = 1.0e-6 + +integrator.rtol_enuc = 1.0e-6 +integrator.atol_enuc = 1.0e-6 + +# Do not abort or retry on a failed burn (Castro will handle this) +integrator.abort_on_failure = 0 + +# Renormalize abundances during the burn +integrator.renormalize_abundances = 1 + +# Maximum temperature allowed in the burn +integrator.MAX_TEMP = 1.0e10 + +# Use tabular rate evaluation when available +network.use_tables = 1 + +############################################################################################ +# Gravity +############################################################################################ + +# Full self-gravity with the Poisson equation +gravity.gravity_type = PoissonGrav + +# Multipole expansion includes terms up to r**(-max_multipole_order) +gravity.max_multipole_order = 6 + +# Tolerance for multigrid solver for phi solves +gravity.abs_tol = 1.e-10 + +# Use sync solve for gravity after refluxing +gravity.no_sync = 0 + +# Disable the use of the lagged composite correction for the potential +gravity.do_composite_phi_correction = 0 + +############################################################################################ +# Rotation +############################################################################################ + +# Rotational period of the rotating reference frame +castro.rotational_period = 100.0 + +############################################################################################ +# Sponge +############################################################################################ + +castro.sponge_lower_density = 1.0e0 +castro.sponge_upper_density = 1.0e0 +castro.sponge_timescale = 0.01e0 + +############################################################################################ +# Load balancing +############################################################################################ + +# Choice of load balancing strategy to use +DistributionMapping.strategy = KNAPSACK + +# Efficiency demanded from the knapsack algorithm +DistributionMapping.efficiency = 0.9 + +############################################################################################ +# Diagnostics and I/O +############################################################################################ + +# Timesteps between computing and printing volume averaged diagnostic quantities +castro.sum_interval = 0 + +# Simulation time between computing and printing volume averaged diagnostic quantities +castro.sum_per = -1.0 + +# Gravitational wave strain observation distance +castro.gw_dist = 10.0 + +# Name the job +castro.job_name = wdmerger + +# Whether or not to output plotfiles +amr.plot_files_output = 0 + +# Whether or not to output checkpoints +amr.checkpoint_files_output = 0 + +# Root name of checkpoint files +amr.check_file = chk + +# We want to store the 'old' state data in checkpoints +castro.dump_old = 1 + +# Simulation time between checkpoints +amr.check_per = 0.1 + +# Number of timesteps between checkpoints +amr.check_int = 20 + +# Root name of plot files +amr.plot_file = plt + +# Simulation time between plotfiles +amr.plot_per = -1 + +# Number of timesteps between plotfiles +#amr.plot_int = -1 + +# Root name of small plot files +amr.small_plot_file = smallplt + +# Simulation time between small plotfiles +amr.small_plot_per = -1 + +# Number of timesteps between small plotfiles +amr.small_plot_int = -1 + +# Do not write plotfiles when we dump checkpoints +amr.write_plotfile_with_checkpoint = 0 + +# Write final checkpoint/plotfile +castro.output_at_completion = 1 + +# Do not write a plotfile or checkpoint on restart +amr.plotfile_on_restart = 1 +amr.checkpoint_on_restart = 1 + +# Control verbosity in Amr.cpp +amr.v = 1 + +# Control verbosity in Castro.cpp +castro.v = 1 + +# Control verbosity in Gravity.cpp +gravity.v = 1 + +# State variables to add to plot files +amr.plot_vars = NONE + +# Derived variables to add to plot files +amr.derive_plot_vars = NONE + +# State variables to add to small plot files +amr.small_plot_vars = NONE + +# Derived variables to add to small plot files +amr.derive_small_plot_vars = NONE + +# Name of the diagnostic sum output files +#amr.data_log = NONE + +############################################################################################ +# Problem parameters +############################################################################################ + +problem.mass_P = 1.05 +problem.mass_S = 0.70 + +problem.co_wd_c_frac = 0.5 +problem.co_wd_o_frac = 0.5 +problem.co_wd_he_shell_mass = 0.03 + +problem.max_co_wd_mass = 1.50 + +problem.nsub = 4 + +problem.problem = 1 + +problem.roche_radius_factor = 1.0e0 + +problem.interp_temp = 1 + +problem.relaxation_damping_factor = -1.0e-1 +problem.relaxation_density_cutoff = 1.0e3 +problem.relaxation_cutoff_time = -1.0e0 + +problem.stellar_temp = 5.0e5 From 9b6c1543cf79a2f9bd85049da4f8c0943de71970 Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Fri, 12 Jul 2024 09:24:04 -0400 Subject: [PATCH 2/7] more notes --- Exec/science/wdmerger/scaling/frontier/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Exec/science/wdmerger/scaling/frontier/README.md b/Exec/science/wdmerger/scaling/frontier/README.md index c3dc9d0a4c..554350dbf6 100644 --- a/Exec/science/wdmerger/scaling/frontier/README.md +++ b/Exec/science/wdmerger/scaling/frontier/README.md @@ -13,6 +13,9 @@ We consider 3 different gridding strategies: The inputs file here is setup for the 256^3 base. +We report the total evolution time excluding initialization that is +output by Castro at the end of the run. + Some general observations: * We seem to do well with `max_grid_size` set to 64 or 128, but not 96 From 32f679eadbfb425909a4fc5ea4d08687d77850b0 Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Fri, 12 Jul 2024 09:28:06 -0400 Subject: [PATCH 3/7] fix inputs --- Exec/science/wdmerger/scaling/frontier/inputs_scaling | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Exec/science/wdmerger/scaling/frontier/inputs_scaling b/Exec/science/wdmerger/scaling/frontier/inputs_scaling index 956eb6cf54..90efeaaf07 100644 --- a/Exec/science/wdmerger/scaling/frontier/inputs_scaling +++ b/Exec/science/wdmerger/scaling/frontier/inputs_scaling @@ -206,7 +206,7 @@ castro.riemann_solver = 0 # For the CG Riemann solver, we need to tell the solver not to quit when # the iterations don't converge, but instead to do additional bisection iteration. -castro.cg_blend = 2 +castro.riemann_cg_blend = 2 # Use a lagged predictor estimate of the source terms in the hydro castro.source_term_predictor = 1 From 5f8a66d68a4b5e9244791c2d4a4ad1789e90c840 Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Fri, 12 Jul 2024 09:40:50 -0400 Subject: [PATCH 4/7] add plot --- .../scaling/frontier/frontier_scaling.py | 54 ++++++++++++++++++ .../scaling/frontier/frontier_wdmerger.png | Bin 0 -> 35980 bytes 2 files changed, 54 insertions(+) create mode 100644 Exec/science/wdmerger/scaling/frontier/frontier_scaling.py create mode 100644 Exec/science/wdmerger/scaling/frontier/frontier_wdmerger.png diff --git a/Exec/science/wdmerger/scaling/frontier/frontier_scaling.py b/Exec/science/wdmerger/scaling/frontier/frontier_scaling.py new file mode 100644 index 0000000000..b566f43091 --- /dev/null +++ b/Exec/science/wdmerger/scaling/frontier/frontier_scaling.py @@ -0,0 +1,54 @@ +import matplotlib.pyplot as plt +import matplotlib.ticker as mticker +import numpy as np + +plt.rcParams.update({'xtick.labelsize': 10, + 'ytick.labelsize': 10, + 'font.size': 12}) + +plt.rc("axes", linewidth=1.5) +plt.rc("lines", markeredgewidth=1.5) + +frontier_256base_data = np.loadtxt("frontier_256base_20240709.txt") +frontier_256base_nodes = frontier_256base_data[:, 0] +frontier_256base_times = frontier_256base_data[:, 4] + +frontier_512base_data = np.loadtxt("frontier_512base_20240709.txt") +frontier_512base_nodes = frontier_512base_data[:, 0] +frontier_512base_times = frontier_512base_data[:, 4] + +frontier_1024base_data = np.loadtxt("frontier_1024base_20240709.txt") +frontier_1024base_nodes = frontier_1024base_data[:, 0] +frontier_1024base_times = frontier_1024base_data[:, 4] + + +def trend_line(c, t): + cnew = np.array(sorted(list(set(c)))) + cnew = np.linspace(cnew.min(), cnew.max(), 256, endpoint=True) + trend = t[0]*c[0]/cnew[:] + return cnew, trend + + +# first by nodes + +fig, ax = plt.subplots(1) + +ax.plot(frontier_256base_nodes, frontier_256base_times, ls="None", marker="x", label="$256^3$ coarse grid") +ax.plot(frontier_512base_nodes, frontier_512base_times, ls="None", marker="x", label="$512^3$ coarse grid") +ax.plot(frontier_1024base_nodes, frontier_1024base_times, ls="None", marker="x", label="$1024^3$ coarse grid") + +c, t = trend_line(frontier_256base_nodes, frontier_256base_times) +ax.plot(c, t, alpha=0.5, linestyle=":") + +ax.set_ylabel("wallclock time / step") +ax.set_xlabel("number of nodes") + +ax.set_xscale("log") +ax.set_yscale("log") + +ax.set_title("3D wedmerger scaling (Frontier)") + +ax.legend() + +fig.tight_layout() +fig.savefig("frontier_wdmerger.png") diff --git a/Exec/science/wdmerger/scaling/frontier/frontier_wdmerger.png b/Exec/science/wdmerger/scaling/frontier/frontier_wdmerger.png new file mode 100644 index 0000000000000000000000000000000000000000..5e98ba42f7b07ab9e6dfdad448214d1f1629dd2a GIT binary patch literal 35980 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

dgxmg()WqAp(9D) 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 Date: Fri, 12 Jul 2024 09:42:27 -0400 Subject: [PATCH 5/7] fix trendline --- .../scaling/frontier/frontier_scaling.py | 2 +- .../scaling/frontier/frontier_wdmerger.png | Bin 35980 -> 35864 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/Exec/science/wdmerger/scaling/frontier/frontier_scaling.py b/Exec/science/wdmerger/scaling/frontier/frontier_scaling.py index b566f43091..a1329635e0 100644 --- a/Exec/science/wdmerger/scaling/frontier/frontier_scaling.py +++ b/Exec/science/wdmerger/scaling/frontier/frontier_scaling.py @@ -38,7 +38,7 @@ def trend_line(c, t): ax.plot(frontier_1024base_nodes, frontier_1024base_times, ls="None", marker="x", label="$1024^3$ coarse grid") c, t = trend_line(frontier_256base_nodes, frontier_256base_times) -ax.plot(c, t, alpha=0.5, linestyle=":") +ax.plot(c, t, alpha=0.5, linestyle=":", color="k") ax.set_ylabel("wallclock time / step") ax.set_xlabel("number of nodes") diff --git a/Exec/science/wdmerger/scaling/frontier/frontier_wdmerger.png b/Exec/science/wdmerger/scaling/frontier/frontier_wdmerger.png index 5e98ba42f7b07ab9e6dfdad448214d1f1629dd2a..b00c2a434baf51d78b03710b8afa57f1d10eb2f9 100644 GIT binary patch literal 35864 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 literal 35980 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

dgxmg()WqAp(9D) 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 Date: Fri, 12 Jul 2024 09:43:32 -0400 Subject: [PATCH 6/7] add another comment --- Exec/science/wdmerger/scaling/frontier/README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Exec/science/wdmerger/scaling/frontier/README.md b/Exec/science/wdmerger/scaling/frontier/README.md index 554350dbf6..0235c2ca72 100644 --- a/Exec/science/wdmerger/scaling/frontier/README.md +++ b/Exec/science/wdmerger/scaling/frontier/README.md @@ -30,3 +30,17 @@ Some general observations: * There really is no burning yet, since this is early in the evolution, so we would expect scaling to improve as the stars interact (more grids) and burning begins (more local work). + +Note that for the 256^3 base grid, on 64 nodes, the grid structure is: + +INITIAL GRIDS + Level 0 512 grids 16777216 cells 100 % of domain + smallest grid: 32 x 32 x 32 biggest grid: 32 x 32 x 32 + Level 1 96 grids 3145728 cells 0.29296875 % of domain + smallest grid: 32 x 32 x 32 biggest grid: 32 x 32 x 32 + Level 2 674 grids 38797312 cells 0.05645751953 % of domain + smallest grid: 32 x 32 x 32 biggest grid: 64 x 32 x 32 + Level 3 7247 grids 1428029440 cells 0.03246963024 % of domain + smallest grid: 32 x 32 x 32 biggest grid: 64 x 64 x 64 + +So only a small amount of the finest grid is refined in this problem. From 2766feb50d1b3cdc52baddcd06849215256169e7 Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Fri, 12 Jul 2024 09:43:54 -0400 Subject: [PATCH 7/7] fix formatting --- Exec/science/wdmerger/scaling/frontier/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Exec/science/wdmerger/scaling/frontier/README.md b/Exec/science/wdmerger/scaling/frontier/README.md index 0235c2ca72..9a87deebb0 100644 --- a/Exec/science/wdmerger/scaling/frontier/README.md +++ b/Exec/science/wdmerger/scaling/frontier/README.md @@ -33,6 +33,7 @@ Some general observations: Note that for the 256^3 base grid, on 64 nodes, the grid structure is: +``` INITIAL GRIDS Level 0 512 grids 16777216 cells 100 % of domain smallest grid: 32 x 32 x 32 biggest grid: 32 x 32 x 32 @@ -42,5 +43,6 @@ INITIAL GRIDS smallest grid: 32 x 32 x 32 biggest grid: 64 x 32 x 32 Level 3 7247 grids 1428029440 cells 0.03246963024 % of domain smallest grid: 32 x 32 x 32 biggest grid: 64 x 64 x 64 +``` So only a small amount of the finest grid is refined in this problem.