Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ycai
simbricks
Commits
a8fd4999
Commit
a8fd4999
authored
Jul 06, 2021
by
Antoine Kaufmann
Browse files
experiments: add --hosts= parameter to add a json file with a list of hosts
parent
232c94f8
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
34 additions
and
2 deletions
+34
-2
experiments/run.py
experiments/run.py
+34
-2
No files found.
experiments/run.py
View file @
a8fd4999
...
...
@@ -25,8 +25,10 @@ import sys
import
os
import
importlib
import
importlib.util
import
json
import
pickle
import
fnmatch
import
simbricks.exectools
as
exectools
import
simbricks.experiments
as
exp
import
simbricks.runtime
as
runtime
...
...
@@ -64,6 +66,8 @@ g_env.add_argument('--outdir', metavar='DIR', type=str,
default
=
'./out/'
,
help
=
'Output directory base'
)
g_env
.
add_argument
(
'--cpdir'
,
metavar
=
'DIR'
,
type
=
str
,
default
=
'./out/'
,
help
=
'Checkpoint directory base'
)
g_env
.
add_argument
(
'--hosts'
,
metavar
=
'JSON_FILE'
,
type
=
str
,
default
=
None
,
help
=
'List of hosts to use (json)'
)
g_par
=
parser
.
add_argument_group
(
'Parallel Runtime'
)
g_par
.
add_argument
(
'--parallel'
,
dest
=
'runtime'
,
action
=
'store_const'
,
...
...
@@ -85,14 +89,42 @@ g_slurm.add_argument('--slurmdir', metavar='DIR', type=str,
args
=
parser
.
parse_args
()
def
load_executors
(
path
):
""" Load hosts list from json file and return list of executors. """
with
open
(
path
,
'r'
)
as
f
:
hosts
=
json
.
load
(
f
)
exs
=
[]
for
h
in
hosts
:
if
h
[
'type'
]
==
'local'
:
exs
.
append
(
exectools
.
LocalExecutor
())
elif
h
[
'type'
]
==
'remote'
:
exs
.
append
(
exectools
.
RemoteExecutor
(
h
[
'host'
],
h
[
'workdir'
]))
else
:
raise
RuntimeError
(
'invalid host type "'
+
h
[
'type'
]
+
'"'
)
return
exs
if
args
.
hosts
is
None
:
executors
=
[
exectools
.
LocalExecutor
()]
else
:
executors
=
load_executors
(
args
.
hosts
)
def
warn_multi_exec
():
if
len
(
executors
)
>
1
:
print
(
'Warning: multiple hosts specified, only using first one for now'
,
file
=
sys
.
stderr
)
# initialize runtime
if
args
.
runtime
==
'parallel'
:
warn_multi_exec
()
rt
=
runtime
.
LocalParallelRuntime
(
cores
=
args
.
cores
,
mem
=
args
.
mem
,
verbose
=
args
.
verbose
)
verbose
=
args
.
verbose
,
exec
=
executors
[
0
]
)
elif
args
.
runtime
==
'slurm'
:
rt
=
runtime
.
SlurmRuntime
(
args
.
slurmdir
,
args
,
verbose
=
args
.
verbose
)
else
:
rt
=
runtime
.
LocalSimpleRuntime
(
verbose
=
args
.
verbose
)
warn_multi_exec
()
rt
=
runtime
.
LocalSimpleRuntime
(
verbose
=
args
.
verbose
,
exec
=
executors
[
0
])
def
add_exp
(
e
,
run
,
prereq
,
create_cp
,
restore_cp
,
no_simbricks
):
outpath
=
'%s/%s-%d.json'
%
(
args
.
outdir
,
e
.
name
,
run
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment