serialize.cpp 998 Bytes
Newer Older
1
2
3
#include <migraphx/serialize.hpp>
#include <migraphx/argument.hpp>
#include <migraphx/literal.hpp>
Shucai Xiao's avatar
Shucai Xiao committed
4
#include <migraphx/context.hpp>
5
6
7
8
9
10
11
12
13

namespace migraphx {
inline namespace MIGRAPHX_INLINE_NS {

template <class RawData>
void raw_data_to_value(value& v, const RawData& rd)
{
    value result;
    result["shape"] = migraphx::to_value(rd.get_shape());
14
    result["data"]  = migraphx::value::binary(rd.data(), rd.get_shape().bytes());
15
    v               = result;
16
17
18
19
20
21
}

void migraphx_to_value(value& v, const literal& l) { raw_data_to_value(v, l); }
void migraphx_from_value(const value& v, literal& l)
{
    auto s = migraphx::from_value<shape>(v.at("shape"));
22
    l      = literal(s, v.at("data").get_binary().data());
23
24
25
26
27
28
29
30
31
32
33
}

void migraphx_to_value(value& v, const argument& a) { raw_data_to_value(v, a); }
void migraphx_from_value(const value& v, argument& a)
{
    literal l = migraphx::from_value<literal>(v);
    a         = l.get_argument();
}

} // namespace MIGRAPHX_INLINE_NS
} // namespace migraphx