Skip to content
Snippets Groups Projects
Commit df847a2e authored by lkugler's avatar lkugler
Browse files

setup clusters

parent d8f455ce
No related branches found
No related tags found
No related merge requests found
...@@ -9,15 +9,8 @@ from dartwrf import utils ...@@ -9,15 +9,8 @@ from dartwrf import utils
from config.cfg import exp from config.cfg import exp
from config.clusters import cluster from config.clusters import cluster
log_dir = cluster.archivedir+'/logs/'
slurm_scripts_dir = cluster.archivedir+'/slurm-scripts/'
print('logging to', log_dir)
print('scripts, which are submitted to SLURM:', slurm_scripts_dir)
############################### ###############################
backup_scripts()
prior_path_exp = '/mnt/jetfs/scratch/lkugler/data/sim_archive/exp_v1.19_P3_wbub7_noDA' prior_path_exp = '/mnt/jetfs/scratch/lkugler/data/sim_archive/exp_v1.19_P3_wbub7_noDA'
prior_init_time = dt.datetime(2008,7,30,12) prior_init_time = dt.datetime(2008,7,30,12)
......
...@@ -23,7 +23,7 @@ exp.use_existing_obsseq = False # False or pathname (use precomputed obs_seq.ou ...@@ -23,7 +23,7 @@ exp.use_existing_obsseq = False # False or pathname (use precomputed obs_seq.ou
#exp.nature_wrfout = '/home/fs71386/lkugler/data/sim_archive/exp_v1.19_P5+su_nat2/2008-07-30_07:00/1/wrfout_d01_%Y-%m-%d_%H:%M:%S' #exp.nature_wrfout = '/home/fs71386/lkugler/data/sim_archive/exp_v1.19_P5+su_nat2/2008-07-30_07:00/1/wrfout_d01_%Y-%m-%d_%H:%M:%S'
#exp.nature_wrfout = '/jetfs/home/lkugler/data/sim_archive/exp_v1.19_P3_wbub7_nat/2008-07-30_12:00/1/wrfout_d01_%Y-%m-%d_%H:%M:%S' #exp.nature_wrfout = '/jetfs/home/lkugler/data/sim_archive/exp_v1.19_P3_wbub7_nat/2008-07-30_12:00/1/wrfout_d01_%Y-%m-%d_%H:%M:%S'
#exp.nature_wrfout = '/home/fs71386/lkugler/data/sim_archive/exp_v1.19_Pwbub5_nat/2008-07-30_12:00/1/wrfout_d01_%Y-%m-%d_%H:%M:%S' #exp.nature_wrfout = '/home/fs71386/lkugler/data/sim_archive/exp_v1.19_Pwbub5_nat/2008-07-30_12:00/1/wrfout_d01_%Y-%m-%d_%H:%M:%S'
exp.nature_wrfout = cluster.archive_base+'/exp_v1.18_P1_nature/2008-07-30_06:00/1/wrfout_d01_%Y-%m-%d_%H:%M:%S' exp.nature_wrfout = '/jetfs/home/lkugler/data/sim_archive/exp_v1.18_P1_nature/2008-07-30_06:00/1/wrfout_d01_%Y-%m-%d_%H:%M:%S'
#exp.nature_wrfout = '/home/fs71386/lkugler/data/sim_archive/exp_v1.19_P4_nat/2008-07-30_07:00/1/wrfout_d01_%Y-%m-%d_%H:%M:%S' #exp.nature_wrfout = '/home/fs71386/lkugler/data/sim_archive/exp_v1.19_P4_nat/2008-07-30_07:00/1/wrfout_d01_%Y-%m-%d_%H:%M:%S'
exp.input_profile = '/jetfs/home/lkugler/data/initial_profiles/wrf/ens/2022-03-31/raso.fc.<iens>.wrfprof' exp.input_profile = '/jetfs/home/lkugler/data/initial_profiles/wrf/ens/2022-03-31/raso.fc.<iens>.wrfprof'
......
import os, sys import os, sys
import datetime as dt import datetime as dt
from dartwrf import utils from dartwrf import utils
from config.cfg import exp
"""Configuration name docs """Configuration name docs
...@@ -42,9 +43,7 @@ slurm_cfg python dictionary, containing options of SLURM ...@@ -42,9 +43,7 @@ slurm_cfg python dictionary, containing options of SLURM
""" """
vsc = utils.ClusterConfig(exp)
vsc = utils.ClusterConfig()
vsc.name = 'vsc' vsc.name = 'vsc'
vsc.max_nproc = 20 vsc.max_nproc = 20
vsc.size_jobarray = 10 # 10 jobs with each 4 WRF processes per node vsc.size_jobarray = 10 # 10 jobs with each 4 WRF processes per node
...@@ -77,7 +76,7 @@ vsc.slurm_cfg = {"account": "p71386", "partition": "skylake_0384", "qos": "p7138 ...@@ -77,7 +76,7 @@ vsc.slurm_cfg = {"account": "p71386", "partition": "skylake_0384", "qos": "p7138
"nodes": "1", "ntasks": "1", "ntasks-per-node": "48", "ntasks-per-core": "1", "nodes": "1", "ntasks": "1", "ntasks-per-node": "48", "ntasks-per-core": "1",
"mail-type": "FAIL", "mail-user": "lukas.kugler@univie.ac.at"} "mail-type": "FAIL", "mail-user": "lukas.kugler@univie.ac.at"}
jet = utils.ClusterConfig() jet = utils.ClusterConfig(exp)
jet.name = 'jet' jet.name = 'jet'
jet.max_nproc = 12 jet.max_nproc = 12
jet.use_slurm = True jet.use_slurm = True
...@@ -113,7 +112,7 @@ jet.slurm_cfg = {"account": "lkugler", "partition": "compute", #"nodelist": "jet ...@@ -113,7 +112,7 @@ jet.slurm_cfg = {"account": "lkugler", "partition": "compute", #"nodelist": "jet
"mail-type": "FAIL", "mail-user": "lukas.kugler@univie.ac.at"} "mail-type": "FAIL", "mail-user": "lukas.kugler@univie.ac.at"}
srvx1 = utils.ClusterConfig() srvx1 = utils.ClusterConfig(exp)
srvx1.name = 'srvx1' srvx1.name = 'srvx1'
srvx1.max_nproc = 6 srvx1.max_nproc = 6
srvx1.use_slurm = False srvx1.use_slurm = False
...@@ -145,3 +144,7 @@ srvx1.run_WRF = srvx1.scriptsdir+'/run_ens.jet.sh' ...@@ -145,3 +144,7 @@ srvx1.run_WRF = srvx1.scriptsdir+'/run_ens.jet.sh'
srvx1.slurm_cfg = {"account": "lkugler", "partition": "compute", srvx1.slurm_cfg = {"account": "lkugler", "partition": "compute",
"ntasks": "1", "ntasks-per-core": "1", "mem": "50G", "ntasks": "1", "ntasks-per-core": "1", "mem": "50G",
"mail-type": "FAIL", "mail-user": "lukas.kugler@univie.ac.at"} "mail-type": "FAIL", "mail-user": "lukas.kugler@univie.ac.at"}
#################################
# select cluster configuration
cluster = jet
\ No newline at end of file
...@@ -9,10 +9,12 @@ from dartwrf.utils import script_to_str ...@@ -9,10 +9,12 @@ from dartwrf.utils import script_to_str
from config.cfg import exp from config.cfg import exp
from config.clusters import cluster from config.clusters import cluster
log_dir = cluster.archivedir+'/logs/' def prepare_WRFrundir(init_time):
slurm_scripts_dir = cluster.archivedir+'/slurm-scripts/' """Create WRF/run directories and wrfinput files
print('logging to', log_dir) """
print('scripts, which are submitted to SLURM:', slurm_scripts_dir) cmd = cluster.python+' '+cluster.scripts_rundir+'/prepare_wrfrundir.py '+init_time.strftime('%Y-%m-%d_%H:%M')
print(cmd)
os.system(cmd)
def run_ideal(depends_on=None): def run_ideal(depends_on=None):
"""Run ideal for every ensemble member""" """Run ideal for every ensemble member"""
...@@ -202,7 +204,6 @@ if __name__ == "__main__": ...@@ -202,7 +204,6 @@ if __name__ == "__main__":
timedelta_integrate = dt.timedelta(minutes=15) timedelta_integrate = dt.timedelta(minutes=15)
timedelta_btw_assim = dt.timedelta(minutes=15) timedelta_btw_assim = dt.timedelta(minutes=15)
cluster.backup_scripts()
id = None id = None
if False: # warm bubble if False: # warm bubble
......
...@@ -7,7 +7,8 @@ import numpy as np ...@@ -7,7 +7,8 @@ import numpy as np
import datetime as dt import datetime as dt
import xarray as xr import xarray as xr
from config.cfg import exp, cluster from config.cfg import exp
from config.clusters import cluster
##################### #####################
# Global variables # Global variables
......
...@@ -21,19 +21,33 @@ class ClusterConfig(object): ...@@ -21,19 +21,33 @@ class ClusterConfig(object):
"""Collection of variables to use in code later on""" """Collection of variables to use in code later on"""
def __init__(self, exp): def __init__(self, exp):
self.exp = exp self.exp = exp
self.set_up = False
def setup(self):
# Set paths and backup scripts
self.log_dir = self.archivedir+'/logs/'
self.slurm_scripts_dir = self.archivedir+'/slurm-scripts/'
print('logging to', self.log_dir)
print('scripts, which are submitted to SLURM:', self.slurm_scripts_dir)
self.backup_scripts()
self.set_up = True
@property
def archivedir(self): def archivedir(self):
return self.archive_base+'/'+self.exp.expname return self.archive_base+'/'+self.exp.expname
def wrf_rundir(self, iens): @property
return self.wrf_rundir_base+'/'+self.exp.expname+'/'+str(iens)
def scripts_rundir(self): def scripts_rundir(self):
return self.archivedir+'/DART-WRF/' return self.archivedir+'/DART-WRF/'
@property
def dartrundir(self): def dartrundir(self):
return self.dart_rundir_base+'/'+self.exp.expname+'/' return self.dart_rundir_base+'/'+self.exp.expname+'/'
def wrf_rundir(self, iens):
return self.wrf_rundir_base+'/'+self.exp.expname+'/'+str(iens)
def create_job(self, *args, cfg_update=dict(), **kwargs): def create_job(self, *args, cfg_update=dict(), **kwargs):
"""Shortcut to slurmpy's class; keep certain default kwargs """Shortcut to slurmpy's class; keep certain default kwargs
and only update some with kwarg `cfg_update` and only update some with kwarg `cfg_update`
...@@ -41,13 +55,18 @@ class ClusterConfig(object): ...@@ -41,13 +55,18 @@ class ClusterConfig(object):
depending on cluster config : run either locally or via SLURM depending on cluster config : run either locally or via SLURM
""" """
if not self.set_up:
self.setup()
if self.use_slurm: if self.use_slurm:
return Slurm(*args, slurm_kwargs=dict(self.slurm_cfg, **cfg_update), return Slurm(*args, slurm_kwargs=dict(self.slurm_cfg, **cfg_update),
log_dir=log_dir, scripts_dir=slurm_scripts_dir, **kwargs) log_dir=self.log_dir,
scripts_dir=self.slurm_scripts_dir,
**kwargs)
else: else:
return Shellslurm(*args) return Shellslurm(*args)
def backup_scripts(): def backup_scripts(self):
"""Copies scripts and configuration to archive dir output folder""" """Copies scripts and configuration to archive dir output folder"""
os.makedirs(self.archivedir, exist_ok=True) os.makedirs(self.archivedir, exist_ok=True)
...@@ -57,17 +76,11 @@ class ClusterConfig(object): ...@@ -57,17 +76,11 @@ class ClusterConfig(object):
pass pass
except: except:
raise raise
try: # try:
copy(os.path.basename(__file__), self.scripts_rundir+'/') # copy(os.path.basename(__file__), self.scripts_rundir+'/')
except Exception as e: # except Exception as e:
warnings.warn(str(e)) # warnings.warn(str(e))
print('scripts have been copied to', self.archivedir)
def prepare_WRFrundir(init_time):
"""Create WRF/run directories and wrfinput files
"""
cmd = self.python+' '+self.scripts_rundir+'/prepare_wrfrundir.py '+init_time.strftime('%Y-%m-%d_%H:%M')
print(cmd)
os.system(cmd)
def shell(args): def shell(args):
print(args) print(args)
......
...@@ -12,15 +12,10 @@ from config.clusters import cluster ...@@ -12,15 +12,10 @@ from config.clusters import cluster
from dartwrf.utils import script_to_str, symlink from dartwrf.utils import script_to_str, symlink
from cycled_exp import * from cycled_exp import *
log_dir = cluster.archivedir+'/logs/'
slurm_scripts_dir = cluster.archivedir+'/slurm-scripts/'
print('logging to', log_dir)
print('scripts, which are submitted to SLURM:', slurm_scripts_dir)
################################ ################################
print('starting osse') print('starting osse')
cluster.backup_scripts()
id = None id = None
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment