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
gaoqiong
MIGraphX
Commits
d7033279
Commit
d7033279
authored
May 12, 2022
by
umangyadav
Browse files
formatting
parent
884d3eb1
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
44 additions
and
26 deletions
+44
-26
src/include/migraphx/tracer.hpp
src/include/migraphx/tracer.hpp
+14
-14
src/pass_manager.cpp
src/pass_manager.cpp
+29
-11
src/program.cpp
src/program.cpp
+1
-1
No files found.
src/include/migraphx/tracer.hpp
View file @
d7033279
...
...
@@ -26,23 +26,21 @@ struct tracer
}
fs
::
create_directories
(
dir_path
);
}
// file_stream
// file_stream
bool
fs_enabled
()
const
{
return
!
dump_dir
.
empty
()
&&
!
os_enabled
();
}
// output_stream
bool
os_enabled
()
const
{
return
os
&&
!
fs_enabled
();}
bool
enabled
()
const
{
return
fs_enabled
()
or
os_enabled
();};
// output_stream
bool
os_enabled
()
const
{
return
os
&&
!
fs_enabled
();
}
bool
enabled
()
const
{
return
fs_enabled
()
or
os_enabled
();
};
/*
Dump any string to ostream, used for debug build or debugging purposes.
Dump any string to ostream, used for debug build or debugging purposes.
*/
void
operator
()(
const
std
::
string
&
s
=
""
)
const
{
std
::
cout
<<
s
<<
std
::
endl
;
}
void
operator
()(
const
std
::
string
&
s
=
""
)
const
{
std
::
cout
<<
s
<<
std
::
endl
;
}
/*
Based on user's envrionment flags, either dump IR passes' output to a file or ostream i.e. cout
or cerr,
:param pass_file_name : file_name to be used when dumping IR pass to a file, this param
is not used when IR is
dumped to ostream.
Based on user's envrionment flags, either dump IR passes' output to a file or ostream i.e. cout
or cerr,
:param pass_file_name : file_name to be used when dumping IR pass to a file, this param
is not used when IR is
dumped to ostream.
*/
template
<
class
...
Ts
,
MIGRAPHX_REQUIRES
((
sizeof
...(
Ts
)
>
0
))
>
void
operator
()(
const
std
::
string
&
pass_file_name
,
const
Ts
&
...
xs
)
...
...
@@ -55,7 +53,9 @@ struct tracer
swallow
{
ofs
<<
xs
...};
ofs
<<
std
::
endl
;
ofs
.
close
();
}
else
if
(
os_enabled
())
{
}
else
if
(
os_enabled
())
{
swallow
{
*
os
<<
xs
...};
*
os
<<
std
::
endl
;
}
...
...
@@ -64,8 +64,8 @@ struct tracer
std
::
string
dump_dir
=
""
;
private:
uint
counter
=
0
;
std
::
ostream
*
os
=
nullptr
;
uint
counter
=
0
;
std
::
ostream
*
os
=
nullptr
;
fs
::
path
dir_path
=
""
;
};
...
...
src/pass_manager.cpp
View file @
d7033279
...
...
@@ -39,9 +39,16 @@ void run_pass(program& prog, const pass& p, tracer& trace)
{
auto
t_start
=
std
::
chrono
::
high_resolution_clock
::
now
();
p
.
apply
(
prog
);
auto
t_end
=
std
::
chrono
::
high_resolution_clock
::
now
();
double
elapsed_time_ms
=
std
::
chrono
::
duration
<
double
,
std
::
milli
>
(
t_end
-
t_start
).
count
();
trace
(
p
.
name
(),
"Pass: "
,
p
.
name
(),
"
\n
"
,
prog
,
"Elapsed Wall Time (ms): "
,
elapsed_time_ms
,
"
\n
"
);
auto
t_end
=
std
::
chrono
::
high_resolution_clock
::
now
();
double
elapsed_time_ms
=
std
::
chrono
::
duration
<
double
,
std
::
milli
>
(
t_end
-
t_start
).
count
();
trace
(
p
.
name
(),
"Pass: "
,
p
.
name
(),
"
\n
"
,
prog
,
"Elapsed Wall Time (ms): "
,
elapsed_time_ms
,
"
\n
"
);
}
struct
module_pm
:
module_pass_manager
...
...
@@ -78,9 +85,17 @@ struct module_pm : module_pass_manager
assert
(
mod
->
validate
()
==
mod
->
end
());
auto
t_start
=
std
::
chrono
::
high_resolution_clock
::
now
();
p
.
apply
(
*
this
);
auto
t_end
=
std
::
chrono
::
high_resolution_clock
::
now
();
double
elapsed_time_ms
=
std
::
chrono
::
duration
<
double
,
std
::
milli
>
(
t_end
-
t_start
).
count
();
trace
(
p
.
name
(),
"Module: "
,
mod
->
name
(),
", Pass: "
,
p
.
name
(),
"
\n
"
,
*
mod
,
"Elapsed Wall Time (ms): "
,
elapsed_time_ms
);
auto
t_end
=
std
::
chrono
::
high_resolution_clock
::
now
();
double
elapsed_time_ms
=
std
::
chrono
::
duration
<
double
,
std
::
milli
>
(
t_end
-
t_start
).
count
();
trace
(
p
.
name
(),
"Module: "
,
mod
->
name
(),
", Pass: "
,
p
.
name
(),
"
\n
"
,
*
mod
,
"Elapsed Wall Time (ms): "
,
elapsed_time_ms
);
validate_pass
(
*
mod
,
p
,
*
t
);
}
};
...
...
@@ -101,17 +116,20 @@ void run_passes(program& prog, const std::vector<pass>& passes, tracer trace)
{
if
(
enabled
(
MIGRAPHX_TRACE_PASSES
{})
and
not
trace
.
enabled
())
trace
=
tracer
{
std
::
cout
};
std
::
unordered_map
<
std
::
string
,
tracer
>
module_tracer_map
;
for
(
const
auto
&
p
:
passes
)
{
auto
mods
=
prog
.
get_modules
();
for
(
const
auto
&
mod
:
reverse
(
mods
))
{
// Set tracer for module passes, if tracer is set to output to file stream then set name of the dump directory.
// For file dumps, tracer object internally sets the counter for the individual passes' file dumps.
if
(
module_tracer_map
.
find
(
mod
->
name
())
==
module_tracer_map
.
end
())
{
module_tracer_map
[
mod
->
name
()]
=
trace
.
fs_enabled
()
?
tracer
{
trace
.
dump_dir
+
"/"
+
mod
->
name
()}
:
trace
;
// Set tracer for module passes, if tracer is set to output to file stream then set name
// of the dump directory. For file dumps, tracer object internally sets the counter for
// the individual passes' file dumps.
if
(
module_tracer_map
.
find
(
mod
->
name
())
==
module_tracer_map
.
end
())
{
module_tracer_map
[
mod
->
name
()]
=
trace
.
fs_enabled
()
?
tracer
{
trace
.
dump_dir
+
"/"
+
mod
->
name
()}
:
trace
;
}
if
(
mod
->
bypass
())
continue
;
...
...
src/program.cpp
View file @
d7033279
...
...
@@ -145,7 +145,7 @@ void program::compile(const target& t, compile_options options, const std::strin
this
->
impl
->
ctx
=
t
.
get_context
();
if
(
enabled
(
MIGRAPHX_DUMP_PASSES_TO_FILE
{}))
options
.
trace
=
tracer
{
t
.
name
()
+
"_"
+
ir_dump_path
};
else
if
(
enabled
(
MIGRAPHX_TRACE_COMPILE
{}))
else
if
(
enabled
(
MIGRAPHX_TRACE_COMPILE
{}))
options
.
trace
=
tracer
{
std
::
cout
};
options
.
trace
(
"input_program"
,
*
this
);
...
...
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