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
39eedcd9
Commit
39eedcd9
authored
Sep 14, 2018
by
mei-ye
Browse files
remove passing in address
parent
b1e097b3
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
26 additions
and
64 deletions
+26
-64
src/include/migraph/program.hpp
src/include/migraph/program.hpp
+2
-2
src/include/migraph/target.hpp
src/include/migraph/target.hpp
+5
-11
src/program.cpp
src/program.cpp
+2
-2
src/targets/cpu/include/migraph/cpu/context.hpp
src/targets/cpu/include/migraph/cpu/context.hpp
+0
-2
src/targets/cpu/include/migraph/cpu/cpu_target.hpp
src/targets/cpu/include/migraph/cpu/cpu_target.hpp
+1
-4
src/targets/gpu/include/migraph/gpu/context.hpp
src/targets/gpu/include/migraph/gpu/context.hpp
+0
-3
src/targets/gpu/include/migraph/gpu/target.hpp
src/targets/gpu/include/migraph/gpu/target.hpp
+1
-1
src/targets/gpu/lowering_memory_coloring.cpp
src/targets/gpu/lowering_memory_coloring.cpp
+5
-27
src/targets/gpu/target.cpp
src/targets/gpu/target.cpp
+3
-5
test/auto_contiguous_test.cpp
test/auto_contiguous_test.cpp
+1
-1
test/eliminate_allocation_test.cpp
test/eliminate_allocation_test.cpp
+1
-1
test/eval_test.cpp
test/eval_test.cpp
+3
-3
test/memory_coloring_test.cpp
test/memory_coloring_test.cpp
+1
-1
test/simplify_reshapes_test.cpp
test/simplify_reshapes_test.cpp
+1
-1
No files found.
src/include/migraph/program.hpp
View file @
39eedcd9
...
@@ -28,7 +28,7 @@ struct program
...
@@ -28,7 +28,7 @@ struct program
program
&
operator
=
(
program
&&
)
noexcept
;
program
&
operator
=
(
program
&&
)
noexcept
;
~
program
()
noexcept
;
~
program
()
noexcept
;
using
parameter_map
=
migraph
::
parameter_map
;
using
parameter_map
=
std
::
unordered_map
<
std
::
string
,
argument
>
;
template
<
class
...
Ts
>
template
<
class
...
Ts
>
instruction_ref
add_instruction
(
operation
op
,
Ts
...
args
)
instruction_ref
add_instruction
(
operation
op
,
Ts
...
args
)
...
@@ -91,7 +91,7 @@ struct program
...
@@ -91,7 +91,7 @@ struct program
instruction_ref
validate
()
const
;
instruction_ref
validate
()
const
;
void
compile
(
const
target
&
t
,
tracer
trace
=
tracer
{}
,
parameter_map
params
=
parameter_map
()
);
void
compile
(
const
target
&
t
,
tracer
trace
=
tracer
{});
void
perf_report
(
std
::
ostream
&
os
,
std
::
size_t
n
,
parameter_map
params
)
const
;
void
perf_report
(
std
::
ostream
&
os
,
std
::
size_t
n
,
parameter_map
params
)
const
;
...
...
src/include/migraph/target.hpp
View file @
39eedcd9
...
@@ -8,13 +8,10 @@
...
@@ -8,13 +8,10 @@
#include <type_traits>
#include <type_traits>
#include <utility>
#include <utility>
#include <vector>
#include <vector>
#include <unordered_map>
#include <migraph/context.hpp>
#include <migraph/context.hpp>
#include <migraph/pass.hpp>
#include <migraph/pass.hpp>
#include <migraph/argument.hpp>
namespace
migraph
{
namespace
migraph
{
using
parameter_map
=
std
::
unordered_map
<
std
::
string
,
argument
>
;
#ifdef DOXYGEN
#ifdef DOXYGEN
...
@@ -36,7 +33,7 @@ struct target
...
@@ -36,7 +33,7 @@ struct target
* @brief Construct a context for the target.
* @brief Construct a context for the target.
* @return The context to be used during compilation and execution.
* @return The context to be used during compilation and execution.
*/
*/
context
get_context
(
parameter_map
params
=
parameter_map
()
)
const
;
context
get_context
()
const
;
};
};
#else
#else
...
@@ -122,10 +119,10 @@ struct target
...
@@ -122,10 +119,10 @@ struct target
return
(
*
this
).
private_detail_te_get_handle
().
get_passes
(
ctx
);
return
(
*
this
).
private_detail_te_get_handle
().
get_passes
(
ctx
);
}
}
context
get_context
(
parameter_map
params
=
parameter_map
()
)
const
context
get_context
()
const
{
{
assert
((
*
this
).
private_detail_te_handle_mem_var
);
assert
((
*
this
).
private_detail_te_handle_mem_var
);
return
(
*
this
).
private_detail_te_get_handle
().
get_context
(
std
::
move
(
params
)
);
return
(
*
this
).
private_detail_te_get_handle
().
get_context
();
}
}
private:
private:
...
@@ -137,7 +134,7 @@ struct target
...
@@ -137,7 +134,7 @@ struct target
virtual
std
::
string
name
()
const
=
0
;
virtual
std
::
string
name
()
const
=
0
;
virtual
std
::
vector
<
pass
>
get_passes
(
context
&
ctx
)
const
=
0
;
virtual
std
::
vector
<
pass
>
get_passes
(
context
&
ctx
)
const
=
0
;
virtual
context
get_context
(
parameter_map
params
)
const
=
0
;
virtual
context
get_context
(
)
const
=
0
;
};
};
template
<
typename
PrivateDetailTypeErasedT
>
template
<
typename
PrivateDetailTypeErasedT
>
...
@@ -176,10 +173,7 @@ struct target
...
@@ -176,10 +173,7 @@ struct target
return
private_detail_te_value
.
get_passes
(
ctx
);
return
private_detail_te_value
.
get_passes
(
ctx
);
}
}
context
get_context
(
parameter_map
params
)
const
override
context
get_context
()
const
override
{
return
private_detail_te_value
.
get_context
();
}
{
return
private_detail_te_value
.
get_context
(
params
);
}
PrivateDetailTypeErasedT
private_detail_te_value
;
PrivateDetailTypeErasedT
private_detail_te_value
;
};
};
...
...
src/program.cpp
View file @
39eedcd9
...
@@ -257,10 +257,10 @@ instruction_ref program::validate() const
...
@@ -257,10 +257,10 @@ instruction_ref program::validate() const
[
&
](
const
instruction
&
i
)
{
return
!
i
.
valid
(
impl
->
instructions
.
begin
());
});
[
&
](
const
instruction
&
i
)
{
return
!
i
.
valid
(
impl
->
instructions
.
begin
());
});
}
}
void
program
::
compile
(
const
target
&
t
,
tracer
trace
,
parameter_map
params
)
void
program
::
compile
(
const
target
&
t
,
tracer
trace
)
{
{
assert
(
this
->
validate
()
==
impl
->
instructions
.
end
());
assert
(
this
->
validate
()
==
impl
->
instructions
.
end
());
this
->
impl
->
ctx
=
t
.
get_context
(
std
::
move
(
params
)
);
this
->
impl
->
ctx
=
t
.
get_context
();
if
(
not
trace
.
enabled
()
and
enabled
(
MIGRAPH_TRACE_COMPILE
{}))
if
(
not
trace
.
enabled
()
and
enabled
(
MIGRAPH_TRACE_COMPILE
{}))
trace
=
tracer
{
std
::
cout
};
trace
=
tracer
{
std
::
cout
};
trace
(
*
this
);
trace
(
*
this
);
...
...
src/targets/cpu/include/migraph/cpu/context.hpp
View file @
39eedcd9
...
@@ -6,11 +6,9 @@
...
@@ -6,11 +6,9 @@
namespace
migraph
{
namespace
migraph
{
namespace
cpu
{
namespace
cpu
{
using
parameter_map
=
std
::
unordered_map
<
std
::
string
,
argument
>
;
struct
context
struct
context
{
{
parameter_map
params
;
void
finish
()
const
{}
void
finish
()
const
{}
};
};
}
// namespace cpu
}
// namespace cpu
...
...
src/targets/cpu/include/migraph/cpu/cpu_target.hpp
View file @
39eedcd9
...
@@ -11,10 +11,7 @@ struct cpu_target
...
@@ -11,10 +11,7 @@ struct cpu_target
{
{
std
::
string
name
()
const
;
std
::
string
name
()
const
;
std
::
vector
<
pass
>
get_passes
(
migraph
::
context
&
ctx
)
const
;
std
::
vector
<
pass
>
get_passes
(
migraph
::
context
&
ctx
)
const
;
migraph
::
context
get_context
(
parameter_map
params
=
parameter_map
())
const
migraph
::
context
get_context
()
const
{
return
context
{};
}
{
return
context
{
std
::
move
(
params
)};
}
};
};
}
// namespace cpu
}
// namespace cpu
}
// namespace migraph
}
// namespace migraph
...
...
src/targets/gpu/include/migraph/gpu/context.hpp
View file @
39eedcd9
...
@@ -5,16 +5,13 @@
...
@@ -5,16 +5,13 @@
#include <migraph/gpu/rocblas.hpp>
#include <migraph/gpu/rocblas.hpp>
#include <migraph/gpu/hip.hpp>
#include <migraph/gpu/hip.hpp>
#include <unordered_map>
namespace
migraph
{
namespace
migraph
{
namespace
gpu
{
namespace
gpu
{
using
parameter_map
=
std
::
unordered_map
<
std
::
string
,
argument
>
;
struct
context
struct
context
{
{
shared
<
miopen_handle
>
handle
;
shared
<
miopen_handle
>
handle
;
shared
<
rocblas_handle_ptr
>
rbhandle
;
shared
<
rocblas_handle_ptr
>
rbhandle
;
parameter_map
params
;
argument
scratch
;
argument
scratch
;
std
::
vector
<
argument
>
literals
{};
std
::
vector
<
argument
>
literals
{};
void
finish
()
const
{
gpu_sync
();
}
void
finish
()
const
{
gpu_sync
();
}
...
...
src/targets/gpu/include/migraph/gpu/target.hpp
View file @
39eedcd9
...
@@ -10,7 +10,7 @@ struct target
...
@@ -10,7 +10,7 @@ struct target
{
{
std
::
string
name
()
const
;
std
::
string
name
()
const
;
std
::
vector
<
pass
>
get_passes
(
migraph
::
context
&
gctx
)
const
;
std
::
vector
<
pass
>
get_passes
(
migraph
::
context
&
gctx
)
const
;
migraph
::
context
get_context
(
parameter_map
params
=
parameter_map
()
)
const
;
migraph
::
context
get_context
()
const
;
};
};
}
// namespace gpu
}
// namespace gpu
}
// namespace migraph
}
// namespace migraph
...
...
src/targets/gpu/lowering_memory_coloring.cpp
View file @
39eedcd9
...
@@ -29,32 +29,10 @@ void lowering_memory_coloring::apply(program& p) const
...
@@ -29,32 +29,10 @@ void lowering_memory_coloring::apply(program& p) const
if
(
scratch_ins
==
p
.
end
())
if
(
scratch_ins
==
p
.
end
())
return
;
return
;
bool
can_resolve_addr
=
false
;
shape
s_scratch
=
scratch_ins
->
result
;
argument
base_ptr
;
argument
base_ptr
=
allocate_gpu
(
s_scratch
,
false
);
shape
s_scratch
=
scratch_ins
->
result
;
ctx
->
scratch
=
base_ptr
;
scratch_ins
=
p
.
replace_instruction
(
scratch_ins
,
gen_base_addr
{
s_scratch
});
if
(
ctx
->
params
.
find
(
"scratch"
)
==
ctx
->
params
.
end
())
{
// scratch memory is not passed in, allocate memory here.
can_resolve_addr
=
true
;
base_ptr
=
allocate_gpu
(
s_scratch
,
false
);
}
else
{
argument
a
=
ctx
->
params
[
"scratch"
];
assert
((
a
.
get_shape
().
bytes
()
>=
s_scratch
.
bytes
())
&&
"insufficent scratch memory"
);
if
(
!
a
.
empty
())
{
// scratch memory is passed in and already has a known address.
can_resolve_addr
=
true
;
base_ptr
=
a
;
}
}
if
(
can_resolve_addr
)
{
ctx
->
scratch
=
base_ptr
;
scratch_ins
=
p
.
replace_instruction
(
scratch_ins
,
gen_base_addr
{
s_scratch
});
}
for
(
auto
ins
:
iterator_for
(
p
))
for
(
auto
ins
:
iterator_for
(
p
))
{
{
...
@@ -69,7 +47,7 @@ void lowering_memory_coloring::apply(program& p) const
...
@@ -69,7 +47,7 @@ void lowering_memory_coloring::apply(program& p) const
auto
&&
a
=
any_cast
<
write_literal
>
(
ins
->
op
);
auto
&&
a
=
any_cast
<
write_literal
>
(
ins
->
op
);
std
::
size_t
offset
=
a
.
offset
;
std
::
size_t
offset
=
a
.
offset
;
if
(
can_resolve_addr
&&
a
.
pre_copy
)
if
(
a
.
pre_copy
)
{
{
char
*
dst
=
base_ptr
.
data
()
+
offset
;
char
*
dst
=
base_ptr
.
data
()
+
offset
;
const
char
*
src
=
arg1
->
lit
.
data
();
const
char
*
src
=
arg1
->
lit
.
data
();
...
...
src/targets/gpu/target.cpp
View file @
39eedcd9
...
@@ -47,12 +47,10 @@ std::vector<pass> target::get_passes(migraph::context& gctx) const
...
@@ -47,12 +47,10 @@ std::vector<pass> target::get_passes(migraph::context& gctx) const
std
::
string
target
::
name
()
const
{
return
"miopen"
;
}
std
::
string
target
::
name
()
const
{
return
"miopen"
;
}
migraph
::
context
target
::
get_context
(
parameter_map
params
)
const
migraph
::
context
target
::
get_context
()
const
{
{
return
context
{
share
(
make_obj
<
miopen_handle
>
(
&
miopenCreate
)),
return
context
{
share
(
create_rocblas_handle_ptr
()),
share
(
make_obj
<
miopen_handle
>
(
&
miopenCreate
)),
share
(
create_rocblas_handle_ptr
()),
{}};
params
,
{}};
}
}
}
// namespace gpu
}
// namespace gpu
}
// namespace migraph
}
// namespace migraph
test/auto_contiguous_test.cpp
View file @
39eedcd9
...
@@ -10,7 +10,7 @@ struct contiguous_target
...
@@ -10,7 +10,7 @@ struct contiguous_target
{
{
return
{
migraph
::
auto_contiguous
{}};
return
{
migraph
::
auto_contiguous
{}};
}
}
migraph
::
context
get_context
(
migraph
::
parameter_map
)
const
{
return
{};
}
migraph
::
context
get_context
()
const
{
return
{};
}
};
};
void
literal_broadcast
()
void
literal_broadcast
()
...
...
test/eliminate_allocation_test.cpp
View file @
39eedcd9
...
@@ -12,7 +12,7 @@ struct eliminate_allocation_target
...
@@ -12,7 +12,7 @@ struct eliminate_allocation_target
{
{
return
{
migraph
::
eliminate_allocation
{
"allocate"
,
align
},
migraph
::
dead_code_elimination
{}};
return
{
migraph
::
eliminate_allocation
{
"allocate"
,
align
},
migraph
::
dead_code_elimination
{}};
}
}
migraph
::
context
get_context
(
migraph
::
parameter_map
)
const
{
return
{};
}
migraph
::
context
get_context
()
const
{
return
{};
}
};
};
struct
allocate
struct
allocate
...
...
test/eval_test.cpp
View file @
39eedcd9
...
@@ -10,7 +10,7 @@ struct id_target
...
@@ -10,7 +10,7 @@ struct id_target
{
{
std
::
string
name
()
const
{
return
"id"
;
}
std
::
string
name
()
const
{
return
"id"
;
}
std
::
vector
<
migraph
::
pass
>
get_passes
(
migraph
::
context
&
)
const
{
return
{};
}
std
::
vector
<
migraph
::
pass
>
get_passes
(
migraph
::
context
&
)
const
{
return
{};
}
migraph
::
context
get_context
(
migraph
::
parameter_map
)
const
{
return
{};
}
migraph
::
context
get_context
()
const
{
return
{};
}
};
};
struct
reverse_pass
struct
reverse_pass
...
@@ -37,7 +37,7 @@ struct reverse_target
...
@@ -37,7 +37,7 @@ struct reverse_target
{
{
std
::
string
name
()
const
{
return
"reverse"
;
}
std
::
string
name
()
const
{
return
"reverse"
;
}
std
::
vector
<
migraph
::
pass
>
get_passes
(
migraph
::
context
&
)
const
{
return
{
reverse_pass
{}};
}
std
::
vector
<
migraph
::
pass
>
get_passes
(
migraph
::
context
&
)
const
{
return
{
reverse_pass
{}};
}
migraph
::
context
get_context
(
migraph
::
parameter_map
)
const
{
return
{};
}
migraph
::
context
get_context
()
const
{
return
{};
}
};
};
struct
double_reverse_target
struct
double_reverse_target
...
@@ -47,7 +47,7 @@ struct double_reverse_target
...
@@ -47,7 +47,7 @@ struct double_reverse_target
{
{
return
{
reverse_pass
{},
reverse_pass
{}};
return
{
reverse_pass
{},
reverse_pass
{}};
}
}
migraph
::
context
get_context
(
migraph
::
parameter_map
)
const
{
return
{};
}
migraph
::
context
get_context
()
const
{
return
{};
}
};
};
void
literal_test1
()
void
literal_test1
()
...
...
test/memory_coloring_test.cpp
View file @
39eedcd9
...
@@ -10,7 +10,7 @@ struct memory_coloring_target
...
@@ -10,7 +10,7 @@ struct memory_coloring_target
{
{
return
{
migraph
::
memory_coloring
{}};
return
{
migraph
::
memory_coloring
{}};
}
}
migraph
::
context
get_context
(
migraph
::
parameter_map
)
const
{
return
{};
}
migraph
::
context
get_context
()
const
{
return
{};
}
};
};
int
main
()
int
main
()
...
...
test/simplify_reshapes_test.cpp
View file @
39eedcd9
...
@@ -11,7 +11,7 @@ struct simplify_reshapes_target
...
@@ -11,7 +11,7 @@ struct simplify_reshapes_target
{
{
return
{
migraph
::
simplify_reshapes
{},
migraph
::
dead_code_elimination
{}};
return
{
migraph
::
simplify_reshapes
{},
migraph
::
dead_code_elimination
{}};
}
}
migraph
::
context
get_context
(
migraph
::
parameter_map
)
const
{
return
{};
}
migraph
::
context
get_context
()
const
{
return
{};
}
};
};
void
double_contig
()
void
double_contig
()
...
...
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