Expr in ArrayNode

I got trouble with passing [...] to tvm.call_extern, it will fail with
TVMError: [07:24:03] /work1/yizhiliu/tvm/include/tvm/./packed_func_ext.h:123: Check failed: NodeTypeChecker<TNodeRef>::Check(sptr.get()) Expected type array<Expr> but get Array

Not sure whether my understanding is correct @tqchen . and wondering how to make it work.

Values inside a list are converted to Node because _Array constructs ArrayNode, which requires Node inside:


While make.Call requires Array<Expr>:


Thus fails the type-checker between (type-erased) Node and Expr:

Call extern expects arguments in unpacked form. Call it with positional args instead of packing them to arrays

but what if I want to pass a shape? the ndim can vary

This is unfortunately the restriction of the extern function(since we essentially only support C calls), we can however, pass in the pointer of shape and length as two arguments.

How to pass the pointer of shape? Could you please give some code to show it? Thanks.