Unverified Commit 5bf067ed authored by Umang Yadav's avatar Umang Yadav Committed by GitHub
Browse files

Fix TRACE_EVAL > 1 (#1835)



* add fix for the trace_eval

* Add throw for the debug builds

* Formatting

---------
Co-authored-by: default avatarChris Austen <causten@users.noreply.github.com>
parent aa508e1d
...@@ -539,7 +539,8 @@ std::vector<argument> program::eval(parameter_map params, execution_environment ...@@ -539,7 +539,8 @@ std::vector<argument> program::eval(parameter_map params, execution_environment
ins_out[x] = ss.str(); ins_out[x] = ss.str();
}); });
ret = generic_eval(*this, ret = generic_eval(
*this,
ctx, ctx,
std::move(params), std::move(params),
with_check_context([&](auto& ins, auto f, auto&& check_context) { with_check_context([&](auto& ins, auto f, auto&& check_context) {
...@@ -551,15 +552,28 @@ std::vector<argument> program::eval(parameter_map params, execution_environment ...@@ -551,15 +552,28 @@ std::vector<argument> program::eval(parameter_map params, execution_environment
ctx.finish(); ctx.finish();
double t2 = t.record<milliseconds>(); double t2 = t.record<milliseconds>();
std::cout << "Time: " << t1 << "ms, " << t2 << "ms" << std::endl; std::cout << "Time: " << t1 << "ms, " << t2 << "ms" << std::endl;
if(trace_level > 1 and ins->name().front() != '@' and if(trace_level > 1 and ins->name().front() != '@' and ins->name() != "load" and
ins->name() != "load" and not result.empty()) not result.empty())
{
migraphx::argument buffer;
try
{ {
target tgt = make_target(this->impl->target_name); target tgt = make_target(this->impl->target_name);
auto buffer = tgt.copy_from(result); buffer = tgt.copy_from(result);
}
catch(const migraphx::exception&)
{
// instruction was run on host then no need to copy buffer from target
buffer = result;
}
catch(...)
{
MIGRAPHX_THROW(
"MIGraphX program execution with MIGRAPHX_TRACE_EVAL failed.\n");
}
if(trace_level == 2) if(trace_level == 2)
{ {
std::cout << "Output has " std::cout << "Output has " << to_string_range(classify_argument(buffer))
<< to_string_range(classify_argument(buffer))
<< std::endl; << std::endl;
std::cout << "Output: "; std::cout << "Output: ";
preview_argument(std::cout, buffer); preview_argument(std::cout, buffer);
......
...@@ -146,7 +146,11 @@ std::vector<T> read_from_gpu(const void* x, std::size_t sz) ...@@ -146,7 +146,11 @@ std::vector<T> read_from_gpu(const void* x, std::size_t sz)
gpu_sync(); gpu_sync();
std::vector<T> result(sz); std::vector<T> result(sz);
assert(not is_device_ptr(result.data())); assert(not is_device_ptr(result.data()));
assert(is_device_ptr(x)); if(not is_device_ptr(x))
{
MIGRAPHX_THROW(
"read_from_gpu() requires Src buffer to be on the GPU, Copy from gpu failed\n");
}
auto status = hipMemcpy(result.data(), x, sz * sizeof(T), hipMemcpyDeviceToHost); auto status = hipMemcpy(result.data(), x, sz * sizeof(T), hipMemcpyDeviceToHost);
if(status != hipSuccess) if(status != hipSuccess)
MIGRAPHX_THROW("Copy from gpu failed: " + hip_error(status)); // NOLINT MIGRAPHX_THROW("Copy from gpu failed: " + hip_error(status)); // NOLINT
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment