-
Notifications
You must be signed in to change notification settings - Fork 3.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[TOPI][OP] Support Faster-RCNN Proposal OP on CPU #4297
Conversation
idxm = tvm.indexmod | ||
idxd = tvm.indexdiv | ||
|
||
with ib.for_range(0, batch * height * width) as tid: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In topi cpu, all vision ops are written with hybrid script instead of ir builder now. Should we keep things consistent?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I tried to play Hybrid Script, but seems that we have some restriction so that I can not complete Hybrid Script replacement. For example:
@hybrid.script
def outer_product(a, b, x):
first_shape = a.shape[0]
first_shape //= 2
c = output_tensor((3, 3), 'float32')
for i in const_range(first_shape):
c[0, 0] = x[i // 2]
return c
a = tvm.placeholder((3, ), name='a')
b = tvm.placeholder((3, ), name='b')
x = [1, 2, 3]
c = outer_product(a, b, tvm.convert(x))
It will report ValueError: Const range should start from a const and iterate const times
We should change into
first_shape = a.shape[0] // 2
c = output_tensor((3, 3), 'float32')
for i in const_range(first_shape):
c[0, 0] = x[i // 2]
return c
This make code strange. Do we have any good ways to solve it?
Another thing is GPU / CPU relay on some common functions like generate_anchor
/ reg_bbox
and so on. Like in generate_anchor
, we use math.floor
, hybrid script doesn't support. So if I have to move the generate_anchor
implementation into predict_bbox_ir
, I meet one problem is floor
. When I add it from tvm.intrin import floor
, I meet problem TypeError: 'FloatImm' object does not support indexing
, you could try this simple reproduce case:
@hybrid.script
def outer_product(a, b, x):
first_shape = a.shape[0]
#first_shape = first_shape // 2
c = output_tensor((3, 3), 'float32')
for i in const_range(first_shape):
floor(3.1 / 2.0)
return c
So must we use hybrid script? Seems hybrid script has some restriction. Welcome feedback to above problems, if we could solve, I will try to use hybrid script to continue.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ping @kevinthesun @vinx13
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I met these issue too when I trying to migrate proposal CUDA op to hybrid, I think it’s okay to use ir builder for the time being
Thanks @FrozenGene @kevinthesun this is merged |
@were Could you also look into the hybrid script issue? |
* Support Proposal operator on CPU. * PyLint space issue * PyLint space issue * Pylint singleton-comparison issue
* Support Proposal operator on CPU. * PyLint space issue * PyLint space issue * Pylint singleton-comparison issue
* [TOPI][OP] Support Faster-RCNN Proposal OP on CPU (apache#4297) * Support Proposal operator on CPU. * PyLint space issue * PyLint space issue * Pylint singleton-comparison issue * [QNN][Legalize] Specialize for Platforms without any fast Int8 arithmetic units. (apache#4307) * fix error when memory_id is VTA_MEM_ID_OUT (apache#4330) * [CI][DOCKER] Add ONNX runtime dep (apache#4314) * [DOCKER] Add ONNX runtime dep * Improve ci script * [QNN] Quantize - Fixing the sequence of lowering. (apache#4316) * [QNN] Use Int16 upcast in Fallback Conv2D. Fix test names. (apache#4329) * [doc][fix] fix sphinx parsing for pass infra tutorial (apache#4337) * change ci image version (apache#4313) * [Codegen] remove fp16 function override for cuda (apache#4331) * add volatile override back * [codegen] remove fp16 function override for cuda * [CI] Set workspace to be per executor (apache#4336) * [Build][Windows] Fix Windows build by including cctype (apache#4319) * Fix build * dummy change to retrigger CI * dummy change to retrigger ci * dummy change to retrigger ci * Enable hipModuleGetGlobal() (apache#4321) * [Relay][Pass] Add pass to remove unused functions in relay module (apache#4334) * [Relay][Pass] Add pass to remove unused functions in relay module * Add tests * Fix lint * Fix visit order * Add pass argument * Fix * Add support for quant. mul operator in tflite frontend (apache#4283) A test for qnn_mul has to be added when the qnn elemwise tests (apache#4282) get merged. * Add topi.nn.fifo_buffer to TVM doc (apache#4343) * Solve custom model of prelu (apache#4326) * Deprecate NNVM warning msg (apache#4333) * [Contrib] Add MKL DNN option (apache#4323) * [Contrib] Add MKL DNN * update * update * [Relay][Frontend][TF] Fix transpose when axes is not a param (apache#4327) * [Relay][Frontend][TF] Use _infer_value_simulated when axes is not a const to Transpose * uncomment tests * dummy change to retrigger ci * [RUNTIME] Add device query for AMD GcnArch (apache#4341) * add gcnArch query * kGcnArch query for cuda is a no-op * [Test][Relay][Pass] Add test case for lambda lift (apache#4317) * [Relay][Frontend][ONNX] operator support: DepthToSpace, SpaceToDepth (apache#4271) * imp module is deprecated (apache#4275) * [VTA] Bug fix for padded load with large inputs (apache#4293) * bug fix for padded load with large inputs * Update TensorLoad.scala * Update test_vta_insn.py * fix inconsistent tag name (apache#4134) * [CodeGen] Add build config option disable_assert to control whether to generate assert (apache#4340) * Bump up CUDA log version in tophub.py (apache#4347) * Add check to ensure input file was successfully opened in NNVM deploy code demo (apache#4315) * [COMMUNITY] Add DISCLAIMER, KEYS for ASF release (apache#4345) * [COMMUNITY] Add DISCLAIMER, KEYS for ASF release * Add file name spec * [Relay][VM][Interpreter] Enable first-class constructors in VM and interpreter via eta expansion (apache#4218) * Fix constructor pretty printing * Make Module::HasDef name consistent with API * Add VM constructor compilation via eta expansion * Lint * Fix CI * Fix failing test * Address comment * Retrigger CI * Retrigger CI * Update dmlc_tvm_commit_id.txt
Currently, our TVM only implement proposal op on CUDA. However, we should support Proposal op on CPU too.
@vinx13 @tqchen please help to review it.