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

setup clusters

parent d8f455ce
Branches
Tags
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