#include <tvm/te/operation.h>
#include <tvm/te/schedule_pass.h>
#include <tvm/runtime/registry.h>
+#include <tvm/runtime/container.h>
#include <tvm/relay/attrs/device_copy.h>
#include <tvm/relay/analysis.h>
#include <tvm/relay/expr.h>
if (ext_mods.find(code_gen->value) == ext_mods.end()) {
ext_mods[code_gen->value] = IRModule({}, {});
}
- auto symbol_name = src_func->GetAttr<tir::StringImm>(attr::kExternalSymbol);
+ auto symbol_name = src_func->GetAttr<runtime::String>(tvm::attr::kGlobalSymbol);
CHECK(symbol_name.defined()) << "No external symbol is set for:\n"
<< AsText(src_func, false);
- auto gv = GlobalVar(symbol_name->value);
+ auto gv = GlobalVar(std::string(symbol_name));
ext_mods[code_gen->value]->Add(gv, src_func);
cached_ext_funcs.push_back(it.first);
}
if (key->source_func->GetAttr<tir::StringImm>(attr::kCompiler).defined()) {
auto cache_node = make_object<CachedFuncNode>();
const auto name_node =
- key->source_func->GetAttr<tir::StringImm>(attr::kExternalSymbol);
+ key->source_func->GetAttr<runtime::String>(tvm::attr::kGlobalSymbol);
CHECK(name_node.defined())
<< "External function has not been attached a name yet.";
- cache_node->func_name = name_node->value;
+ cache_node->func_name = std::string(name_node);
cache_node->target = tvm::target::ext_dev();
value->cached_func = CachedFunc(cache_node);
return value;
import tvm.relay.testing
from tvm import relay
from tvm import runtime
+from tvm.runtime import container
from tvm.relay import transform
from tvm.contrib import util
from tvm.relay.op.annotation import compiler_begin, compiler_end
func = relay.Function([x0, y0], add)
func = func.with_attr("Primitive", tvm.tir.IntImm("int32", 1))
func = func.with_attr("Inline", tvm.tir.IntImm("int32", 1))
- func = func.with_attr("Compiler",
- tvm.tir.StringImm("ccompiler"))
- func = func.with_attr("ExternalSymbol",
- tvm.tir.StringImm("ccompiler_0"))
+ func = func.with_attr("Compiler", tvm.tir.StringImm("ccompiler"))
+ func = func.with_attr("global_symbol", container.String("ccompiler_0"))
glb_0 = relay.GlobalVar("ccompiler_0")
mod[glb_0] = func
add_call = relay.Call(glb_0, [x, y])
concat = relay.concatenate([log, exp], axis=0)
fused_func = relay.Function([p0], concat)
fused_func = fused_func.with_attr("Primitive",
- tvm.tir.IntImm("int32", 1))
+ tvm.tir.IntImm("int32", 1))
fused_call = relay.Call(fused_func, [add_call])
main = relay.Function([x, y], fused_call)
mod["main"] = main
func = func.with_attr("Primitive", tvm.tir.IntImm("int32", 1))
func = func.with_attr("Inline", tvm.tir.IntImm("int32", 1))
func = func.with_attr("Compiler", tvm.tir.StringImm("dnnl"))
- func = func.with_attr("ExternalSymbol",
- tvm.tir.StringImm("dnnl_0"))
+ func = func.with_attr("global_symbol", container.String("dnnl_0"))
glb_var = relay.GlobalVar("dnnl_0")
mod = tvm.IRModule()
mod[glb_var] = func
func0 = func0.with_attr("Inline", tvm.tir.IntImm("int32", 1))
func0 = func0.with_attr("Compiler",
tvm.tir.StringImm("test_compiler"))
- func0 = func0.with_attr("ExternalSymbol",
- tvm.tir.StringImm("test_compiler_0"))
+ func0 = func0.with_attr("global_symbol",
+ container.String("test_compiler_0"))
gv0 = relay.GlobalVar("test_compiler_0")
mod[gv0] = func0
func1 = func1.with_attr("Inline", tvm.tir.IntImm("int32", 1))
func1 = func1.with_attr("Compiler",
tvm.tir.StringImm("test_compiler"))
- func1 = func1.with_attr("ExternalSymbol",
- tvm.tir.StringImm("test_compiler_1"))
+ func1 = func1.with_attr("global_symbol",
+ container.String("test_compiler_1"))
gv1 = relay.GlobalVar("test_compiler_1")
mod[gv1] = func1
func0 = func0.with_attr("Inline", tvm.tir.IntImm("int32", 1))
func0 = func0.with_attr("Compiler",
tvm.tir.StringImm("test_compiler"))
- func0 = func0.with_attr("ExternalSymbol",
- tvm.tir.StringImm("test_compiler_0"))
+ func0 = func0.with_attr("global_symbol",
+ container.String("test_compiler_0"))
# main function
data = relay.var("data", relay.TensorType((1, 16, 224, 224), "float32"))
func = func.with_attr("Primitive", tvm.tir.IntImm("int32", 1))
func = func.with_attr("Inline", tvm.tir.IntImm("int32", 1))
func = func.with_attr("Compiler", tvm.tir.StringImm("ccompiler"))
- func = func.with_attr("ExternalSymbol",
- tvm.tir.StringImm("ccompiler_0"))
+ func = func.with_attr("global_symbol", container.String("ccompiler_0"))
glb_0 = relay.GlobalVar("ccompiler_0")
mod[glb_0] = func
add_call = relay.Call(glb_0, [y])
func0 = func0.with_attr("Inline", tvm.tir.IntImm("int32", 1))
func0 = func0.with_attr("Compiler",
tvm.tir.StringImm("test_target"))
- func0 = func0.with_attr("ExternalSymbol",
- tvm.tir.StringImm("test_target_2"))
+ func0 = func0.with_attr("global_symbol",
+ container.String("test_target_2"))
gv0 = relay.GlobalVar("test_target_2")
mod[gv0] = func0
func1 = func1.with_attr("Inline", tvm.tir.IntImm("int32", 1))
func1 = func1.with_attr("Compiler",
tvm.tir.StringImm("test_target"))
- func1 = func1.with_attr("ExternalSymbol",
- tvm.tir.StringImm("test_target_1"))
+ func1 = func1.with_attr("global_symbol",
+ container.String("test_target_1"))
gv1 = relay.GlobalVar("test_target_1")
mod[gv1] = func1
func0 = func0.with_attr("Inline", tvm.tir.IntImm("int32", 1))
func0 = func0.with_attr("Compiler",
tvm.tir.StringImm("test_target"))
- func0 = func0.with_attr("ExternalSymbol",
- tvm.tir.StringImm("test_target_0"))
+ func0 = func0.with_attr("global_symbol",
+ container.String("test_target_0"))
gv0 = relay.GlobalVar("test_target_0")
mod[gv0] = func0