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
from config.cfg import exp
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_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
#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 = '/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.input_profile = '/jetfs/home/lkugler/data/initial_profiles/wrf/ens/2022-03-31/raso.fc.<iens>.wrfprof'
......
import os, sys
import datetime as dt
from dartwrf import utils
from config.cfg import exp
"""Configuration name docs
......@@ -42,9 +43,7 @@ slurm_cfg python dictionary, containing options of SLURM
"""
vsc = utils.ClusterConfig()
vsc = utils.ClusterConfig(exp)
vsc.name = 'vsc'
vsc.max_nproc = 20
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
"nodes": "1", "ntasks": "1", "ntasks-per-node": "48", "ntasks-per-core": "1",
"mail-type": "FAIL", "mail-user": "lukas.kugler@univie.ac.at"}
jet = utils.ClusterConfig()
jet = utils.ClusterConfig(exp)
jet.name = 'jet'
jet.max_nproc = 12
jet.use_slurm = True
......@@ -113,7 +112,7 @@ jet.slurm_cfg = {"account": "lkugler", "partition": "compute", #"nodelist": "jet
"mail-type": "FAIL", "mail-user": "lukas.kugler@univie.ac.at"}
srvx1 = utils.ClusterConfig()
srvx1 = utils.ClusterConfig(exp)
srvx1.name = 'srvx1'
srvx1.max_nproc = 6
srvx1.use_slurm = False
......@@ -145,3 +144,7 @@ srvx1.run_WRF = srvx1.scriptsdir+'/run_ens.jet.sh'
srvx1.slurm_cfg = {"account": "lkugler", "partition": "compute",
"ntasks": "1", "ntasks-per-core": "1", "mem": "50G",
"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
from config.cfg import exp
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)
def prepare_WRFrundir(init_time):
"""Create WRF/run directories and wrfinput files
"""
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):
"""Run ideal for every ensemble member"""
......@@ -202,7 +204,6 @@ if __name__ == "__main__":
timedelta_integrate = dt.timedelta(minutes=15)
timedelta_btw_assim = dt.timedelta(minutes=15)
cluster.backup_scripts()
id = None
if False: # warm bubble
......
......@@ -7,7 +7,8 @@ import numpy as np
import datetime as dt
import xarray as xr
from config.cfg import exp, cluster
from config.cfg import exp
from config.clusters import cluster
#####################
# Global variables
......
......@@ -21,19 +21,33 @@ class ClusterConfig(object):
"""Collection of variables to use in code later on"""
def __init__(self, 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):
return self.archive_base+'/'+self.exp.expname
def wrf_rundir(self, iens):
return self.wrf_rundir_base+'/'+self.exp.expname+'/'+str(iens)
@property
def scripts_rundir(self):
return self.archivedir+'/DART-WRF/'
@property
def dartrundir(self):
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):
"""Shortcut to slurmpy's class; keep certain default kwargs
and only update some with kwarg `cfg_update`
......@@ -41,13 +55,18 @@ class ClusterConfig(object):
depending on cluster config : run either locally or via SLURM
"""
if not self.set_up:
self.setup()
if self.use_slurm:
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:
return Shellslurm(*args)
def backup_scripts():
def backup_scripts(self):
"""Copies scripts and configuration to archive dir output folder"""
os.makedirs(self.archivedir, exist_ok=True)
......@@ -57,17 +76,11 @@ class ClusterConfig(object):
pass
except:
raise
try:
copy(os.path.basename(__file__), self.scripts_rundir+'/')
except Exception as e:
warnings.warn(str(e))
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)
# try:
# copy(os.path.basename(__file__), self.scripts_rundir+'/')
# except Exception as e:
# warnings.warn(str(e))
print('scripts have been copied to', self.archivedir)
def shell(args):
print(args)
......
......@@ -12,15 +12,10 @@ from config.clusters import cluster
from dartwrf.utils import script_to_str, symlink
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')
cluster.backup_scripts()
id = None
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment