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
7ebf2dd4
"git@developer.sourcefind.cn:gaoqiong/composable_kernel.git" did not exist on "96ee9571e2c96ba6eb6972da1be75453d6c6e9fa"
Commit
7ebf2dd4
authored
Nov 05, 2020
by
Antoine Kaufmann
Browse files
experiemnts: support for gem5 checkpoints
parent
c73496c5
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
62 additions
and
3 deletions
+62
-3
experiments/modes/experiments.py
experiments/modes/experiments.py
+14
-1
experiments/modes/simulators.py
experiments/modes/simulators.py
+2
-1
experiments/pyexps/gem5_i40e_pair.py
experiments/pyexps/gem5_i40e_pair.py
+42
-0
experiments/run.py
experiments/run.py
+4
-1
No files found.
experiments/modes/experiments.py
View file @
7ebf2dd4
...
@@ -155,12 +155,16 @@ class Experiment(object):
...
@@ -155,12 +155,16 @@ class Experiment(object):
return
cores
return
cores
class
ExpEnv
(
object
):
class
ExpEnv
(
object
):
def
__init__
(
self
,
repo_path
,
workdir
):
def
__init__
(
self
,
repo_path
,
workdir
,
cpdir
):
self
.
repodir
=
os
.
path
.
abspath
(
repo_path
)
self
.
repodir
=
os
.
path
.
abspath
(
repo_path
)
self
.
workdir
=
os
.
path
.
abspath
(
workdir
)
self
.
workdir
=
os
.
path
.
abspath
(
workdir
)
self
.
cpdir
=
os
.
path
.
abspath
(
cpdir
)
self
.
qemu_img_path
=
self
.
repodir
+
'/qemu/qemu-img'
self
.
qemu_img_path
=
self
.
repodir
+
'/qemu/qemu-img'
self
.
qemu_path
=
self
.
repodir
+
'/qemu/x86_64-softmmu/qemu-system-x86_64'
self
.
qemu_path
=
self
.
repodir
+
'/qemu/x86_64-softmmu/qemu-system-x86_64'
self
.
qemu_kernel_path
=
self
.
repodir
+
'/images/bzImage'
self
.
qemu_kernel_path
=
self
.
repodir
+
'/images/bzImage'
self
.
gem5_path
=
self
.
repodir
+
'/gem5/build/X86/gem5.opt'
self
.
gem5_py_path
=
self
.
repodir
+
'/gem5/configs/cosim/cosim.py'
self
.
gem5_kernel_path
=
self
.
repodir
+
'/images/vmlinux'
def
hdcopy_path
(
self
,
sim
):
def
hdcopy_path
(
self
,
sim
):
return
'%s/hdcopy.%s'
%
(
self
.
workdir
,
sim
.
name
)
return
'%s/hdcopy.%s'
%
(
self
.
workdir
,
sim
.
name
)
...
@@ -168,6 +172,9 @@ class ExpEnv(object):
...
@@ -168,6 +172,9 @@ class ExpEnv(object):
def
hd_path
(
self
,
hd_name
):
def
hd_path
(
self
,
hd_name
):
return
'%s/images/output-%s/%s'
%
(
self
.
repodir
,
hd_name
,
hd_name
)
return
'%s/images/output-%s/%s'
%
(
self
.
repodir
,
hd_name
,
hd_name
)
def
hd_raw_path
(
self
,
hd_name
):
return
'%s/images/output-%s/%s.raw'
%
(
self
.
repodir
,
hd_name
,
hd_name
)
def
cfgtar_path
(
self
,
sim
):
def
cfgtar_path
(
self
,
sim
):
return
'%s/cfg.%s.tar'
%
(
self
.
workdir
,
sim
.
name
)
return
'%s/cfg.%s.tar'
%
(
self
.
workdir
,
sim
.
name
)
...
@@ -180,6 +187,12 @@ class ExpEnv(object):
...
@@ -180,6 +187,12 @@ class ExpEnv(object):
def
nic_shm_path
(
self
,
sim
):
def
nic_shm_path
(
self
,
sim
):
return
'%s/nic.shm.%s'
%
(
self
.
workdir
,
sim
.
name
)
return
'%s/nic.shm.%s'
%
(
self
.
workdir
,
sim
.
name
)
def
gem5_outdir
(
self
,
sim
):
return
'%s/gem5-out.%s'
%
(
self
.
workdir
,
sim
.
name
)
def
gem5_cpdir
(
self
,
sim
):
return
'%s/gem5-cp.%s'
%
(
self
.
cpdir
,
sim
.
name
)
class
ExpOutput
(
object
):
class
ExpOutput
(
object
):
def
__init__
(
self
,
exp
):
def
__init__
(
self
,
exp
):
self
.
exp_name
=
exp
.
name
self
.
exp_name
=
exp
.
name
...
...
experiments/modes/simulators.py
View file @
7ebf2dd4
...
@@ -98,13 +98,14 @@ class Gem5Host(HostSim):
...
@@ -98,13 +98,14 @@ class Gem5Host(HostSim):
def
resreq_mem
(
self
):
def
resreq_mem
(
self
):
return
4096
return
4096
def
prep_cmds
(
self
,
env
):
return
[
f
'mkdir -p
{
env
.
gem5_cpdir
(
self
)
}
'
]
def
run_cmd
(
self
,
env
):
def
run_cmd
(
self
,
env
):
cpu_type
=
self
.
cpu_type
cpu_type
=
self
.
cpu_type
if
env
.
create_cp
:
if
env
.
create_cp
:
cpu_type
=
self
.
cpu_type_cp
cpu_type
=
self
.
cpu_type_cp
self
.
cp_cpu_type
cmd
=
(
f
'
{
env
.
gem5_path
}
--outdir=
{
env
.
gem5_outdir
(
self
)
}
'
cmd
=
(
f
'
{
env
.
gem5_path
}
--outdir=
{
env
.
gem5_outdir
(
self
)
}
'
f
'
{
env
.
gem5_py_path
}
--caches --l2cache --l3cache '
f
'
{
env
.
gem5_py_path
}
--caches --l2cache --l3cache '
'--l1d_size=32kB --l1i_size=32kB --l2_size=2MB --l3_size=32MB '
'--l1d_size=32kB --l1i_size=32kB --l2_size=2MB --l3_size=32MB '
...
...
experiments/pyexps/gem5_i40e_pair.py
0 → 100644
View file @
7ebf2dd4
import
modes.experiments
as
exp
import
modes.simulators
as
sim
import
modes.nodeconfig
as
node
e
=
exp
.
Experiment
(
'gem5-i40e-pair'
)
e
.
timeout
=
5
*
60
e
.
checkpoint
=
True
net
=
sim
.
SwitchNet
()
e
.
add_network
(
net
)
nic_a
=
sim
.
I40eNIC
()
nic_a
.
set_network
(
net
)
e
.
add_nic
(
nic_a
)
host_a
=
sim
.
Gem5Host
()
host_a
.
cpu_type
=
'X86KvmCPU'
host_a
.
name
=
'server'
host_a
.
node_config
=
node
.
I40eLinuxNode
()
host_a
.
node_config
.
sim
=
'gem5'
# FIXME
host_a
.
node_config
.
ip
=
'10.0.0.1'
host_a
.
node_config
.
app
=
node
.
IperfTCPServer
()
host_a
.
add_nic
(
nic_a
)
e
.
add_host
(
host_a
)
for
i
in
range
(
0
,
1
):
nic_b
=
sim
.
I40eNIC
()
nic_b
.
set_network
(
net
)
e
.
add_nic
(
nic_b
)
host_b
=
sim
.
Gem5Host
()
host_b
.
cpu_type
=
'X86KvmCPU'
host_b
.
name
=
'client.%d'
%
i
host_b
.
wait
=
True
host_b
.
node_config
=
node
.
I40eLinuxNode
()
host_b
.
node_config
.
sim
=
'gem5'
# FIXME
host_b
.
node_config
.
ip
=
'10.0.0.%d'
%
(
2
+
i
)
host_b
.
node_config
.
app
=
node
.
IperfTCPClient
()
host_b
.
add_nic
(
nic_b
)
e
.
add_host
(
host_b
)
experiments
=
[
e
]
experiments/run.py
View file @
7ebf2dd4
...
@@ -32,6 +32,8 @@ g_env.add_argument('--workdir', metavar='DIR', type=str,
...
@@ -32,6 +32,8 @@ g_env.add_argument('--workdir', metavar='DIR', type=str,
default
=
'./out/'
,
help
=
'Work directory base'
)
default
=
'./out/'
,
help
=
'Work directory base'
)
g_env
.
add_argument
(
'--outdir'
,
metavar
=
'DIR'
,
type
=
str
,
g_env
.
add_argument
(
'--outdir'
,
metavar
=
'DIR'
,
type
=
str
,
default
=
'./out/'
,
help
=
'Output directory base'
)
default
=
'./out/'
,
help
=
'Output directory base'
)
g_env
.
add_argument
(
'--cpdir'
,
metavar
=
'DIR'
,
type
=
str
,
default
=
'./out/'
,
help
=
'Checkpoint directory base'
)
g_par
=
parser
.
add_argument_group
(
'Parallel Runtime'
)
g_par
=
parser
.
add_argument_group
(
'Parallel Runtime'
)
g_par
.
add_argument
(
'--parallel'
,
dest
=
'runtime'
,
action
=
'store_const'
,
g_par
.
add_argument
(
'--parallel'
,
dest
=
'runtime'
,
action
=
'store_const'
,
...
@@ -69,8 +71,9 @@ def add_exp(e, run, prereq, create_cp, restore_cp):
...
@@ -69,8 +71,9 @@ def add_exp(e, run, prereq, create_cp, restore_cp):
return
None
return
None
workdir
=
'%s/%s/%d'
%
(
args
.
workdir
,
e
.
name
,
run
)
workdir
=
'%s/%s/%d'
%
(
args
.
workdir
,
e
.
name
,
run
)
cpdir
=
'%s/%s/%d'
%
(
args
.
cpdir
,
e
.
name
,
0
)
env
=
exp
.
ExpEnv
(
args
.
repo
,
workdir
)
env
=
exp
.
ExpEnv
(
args
.
repo
,
workdir
,
cpdir
)
env
.
create_cp
=
create_cp
env
.
create_cp
=
create_cp
env
.
restore_cp
=
restore_cp
env
.
restore_cp
=
restore_cp
...
...
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