mirror of
https://github.com/Richard-Sti/csiborgtools.git
synced 2024-12-23 02:38:02 +00:00
90 lines
3.3 KiB
Python
90 lines
3.3 KiB
Python
|
# Copyright (C) 2023 Richard Stiskalek
|
||
|
# This program is free software; you can redistribute it and/or modify it
|
||
|
# under the terms of the GNU General Public License as published by the
|
||
|
# Free Software Foundation; either version 3 of the License, or (at your
|
||
|
# option) any later version.
|
||
|
#
|
||
|
# This program is distributed in the hope that it will be useful, but
|
||
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||
|
# Public License for more details.
|
||
|
#
|
||
|
# You should have received a copy of the GNU General Public License along
|
||
|
# with this program; if not, write to the Free Software Foundation, Inc.,
|
||
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||
|
"""
|
||
|
Script to write the SLURM submission script and submit it to the queue to
|
||
|
calculate the SPH density & velocity field.
|
||
|
"""
|
||
|
from os import system
|
||
|
|
||
|
|
||
|
def write_submit(chain_index, kind, resolution, nthreads):
|
||
|
if kind not in ["main", "random", "varysmall"]:
|
||
|
raise RuntimeError(f"Unknown kind `{kind}`.")
|
||
|
|
||
|
txt = f"""#!/bin/sh
|
||
|
|
||
|
#SBATCH --ntasks-per-node=1
|
||
|
#SBATCH --nodes=1
|
||
|
#SBATCH --cpus-per-task={nthreads}
|
||
|
#SBATCH --mem-per-cpu=7000
|
||
|
#SBATCH -J SPH_{chain_index}
|
||
|
#SBATCH -o output_{chain_index}_%J.out
|
||
|
#SBATCH -e error_{chain_index}_%J.err
|
||
|
#SBATCH -p cosma8-serial
|
||
|
#SBATCH -A dp016
|
||
|
#SBATCH -t 16:00:00
|
||
|
#SBATCH --mail-type=BEGIN,END,FAIL
|
||
|
#SBATCH --mail-user=richard.stiskalek@physics.ox.ac.uk
|
||
|
|
||
|
|
||
|
module purge
|
||
|
module load intel_comp/2019
|
||
|
module load intel_mpi/2019
|
||
|
module load hdf5
|
||
|
module load fftw
|
||
|
module load gsl
|
||
|
module load cmake
|
||
|
module load python/3.10.12
|
||
|
module list
|
||
|
|
||
|
source /cosma/home/dp016/dc-stis1/csiborgtools/venv_csiborgtools/bin/activate
|
||
|
export OMP_NUM_THREADS={nthreads}
|
||
|
export OMP_NESTED=true
|
||
|
|
||
|
snapshot_path="/cosma8/data/dp016/dc-stis1/csiborg2_{kind}/chain_{chain_index}/output/snapshot_099_full.hdf5"
|
||
|
output_path="/cosma8/data/dp016/dc-stis1/csiborg2_{kind}/field/chain_{chain_index}_{resolution}.hdf5"
|
||
|
resolution={resolution}
|
||
|
scratch_space="/snap8/scratch/dp016/dc-stis1/"
|
||
|
SPH_executable="/cosma8/data/dp016/dc-stis1/cosmotool/bld2/sample/simple3DFilter"
|
||
|
snapshot_kind="gadget4"
|
||
|
|
||
|
python3 field_sph.py --snapshot_path $snapshot_path --output_path $output_path --resolution $resolution --scratch_space $scratch_space --SPH_executable $SPH_executable --snapshot_kind $snapshot_kind
|
||
|
"""
|
||
|
fname = f"submit_SPH_{kind}_{chain_index}.sh"
|
||
|
print(f"Writing file: `{fname}`.")
|
||
|
with open(fname, "w") as txtfile:
|
||
|
txtfile.write(txt)
|
||
|
# Make the file executable
|
||
|
system(f"chmod +x {fname}")
|
||
|
return fname
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
# kind = "main"
|
||
|
# chains = [15617, 15717, 15817, 15917, 16017, 16117, 16217, 16317, 16417, 16517, 16617, 16717, 16817, 16917, 17017, 17117, 17217, 17317, 17417]
|
||
|
|
||
|
# kind = "varysmall"
|
||
|
# chains = ["16417_001", "16417_025", "16417_050", "16417_075", "16417_100", "16417_125", "16417_150", "16417_175", "16417_200", "16417_225", "16417_250", "16417_275", "16417_300", "16417_325", "16417_350", "16417_375", "16417_400", "16417_425", "16417_450", "16417_475"]
|
||
|
|
||
|
kind = "random"
|
||
|
chains = [1, 25, 50, 75, 100, 125, 150, 175, 200, 225, 250, 275, 300, 325, 350, 375, 400, 425, 450, 475]
|
||
|
|
||
|
resolution = 1024
|
||
|
nthreads = 32
|
||
|
|
||
|
for chain_index in chains:
|
||
|
fname = write_submit(chain_index, kind, resolution, nthreads)
|
||
|
system(f"sbatch {fname}")
|