Replies: 2 comments 4 replies
-
有人遇到相同问题:#28 |
Beta Was this translation helpful? Give feedback.
2 replies
-
我遇到了类似的问题,但我的问题更加严重,我将Buffer type hint中维度标注写成变量或者常数的形式都会遇到报错。 错误信息:
不知道有什么办法可以解决吗?所用IDE是colab。 @Hzfengsy |
Beta Was this translation helpful? Give feedback.
2 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
在这个练习中,直接使用整数8,8就没有问题,如果使用变量就会报错

DiagnosticError Traceback (most recent call last)
in ()
25 C[vb, vk, vi, vj] += A[vb, vq, vi+vdi, vj+vdj] * B[vk, vq, vdi, vdj]
26
---> 27 @tvm.script.ir_module
28 class MyConv2:
29 @T.prim_func
20 frames
in MyConv2()
28 class MyConv2:
29 @T.prim_func
---> 30 def conv(A: T.Buffer[(N, CI, H, W), "int64"], B: T.Buffer[(CO, CI, K, K), "int64"], C: T.Buffer[(N, CO, OUT_H, OUT_W), "int64"]):
31 T.func_attr({"global_symbol": "conv", "tir.noalias": True})
32 for b, k, i, j, q, di, dj in T.grid(N, CO, OUT_H, OUT_W, CI, K, K):
/usr/local/lib/python3.7/dist-packages/tvm/script/tir/prim_func.py in prim_func(input_func)
38 """
39 if inspect.isfunction(input_func):
---> 40 result = from_source(input_func)
41 result.name = input_func.name
42 result.qualname = input_func.qualname
/usr/local/lib/python3.7/dist-packages/tvm/script/parser.py in from_source(input_func, tir_prefix)
1345 closure_vars = {**_closure_vars.nonlocals, **_closure_vars.globals}
1346 parser = TVMScriptParser(start_line, namespace, closure_vars)
-> 1347 result = to_ast(input_func, TVMDiagnosticCtx(), parser)
1348 return result
1349 else:
/usr/local/lib/python3.7/dist-packages/synr/compiler.py in to_ast(program, diagnostic_ctx, transformer)
779 return err
780 if transformer is not None:
--> 781 transformed = transformer.do_transform(prog, diagnostic_ctx)
782 err = diagnostic_ctx.render()
783 if err is not None:
/usr/local/lib/python3.7/dist-packages/synr/transformer.py in do_transform(self, node, diag)
28 """
29 self._diagnostic_context = diag
---> 30 return self.transform(node)
31
32 def error(self, message, span):
/usr/local/lib/python3.7/dist-packages/tvm/script/parser.py in transform(self, node)
194 method = "transform_" + node.class.name
195 visitor = getattr(self, method, self.generic_visit)
--> 196 transform_res = visitor(node)
197
198 self.current_lineno, self.current_col_offset = old_lineno, old_col_offset
/usr/local/lib/python3.7/dist-packages/tvm/script/parser.py in transform_Module(self, node)
362 """
363 if len(node.funcs) == 1:
--> 364 return self.transform(next(iter(node.funcs.values())))
365 elif len(node.func) == 0:
366 self.report_error(
/usr/local/lib/python3.7/dist-packages/tvm/script/parser.py in transform(self, node)
194 method = "transform_" + node.class.name
195 visitor = getattr(self, method, self.generic_visit)
--> 196 transform_res = visitor(node)
197
198 self.current_lineno, self.current_col_offset = old_lineno, old_col_offset
/usr/local/lib/python3.7/dist-packages/tvm/script/parser.py in transform_Function(self, node)
458 self.transform(arg.ty.func_name), ty.GenericBufferType
459 ):
--> 460 result = self.handle_match_buffer_type(arg.ty, arg.name)
461 if not isinstance(result, buffer.Buffer):
462 self.report_error(
/usr/local/lib/python3.7/dist-packages/tvm/script/parser.py in handle_match_buffer_type(self, node, buffer_name)
1289 self._inside_buffer_sugar = True
1290 try:
-> 1291 arg_list = self.parse_arg_list(func, node)
1292 finally:
1293 self._inside_buffer_sugar = False
/usr/local/lib/python3.7/dist-packages/tvm/script/parser.py in parse_arg_list(self, func, node_call)
270 assert isinstance(node_call, (ast.Call, ast.TypeApply, ast.TypeCall))
271 # collect arguments
--> 272 args = [self.transform(arg) for arg in node_call.params]
273 if isinstance(node_call, ast.TypeApply):
274 kw_args = {} # TypeApply (e.g. foo[bar]) doesn't have kwargs defined in synr
/usr/local/lib/python3.7/dist-packages/tvm/script/parser.py in (.0)
270 assert isinstance(node_call, (ast.Call, ast.TypeApply, ast.TypeCall))
271 # collect arguments
--> 272 args = [self.transform(arg) for arg in node_call.params]
273 if isinstance(node_call, ast.TypeApply):
274 kw_args = {} # TypeApply (e.g. foo[bar]) doesn't have kwargs defined in synr
/usr/local/lib/python3.7/dist-packages/tvm/script/parser.py in transform(self, node)
194 method = "transform_" + node.class.name
195 visitor = getattr(self, method, self.generic_visit)
--> 196 transform_res = visitor(node)
197
198 self.current_lineno, self.current_col_offset = old_lineno, old_col_offset
/usr/local/lib/python3.7/dist-packages/tvm/script/parser.py in transform_TypeTuple(self, node)
1229 Mostly used in
transform_TypeCall
andtransform_TypeApply
.1230 """
-> 1231 return [self.transform(value) for value in node.values]
1232
1233 def transform_TypeCall(self, node):
/usr/local/lib/python3.7/dist-packages/tvm/script/parser.py in (.0)
1229 Mostly used in
transform_TypeCall
andtransform_TypeApply
.1230 """
-> 1231 return [self.transform(value) for value in node.values]
1232
1233 def transform_TypeCall(self, node):
/usr/local/lib/python3.7/dist-packages/tvm/script/parser.py in transform(self, node)
194 method = "transform_" + node.class.name
195 visitor = getattr(self, method, self.generic_visit)
--> 196 transform_res = visitor(node)
197
198 self.current_lineno, self.current_col_offset = old_lineno, old_col_offset
/usr/local/lib/python3.7/dist-packages/tvm/script/parser.py in transform_Var(self, node)
1193 if symbol is not None:
1194 return symbol
-> 1195 self.report_error(f"Unknown identifier {name}.", node.span)
1196
1197 def transform_TypeVar(self, node):
/usr/local/lib/python3.7/dist-packages/tvm/script/parser.py in report_error(self, message, span)
218 if isinstance(span, tvm.ir.Span):
219 span = synr_span_from_tvm(span)
--> 220 self.error(message, span)
221
222 def parse_body(self, parent):
/usr/local/lib/python3.7/dist-packages/synr/transformer.py in error(self, message, span)
32 def error(self, message, span):
33 """Report an error on a given span."""
---> 34 self._diagnostic_context.emit("error", message, span)
35
36 def transform(self, node: ast.Node) -> Union[M, F, S, E, B, P, T, None]:
/usr/local/lib/python3.7/dist-packages/tvm/script/diagnostics.py in emit(self, _level, message, span)
50 span = self.to_tvm_span(self.source_name, span)
51 self.diag_ctx.emit(Diagnostic(DiagnosticLevel.ERROR, span, message))
---> 52 self.diag_ctx.render() # Raise exception on the first error we hit. TODO remove
53
54 def render(self):
/usr/local/lib/python3.7/dist-packages/tvm/ir/diagnostics/init.py in render(self)
117 def render(self):
118 """Render the current context using its renderer member."""
--> 119 _ffi_api.DiagnosticContextRender(self)
tvm/_ffi/_cython/./packed_func.pxi in tvm._ffi._cy3.core.PackedFuncBase.call()
tvm/_ffi/_cython/./packed_func.pxi in tvm._ffi._cy3.core.FuncCall()
tvm/_ffi/_cython/./packed_func.pxi in tvm._ffi._cy3.core.FuncCall3()
tvm/_ffi/_cython/./base.pxi in tvm._ffi._cy3.core.CHECK_CALL()
DiagnosticError: Traceback (most recent call last):
3: TVMFuncCall
2: tvm::runtime::PackedFuncObj::Extractor<tvm::runtime::PackedFuncSubObj<tvm::runtime::TypedPackedFunc<void (tvm::DiagnosticContext)>::AssignTypedLambdatvm::__mk_TVM11::{lambda(tvm::DiagnosticContext)#1}(tvm::__mk_TVM11::{lambda(tvm::DiagnosticContext)#1}, std::string)::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)#1}> >::Call(tvm::runtime::PackedFuncObj const*, tvm::__mk_TVM11::{lambda(tvm::DiagnosticContext)#1}, tvm::runtime::TVMArgs const&)
1: tvm::DiagnosticContext::Render()
0: _ZN3tvm7runtime6deta
File "/workspace/tvm/src/ir/diagnostic.cc", line 105
DiagnosticError: one or more error diagnostics were emitted, please check diagnostic render for output.
Beta Was this translation helpful? Give feedback.
All reactions