Mousius commented on code in PR #12006:
URL: https://github.com/apache/tvm/pull/12006#discussion_r918257288
##########
tests/python/contrib/test_cmsisnn/test_conv2d.py:
##########
@@ -540,6 +547,135 @@ def test_depthwise_int8(
)
[email protected]_cmsisnn
[email protected]("padding", ["SAME", "VALID"])
[email protected]("strides, dilation", [((1, 1), (1, 1))])
[email protected]("relu_type", ["RELU", "NONE"])
[email protected]("depth_multiplier", [1, 3])
[email protected](
+ "input_zero_point, input_scale, kernel_scale",
+ [
+ (
+ 10,
+ 0.0128,
+ [0.11, 0.22],
+ ),
+ (
+ -64,
+ 1,
+ [1, 0.0256, 1.37],
+ ),
+ ],
+)
+def test_relay_conv2d_cmsisnn_depthwise_int8(
+ padding,
+ strides,
+ dilation,
+ relu_type,
+ input_zero_point,
+ input_scale,
+ kernel_scale,
+ depth_multiplier,
+):
+ """Tests QNN Depthwise int8 op via CMSIS-NN"""
+ interface_api = "c"
+ use_unpacked_api = True
+ test_runner = AOT_USMP_CORSTONE300_RUNNER
+
+ dtype = "int8"
+ in_min, in_max = get_range_for_dtype_str(dtype)
+
+ ifm_shape = (1, 24, 24, 1)
+ groups = ifm_shape[3]
+ weight_format = "HWIO"
+ (kernel_h, kernel_w) = (3, 3)
+ kernel_shape = (kernel_h, kernel_w, ifm_shape[3], depth_multiplier)
+ out_channels = ifm_shape[3] * depth_multiplier
+ enable_bias = True
+ ks_len = len(kernel_scale)
+ kernel_zero_point = 0
+ kernel_scale = [kernel_scale[i % ks_len] for i in range(out_channels)]
+
+ output_scale, output_zero_point = get_conv2d_qnn_params(
+ kernel_shape,
+ input_scale,
+ input_zero_point,
+ kernel_scale,
+ kernel_zero_point,
+ dtype,
+ dtype,
+ dtype,
+ True,
+ )
+
+ model, params = make_model(
+ ifm_shape,
+ kernel_shape,
+ input_zero_point,
+ input_scale,
+ kernel_zero_point,
+ kernel_scale,
+ output_zero_point,
+ output_scale,
+ padding,
+ strides,
+ dilation,
+ groups,
+ dtype,
+ dtype,
+ out_channels,
+ weight_format,
+ enable_bias,
+ relu_type,
+ )
+ orig_mod = make_module(model)
+ cmsisnn_mod = cmsisnn.partition_for_cmsisnn(orig_mod, params)
+
+ # validate pattern matching
+ assert_partitioned_function(orig_mod, cmsisnn_mod)
+
+ # generate reference output
+ rng = np.random.default_rng(12345)
+ inputs = {"input": rng.integers(in_min, high=in_max, size=ifm_shape,
dtype=dtype)}
+ output_list = generate_ref_data(orig_mod["main"], inputs, params)
+
+ # validate presence of depthwise convolution
+ compiled_models = compile_models(
+ AOTTestModel(
+ module=cmsisnn_mod,
+ inputs=inputs,
+ outputs=output_list,
+ params=params,
+ output_tolerance=1,
+ ),
+ interface_api,
+ use_unpacked_api,
+ pass_config=test_runner.pass_config,
+ )
+
+ cmsisnn_tir_mod = None
+ for target, mod in
compiled_models[0].executor_factory.lowered_ir_mods.items():
+ if target.kind.name == "cmsis-nn":
+ cmsisnn_tir_mod = mod
+
+ cmsisnn_func = cmsisnn_tir_mod["tvmgen_default_cmsis_nn_main_0"]
+ call_extern = None
+ if isinstance(cmsisnn_func.body, tvm.tir.stmt.Evaluate):
+ call_extern = cmsisnn_func.body.value
+ else:
+ call_extern = cmsisnn_func.body.body.value
Review Comment:
Ahhh gotcha :+1:
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]