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
bb42498c
"...composable_kernel.git" did not exist on "3af8c81a72b5b5a0155eb0e95c4f0aba1b375cca"
Unverified
Commit
bb42498c
authored
Sep 03, 2024
by
Jakob Görgen
Browse files
removed unnecessary map from instantiation
parent
8a8d6a9c
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
14 additions
and
58 deletions
+14
-58
experiments/simbricks/orchestration/instantiation/base.py
experiments/simbricks/orchestration/instantiation/base.py
+13
-57
experiments/simbricks/orchestration/simulation/base.py
experiments/simbricks/orchestration/simulation/base.py
+1
-1
No files found.
experiments/simbricks/orchestration/instantiation/base.py
View file @
bb42498c
...
@@ -63,10 +63,6 @@ class Instantiation:
...
@@ -63,10 +63,6 @@ class Instantiation:
):
):
self
.
_simulation
=
simulation
self
.
_simulation
=
simulation
self
.
_env
:
InstantiationEnvironment
=
env
self
.
_env
:
InstantiationEnvironment
=
env
# we track sockets per channel and interface:
# - per channel tracking is for ensuring that listening as well as connecting simulator use the same socket path
# - per interface mapping is helpful for simulators to access their particular socket objects for cleanup and there alike
self
.
_socket_per_channel
:
dict
[
simulation
.
channel
.
Channel
,
Socket
]
=
{}
self
.
_socket_per_interface
:
dict
[
system
.
base
.
Interface
,
Socket
]
=
{}
self
.
_socket_per_interface
:
dict
[
system
.
base
.
Interface
,
Socket
]
=
{}
@
staticmethod
@
staticmethod
...
@@ -74,71 +70,27 @@ class Instantiation:
...
@@ -74,71 +70,27 @@ class Instantiation:
path
=
pathlib
.
Path
(
path
)
path
=
pathlib
.
Path
(
path
)
return
path
.
is_absolute
()
and
path
.
is_file
()
return
path
.
is_absolute
()
and
path
.
is_file
()
# def dev_pci_path(self, sim) -> str:
# return f"{self.workdir}/dev.pci.{sim.name}"
#
# def dev_mem_path(self, sim: "simulators.Simulator") -> str:
# return f"{self.workdir}/dev.mem.{sim.name}"
#
# def nic_eth_path(self, sim: "simulators.Simulator") -> str:
# return f"{self.workdir}/nic.eth.{sim.name}"
#
# def dev_shm_path(self, sim: "simulators.Simulator") -> str:
# return f"{self.shm_base}/dev.shm.{sim.name}"
#
# def n2n_eth_path(
# self, sim_l: "simulators.Simulator", sim_c: "simulators.Simulator", suffix=""
# ) -> str:
# return f"{self.workdir}/n2n.eth.{sim_l.name}.{sim_c.name}.{suffix}"
#
# def net2host_eth_path(self, sim_n, sim_h) -> str:
# return f"{self.workdir}/n2h.eth.{sim_n.name}.{sim_h.name}"
#
# def net2host_shm_path(
# self, sim_n: "simulators.Simulator", sim_h: "simulators.Simulator"
# ) -> str:
# return f"{self.workdir}/n2h.shm.{sim_n.name}.{sim_h.name}"
#
# def proxy_shm_path(self, sim: "simulators.Simulator") -> str:
# return f"{self.shm_base}/proxy.shm.{sim.name}"
def
_get_chan_by_interface
(
def
_get_chan_by_interface
(
self
,
interface
:
system
.
base
.
Interface
self
,
interface
:
system
.
base
.
Interface
)
->
s
imulation
.
channel
.
Channel
:
)
->
s
ystem
.
Channel
:
if
not
interface
.
is_connected
():
if
not
interface
.
is_connected
():
raise
Exception
(
raise
Exception
(
"cannot determine channel by interface, interface isn't connecteds"
"cannot determine channel by interface, interface isn't connecteds"
)
)
channel
=
interface
.
channel
return
interface
.
channel
return
channel
def
_get_socket_by_channel
(
def
_get_opposing_interface
(
self
,
interface
:
system
.
Interface
)
->
system
.
Interface
:
self
,
channel
:
simualtion
.
channel
.
Channel
channel
=
self
.
_get_chan_by_interface
(
interface
=
interface
)
)
->
Socket
|
None
:
return
channel
.
a
if
channel
.
a
is
not
interface
else
channel
.
b
if
not
channel
in
self
.
_socket_per_channel
:
return
None
return
self
.
_socket_per_channel
[
channel
]
def
_updated_tracker_mapping
(
def
_updated_tracker_mapping
(
self
,
interface
:
system
.
base
.
Interface
,
socket
:
Socket
self
,
interface
:
system
.
base
.
Interface
,
socket
:
Socket
)
->
None
:
)
->
None
:
# update channel mapping
channel
=
self
.
_get_chan_by_interface
(
interface
=
interface
)
if
channel
not
in
self
.
_socket_per_channel
:
self
.
_socket_per_channel
[
channel
]
=
socket
# update interface mapping
# update interface mapping
if
interface
in
self
.
_socket_per_interface
:
if
interface
in
self
.
_socket_per_interface
:
raise
Exception
(
"an interface cannot be associated with two sockets"
)
raise
Exception
(
"an interface cannot be associated with two sockets"
)
self
.
_socket_per_interface
[
interface
]
=
socket
self
.
_socket_per_interface
[
interface
]
=
socket
def
_get_opposing_socket_by_interface
(
self
,
interface
:
system
.
base
.
Interface
)
->
Socket
|
None
:
channel
=
self
.
_get_chan_by_interface
(
interface
=
interface
)
socket
=
self
.
_get_socket_by_channel
(
channel
=
channel
)
return
socket
def
_get_socket_by_interface
(
def
_get_socket_by_interface
(
self
,
interface
:
system
.
base
.
Interface
self
,
interface
:
system
.
base
.
Interface
)
->
Socket
|
None
:
)
->
Socket
|
None
:
...
@@ -146,12 +98,18 @@ class Instantiation:
...
@@ -146,12 +98,18 @@ class Instantiation:
return
None
return
None
return
self
.
_socket_per_interface
[
interface
]
return
self
.
_socket_per_interface
[
interface
]
def
_get_opposing_socket_by_interface
(
self
,
interface
:
system
.
base
.
Interface
)
->
Socket
|
None
:
opposing_interface
=
self
.
_get_opposing_interface
(
interface
=
interface
)
socket
=
self
.
_get_socket_by_interface
(
interface
=
opposing_interface
)
return
socket
def
_interface_to_sock_path
(
self
,
interface
:
system
.
base
.
Interface
)
->
str
:
def
_interface_to_sock_path
(
self
,
interface
:
system
.
base
.
Interface
)
->
str
:
basepath
=
pathlib
.
Path
(
self
.
_env
.
_workdir
)
basepath
=
pathlib
.
Path
(
self
.
_env
.
_workdir
)
channel
=
self
.
_get_chan_by_interface
(
interface
=
interface
)
channel
=
self
.
_get_chan_by_interface
(
interface
=
interface
)
sys_channel
=
channel
.
sys_channel
queue_ident
=
f
"
{
channel
.
a
.
_id
}
.
{
channel
.
_id
}
.
{
channel
.
b
.
_id
}
"
queue_ident
=
f
"
{
sys_channel
.
a
.
_id
}
.
{
sys_channel
.
_id
}
.
{
sys_channel
.
b
.
_id
}
"
queue_type
=
None
queue_type
=
None
match
interface
:
match
interface
:
...
@@ -191,10 +149,8 @@ class Instantiation:
...
@@ -191,10 +149,8 @@ class Instantiation:
# neither connecting nor listening side already created a socket, thus we
# neither connecting nor listening side already created a socket, thus we
# create a completely new 'CONNECT' socket
# create a completely new 'CONNECT' socket
sock_type
=
SockType
.
CONNECT
sock_type
=
SockType
.
CONNECT
# create the socket path
sock_path
=
self
.
_interface_to_sock_path
(
interface
=
interface
)
sock_path
=
self
.
_interface_to_sock_path
(
interface
=
interface
)
new_socket
=
Socket
(
path
=
sock_path
,
ty
=
sock_type
)
new_socket
=
Socket
(
path
=
sock_path
,
ty
=
sock_type
)
# update the socket tracker mapping for other side
self
.
_updated_tracker_mapping
(
interface
=
interface
,
socket
=
new_socket
)
self
.
_updated_tracker_mapping
(
interface
=
interface
,
socket
=
new_socket
)
return
new_socket
return
new_socket
...
...
experiments/simbricks/orchestration/simulation/base.py
View file @
bb42498c
...
@@ -141,7 +141,7 @@ class Simulator(abc.ABC):
...
@@ -141,7 +141,7 @@ class Simulator(abc.ABC):
sockets
=
[]
sockets
=
[]
for
comp_spec
in
self
.
_components
:
for
comp_spec
in
self
.
_components
:
for
interface
in
comp_spec
.
interfaces
():
for
interface
in
comp_spec
.
interfaces
():
socket
=
self
.
_get_socket
_and_chan
(
inst
=
inst
,
interface
=
interface
)
socket
=
self
.
_get_socket
(
inst
=
inst
,
interface
=
interface
)
if
socket
is
None
:
if
socket
is
None
:
continue
continue
sockets
.
append
(
socket
)
sockets
.
append
(
socket
)
...
...
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