Arguments of runJit with rank that is determined in runtime


Following llvm-project/mlir/unittest/ExecutionEngine/Invoke.cpp,
I fed inputs with a rank, 4, to mlir::ExecutionEngine as follows.

mlir::OwningMemRef<float, 4> A(*(vec_in_shape[0]));
(*A).data = vec_in_data[0];
mlir::OwningMemRef<float, 4> res(*(vec_res_shape[0]), {}, res_init);
auto invocationResult = engine->invoke("%self.1", &*res, &*A);

But, I can’t find any example codes when the inputs have a rank with a variable, such as int a.
That is, it is the case when the a value is determined in the runtime, not in the compile time.
(I think it is a similar case when declaring a vector, like int a[3],
and I know that, in the case that the length of the vector is determined in the runtime,
we should use std::vector<int> a instead.)

Could you recommend the way to pass the inputs to the ExecutionEngine in that case?

Always thank you so much for your help.
Sincerely yours.

See print_memref_i32/f32 utilities in lib/ExecutionEngine/RunnerUtils.cpp which take an unranked memref for a reference. The OwningMemRef is for ranked memrefs.