Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
pmtool
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Merge Requests
0
Merge Requests
0
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
EYRAUD-DUBOIS Lionel
pmtool
Commits
3056ba53
Commit
3056ba53
authored
Mar 06, 2020
by
EYRAUD-DUBOIS Lionel
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Read Memory Node info from the platform file
parent
adfeac20
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
55 additions
and
11 deletions
+55
-11
core/RecFileReader.cpp
core/RecFileReader.cpp
+55
-11
No files found.
core/RecFileReader.cpp
View file @
3056ba53
...
...
@@ -115,12 +115,12 @@ private:
throw
(
1
);
}
public:
static
int
stoi
(
string
s
)
{
return
std
::
stoi
(
s
);
}
public:
recTask
(
const
rec_record_t
record
,
int
id
)
:
internalId
(
id
)
{
name
=
recordValueOpt
(
record
,
recName
);
convertedDeps
=
false
;
...
...
@@ -424,16 +424,60 @@ RecFileInstance::RecFileInstance(const string inputFile, const string platformFi
nbWorkerTypes
=
nbWorkers
.
size
();
totalWorkers
=
getSum
(
nbWorkers
);
int
memNodes
=
1
;
int
workerIndex
=
0
;
for
(
int
k
=
0
;
k
<
nbWorkerTypes
;
++
k
)
{
int
memnode
=
0
;
if
(
workerNames
[
k
].
compare
(
0
,
3
,
"cpu"
)
!=
0
)
memnode
=
memNodes
++
;
vector
<
int
>
nodes
(
nbWorkers
[
k
],
memnode
);
memoryNodes
.
push_back
(
nodes
);
rec_rset_t
memoryNodesSet
=
rec_db_get_rset_by_type
(
platform
,
"memory_workers"
);
if
(
!
memoryNodesSet
)
{
/* By default, if no 'memory_workers' record is present, cpus have memory node 0
and each other worker has its own memory node */
int
memNodes
=
1
;
int
workerIndex
=
0
;
for
(
int
k
=
0
;
k
<
nbWorkerTypes
;
++
k
)
{
int
memnode
=
0
;
if
(
workerNames
[
k
].
compare
(
0
,
3
,
"cpu"
)
!=
0
)
memnode
=
memNodes
++
;
vector
<
int
>
nodes
(
nbWorkers
[
k
],
memnode
);
memoryNodes
.
push_back
(
nodes
);
}
nbMemoryNodes
=
memNodes
;
}
else
{
/* Initialize all memory nodes with -1 */
memoryNodes
.
resize
(
nbWorkerTypes
);
for
(
int
k
=
0
;
k
<
nbWorkerTypes
;
++
k
)
{
memoryNodes
[
k
].
resize
(
nbWorkers
[
k
],
-
1
);
}
nbMemoryNodes
=
0
;
/* Read from file */
rec_mset_iterator_t
memNodeIt
=
rec_mset_iterator
(
rec_rset_mset
(
memoryNodesSet
));
rec_record_t
recMemNode
;
const
char
*
MemoryNode
=
rec_parse_field_name_str
(
"MemoryNode"
);
const
char
*
Workers
=
rec_parse_field_name_str
(
"Workers"
);
while
(
rec_mset_iterator_next
(
&
memNodeIt
,
MSET_RECORD
,
(
const
void
**
)
&
recMemNode
,
NULL
))
{
vector
<
int
>
workers_in_node
;
int
memNodeId
=
stoi
(
recordValue
(
recMemNode
,
MemoryNode
));
nbMemoryNodes
=
max
(
nbMemoryNodes
,
memNodeId
+
1
);
getVector
(
recMemNode
,
Workers
,
workers_in_node
,
recTask
::
stoi
);
for
(
int
w
:
workers_in_node
)
{
int
index
;
int
type
=
getType
(
w
,
&
index
);
if
(
memoryNodes
[
type
][
index
]
>=
0
)
{
cerr
<<
"RecFileInstance: Worker "
<<
w
<<
" appears in two memory nodes: "
<<
memoryNodes
[
type
][
index
]
<<
" and "
<<
memNodeId
<<
endl
;
throw
(
1
);
}
memoryNodes
[
type
][
index
]
=
memNodeId
;
}
}
/* Check that all workers have a memory node */
int
wID
=
0
;
for
(
int
k
=
0
;
k
<
nbWorkerTypes
;
++
k
)
{
for
(
int
j
=
0
;
j
<
nbWorkers
[
k
];
++
j
,
++
wID
)
{
if
(
memoryNodes
[
k
][
j
]
<
0
)
{
cerr
<<
"RecFileInstance: Worker "
<<
wID
<<
" does not belong to any memory node"
<<
endl
;
throw
(
1
);
}
}
}
}
nbMemoryNodes
=
memNodes
;
rec_rset_t
timingSet
=
rec_db_get_rset_by_type
(
platform
,
"timing"
);
if
(
!
timingSet
)
{
...
...
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